solid-fa
Version:
Tiny FontAwesome component for SolidJS
363 lines (305 loc) • 10.4 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var web = require('solid-js/web');
var solidJs = require('solid-js');
function _extends() {
_extends = Object.assign || function (target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
return _extends.apply(this, arguments);
}
var parseNumber = parseFloat;
function joinCss(obj, separator) {
if (separator === void 0) {
separator = ';';
}
var texts;
if (Array.isArray(obj)) {
texts = obj.filter(function (text) {
return text;
});
} else {
texts = [];
for (var prop in obj) {
if (obj[prop]) {
texts.push(prop + ":" + obj[prop]);
}
}
}
return texts.join(separator);
}
function getStyles(size, pull, fw) {
var float;
var width;
var height = '1em';
var lineHeight;
var fontSize;
var textAlign;
var verticalAlign = '-.125em';
var overflow = 'visible';
if (fw) {
textAlign = 'center';
width = '1.25em';
}
if (pull) {
float = pull;
}
if (size) {
if (size === 'lg') {
fontSize = '1.33333em';
lineHeight = '.75em';
verticalAlign = '-.225em';
} else if (size === 'xs') {
fontSize = '.75em';
} else if (size === 'sm') {
fontSize = '.875em';
} else {
fontSize = size.replace('x', 'em');
}
}
return {
float: float,
width: width,
height: height,
'line-height': lineHeight,
'font-size': fontSize,
'text-align': textAlign,
'vertical-align': verticalAlign,
'transform-origin': 'center',
overflow: overflow
};
}
function getTransform(scale, translateX, translateY, rotate, flip, translateTimes, translateUnit, rotateUnit) {
if (translateTimes === void 0) {
translateTimes = 1;
}
if (translateUnit === void 0) {
translateUnit = '';
}
if (rotateUnit === void 0) {
rotateUnit = '';
}
var flipX = 1;
var flipY = 1;
if (flip) {
if (flip === 'horizontal') {
flipX = -1;
} else if (flip === 'vertical') {
flipY = -1;
} else {
flipX = flipY = -1;
}
}
return joinCss(["translate(" + parseNumber(translateX) * translateTimes + translateUnit + "," + parseNumber(translateY) * translateTimes + translateUnit + ")", "scale(" + flipX * parseNumber(scale) + "," + flipY * parseNumber(scale) + ")", rotate && "rotate(" + rotate + rotateUnit + ")"], ' ');
}
function styleInject(css, ref) {
if (ref === void 0) ref = {};
var insertAt = ref.insertAt;
if (!css || typeof document === 'undefined') {
return;
}
var head = document.head || document.getElementsByTagName('head')[0];
var style = document.createElement('style');
style.type = 'text/css';
if (insertAt === 'top') {
if (head.firstChild) {
head.insertBefore(style, head.firstChild);
} else {
head.appendChild(style);
}
} else {
head.appendChild(style);
}
if (style.styleSheet) {
style.styleSheet.cssText = css;
} else {
style.appendChild(document.createTextNode(css));
}
}
var css_248z$1 = "._1yhTRa{animation:_1yhTRa 2s linear 0s infinite}._2dBo7A{animation:_1yhTRa 1s steps(8) infinite}@keyframes _1yhTRa{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}";
var style$1 = {"spin":"_1yhTRa","pulse":"_2dBo7A"};
styleInject(css_248z$1);
const _tmpl$$2 = web.template(`<svg><path></path></svg>`, 4, true),
_tmpl$2 = web.template(`<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg"><g><g></g></g></svg>`, 6);
function Fa(props) {
props = solidJs.mergeProps({
scale: 1,
translateX: 0,
translateY: 0,
primaryOpacity: 1,
secondaryOpacity: 0.4
}, props);
var i = solidJs.createMemo(function () {
var _props$icon;
return ((_props$icon = props.icon) == null ? void 0 : _props$icon.icon) || [0, 0, '', [], ''];
});
var s = solidJs.createMemo(function () {
return getStyles(props.size, props.pull, props.fw);
});
var transform = solidJs.createMemo(function () {
return getTransform(props.scale, props.translateX, props.translateY, props.rotate, props.flip, 512);
});
return function () {
var _el$ = _tmpl$2.cloneNode(true),
_el$2 = _el$.firstChild,
_el$3 = _el$2.firstChild;
web.insert(_el$3, web.createComponent(solidJs.Show, {
get when() {
return typeof i()[4] === 'string';
},
get fallback() {
return [function () {
var _el$5 = _tmpl$$2.cloneNode(true);
web.effect(function (_p$) {
var _v$11 = i()[4][0],
_v$12 = props.secondaryColor || props.color || 'currentColor',
_v$13 = props.swapOpacity != false ? props.primaryOpacity : props.secondaryOpacity,
_v$14 = "translate(" + i()[0] / -2 + " " + i()[1] / -2 + ")";
_v$11 !== _p$._v$11 && web.setAttribute(_el$5, "d", _p$._v$11 = _v$11);
_v$12 !== _p$._v$12 && web.setAttribute(_el$5, "fill", _p$._v$12 = _v$12);
_v$13 !== _p$._v$13 && web.setAttribute(_el$5, "fill-opacity", _p$._v$13 = _v$13);
_v$14 !== _p$._v$14 && web.setAttribute(_el$5, "transform", _p$._v$14 = _v$14);
return _p$;
}, {
_v$11: undefined,
_v$12: undefined,
_v$13: undefined,
_v$14: undefined
});
return _el$5;
}(), function () {
var _el$6 = _tmpl$$2.cloneNode(true);
web.effect(function (_p$) {
var _v$15 = i()[4][1],
_v$16 = props.primaryColor || props.color || 'currentColor',
_v$17 = props.swapOpacity != false ? props.secondaryOpacity : props.primaryOpacity,
_v$18 = "translate(" + i()[0] / -2 + " " + i()[1] / -2 + ")";
_v$15 !== _p$._v$15 && web.setAttribute(_el$6, "d", _p$._v$15 = _v$15);
_v$16 !== _p$._v$16 && web.setAttribute(_el$6, "fill", _p$._v$16 = _v$16);
_v$17 !== _p$._v$17 && web.setAttribute(_el$6, "fill-opacity", _p$._v$17 = _v$17);
_v$18 !== _p$._v$18 && web.setAttribute(_el$6, "transform", _p$._v$18 = _v$18);
return _p$;
}, {
_v$15: undefined,
_v$16: undefined,
_v$17: undefined,
_v$18: undefined
});
return _el$6;
}()];
},
get children() {
var _el$4 = _tmpl$$2.cloneNode(true);
web.effect(function (_p$) {
var _v$ = i()[4],
_v$2 = props.color || props.primaryColor || 'currentColor',
_v$3 = "translate(" + i()[0] / -2 + " " + i()[1] / -2 + ")";
_v$ !== _p$._v$ && web.setAttribute(_el$4, "d", _p$._v$ = _v$);
_v$2 !== _p$._v$2 && web.setAttribute(_el$4, "fill", _p$._v$2 = _v$2);
_v$3 !== _p$._v$3 && web.setAttribute(_el$4, "transform", _p$._v$3 = _v$3);
return _p$;
}, {
_v$: undefined,
_v$2: undefined,
_v$3: undefined
});
return _el$4;
}
}));
web.effect(function (_p$) {
var _extends2;
var _v$4 = _extends((_extends2 = {
'solid-fa': true
}, _extends2[style$1.spin] = props.spin, _extends2[style$1.pulse] = props.pulse, _extends2), props.classList),
_v$5 = props.class,
_v$6 = s(),
_v$7 = "0 0 " + i()[0] + " " + i()[1],
_v$8 = "translate(" + i()[0] / 2 + " " + i()[1] / 2 + ")",
_v$9 = i()[0] / 4 + " 0",
_v$10 = transform();
_p$._v$4 = web.classList(_el$, _v$4, _p$._v$4);
_v$5 !== _p$._v$5 && web.setAttribute(_el$, "class", _p$._v$5 = _v$5);
_p$._v$6 = web.style(_el$, _v$6, _p$._v$6);
_v$7 !== _p$._v$7 && web.setAttribute(_el$, "viewBox", _p$._v$7 = _v$7);
_v$8 !== _p$._v$8 && web.setAttribute(_el$2, "transform", _p$._v$8 = _v$8);
_v$9 !== _p$._v$9 && web.setAttribute(_el$2, "transform-origin", _p$._v$9 = _v$9);
_v$10 !== _p$._v$10 && web.setAttribute(_el$3, "transform", _p$._v$10 = _v$10);
return _p$;
}, {
_v$4: undefined,
_v$5: undefined,
_v$6: undefined,
_v$7: undefined,
_v$8: undefined,
_v$9: undefined,
_v$10: undefined
});
return _el$;
}();
}
var css_248z = "._2RIh6I{display:inline-block;position:relative}._2RIh6I .solid-fa{position:absolute;bottom:0;left:0;right:0;top:0;margin:auto;text-align:center}._2RIh6I .solid-fa-layers-text{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}._2RIh6I .solid-fa-layers-text span{display:inline-block}";
var style = {"layers":"_2RIh6I"};
styleInject(css_248z);
const _tmpl$$1 = web.template(`<span></span>`, 2);
function FaLayers(props) {
var s = solidJs.createMemo(function () {
return getStyles(props.size, props.pull, true);
});
return function () {
var _el$ = _tmpl$$1.cloneNode(true);
web.insert(_el$, function () {
return props.children;
});
web.effect(function (_p$) {
var _v$3;
var _v$ = (_v$3 = {}, _v$3[style.layers] = true, _v$3),
_v$2 = s();
_p$._v$ = web.classList(_el$, _v$, _p$._v$);
_p$._v$2 = web.style(_el$, _v$2, _p$._v$2);
return _p$;
}, {
_v$: undefined,
_v$2: undefined
});
return _el$;
}();
}
const _tmpl$ = web.template(`<span class="solid-fa-layers-text"><span></span></span>`, 4);
function FaLayersText(props) {
props = solidJs.mergeProps({
scale: 1,
translateX: 0,
translateY: 0
}, props);
var s = solidJs.createMemo(function () {
return _extends({}, getStyles(props.size), {
color: props.color,
display: 'inline-block',
height: 'auto',
transform: getTransform(props.scale, props.translateX, props.translateY, props.rotate, props.flip, undefined, 'em', 'deg')
});
});
return function () {
var _el$ = _tmpl$.cloneNode(true),
_el$2 = _el$.firstChild;
web.insert(_el$2, function () {
return props.children;
});
web.effect(function (_$p) {
return web.style(_el$2, s(), _$p);
});
return _el$;
}();
}
exports.Fa = Fa;
exports.FaLayers = FaLayers;
exports.FaLayersText = FaLayersText;
exports.default = Fa;