Release 5.0.0-rc4

This commit is contained in:
robmadole
2017-10-27 15:45:27 -05:00
committed by Rob Madole
parent 69bf7f96a1
commit 763666f11d
2235 changed files with 3433 additions and 622 deletions

View File

@@ -48,6 +48,22 @@ how imports will work.
* `fa-facebook` becomes `import { faFacebookF } from '@fortawesome/fontawesome-free-brands'` (it's in the Brands style and this was renamed to facebook-f)
* `fa-freebsd` becomes `import { faFreebsd } from '@fortawesome/fontawesome-free-brands'` (OCD-warning: we know it's FreeBSD but consistency/guessability is the goal here)
## Alternative imports
Using `import { faAddressBook } from '@fortawesome/fontawesome-free-solid'` is great if you are using Webpack 2+ or Rollup which supports tree-shaking.
However if you cannot use this feature you can do the following to achieve the same result:
```javascript
import faUser from '@fortawesome/fontawesome-free-solid/faUser'
```
Or using `require`:
```javascript
var faUser = require('@fortawesome/fontawesome-free-solid/faUser')
```
## Configuration
Font Awesome 5 has several configuration options that affect how the library operates.
@@ -515,3 +531,15 @@ Harris the concept of tree shaking attempts to eliminate any unused code. Webpac
FontAwesome.js supports tree shaking and the design of the icon system encourages only importing those icons that you need.
This can result in significantly reduce the bundle size.
If you can't use tree-shaking an alternative is to import the icons like this:
```javascript
import faUser from '@fortawesome/fontawesome-free-solid/faUser'
```
Or using `require`:
```javascript
var faUser = require('@fortawesome/fontawesome-free-solid/faUser')
```

View File

@@ -1,5 +1,5 @@
/**
* Font Awesome 5.0.0-rc3
* Font Awesome 5.0.0-rc4
*/
var noop = function noop() {};
@@ -29,8 +29,9 @@ var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';
var UNITS_IN_GRID = 16;
var DEFAULT_FAMILY_PREFIX = 'fa';
var DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';
var DATA_FA_REPLACEMENT = 'data-fa-replacement';
var DATA_FA_PROCESSED = 'data-fa-processed';
var DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';
var HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';
var PRODUCTION = function () {
try {
@@ -469,7 +470,7 @@ function makeInlineSvgAbstract(params) {
var content = {
children: [],
attributes: _extends({}, extra.attributes, (_babelHelpers$extends = {}, defineProperty(_babelHelpers$extends, DATA_FA_REPLACEMENT, 'true'), defineProperty(_babelHelpers$extends, 'data-prefix', prefix), defineProperty(_babelHelpers$extends, 'data-icon', iconName), defineProperty(_babelHelpers$extends, 'class', attrClass), defineProperty(_babelHelpers$extends, 'role', 'img'), defineProperty(_babelHelpers$extends, 'xmlns', 'http://www.w3.org/2000/svg'), defineProperty(_babelHelpers$extends, 'viewBox', '0 0 ' + width + ' ' + height), _babelHelpers$extends))
attributes: _extends({}, extra.attributes, (_babelHelpers$extends = {}, defineProperty(_babelHelpers$extends, DATA_FA_PROCESSED, ''), defineProperty(_babelHelpers$extends, 'data-prefix', prefix), defineProperty(_babelHelpers$extends, 'data-icon', iconName), defineProperty(_babelHelpers$extends, 'class', attrClass), defineProperty(_babelHelpers$extends, 'role', 'img'), defineProperty(_babelHelpers$extends, 'xmlns', 'http://www.w3.org/2000/svg'), defineProperty(_babelHelpers$extends, 'viewBox', '0 0 ' + width + ' ' + height), _babelHelpers$extends))
};
if (title) content.children.push({ tag: 'title', attributes: { id: content.attributes['aria-labelledby'] || 'title-' + nextUniqueId() }, children: [title] });
@@ -509,7 +510,7 @@ function makeLayersTextAbstract(params) {
extra = params.extra;
var attributes = _extends({}, extra.attributes, title ? { 'title': title } : {}, (_babelHelpers$extends2 = {}, defineProperty(_babelHelpers$extends2, DATA_FA_REPLACEMENT, 'true'), defineProperty(_babelHelpers$extends2, 'class', extra.classes.join(' ')), _babelHelpers$extends2));
var attributes = _extends({}, extra.attributes, title ? { 'title': title } : {}, (_babelHelpers$extends2 = {}, defineProperty(_babelHelpers$extends2, DATA_FA_PROCESSED, ''), defineProperty(_babelHelpers$extends2, 'class', extra.classes.join(' ')), _babelHelpers$extends2));
var styles = _extends({}, extra.styles);
@@ -539,9 +540,9 @@ function makeLayersTextAbstract(params) {
return val;
}
var noop$1 = function noop() {};
var p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : { mark: noop$1, measure: noop$1 };
var preamble = 'FA "5.0.0-rc3"';
var noop$2 = function noop() {};
var p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : { mark: noop$2, measure: noop$2 };
var preamble = 'FA "5.0.0-rc4"';
var begin = function begin(name) {
p.mark(preamble + ' ' + name + ' begins');
@@ -572,6 +573,8 @@ function toHtml(abstractNodes) {
}
}
var noop$1 = function noop() {};
function getMutator() {
if (config.autoReplaceSvg === true) {
return mutators.replace;
@@ -594,28 +597,59 @@ var mutators = {
nest: function nest(mutation) {
var node = mutation[0];
var abstract = mutation[1];
// If we already have a replaced node we do not want to continue nesting within it.
// Short-circuit to the standard replacement
if (~toArray(node.classList).indexOf(config.replacementClass)) {
return mutators.replace(mutation);
}
var forSvg = new RegExp(config.familyPrefix + '-.*');
delete abstract[0].attributes.style;
var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {
if (cls === config.replacementClass || cls.match(forSvg)) {
acc.toSvg.push(cls);
} else {
acc.toNode.push(cls);
}
return acc;
}, { toNode: [], toSvg: [] });
abstract[0].attributes.class = splitClasses.toSvg.join(' ');
var newInnerHTML = abstract.map(function (a) {
return toHtml(a);
}).join('\n');
node.setAttribute('class', splitClasses.toNode.join(' '));
node.setAttribute(DATA_FA_PROCESSED, '');
node.innerHTML = newInnerHTML;
}
};
function perform(mutations, callback) {
if (!WINDOW.requestAnimationFrame) return;
var callbackFunction = typeof callback === 'function' ? callback : noop$1;
WINDOW.requestAnimationFrame(function () {
var mutator = getMutator();
var end = perf.begin('mutate');
if (mutations.length === 0) {
callbackFunction();
} else {
var frame = WINDOW.requestAnimationFrame || function (op) {
return op();
};
mutations.map(mutator);
frame(function () {
var mutator = getMutator();
var mark = perf.begin('mutate');
if (typeof callback === 'function') {
callback();
}
mutations.map(mutator);
end();
});
mark();
callbackFunction();
});
}
}
function disableObservation(operation) {
@@ -1124,14 +1158,19 @@ function searchPseudoElements(root) {
var styles = WINDOW.getComputedStyle(node, pos);
var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);
var children = toArray(node.children);
var child = pos === ':before' ? children[0] : children.slice(-1)[0];
var hasReplacement = child ? !!child.getAttribute(DATA_FA_PSEUDO_ELEMENT) : false;
var pseudoElement = children.filter(function (c) {
return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === pos;
})[0];
if (fontFamily && !hasReplacement) {
if (!fontFamily && pseudoElement) {
pseudoElement.remove();
}
if (fontFamily && !pseudoElement) {
var content = styles.getPropertyValue('content');
var i = DOCUMENT.createElement('i');
i.setAttribute('class', '' + STYLE_TO_PREFIX[fontFamily[1]]);
i.setAttribute(DATA_FA_PSEUDO_ELEMENT, true);
i.setAttribute(DATA_FA_PSEUDO_ELEMENT, pos);
i.innerText = content.length === 3 ? content.substr(1, 1) : content;
if (pos === ':before') {
node.insertBefore(i, node.firstChild);
@@ -1151,33 +1190,32 @@ function onTree(root) {
var htmlClassList = DOCUMENT.documentElement.classList;
var hclAdd = function hclAdd(suffix) {
return htmlClassList.add('font-awesome-i2svg-' + suffix);
return htmlClassList.add(HTML_CLASS_I2SVG_BASE_CLASS + '-' + suffix);
};
var hclRemove = function hclRemove(suffix) {
return htmlClassList.remove('font-awesome-i2svg-' + suffix);
return htmlClassList.remove(HTML_CLASS_I2SVG_BASE_CLASS + '-' + suffix);
};
var prefixes = Object.keys(packs);
var prefixesDomQuery = ['.' + LAYERS_TEXT_CLASSNAME].concat(prefixes.map(function (p) {
return '.' + p;
var prefixesDomQuery = ['.' + LAYERS_TEXT_CLASSNAME + ':not([' + DATA_FA_PROCESSED + '])'].concat(prefixes.map(function (p) {
return '.' + p + ':not([' + DATA_FA_PROCESSED + '])';
})).join(', ');
hclAdd('active');
hclAdd('pending');
hclRemove('complete');
if (prefixesDomQuery.length === 0) {
return;
}
if (config.searchPseudoElements) {
searchPseudoElements(root);
var candidates = toArray(root.querySelectorAll(prefixesDomQuery));
if (candidates.length > 0) {
hclAdd('pending');
hclRemove('complete');
} else {
return;
}
var end = perf.begin('onTree');
var mutations = toArray(root.querySelectorAll(prefixesDomQuery)).reduce(function (acc, node) {
if (node.getAttribute(DATA_FA_REPLACEMENT)) return acc;
var mark = perf.begin('onTree');
var mutations = candidates.reduce(function (acc, node) {
try {
var mutation = generateMutation(node);
@@ -1195,9 +1233,10 @@ function onTree(root) {
return acc;
}, []);
end();
mark();
perform(mutations, function () {
hclAdd('active');
hclAdd('complete');
hclRemove('pending');
@@ -1353,6 +1392,10 @@ var api$1 = {
callback = _params$callback === undefined ? function () {} : _params$callback;
if (config.searchPseudoElements) {
searchPseudoElements(node);
}
onTree(node, callback);
},

View File

@@ -1,5 +1,5 @@
/**
* Font Awesome 5.0.0-rc3
* Font Awesome 5.0.0-rc4
*/
(function (global, factory) {
@@ -35,8 +35,9 @@ var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';
var UNITS_IN_GRID = 16;
var DEFAULT_FAMILY_PREFIX = 'fa';
var DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';
var DATA_FA_REPLACEMENT = 'data-fa-replacement';
var DATA_FA_PROCESSED = 'data-fa-processed';
var DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';
var HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';
var PRODUCTION = function () {
try {
@@ -475,7 +476,7 @@ function makeInlineSvgAbstract(params) {
var content = {
children: [],
attributes: _extends({}, extra.attributes, (_babelHelpers$extends = {}, defineProperty(_babelHelpers$extends, DATA_FA_REPLACEMENT, 'true'), defineProperty(_babelHelpers$extends, 'data-prefix', prefix), defineProperty(_babelHelpers$extends, 'data-icon', iconName), defineProperty(_babelHelpers$extends, 'class', attrClass), defineProperty(_babelHelpers$extends, 'role', 'img'), defineProperty(_babelHelpers$extends, 'xmlns', 'http://www.w3.org/2000/svg'), defineProperty(_babelHelpers$extends, 'viewBox', '0 0 ' + width + ' ' + height), _babelHelpers$extends))
attributes: _extends({}, extra.attributes, (_babelHelpers$extends = {}, defineProperty(_babelHelpers$extends, DATA_FA_PROCESSED, ''), defineProperty(_babelHelpers$extends, 'data-prefix', prefix), defineProperty(_babelHelpers$extends, 'data-icon', iconName), defineProperty(_babelHelpers$extends, 'class', attrClass), defineProperty(_babelHelpers$extends, 'role', 'img'), defineProperty(_babelHelpers$extends, 'xmlns', 'http://www.w3.org/2000/svg'), defineProperty(_babelHelpers$extends, 'viewBox', '0 0 ' + width + ' ' + height), _babelHelpers$extends))
};
if (title) content.children.push({ tag: 'title', attributes: { id: content.attributes['aria-labelledby'] || 'title-' + nextUniqueId() }, children: [title] });
@@ -515,7 +516,7 @@ function makeLayersTextAbstract(params) {
extra = params.extra;
var attributes = _extends({}, extra.attributes, title ? { 'title': title } : {}, (_babelHelpers$extends2 = {}, defineProperty(_babelHelpers$extends2, DATA_FA_REPLACEMENT, 'true'), defineProperty(_babelHelpers$extends2, 'class', extra.classes.join(' ')), _babelHelpers$extends2));
var attributes = _extends({}, extra.attributes, title ? { 'title': title } : {}, (_babelHelpers$extends2 = {}, defineProperty(_babelHelpers$extends2, DATA_FA_PROCESSED, ''), defineProperty(_babelHelpers$extends2, 'class', extra.classes.join(' ')), _babelHelpers$extends2));
var styles = _extends({}, extra.styles);
@@ -545,9 +546,9 @@ function makeLayersTextAbstract(params) {
return val;
}
var noop$1 = function noop() {};
var p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : { mark: noop$1, measure: noop$1 };
var preamble = 'FA "5.0.0-rc3"';
var noop$2 = function noop() {};
var p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : { mark: noop$2, measure: noop$2 };
var preamble = 'FA "5.0.0-rc4"';
var begin = function begin(name) {
p.mark(preamble + ' ' + name + ' begins');
@@ -578,6 +579,8 @@ function toHtml(abstractNodes) {
}
}
var noop$1 = function noop() {};
function getMutator() {
if (config.autoReplaceSvg === true) {
return mutators.replace;
@@ -600,28 +603,59 @@ var mutators = {
nest: function nest(mutation) {
var node = mutation[0];
var abstract = mutation[1];
// If we already have a replaced node we do not want to continue nesting within it.
// Short-circuit to the standard replacement
if (~toArray(node.classList).indexOf(config.replacementClass)) {
return mutators.replace(mutation);
}
var forSvg = new RegExp(config.familyPrefix + '-.*');
delete abstract[0].attributes.style;
var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {
if (cls === config.replacementClass || cls.match(forSvg)) {
acc.toSvg.push(cls);
} else {
acc.toNode.push(cls);
}
return acc;
}, { toNode: [], toSvg: [] });
abstract[0].attributes.class = splitClasses.toSvg.join(' ');
var newInnerHTML = abstract.map(function (a) {
return toHtml(a);
}).join('\n');
node.setAttribute('class', splitClasses.toNode.join(' '));
node.setAttribute(DATA_FA_PROCESSED, '');
node.innerHTML = newInnerHTML;
}
};
function perform(mutations, callback) {
if (!WINDOW.requestAnimationFrame) return;
var callbackFunction = typeof callback === 'function' ? callback : noop$1;
WINDOW.requestAnimationFrame(function () {
var mutator = getMutator();
var end = perf.begin('mutate');
if (mutations.length === 0) {
callbackFunction();
} else {
var frame = WINDOW.requestAnimationFrame || function (op) {
return op();
};
mutations.map(mutator);
frame(function () {
var mutator = getMutator();
var mark = perf.begin('mutate');
if (typeof callback === 'function') {
callback();
}
mutations.map(mutator);
end();
});
mark();
callbackFunction();
});
}
}
function disableObservation(operation) {
@@ -1130,14 +1164,19 @@ function searchPseudoElements(root) {
var styles = WINDOW.getComputedStyle(node, pos);
var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);
var children = toArray(node.children);
var child = pos === ':before' ? children[0] : children.slice(-1)[0];
var hasReplacement = child ? !!child.getAttribute(DATA_FA_PSEUDO_ELEMENT) : false;
var pseudoElement = children.filter(function (c) {
return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === pos;
})[0];
if (fontFamily && !hasReplacement) {
if (!fontFamily && pseudoElement) {
pseudoElement.remove();
}
if (fontFamily && !pseudoElement) {
var content = styles.getPropertyValue('content');
var i = DOCUMENT.createElement('i');
i.setAttribute('class', '' + STYLE_TO_PREFIX[fontFamily[1]]);
i.setAttribute(DATA_FA_PSEUDO_ELEMENT, true);
i.setAttribute(DATA_FA_PSEUDO_ELEMENT, pos);
i.innerText = content.length === 3 ? content.substr(1, 1) : content;
if (pos === ':before') {
node.insertBefore(i, node.firstChild);
@@ -1157,33 +1196,32 @@ function onTree(root) {
var htmlClassList = DOCUMENT.documentElement.classList;
var hclAdd = function hclAdd(suffix) {
return htmlClassList.add('font-awesome-i2svg-' + suffix);
return htmlClassList.add(HTML_CLASS_I2SVG_BASE_CLASS + '-' + suffix);
};
var hclRemove = function hclRemove(suffix) {
return htmlClassList.remove('font-awesome-i2svg-' + suffix);
return htmlClassList.remove(HTML_CLASS_I2SVG_BASE_CLASS + '-' + suffix);
};
var prefixes = Object.keys(packs);
var prefixesDomQuery = ['.' + LAYERS_TEXT_CLASSNAME].concat(prefixes.map(function (p) {
return '.' + p;
var prefixesDomQuery = ['.' + LAYERS_TEXT_CLASSNAME + ':not([' + DATA_FA_PROCESSED + '])'].concat(prefixes.map(function (p) {
return '.' + p + ':not([' + DATA_FA_PROCESSED + '])';
})).join(', ');
hclAdd('active');
hclAdd('pending');
hclRemove('complete');
if (prefixesDomQuery.length === 0) {
return;
}
if (config.searchPseudoElements) {
searchPseudoElements(root);
var candidates = toArray(root.querySelectorAll(prefixesDomQuery));
if (candidates.length > 0) {
hclAdd('pending');
hclRemove('complete');
} else {
return;
}
var end = perf.begin('onTree');
var mutations = toArray(root.querySelectorAll(prefixesDomQuery)).reduce(function (acc, node) {
if (node.getAttribute(DATA_FA_REPLACEMENT)) return acc;
var mark = perf.begin('onTree');
var mutations = candidates.reduce(function (acc, node) {
try {
var mutation = generateMutation(node);
@@ -1201,9 +1239,10 @@ function onTree(root) {
return acc;
}, []);
end();
mark();
perform(mutations, function () {
hclAdd('active');
hclAdd('complete');
hclRemove('pending');
@@ -1359,6 +1398,10 @@ var api$1 = {
callback = _params$callback === undefined ? function () {} : _params$callback;
if (config.searchPseudoElements) {
searchPseudoElements(node);
}
onTree(node, callback);
},

View File

@@ -4,6 +4,6 @@
"repository": "https://github.com/FortAwesome/Font-Awesome-Pro",
"jsnext:main": "index.es.js",
"license": "MIT",
"version": "0.0.19",
"version": "0.0.20",
"name": "@fortawesome/fontawesome"
}