angular-line-awesome
Version:
Angular Line Awesome is an Angular component to manage Line Awesome icons.
112 lines • 16 kB
JavaScript
// FUNCTION HANDLERS
export const IconNamePrefix = 'la';
export const IconDefaultPrefix = 'las';
export const isIconLookup = (i) => {
return i.prefix !== undefined && i.iconName !== undefined;
};
export const faNormalizeIcon = (icon) => {
if (isIconLookup(icon)) {
return icon;
}
if (Array.isArray(icon) && icon.length === 2) {
return { prefix: icon[0], iconName: icon[1] };
}
if (typeof icon === 'string') {
const iconArray = icon.split(' ');
if (iconArray.length === 1) {
iconArray.unshift(IconDefaultPrefix);
}
return { prefix: iconArray[0], iconName: iconArray[1] };
}
};
export const laClassList = (props) => {
const classes = {
'la-spin': props.spin,
'la-pulse': props.pulse,
'la-fw': props.fixedWidth,
'la-border': props.border,
'la-inverse': props.inverse,
'la-layers-counter': props.counter,
'la-flip-horizontal': props.flip === 'horizontal' || props.flip === 'both',
'la-flip-vertical': props.flip === 'vertical' || props.flip === 'both',
[`la-${props.size}`]: props.size !== null,
[`la-rotate-${props.rotate}`]: props.rotate !== null,
[`la-pull-${props.pull}`]: props.pull !== null,
[`la-stack-${props.stackItemSize}`]: props.stackItemSize != null
};
return Object.keys(classes)
.map(key => (classes[key] ? key : null))
.filter(key => key);
};
export const applyCssTransforms = (transformObj) => {
const transformsHandlers = {
size: (value) => `scale(${1 + value / 10})`,
rotate: (value) => `rotate(${value}deg)`,
flipY: (value) => (value ? `scaleY(-1)` : null),
flipX: (value) => (value ? `scaleX(-1)` : null),
y: (value) => `translateY(${value}px)`,
x: (value) => `translateX(${value}px)`
};
return Object.keys(transformObj)
.map(key => transformsHandlers[key](transformObj[key]))
.filter(key => key)
.join(' ');
};
export const parseTransformString = (transformString) => {
const transform = {
size: 0,
x: 0,
y: 0,
rotate: 0,
flipX: false,
flipY: false
};
if (!transformString) {
return transform;
}
return transformString
.toLowerCase()
.split(' ')
.reduce((acc, n) => {
const parts = n.toLowerCase().split('-');
const first = parts[0];
let rest = parts.slice(1).join('-');
if (first && rest === 'h') {
acc.flipX = true;
return acc;
}
if (first && rest === 'v') {
acc.flipY = true;
return acc;
}
rest = parseFloat(rest);
if (isNaN(rest)) {
return acc;
}
switch (first) {
case 'grow':
acc.size = acc.size + rest;
break;
case 'shrink':
acc.size = acc.size - rest;
break;
case 'left':
acc.x = acc.x - rest;
break;
case 'right':
acc.x = acc.x + rest;
break;
case 'up':
acc.y = acc.y - rest;
break;
case 'down':
acc.y = acc.y + rest;
break;
case 'rotate':
acc.rotate = acc.rotate + rest;
break;
}
return acc;
}, transform);
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1hd2Vzb21lLmNvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWxpbmUtYXdlc29tZS9zcmMvbGliL2xpbmUtYXdlc29tZS5jb3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQStFQSxvQkFBb0I7QUFDcEIsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQztBQUNuQyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLENBQUM7QUFFdkMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBVyxFQUFhLEVBQUU7SUFDckQsT0FBUSxDQUFVLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSyxDQUFVLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQztBQUNoRixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxJQUFjLEVBQVEsRUFBRTtJQUN0RCxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSyxJQUFpQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMzRCxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVELElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDN0IsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDM0IsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3ZDLENB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SyxFQUFFLENBQUM7WUFDZCxLQUFLLE1BQU07Z0JBQ1QsR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztnQkFDM0IsTUFBTTtZQUVSLEtBQUssUUFBUTtnQkFDWCxHQUFHLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO2dCQUMzQixNQUFNO1lBRVIsS0FBSyxNQUFNO2dCQUNULEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBQ3JCLE1BQU07WUFFUixLQUFLLE9BQU87Z0JBQ1YsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztnQkFDckIsTUFBTTtZQUVSLEtBQUssSUFBSTtnQkFDUCxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUNyQixNQUFNO1lBRVIsS0FBSyxNQUFNO2dCQUNULEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBQ3JCLE1BQU07WUFFUixLQUFLLFFBQVE7Z0JBQ1gsR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDL0IsTUFBTTtRQUNWLENBQUM7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNsQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUWVBFU1xuZXhwb3J0IHR5cGUgSWNvblByZWZpeCA9ICdsYXMnIHwgJ2xhYicgfCAnbGFyJztcbmV4cG9ydCB0eXBlIEZsaXBQcm9wID0gJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJyB8ICdib3RoJztcbmV4cG9ydCB0eXBlIFB1bGxQcm9wID0gJ2xlZnQnIHwgJ3JpZ2h0JztcbmV4cG9ydCB0eXBlIFJvdGF0ZVByb3AgPSA5MCB8IDE4MCB8IDI3MDtcbmV4cG9ydCB0eXBlIFNpemVQcm9wID1cbiAgfCAneHMnXG4gIHwgJ2xnJ1xuICB8ICdzbSdcbiAgfCAnbHgnXG4gIHwgJzF4J1xuICB8ICcyeCdcbiAgfCAnM3gnXG4gIHwgJzR4J1xuICB8ICc1eCdcbiAgfCAnNngnXG4gIHwgJzd4J1xuICB8ICc4eCdcbiAgfCAnOXgnXG4gIHwgJzEweCc7XG5leHBvcnQgdHlwZSBJY29uUHJvcCA9IEljb25OYW1lIHwgW0ljb25QcmVmaXgsIEljb25OYW1lXSB8IEljb25Mb29rdXA7XG5leHBvcnQgdHlwZSBJY29uTmFtZSA9IHN0cmluZztcblxuLy8gSU5URVJGQUNFU1xuZXhwb3J0IGludGVyZmFjZSBTdHlsZXMge1xuICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIEljb25Mb29rdXAge1xuICBwcmVmaXg6IEljb25QcmVmaXg7XG4gIGljb25OYW1lOiBJY29uTmFtZTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSWNvbiB7XG4gIHByZWZpeDogSWNvblByZWZpeDtcbiAgaWNvbk5hbWU6IEljb25OYW1lO1xufVxuZXhwb3J0IGludGVyZmFjZSBMYVByb3BzIHtcbiAgbWFzaz86IEljb25Qcm9wO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHNpemU/OiBTaXplUHJvcDtcbiAgZml4ZWRXaWR0aD86IGJvb2xlYW47XG4gIHJvdGF0ZT86IFJvdGF0ZVByb3A7XG4gIGZsaXA/OiBGbGlwUHJvcDtcbiAgcHVsbD86IFB1bGxQcm9wO1xuICBzcGluPzogYm9vbGVhbjtcbiAgcHVsc2U/OiBib29sZWFuO1xuICBib3JkZXI/OiBib29sZWFuO1xuICBjb3VudGVyPzogYm9vbGVhbjtcbiAgaW52ZXJzZT86IGJvb2xlYW47XG4gIHRyYW5zZm9ybT86IHN0cmluZyB8IFRyYW5zZm9ybTtcbiAgc3R5bGU/OiBTdHlsZXM7XG4gIHN0YWNrSXRlbVNpemU/OiAnMXgnIHwgJzJ4Jztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2Zvcm0ge1xuICBzaXplPzogbnVtYmVyO1xuICB4PzogbnVtYmVyO1xuICB5PzogbnVtYmVyO1xuICByb3RhdGU/OiBudW1iZXI7XG4gIGZsaXBYPzogYm9vbGVhbjtcbiAgZmxpcFk/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEljb25QYXJhbXMge1xuICB0aXRsZT86IHN0cmluZztcbiAgY2xhc3Nlcz86IHN0cmluZ1tdO1xuICBhdHRyaWJ1dGVzPzogQXR0cmlidXRlcztcbiAgc3R5bGVzPzogU3R5bGVzO1xuICB0cmFuc2Zvcm0/OiBUcmFuc2Zvcm07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXR0cmlidXRlcyB7XG4gIFtrZXk6IHN0cmluZ106IG51bWJlciB8IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaW5lQXdlc29tZUljb24ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGRhdGE6IHN0cmluZztcbn1cblxuLy8gRlVOQ1RJT04gSEFORExFUlNcbmV4cG9ydCBjb25zdCBJY29uTmFtZVByZWZpeCA9ICdsYSc7XG5leHBvcnQgY29uc3QgSWNvbkRlZmF1bHRQcmVmaXggPSAnbGFzJztcblxuZXhwb3J0IGNvbnN0IGlzSWNvbkxvb2t1cCA9IChpOiBJY29uUHJvcCk6IGkgaXMgSWNvbiA9PiB7XG4gIHJldHVybiAoaSBhcyBJY29uKS5wcmVmaXggIT09IHVuZGVmaW5lZCAmJiAoaSBhcyBJY29uKS5pY29uTmFtZSAhPT0gdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGZhTm9ybWFsaXplSWNvbiA9IChpY29uOiBJY29uUHJvcCk6IEljb24gPT4ge1xuICBpZiAoaXNJY29uTG9va3VwKGljb24pKSB7XG4gICAgcmV0dXJuIGljb247XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheShpY29uKSAmJiAoaWNvbiBhcyBzdHJpbmdbXSkubGVuZ3RoID09PSAyKSB7XG4gICAgcmV0dXJuIHsgcHJlZml4OiBpY29uWzBdLCBpY29uTmFtZTogaWNvblsxXSB9O1xuICB9XG5cbiAgaWYgKHR5cGVvZiBpY29uID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IGljb25BcnJheSA9IGljb24uc3BsaXQoJyAnKTtcbiAgICBpZiAoaWNvbkFycmF5Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgaWNvbkFycmF5LnVuc2hpZnQoSWNvbkRlZmF1bHRQcmVmaXgpO1xuICAgIH1cbiAgICByZXR1cm4geyBwcmVmaXg6IGljb25BcnJheVswXSBhcyBJY29uUHJlZml4LCBpY29uTmFtZTogaWNvbkFycmF5WzFdIGFzIEljb25OYW1lIH07XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBsYUNsYXNzTGlzdCA9IChwcm9wczogTGFQcm9wcyk6IHN0cmluZ1tdID0+IHtcbiAgY29uc3QgY2xhc3NlcyA9IHtcbiAgICAnbGEtc3Bpbic6IHByb3BzLnNwaW4sXG4gICAgJ2xhLXB1bHNlJzogcHJvcHMucHVsc2UsXG4gICAgJ2xhLWZ3JzogcHJvcHMuZml4ZWRXaWR0aCxcbiAgICAnbGEtYm9yZGVyJzogcHJvcHMuYm9yZGVyLFxuICAgICdsYS1pbnZlcnNlJzogcHJvcHMuaW52ZXJzZSxcbiAgICAnbGEtbGF5ZXJzLWNvdW50ZXInOiBwcm9wcy5jb3VudGVyLFxuICAgICdsYS1mbGlwLWhvcml6b250YWwnOiBwcm9wcy5mbGlwID09PSAnaG9yaXpvbnRhbCcgfHwgcHJvcHMuZmxpcCA9PT0gJ2JvdGgnLFxuICAgICdsYS1mbGlwLXZlcnRpY2FsJzogcHJvcHMuZmxpcCA9PT0gJ3ZlcnRpY2FsJyB8fCBwcm9wcy5mbGlwID09PSAnYm90aCcsXG4gICAgW2BsYS0ke3Byb3BzLnNpemV9YF06IHByb3BzLnNpemUgIT09IG51bGwsXG4gICAgW2BsYS1yb3RhdGUtJHtwcm9wcy5yb3RhdGV9YF06IHByb3BzLnJvdGF0ZSAhPT0gbnVsbCxcbiAgICBbYGxhLXB1bGwtJHtwcm9wcy5wdWxsfWBdOiBwcm9wcy5wdWxsICE9PSBudWxsLFxuICAgIFtgbGEtc3RhY2stJHtwcm9wcy5zdGFja0l0ZW1TaXplfWBdOiBwcm9wcy5zdGFja0l0ZW1TaXplICE9IG51bGxcbiAgfTtcblxuICByZXR1cm4gT2JqZWN0LmtleXMoY2xhc3NlcylcbiAgICAubWFwKGtleSA9PiAoY2xhc3Nlc1trZXldID8ga2V5IDogbnVsbCkpXG4gICAgLmZpbHRlcihrZXkgPT4ga2V5KTtcbn07XG5cbmV4cG9ydCBjb25zdCBhcHBseUNzc1RyYW5zZm9ybXMgPSAodHJhbnNmb3JtT2JqOiBUcmFuc2Zvcm0pOiBzdHJpbmcgPT4ge1xuICBjb25zdCB0cmFuc2Zvcm1zSGFuZGxlcnMgPSB7XG4gICAgc2l6ZTogKHZhbHVlOiBudW1iZXIpID0+IGBzY2FsZSgkezEgKyB2YWx1ZSAvIDEwfSlgLFxuICAgIHJvdGF0ZTogKHZhbHVlOiBudW1iZXIpID0+IGByb3RhdGUoJHt2YWx1ZX1kZWcpYCxcbiAgICBmbGlwWTogKHZhbHVlOiBib29sZWFuKSA9PiAodmFsdWUgPyBgc2NhbGVZKC0xKWAgOiBudWxsKSxcbiAgICBmbGlwWDogKHZhbHVlOiBib29sZWFuKSA9PiAodmFsdWUgPyBgc2NhbGVYKC0xKWAgOiBudWxsKSxcbiAgICB5OiAodmFsdWU6IG51bWJlcikgPT4gYHRyYW5zbGF0ZVkoJHt2YWx1ZX1weClgLFxuICAgIHg6ICh2YWx1ZTogbnVtYmVyKSA9PiBgdHJhbnNsYXRlWCgke3ZhbHVlfXB4KWBcbiAgfTtcblxuICByZXR1cm4gT2JqZWN0LmtleXModHJhbnNmb3JtT2JqKVxuICAgIC5tYXAoa2V5ID0+IHRyYW5zZm9ybXNIYW5kbGVyc1trZXldKHRyYW5zZm9ybU9ialtrZXldKSlcbiAgICAuZmlsdGVyKGtleSA9PiBrZXkpXG4gICAgLmpvaW4oJyAnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZVRyYW5zZm9ybVN0cmluZyA9ICh0cmFuc2Zvcm1TdHJpbmc6IHN0cmluZyk6IFRyYW5zZm9ybSA9PiB7XG4gIGNvbnN0IHRyYW5zZm9ybSA9IHtcbiAgICBzaXplOiAwLFxuICAgIHg6IDAsXG4gICAgeTogMCxcbiAgICByb3RhdGU6IDAsXG4gICAgZmxpcFg6IGZhbHNlLFxuICAgIGZsaXBZOiBmYWxzZVxuICB9O1xuXG4gIGlmICghdHJhbnNmb3JtU3RyaW5nKSB7XG4gICAgcmV0dXJuIHRyYW5zZm9ybTtcbiAgfVxuXG4gIHJldHVybiB0cmFuc2Zvcm1TdHJpbmdcbiAgICAudG9Mb3dlckNhc2UoKVxuICAgIC5zcGxpdCgnICcpXG4gICAgLnJlZHVjZSgoYWNjOiBUcmFuc2Zvcm0sIG46IGFueSkgPT4ge1xuICAgICAgY29uc3QgcGFydHMgPSBuLnRvTG93ZXJDYXNlKCkuc3BsaXQoJy0nKTtcbiAgICAgIGNvbnN0IGZpcnN0ID0gcGFydHNbMF07XG4gICAgICBsZXQgcmVzdCA9IHBhcnRzLnNsaWNlKDEpLmpvaW4oJy0nKTtcblxuICAgICAgaWYgKGZpcnN0ICYmIHJlc3QgPT09ICdoJykge1xuICAgICAgICBhY2MuZmxpcFggPSB0cnVlO1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfVxuXG4gICAgICBpZiAoZmlyc3QgJiYgcmVzdCA9PT0gJ3YnKSB7XG4gICAgICAgIGFjYy5mbGlwWSA9IHRydWU7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9XG5cbiAgICAgIHJlc3QgPSBwYXJzZUZsb2F0KHJlc3QpO1xuXG4gICAgICBpZiAoaXNOYU4ocmVzdCkpIHtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChmaXJzdCkge1xuICAgICAgICBjYXNlICdncm93JzpcbiAgICAgICAgICBhY2Muc2l6ZSA9IGFjYy5zaXplICsgcmVzdDtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdzaHJpbmsnOlxuICAgICAgICAgIGFjYy5zaXplID0gYWNjLnNpemUgLSByZXN0O1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgIGFjYy54ID0gYWNjLnggLSByZXN0O1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgICBhY2MueCA9IGFjYy54ICsgcmVzdDtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICd1cCc6XG4gICAgICAgICAgYWNjLnkgPSBhY2MueSAtIHJlc3Q7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZG93bic6XG4gICAgICAgICAgYWNjLnkgPSBhY2MueSArIHJlc3Q7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAncm90YXRlJzpcbiAgICAgICAgICBhY2Mucm90YXRlID0gYWNjLnJvdGF0ZSArIHJlc3Q7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgdHJhbnNmb3JtKTtcbn07XG4iXX0=