Repository: itsjavi/fontawesome-iconpicker
Branch: master
Commit: 652bb8e4391d
Files: 25
Total size: 299.3 KB
Directory structure:
gitextract_w0r1qhp1/
├── .github/
│ └── FUNDING.yml
├── .gitignore
├── .npmignore
├── .travis.yml
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Gruntfile.js
├── LICENSE
├── README.md
├── composer.json
├── dist/
│ ├── css/
│ │ └── fontawesome-iconpicker.css
│ └── js/
│ └── fontawesome-iconpicker.js
├── extension/
│ ├── LICENSE
│ ├── manifest.json
│ ├── popup.html
│ ├── popup.js
│ └── screenshot.psd
├── index.html
├── package.json
└── src/
├── icon.psd
├── js/
│ ├── iconpicker.js
│ └── jquery.ui.pos.js
└── less/
├── iconpicker.less
├── popovers.less
└── variables.less
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/FUNDING.yml
================================================
# These are supported funding model platforms
issuehunt: farbelous
custom: https://www.paypal.me/metaunicorn/20
================================================
FILE: .gitignore
================================================
*~
.DS_Store
.DS_Store*
ehthumbs.db
Thumbs.db
*.log
/ignore/
/ignored/
/node_modules/
/bower_components/
/nbproject/
.idea/
prod/
.icons.temp
*.zip
================================================
FILE: .npmignore
================================================
extension
*.zip
*.psd
composer.json
.*
node_modules
CODE_OF_CONDUCT.md
================================================
FILE: .travis.yml
================================================
language: node_js
node_js:
- "0.10"
before_script:
- npm install -g grunt-cli
script: grunt --verbose --force
================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team members through their social media sites or at _git @ itsjavi.com_.
The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/
================================================
FILE: CONTRIBUTING.md
================================================
## Submitting issues
For feature requests, suggestions or ideas, add `[SUGGESTION]` before the title of the issue, for anything else follow the following guidelines.
### Guidelines
- Try to reproduce your problem in a separated environment, like in JSFiddle, [here is a template for it](http://jsfiddle.net/itsjavi/6aLndfgq/), that you can fork in the same page.
- Before posting your issue, consider adding this information:
* Expected behaviour: what should happen?
* Actual behaviour: what happens instead?
* Your context: Where it happens? In which browser and version (if applicable)?
* Plugin version (and/or commit reference).
* jQuery version you use and list of all other plugins/scripts you are using with this one and may cause some conflict.
* A link to your JSFiddle (or similar tool) demo where you reproduced the problem
## Contributing to Source Code
Thanks for wanting to contribute source code to this project. That's great!
- Before starting developing the plugin, you need to run `npm install` and `bower install` inside the plugin folder.
- Before your commits run always `grunt` inside the plugin folders, to update the dist files (don't modify them manually).
- Do not change the plugin coding style.
- Check that the index.html demos aren't broken (modify if necessary).
- Test your code at least in Chrome, Firefox and IE >= 10.
================================================
FILE: Gruntfile.js
================================================
'use strict';
const FONTAWESOME_VERSION = '5.5.0';
const jsBanner = `/*!
* Font Awesome Icon Picker
* https://farbelous.github.io/fontawesome-iconpicker/
*
* @author Javi Aguilar, itsjavi.com
* @license MIT License
* @see https://github.com/farbelous/fontawesome-iconpicker/blob/master/LICENSE
*/
`;
module.exports = function(grunt) {
const parsedIconPicker = 'prod/src/js/iconpicker.js';
const tempIconsFile = '.icons.temp';
grunt.initConfig({
download: {
somefile: {
src: [
'https://raw.githubusercontent.com/FortAwesome/Font-Awesome/' +
FONTAWESOME_VERSION +
'/advanced-options/metadata/icons.yml'
],
dest: tempIconsFile
},
},
yaml: {
getIcons: {
options: {
space: 2,
disableDest: true,
middleware: function(response, sourceJSON, src, dest) {
let targetJSON = {
icons: []
};
sourceJSON = JSON.parse(sourceJSON);
Object.keys(sourceJSON).forEach(function(key) {
let ele = sourceJSON[key];
let icon = 'fa-' + key;
ele.styles.forEach(function(style) {
style = style.toLowerCase();
if (style.startsWith('brand')) {
targetJSON.icons.push({
title: 'fab ' + icon,
searchTerms: ele.search.terms
});
} else if (style.startsWith('solid')) {
targetJSON.icons.push({
title: 'fas ' + icon,
searchTerms: ele.search.terms
});
} else if (style.startsWith('regular')) {
targetJSON.icons.push({
title: 'far ' + icon,
searchTerms: ele.search.terms
});
} else if (style.startsWith('light')) {
targetJSON.icons.push({
title: 'fal ' + icon,
searchTerms: ele.search.terms
});
}
});
});
grunt.file.write(dest, JSON.stringify(targetJSON));
}
},
files: [{
expand: false,
src: [tempIconsFile],
dest: tempIconsFile
}]
},
},
'string-replace': {
dist: {
files: {
'prod/': ['src/js/iconpicker.js'],
},
options: {
replacements: [{
pattern: '//###REPLACE-WITH-FONT-AWESOME-5-FONTS###',
replacement: "<%= grunt.file.read('" + tempIconsFile + "') %>"
}]
}
}
},
less: {
dist: {
options: {
compile: true,
compress: false
},
files: {
'dist/css/fontawesome-iconpicker.css': [
'src/less/iconpicker.less'
]
}
},
distMin: {
options: {
compile: true,
compress: true
},
files: {
'dist/css/fontawesome-iconpicker.min.css': [
'src/less/iconpicker.less'
]
}
}
},
jsbeautifier: {
files: ['Gruntfile.js', 'src/js/*.js', parsedIconPicker]
},
uglify: {
distMin: {
options: {
compress: {},
beautify: false,
comments: 'some',
banner: jsBanner
},
files: {
'dist/js/fontawesome-iconpicker.min.js': [
'src/js/jquery.ui.pos.js',
parsedIconPicker
]
}
},
dist: {
options: {
compress: false,
beautify: true,
comments: 'some',
banner: jsBanner
},
files: {
'dist/js/fontawesome-iconpicker.js': [
'src/js/jquery.ui.pos.js',
parsedIconPicker
]
}
}
},
watch: {
less: {
files: [
'src/less/*.less'
],
tasks: ['less']
},
js: {
files: [
'src/js/*.js'
],
tasks: ['uglify']
}
},
clean: {
dist: [
'dist/css',
'dist/js/*.js'
],
temp: [
tempIconsFile,
'prod/'
]
}
});
// Load tasks
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-less');
grunt.loadNpmTasks('grunt-jsbeautifier');
grunt.loadNpmTasks('grunt-yaml');
grunt.loadNpmTasks('grunt-http-download');
grunt.loadNpmTasks('grunt-string-replace');
// Register tasks
grunt.registerTask('default', [
'download',
'yaml',
'string-replace',
'clean:dist',
'less',
'jsbeautifier',
'uglify',
'clean:temp'
]);
grunt.registerTask('dev', [
'watch'
]);
};
================================================
FILE: LICENSE
================================================
The MIT License (MIT)
Copyright (c) 2016 Javi Aguilar
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================
fontawesome-iconpicker
========================
[](https://www.npmjs.com/package/fontawesome-iconpicker)
Font Awesome Icon Picker is a fully customizable plugin for Twitter Bootstrap,
with a powerful base API, based on [bootstrap-popover-picker](https://itsjavi.github.io/bootstrap-popover-picker/)
You can use Font Awesome 5 or another font icon set of your choice (icon list is totally customizable).
[View demos](https://itsjavi.github.io/fontawesome-iconpicker/)
## Instantiation
You can call the plugin in several ways:
```javascript
// Create instance if not exists (returns a jQuery object)
$('.my').iconpicker();
$('.my').iconpicker({ /*options*/ }); // you can also specify options via data-* attributes
// For the first matched element, access to a plugin property value
$('.my').data('iconpicker').iconpickerProperty;
// For the first matched element, call a plugin instance method with the given args
$('.my').data('iconpicker').iconpickerMethod('methodArg1', 'methodArg2' /* , other args */);
// Call and apply a plugin method to EACH matched element.
$.iconpicker.batch('.my', 'iconpickerMethod', 'methodArg1', 'methodArg2' /* , other args */); ->
```
## Triggered Events
All of them exposes the plugin instance through event.iconpickerInstance
In order of call:
* iconpickerCreate
* iconpickerCreated
* iconpickerShow
* iconpickerShown
* iconpickerSelect (also exposes event.iconpickerItem and event.iconpickerValue)
* iconpickerUpdate
* iconpickerInvalid (also exposes event.iconpickerValue)
* iconpickerSetValue (also exposes event.iconpickerValue)
* iconpickerSetSourceValue (also exposes event.iconpickerValue)
* iconpickerUpdated
* iconpickerSelected (also exposes event.iconpickerItem and event.iconpickerValue)
* iconpickerHide
* iconpickerHidden
* iconpickerDestroy
* iconpickerDestroyed
```javascript
// Bind iconpicker events to the element
$('.my').on('iconpickerSelected', function(event){
/* event.iconpickerValue */
});
```
## Popover placement extensions
This plugin comes with more placement options than the original Bootstrap Popover.
Here are all the possibilities in detail:
1 2 3 4 5
G 6
F 7
E 8
D C B A 9
0. inline (no placement, display as inline-block)
1. topLeftCorner
2. topLeft
3. top (center)
4. topRight
5. topRightCorner
6. rightTop
7. right (center)
8. rightBottom
9. bottomRightCorner
A. bottomRight
B. bottom (center)
C. bottomLeft
D. bottomLeftCorner
E. leftBottom
F. left (center)
G. leftTop
## Available options
```javascript
var options = {
title: false, // Popover title (optional) only if specified in the template
selected: false, // use this value as the current item and ignore the original
defaultValue: false, // use this value as the current item if input or element value is empty
placement: 'bottom', // (has some issues with auto and CSS). auto, top, bottom, left, right
collision: 'none', // If true, the popover will be repositioned to another position when collapses with the window borders
animation: true, // fade in/out on show/hide ?
//hide iconpicker automatically when a value is picked. it is ignored if mustAccept is not false and the accept button is visible
hideOnSelect: false,
showFooter: false,
searchInFooter: false, // If true, the search will be added to the footer instead of the title
mustAccept: false, // only applicable when there's an iconpicker-btn-accept button in the popover footer
selectedCustomClass: 'bg-primary', // Appends this class when to the selected item
icons: [], // list of icon objects [{title:String, searchTerms:String}]. By default, all Font Awesome icons are included.
fullClassFormatter: function(val) {
return 'fa ' + val;
},
input: 'input,.iconpicker-input', // children input selector
inputSearch: false, // use the input as a search box too?
container: false, // Appends the popover to a specific element. If not set, the selected element or element parent is used
component: '.input-group-addon,.iconpicker-component', // children component jQuery selector or object, relative to the container element
// Plugin templates:
templates: {
popover: '
',
footer: '',
buttons: 'Cancel ' +
' Accept ',
search: ' ',
iconpicker: '',
iconpickerItem: ' ',
}
};
```
================================================
FILE: composer.json
================================================
{
"name": "itsjavi/fontawesome-iconpicker",
"description": "Font Awesome Icon Picker plugin for Twitter Bootstrap",
"keywords": [
"bootstrap",
"fontawesome",
"iconpicker",
"popover",
"picker"
],
"homepage": "https://farbelous.github.io/fontawesome-iconpicker/",
"minimum-stability": "stable",
"repositories": [{
"type": "vcs",
"url": "https://github.com/farbelous/fontawesome-iconpicker"
}],
"license": "MIT",
"authors": [
{
"name": "Javi Aguilar",
"role": "Developer"
}
],
"support": {
"issues": "https://github.com/farbelous/fontawesome-iconpicker/issues",
"source": "https://github.com/farbelous/fontawesome-iconpicker"
}
}
================================================
FILE: dist/css/fontawesome-iconpicker.css
================================================
/*!
* Font Awesome Icon Picker
* https://farbelous.github.io/fontawesome-iconpicker/
*
* @author Javi Aguilar, itsjavi.com
* @license MIT License
* @see https://github.com/farbelous/fontawesome-iconpicker/blob/master/LICENSE
*/
.iconpicker-popover.popover {
position: absolute;
top: 0;
left: 0;
display: none;
max-width: none;
padding: 1px;
text-align: left;
width: 234px;
background: #f7f7f7;
z-index: 9;
}
.iconpicker-popover.popover.top,
.iconpicker-popover.popover.topLeftCorner,
.iconpicker-popover.popover.topLeft,
.iconpicker-popover.popover.topRight,
.iconpicker-popover.popover.topRightCorner {
margin-top: -10px;
}
.iconpicker-popover.popover.right,
.iconpicker-popover.popover.rightTop,
.iconpicker-popover.popover.rightBottom {
margin-left: 10px;
}
.iconpicker-popover.popover.bottom,
.iconpicker-popover.popover.bottomRightCorner,
.iconpicker-popover.popover.bottomRight,
.iconpicker-popover.popover.bottomLeft,
.iconpicker-popover.popover.bottomLeftCorner {
margin-top: 10px;
}
.iconpicker-popover.popover.left,
.iconpicker-popover.popover.leftBottom,
.iconpicker-popover.popover.leftTop {
margin-left: -10px;
}
.iconpicker-popover.popover.inline {
margin: 0 0 12px 0;
position: relative;
display: inline-block;
opacity: 1;
top: auto;
left: auto;
bottom: auto;
right: auto;
max-width: 100%;
box-shadow: none;
z-index: auto;
vertical-align: top;
}
.iconpicker-popover.popover.inline > .arrow {
display: none;
}
.dropdown-menu .iconpicker-popover.inline {
margin: 0;
border: none;
}
.dropdown-menu.iconpicker-container {
padding: 0;
}
.iconpicker-popover.popover .popover-title {
padding: 12px;
font-size: 13px;
line-height: 15px;
border-bottom: 1px solid #ebebeb;
background-color: #f7f7f7;
}
.iconpicker-popover.popover .popover-title input[type=search].iconpicker-search {
margin: 0 0 2px 0;
}
.iconpicker-popover.popover .popover-title-text ~ input[type=search].iconpicker-search {
margin-top: 12px;
}
.iconpicker-popover.popover .popover-content {
padding: 0px;
text-align: center;
}
.iconpicker-popover .popover-footer {
float: none;
clear: both;
padding: 12px;
text-align: right;
margin: 0;
border-top: 1px solid #ebebeb;
background-color: #f7f7f7;
}
.iconpicker-popover .popover-footer:before,
.iconpicker-popover .popover-footer:after {
content: " ";
display: table;
}
.iconpicker-popover .popover-footer:after {
clear: both;
}
.iconpicker-popover .popover-footer .iconpicker-btn {
margin-left: 10px;
}
.iconpicker-popover .popover-footer input[type=search].iconpicker-search {
/*width:auto;
float:left;*/
margin-bottom: 12px;
}
.iconpicker-popover.popover > .arrow,
.iconpicker-popover.popover > .arrow:after {
position: absolute;
display: block;
width: 0;
height: 0;
border-color: transparent;
border-style: solid;
}
.iconpicker-popover.popover > .arrow {
border-width: 11px;
}
.iconpicker-popover.popover > .arrow:after {
border-width: 10px;
content: "";
}
.iconpicker-popover.popover.top > .arrow,
.iconpicker-popover.popover.topLeft > .arrow,
.iconpicker-popover.popover.topRight > .arrow {
left: 50%;
margin-left: -11px;
border-bottom-width: 0;
border-top-color: #999999;
border-top-color: rgba(0, 0, 0, 0.25);
bottom: -11px;
}
.iconpicker-popover.popover.top > .arrow:after,
.iconpicker-popover.popover.topLeft > .arrow:after,
.iconpicker-popover.popover.topRight > .arrow:after {
content: " ";
bottom: 1px;
margin-left: -10px;
border-bottom-width: 0;
border-top-color: #fff;
}
.iconpicker-popover.popover.topLeft > .arrow {
left: 8px;
margin-left: 0;
}
.iconpicker-popover.popover.topRight > .arrow {
left: auto;
right: 8px;
margin-left: 0;
}
.iconpicker-popover.popover.right > .arrow,
.iconpicker-popover.popover.rightTop > .arrow,
.iconpicker-popover.popover.rightBottom > .arrow {
top: 50%;
left: -11px;
margin-top: -11px;
border-left-width: 0;
border-right-color: #999999;
border-right-color: rgba(0, 0, 0, 0.25);
}
.iconpicker-popover.popover.right > .arrow:after,
.iconpicker-popover.popover.rightTop > .arrow:after,
.iconpicker-popover.popover.rightBottom > .arrow:after {
content: " ";
left: 1px;
bottom: -10px;
border-left-width: 0;
border-right-color: #fff;
}
.iconpicker-popover.popover.rightTop > .arrow {
top: auto;
bottom: 8px;
margin-top: 0;
}
.iconpicker-popover.popover.rightBottom > .arrow {
top: 8px;
margin-top: 0;
}
.iconpicker-popover.popover.bottom > .arrow,
.iconpicker-popover.popover.bottomRight > .arrow,
.iconpicker-popover.popover.bottomLeft > .arrow {
left: 50%;
margin-left: -11px;
border-top-width: 0;
border-bottom-color: #999999;
border-bottom-color: rgba(0, 0, 0, 0.25);
top: -11px;
}
.iconpicker-popover.popover.bottom > .arrow:after,
.iconpicker-popover.popover.bottomRight > .arrow:after,
.iconpicker-popover.popover.bottomLeft > .arrow:after {
content: " ";
top: 1px;
margin-left: -10px;
border-top-width: 0;
border-bottom-color: #fff;
}
.iconpicker-popover.popover.bottomLeft > .arrow {
left: 8px;
margin-left: 0;
}
.iconpicker-popover.popover.bottomRight > .arrow {
left: auto;
right: 8px;
margin-left: 0;
}
.iconpicker-popover.popover.left > .arrow,
.iconpicker-popover.popover.leftBottom > .arrow,
.iconpicker-popover.popover.leftTop > .arrow {
top: 50%;
right: -11px;
margin-top: -11px;
border-right-width: 0;
border-left-color: #999999;
border-left-color: rgba(0, 0, 0, 0.25);
}
.iconpicker-popover.popover.left > .arrow:after,
.iconpicker-popover.popover.leftBottom > .arrow:after,
.iconpicker-popover.popover.leftTop > .arrow:after {
content: " ";
right: 1px;
border-right-width: 0;
border-left-color: #fff;
bottom: -10px;
}
.iconpicker-popover.popover.leftBottom > .arrow {
top: 8px;
margin-top: 0;
}
.iconpicker-popover.popover.leftTop > .arrow {
top: auto;
bottom: 8px;
margin-top: 0;
}
.iconpicker {
position: relative;
text-align: left;
text-shadow: none;
line-height: 0;
display: block;
margin: 0;
overflow: hidden;
}
.iconpicker * {
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
box-sizing: content-box;
position: relative;
}
.iconpicker:before,
.iconpicker:after {
content: " ";
display: table;
}
.iconpicker:after {
clear: both;
}
.iconpicker .iconpicker-items {
position: relative;
clear: both;
float: none;
padding: 12px 0 0 12px;
background: #fff;
margin: 0;
overflow: hidden;
overflow-y: auto;
min-height: 49px;
max-height: 246px;
}
.iconpicker .iconpicker-items:before,
.iconpicker .iconpicker-items:after {
content: " ";
display: table;
}
.iconpicker .iconpicker-items:after {
clear: both;
}
.iconpicker .iconpicker-item {
float: left;
width: 14px;
height: 14px;
padding: 12px;
margin: 0 12px 12px 0;
text-align: center;
cursor: pointer;
border-radius: 3px;
font-size: 14px;
box-shadow: 0 0 0 1px #ddd;
color: inherit;
/*&:nth-child(4n+4) {
margin-right: 0;
}
&:nth-last-child(-n+4) {
margin-bottom: 0;
}*/
}
.iconpicker .iconpicker-item:hover:not(.iconpicker-selected) {
background-color: #eee;
}
.iconpicker .iconpicker-item.iconpicker-selected {
box-shadow: none;
color: #fff;
background: #000;
}
.iconpicker-component {
cursor: pointer;
}
================================================
FILE: dist/js/fontawesome-iconpicker.js
================================================
/*!
* Font Awesome Icon Picker
* https://farbelous.github.io/fontawesome-iconpicker/
*
* @author Javi Aguilar, itsjavi.com
* @license MIT License
* @see https://github.com/farbelous/fontawesome-iconpicker/blob/master/LICENSE
*/
(function(e) {
if (typeof define === "function" && define.amd) {
define([ "jquery" ], e);
} else {
e(jQuery);
}
})(function(j) {
j.ui = j.ui || {};
var e = j.ui.version = "1.12.1";
(function() {
var r, y = Math.max, x = Math.abs, s = /left|center|right/, i = /top|center|bottom/, f = /[\+\-]\d+(\.[\d]+)?%?/, l = /^\w+/, c = /%$/, a = j.fn.pos;
function q(e, a, t) {
return [ parseFloat(e[0]) * (c.test(e[0]) ? a / 100 : 1), parseFloat(e[1]) * (c.test(e[1]) ? t / 100 : 1) ];
}
function C(e, a) {
return parseInt(j.css(e, a), 10) || 0;
}
function t(e) {
var a = e[0];
if (a.nodeType === 9) {
return {
width: e.width(),
height: e.height(),
offset: {
top: 0,
left: 0
}
};
}
if (j.isWindow(a)) {
return {
width: e.width(),
height: e.height(),
offset: {
top: e.scrollTop(),
left: e.scrollLeft()
}
};
}
if (a.preventDefault) {
return {
width: 0,
height: 0,
offset: {
top: a.pageY,
left: a.pageX
}
};
}
return {
width: e.outerWidth(),
height: e.outerHeight(),
offset: e.offset()
};
}
j.pos = {
scrollbarWidth: function() {
if (r !== undefined) {
return r;
}
var e, a, t = j(""), s = t.children()[0];
j("body").append(t);
e = s.offsetWidth;
t.css("overflow", "scroll");
a = s.offsetWidth;
if (e === a) {
a = t[0].clientWidth;
}
t.remove();
return r = e - a;
},
getScrollInfo: function(e) {
var a = e.isWindow || e.isDocument ? "" : e.element.css("overflow-x"), t = e.isWindow || e.isDocument ? "" : e.element.css("overflow-y"), s = a === "scroll" || a === "auto" && e.width < e.element[0].scrollWidth, r = t === "scroll" || t === "auto" && e.height < e.element[0].scrollHeight;
return {
width: r ? j.pos.scrollbarWidth() : 0,
height: s ? j.pos.scrollbarWidth() : 0
};
},
getWithinInfo: function(e) {
var a = j(e || window), t = j.isWindow(a[0]), s = !!a[0] && a[0].nodeType === 9, r = !t && !s;
return {
element: a,
isWindow: t,
isDocument: s,
offset: r ? j(e).offset() : {
left: 0,
top: 0
},
scrollLeft: a.scrollLeft(),
scrollTop: a.scrollTop(),
width: a.outerWidth(),
height: a.outerHeight()
};
}
};
j.fn.pos = function(h) {
if (!h || !h.of) {
return a.apply(this, arguments);
}
h = j.extend({}, h);
var m, p, d, u, T, e, g = j(h.of), b = j.pos.getWithinInfo(h.within), k = j.pos.getScrollInfo(b), w = (h.collision || "flip").split(" "), v = {};
e = t(g);
if (g[0].preventDefault) {
h.at = "left top";
}
p = e.width;
d = e.height;
u = e.offset;
T = j.extend({}, u);
j.each([ "my", "at" ], function() {
var e = (h[this] || "").split(" "), a, t;
if (e.length === 1) {
e = s.test(e[0]) ? e.concat([ "center" ]) : i.test(e[0]) ? [ "center" ].concat(e) : [ "center", "center" ];
}
e[0] = s.test(e[0]) ? e[0] : "center";
e[1] = i.test(e[1]) ? e[1] : "center";
a = f.exec(e[0]);
t = f.exec(e[1]);
v[this] = [ a ? a[0] : 0, t ? t[0] : 0 ];
h[this] = [ l.exec(e[0])[0], l.exec(e[1])[0] ];
});
if (w.length === 1) {
w[1] = w[0];
}
if (h.at[0] === "right") {
T.left += p;
} else if (h.at[0] === "center") {
T.left += p / 2;
}
if (h.at[1] === "bottom") {
T.top += d;
} else if (h.at[1] === "center") {
T.top += d / 2;
}
m = q(v.at, p, d);
T.left += m[0];
T.top += m[1];
return this.each(function() {
var t, e, f = j(this), l = f.outerWidth(), c = f.outerHeight(), a = C(this, "marginLeft"), s = C(this, "marginTop"), r = l + a + C(this, "marginRight") + k.width, i = c + s + C(this, "marginBottom") + k.height, o = j.extend({}, T), n = q(v.my, f.outerWidth(), f.outerHeight());
if (h.my[0] === "right") {
o.left -= l;
} else if (h.my[0] === "center") {
o.left -= l / 2;
}
if (h.my[1] === "bottom") {
o.top -= c;
} else if (h.my[1] === "center") {
o.top -= c / 2;
}
o.left += n[0];
o.top += n[1];
t = {
marginLeft: a,
marginTop: s
};
j.each([ "left", "top" ], function(e, a) {
if (j.ui.pos[w[e]]) {
j.ui.pos[w[e]][a](o, {
targetWidth: p,
targetHeight: d,
elemWidth: l,
elemHeight: c,
collisionPosition: t,
collisionWidth: r,
collisionHeight: i,
offset: [ m[0] + n[0], m[1] + n[1] ],
my: h.my,
at: h.at,
within: b,
elem: f
});
}
});
if (h.using) {
e = function(e) {
var a = u.left - o.left, t = a + p - l, s = u.top - o.top, r = s + d - c, i = {
target: {
element: g,
left: u.left,
top: u.top,
width: p,
height: d
},
element: {
element: f,
left: o.left,
top: o.top,
width: l,
height: c
},
horizontal: t < 0 ? "left" : a > 0 ? "right" : "center",
vertical: r < 0 ? "top" : s > 0 ? "bottom" : "middle"
};
if (p < l && x(a + t) < p) {
i.horizontal = "center";
}
if (d < c && x(s + r) < d) {
i.vertical = "middle";
}
if (y(x(a), x(t)) > y(x(s), x(r))) {
i.important = "horizontal";
} else {
i.important = "vertical";
}
h.using.call(this, e, i);
};
}
f.offset(j.extend(o, {
using: e
}));
});
};
j.ui.pos = {
_trigger: function(e, a, t, s) {
if (a.elem) {
a.elem.trigger({
type: t,
position: e,
positionData: a,
triggered: s
});
}
},
fit: {
left: function(e, a) {
j.ui.pos._trigger(e, a, "posCollide", "fitLeft");
var t = a.within, s = t.isWindow ? t.scrollLeft : t.offset.left, r = t.width, i = e.left - a.collisionPosition.marginLeft, f = s - i, l = i + a.collisionWidth - r - s, c;
if (a.collisionWidth > r) {
if (f > 0 && l <= 0) {
c = e.left + f + a.collisionWidth - r - s;
e.left += f - c;
} else if (l > 0 && f <= 0) {
e.left = s;
} else {
if (f > l) {
e.left = s + r - a.collisionWidth;
} else {
e.left = s;
}
}
} else if (f > 0) {
e.left += f;
} else if (l > 0) {
e.left -= l;
} else {
e.left = y(e.left - i, e.left);
}
j.ui.pos._trigger(e, a, "posCollided", "fitLeft");
},
top: function(e, a) {
j.ui.pos._trigger(e, a, "posCollide", "fitTop");
var t = a.within, s = t.isWindow ? t.scrollTop : t.offset.top, r = a.within.height, i = e.top - a.collisionPosition.marginTop, f = s - i, l = i + a.collisionHeight - r - s, c;
if (a.collisionHeight > r) {
if (f > 0 && l <= 0) {
c = e.top + f + a.collisionHeight - r - s;
e.top += f - c;
} else if (l > 0 && f <= 0) {
e.top = s;
} else {
if (f > l) {
e.top = s + r - a.collisionHeight;
} else {
e.top = s;
}
}
} else if (f > 0) {
e.top += f;
} else if (l > 0) {
e.top -= l;
} else {
e.top = y(e.top - i, e.top);
}
j.ui.pos._trigger(e, a, "posCollided", "fitTop");
}
},
flip: {
left: function(e, a) {
j.ui.pos._trigger(e, a, "posCollide", "flipLeft");
var t = a.within, s = t.offset.left + t.scrollLeft, r = t.width, i = t.isWindow ? t.scrollLeft : t.offset.left, f = e.left - a.collisionPosition.marginLeft, l = f - i, c = f + a.collisionWidth - r - i, o = a.my[0] === "left" ? -a.elemWidth : a.my[0] === "right" ? a.elemWidth : 0, n = a.at[0] === "left" ? a.targetWidth : a.at[0] === "right" ? -a.targetWidth : 0, h = -2 * a.offset[0], m, p;
if (l < 0) {
m = e.left + o + n + h + a.collisionWidth - r - s;
if (m < 0 || m < x(l)) {
e.left += o + n + h;
}
} else if (c > 0) {
p = e.left - a.collisionPosition.marginLeft + o + n + h - i;
if (p > 0 || x(p) < c) {
e.left += o + n + h;
}
}
j.ui.pos._trigger(e, a, "posCollided", "flipLeft");
},
top: function(e, a) {
j.ui.pos._trigger(e, a, "posCollide", "flipTop");
var t = a.within, s = t.offset.top + t.scrollTop, r = t.height, i = t.isWindow ? t.scrollTop : t.offset.top, f = e.top - a.collisionPosition.marginTop, l = f - i, c = f + a.collisionHeight - r - i, o = a.my[1] === "top", n = o ? -a.elemHeight : a.my[1] === "bottom" ? a.elemHeight : 0, h = a.at[1] === "top" ? a.targetHeight : a.at[1] === "bottom" ? -a.targetHeight : 0, m = -2 * a.offset[1], p, d;
if (l < 0) {
d = e.top + n + h + m + a.collisionHeight - r - s;
if (d < 0 || d < x(l)) {
e.top += n + h + m;
}
} else if (c > 0) {
p = e.top - a.collisionPosition.marginTop + n + h + m - i;
if (p > 0 || x(p) < c) {
e.top += n + h + m;
}
}
j.ui.pos._trigger(e, a, "posCollided", "flipTop");
}
},
flipfit: {
left: function() {
j.ui.pos.flip.left.apply(this, arguments);
j.ui.pos.fit.left.apply(this, arguments);
},
top: function() {
j.ui.pos.flip.top.apply(this, arguments);
j.ui.pos.fit.top.apply(this, arguments);
}
}
};
(function() {
var e, a, t, s, r, i = document.getElementsByTagName("body")[0], f = document.createElement("div");
e = document.createElement(i ? "div" : "body");
t = {
visibility: "hidden",
width: 0,
height: 0,
border: 0,
margin: 0,
background: "none"
};
if (i) {
j.extend(t, {
position: "absolute",
left: "-1000px",
top: "-1000px"
});
}
for (r in t) {
e.style[r] = t[r];
}
e.appendChild(f);
a = i || document.documentElement;
a.insertBefore(e, a.firstChild);
f.style.cssText = "position: absolute; left: 10.7432222px;";
s = j(f).offset().left;
j.support.offsetFractions = s > 10 && s < 11;
e.innerHTML = "";
a.removeChild(e);
})();
})();
var a = j.ui.position;
});
(function(e) {
"use strict";
if (typeof define === "function" && define.amd) {
define([ "jquery" ], e);
} else if (window.jQuery && !window.jQuery.fn.iconpicker) {
e(window.jQuery);
}
})(function(c) {
"use strict";
var f = {
isEmpty: function(e) {
return e === false || e === "" || e === null || e === undefined;
},
isEmptyObject: function(e) {
return this.isEmpty(e) === true || e.length === 0;
},
isElement: function(e) {
return c(e).length > 0;
},
isString: function(e) {
return typeof e === "string" || e instanceof String;
},
isArray: function(e) {
return c.isArray(e);
},
inArray: function(e, a) {
return c.inArray(e, a) !== -1;
},
throwError: function(e) {
throw "Font Awesome Icon Picker Exception: " + e;
}
};
var t = function(e, a) {
this._id = t._idCounter++;
this.element = c(e).addClass("iconpicker-element");
this._trigger("iconpickerCreate", {
iconpickerValue: this.iconpickerValue
});
this.options = c.extend({}, t.defaultOptions, this.element.data(), a);
this.options.templates = c.extend({}, t.defaultOptions.templates, this.options.templates);
this.options.originalPlacement = this.options.placement;
this.container = f.isElement(this.options.container) ? c(this.options.container) : false;
if (this.container === false) {
if (this.element.is(".dropdown-toggle")) {
this.container = c("~ .dropdown-menu:first", this.element);
} else {
this.container = this.element.is("input,textarea,button,.btn") ? this.element.parent() : this.element;
}
}
this.container.addClass("iconpicker-container");
if (this.isDropdownMenu()) {
this.options.placement = "inline";
}
this.input = this.element.is("input,textarea") ? this.element.addClass("iconpicker-input") : false;
if (this.input === false) {
this.input = this.container.find(this.options.input);
if (!this.input.is("input,textarea")) {
this.input = false;
}
}
this.component = this.isDropdownMenu() ? this.container.parent().find(this.options.component) : this.container.find(this.options.component);
if (this.component.length === 0) {
this.component = false;
} else {
this.component.find("i").addClass("iconpicker-component");
}
this._createPopover();
this._createIconpicker();
if (this.getAcceptButton().length === 0) {
this.options.mustAccept = false;
}
if (this.isInputGroup()) {
this.container.parent().append(this.popover);
} else {
this.container.append(this.popover);
}
this._bindElementEvents();
this._bindWindowEvents();
this.update(this.options.selected);
if (this.isInline()) {
this.show();
}
this._trigger("iconpickerCreated", {
iconpickerValue: this.iconpickerValue
});
};
t._idCounter = 0;
t.defaultOptions = {
title: false,
selected: false,
defaultValue: false,
placement: "bottom",
collision: "none",
animation: true,
hideOnSelect: false,
showFooter: false,
searchInFooter: false,
mustAccept: false,
selectedCustomClass: "bg-primary",
icons: [],
fullClassFormatter: function(e) {
return e;
},
input: "input,.iconpicker-input",
inputSearch: false,
container: false,
component: ".input-group-addon,.iconpicker-component",
templates: {
popover: '',
footer: '',
buttons: 'Cancel ' + ' Accept ',
search: ' ',
iconpicker: '',
iconpickerItem: ' '
}
};
t.batch = function(e, a) {
var t = Array.prototype.slice.call(arguments, 2);
return c(e).each(function() {
var e = c(this).data("iconpicker");
if (!!e) {
e[a].apply(e, t);
}
});
};
t.prototype = {
constructor: t,
options: {},
_id: 0,
_trigger: function(e, a) {
a = a || {};
this.element.trigger(c.extend({
type: e,
iconpickerInstance: this
}, a));
},
_createPopover: function() {
this.popover = c(this.options.templates.popover);
var e = this.popover.find(".popover-title");
if (!!this.options.title) {
e.append(c('' + this.options.title + "
"));
}
if (this.hasSeparatedSearchInput() && !this.options.searchInFooter) {
e.append(this.options.templates.search);
} else if (!this.options.title) {
e.remove();
}
if (this.options.showFooter && !f.isEmpty(this.options.templates.footer)) {
var a = c(this.options.templates.footer);
if (this.hasSeparatedSearchInput() && this.options.searchInFooter) {
a.append(c(this.options.templates.search));
}
if (!f.isEmpty(this.options.templates.buttons)) {
a.append(c(this.options.templates.buttons));
}
this.popover.append(a);
}
if (this.options.animation === true) {
this.popover.addClass("fade");
}
return this.popover;
},
_createIconpicker: function() {
var t = this;
this.iconpicker = c(this.options.templates.iconpicker);
var e = function(e) {
var a = c(this);
if (a.is("i")) {
a = a.parent();
}
t._trigger("iconpickerSelect", {
iconpickerItem: a,
iconpickerValue: t.iconpickerValue
});
if (t.options.mustAccept === false) {
t.update(a.data("iconpickerValue"));
t._trigger("iconpickerSelected", {
iconpickerItem: this,
iconpickerValue: t.iconpickerValue
});
} else {
t.update(a.data("iconpickerValue"), true);
}
if (t.options.hideOnSelect && t.options.mustAccept === false) {
t.hide();
}
};
var a = c(this.options.templates.iconpickerItem);
var s = [];
for (var r in this.options.icons) {
if (typeof this.options.icons[r].title === "string") {
var i = a.clone();
i.find("i").addClass(this.options.fullClassFormatter(this.options.icons[r].title));
i.data("iconpickerValue", this.options.icons[r].title).on("click.iconpicker", e);
i.attr("title", "." + this.options.icons[r].title);
if (this.options.icons[r].searchTerms.length > 0) {
var f = "";
for (var l = 0; l < this.options.icons[r].searchTerms.length; l++) {
f = f + this.options.icons[r].searchTerms[l] + " ";
}
i.attr("data-search-terms", f);
}
s.push(i);
}
}
this.iconpicker.find(".iconpicker-items").append(s);
this.popover.find(".popover-content").append(this.iconpicker);
return this.iconpicker;
},
_isEventInsideIconpicker: function(e) {
var a = c(e.target);
if ((!a.hasClass("iconpicker-element") || a.hasClass("iconpicker-element") && !a.is(this.element)) && a.parents(".iconpicker-popover").length === 0) {
return false;
}
return true;
},
_bindElementEvents: function() {
var a = this;
this.getSearchInput().on("keyup.iconpicker", function() {
a.filter(c(this).val().toLowerCase());
});
this.getAcceptButton().on("click.iconpicker", function() {
var e = a.iconpicker.find(".iconpicker-selected").get(0);
a.update(a.iconpickerValue);
a._trigger("iconpickerSelected", {
iconpickerItem: e,
iconpickerValue: a.iconpickerValue
});
if (!a.isInline()) {
a.hide();
}
});
this.getCancelButton().on("click.iconpicker", function() {
if (!a.isInline()) {
a.hide();
}
});
this.element.on("focus.iconpicker", function(e) {
a.show();
e.stopPropagation();
});
if (this.hasComponent()) {
this.component.on("click.iconpicker", function() {
a.toggle();
});
}
if (this.hasInput()) {
this.input.on("keyup.iconpicker", function(e) {
if (!f.inArray(e.keyCode, [ 38, 40, 37, 39, 16, 17, 18, 9, 8, 91, 93, 20, 46, 186, 190, 46, 78, 188, 44, 86 ])) {
a.update();
} else {
a._updateFormGroupStatus(a.getValid(this.value) !== false);
}
if (a.options.inputSearch === true) {
a.filter(c(this).val().toLowerCase());
}
});
}
},
_bindWindowEvents: function() {
var e = c(window.document);
var a = this;
var t = ".iconpicker.inst" + this._id;
c(window).on("resize.iconpicker" + t + " orientationchange.iconpicker" + t, function(e) {
if (a.popover.hasClass("in")) {
a.updatePlacement();
}
});
if (!a.isInline()) {
e.on("mouseup" + t, function(e) {
if (!a._isEventInsideIconpicker(e) && !a.isInline()) {
a.hide();
}
});
}
},
_unbindElementEvents: function() {
this.popover.off(".iconpicker");
this.element.off(".iconpicker");
if (this.hasInput()) {
this.input.off(".iconpicker");
}
if (this.hasComponent()) {
this.component.off(".iconpicker");
}
if (this.hasContainer()) {
this.container.off(".iconpicker");
}
},
_unbindWindowEvents: function() {
c(window).off(".iconpicker.inst" + this._id);
c(window.document).off(".iconpicker.inst" + this._id);
},
updatePlacement: function(e, a) {
e = e || this.options.placement;
this.options.placement = e;
a = a || this.options.collision;
a = a === true ? "flip" : a;
var t = {
at: "right bottom",
my: "right top",
of: this.hasInput() && !this.isInputGroup() ? this.input : this.container,
collision: a === true ? "flip" : a,
within: window
};
this.popover.removeClass("inline topLeftCorner topLeft top topRight topRightCorner " + "rightTop right rightBottom bottomRight bottomRightCorner " + "bottom bottomLeft bottomLeftCorner leftBottom left leftTop");
if (typeof e === "object") {
return this.popover.pos(c.extend({}, t, e));
}
switch (e) {
case "inline":
{
t = false;
}
break;
case "topLeftCorner":
{
t.my = "right bottom";
t.at = "left top";
}
break;
case "topLeft":
{
t.my = "left bottom";
t.at = "left top";
}
break;
case "top":
{
t.my = "center bottom";
t.at = "center top";
}
break;
case "topRight":
{
t.my = "right bottom";
t.at = "right top";
}
break;
case "topRightCorner":
{
t.my = "left bottom";
t.at = "right top";
}
break;
case "rightTop":
{
t.my = "left bottom";
t.at = "right center";
}
break;
case "right":
{
t.my = "left center";
t.at = "right center";
}
break;
case "rightBottom":
{
t.my = "left top";
t.at = "right center";
}
break;
case "bottomRightCorner":
{
t.my = "left top";
t.at = "right bottom";
}
break;
case "bottomRight":
{
t.my = "right top";
t.at = "right bottom";
}
break;
case "bottom":
{
t.my = "center top";
t.at = "center bottom";
}
break;
case "bottomLeft":
{
t.my = "left top";
t.at = "left bottom";
}
break;
case "bottomLeftCorner":
{
t.my = "right top";
t.at = "left bottom";
}
break;
case "leftBottom":
{
t.my = "right top";
t.at = "left center";
}
break;
case "left":
{
t.my = "right center";
t.at = "left center";
}
break;
case "leftTop":
{
t.my = "right bottom";
t.at = "left center";
}
break;
default:
{
return false;
}
break;
}
this.popover.css({
display: this.options.placement === "inline" ? "" : "block"
});
if (t !== false) {
this.popover.pos(t).css("maxWidth", c(window).width() - this.container.offset().left - 5);
} else {
this.popover.css({
top: "auto",
right: "auto",
bottom: "auto",
left: "auto",
maxWidth: "none"
});
}
this.popover.addClass(this.options.placement);
return true;
},
_updateComponents: function() {
this.iconpicker.find(".iconpicker-item.iconpicker-selected").removeClass("iconpicker-selected " + this.options.selectedCustomClass);
if (this.iconpickerValue) {
this.iconpicker.find("." + this.options.fullClassFormatter(this.iconpickerValue).replace(/ /g, ".")).parent().addClass("iconpicker-selected " + this.options.selectedCustomClass);
}
if (this.hasComponent()) {
var e = this.component.find("i");
if (e.length > 0) {
e.attr("class", this.options.fullClassFormatter(this.iconpickerValue));
} else {
this.component.html(this.getHtml());
}
}
},
_updateFormGroupStatus: function(e) {
if (this.hasInput()) {
if (e !== false) {
this.input.parents(".form-group:first").removeClass("has-error");
} else {
this.input.parents(".form-group:first").addClass("has-error");
}
return true;
}
return false;
},
getValid: function(e) {
if (!f.isString(e)) {
e = "";
}
var a = e === "";
e = c.trim(e);
var t = false;
for (var s = 0; s < this.options.icons.length; s++) {
if (this.options.icons[s].title === e) {
t = true;
break;
}
}
if (t || a) {
return e;
}
return false;
},
setValue: function(e) {
var a = this.getValid(e);
if (a !== false) {
this.iconpickerValue = a;
this._trigger("iconpickerSetValue", {
iconpickerValue: a
});
return this.iconpickerValue;
} else {
this._trigger("iconpickerInvalid", {
iconpickerValue: e
});
return false;
}
},
getHtml: function() {
return ' ';
},
setSourceValue: function(e) {
e = this.setValue(e);
if (e !== false && e !== "") {
if (this.hasInput()) {
this.input.val(this.iconpickerValue);
} else {
this.element.data("iconpickerValue", this.iconpickerValue);
}
this._trigger("iconpickerSetSourceValue", {
iconpickerValue: e
});
}
return e;
},
getSourceValue: function(e) {
e = e || this.options.defaultValue;
var a = e;
if (this.hasInput()) {
a = this.input.val();
} else {
a = this.element.data("iconpickerValue");
}
if (a === undefined || a === "" || a === null || a === false) {
a = e;
}
return a;
},
hasInput: function() {
return this.input !== false;
},
isInputSearch: function() {
return this.hasInput() && this.options.inputSearch === true;
},
isInputGroup: function() {
return this.container.is(".input-group");
},
isDropdownMenu: function() {
return this.container.is(".dropdown-menu");
},
hasSeparatedSearchInput: function() {
return this.options.templates.search !== false && !this.isInputSearch();
},
hasComponent: function() {
return this.component !== false;
},
hasContainer: function() {
return this.container !== false;
},
getAcceptButton: function() {
return this.popover.find(".iconpicker-btn-accept");
},
getCancelButton: function() {
return this.popover.find(".iconpicker-btn-cancel");
},
getSearchInput: function() {
return this.popover.find(".iconpicker-search");
},
filter: function(r) {
if (f.isEmpty(r)) {
this.iconpicker.find(".iconpicker-item").show();
return c(false);
} else {
var i = [];
this.iconpicker.find(".iconpicker-item").each(function() {
var e = c(this);
var a = e.attr("title").toLowerCase();
var t = e.attr("data-search-terms") ? e.attr("data-search-terms").toLowerCase() : "";
a = a + " " + t;
var s = false;
try {
s = new RegExp("(^|\\W)" + r, "g");
} catch (e) {
s = false;
}
if (s !== false && a.match(s)) {
i.push(e);
e.show();
} else {
e.hide();
}
});
return i;
}
},
show: function() {
if (this.popover.hasClass("in")) {
return false;
}
c.iconpicker.batch(c(".iconpicker-popover.in:not(.inline)").not(this.popover), "hide");
this._trigger("iconpickerShow", {
iconpickerValue: this.iconpickerValue
});
this.updatePlacement();
this.popover.addClass("in");
setTimeout(c.proxy(function() {
this.popover.css("display", this.isInline() ? "" : "block");
this._trigger("iconpickerShown", {
iconpickerValue: this.iconpickerValue
});
}, this), this.options.animation ? 300 : 1);
},
hide: function() {
if (!this.popover.hasClass("in")) {
return false;
}
this._trigger("iconpickerHide", {
iconpickerValue: this.iconpickerValue
});
this.popover.removeClass("in");
setTimeout(c.proxy(function() {
this.popover.css("display", "none");
this.getSearchInput().val("");
this.filter("");
this._trigger("iconpickerHidden", {
iconpickerValue: this.iconpickerValue
});
}, this), this.options.animation ? 300 : 1);
},
toggle: function() {
if (this.popover.is(":visible")) {
this.hide();
} else {
this.show(true);
}
},
update: function(e, a) {
e = e ? e : this.getSourceValue(this.iconpickerValue);
this._trigger("iconpickerUpdate", {
iconpickerValue: this.iconpickerValue
});
if (a === true) {
e = this.setValue(e);
} else {
e = this.setSourceValue(e);
this._updateFormGroupStatus(e !== false);
}
if (e !== false) {
this._updateComponents();
}
this._trigger("iconpickerUpdated", {
iconpickerValue: this.iconpickerValue
});
return e;
},
destroy: function() {
this._trigger("iconpickerDestroy", {
iconpickerValue: this.iconpickerValue
});
this.element.removeData("iconpicker").removeData("iconpickerValue").removeClass("iconpicker-element");
this._unbindElementEvents();
this._unbindWindowEvents();
c(this.popover).remove();
this._trigger("iconpickerDestroyed", {
iconpickerValue: this.iconpickerValue
});
},
disable: function() {
if (this.hasInput()) {
this.input.prop("disabled", true);
return true;
}
return false;
},
enable: function() {
if (this.hasInput()) {
this.input.prop("disabled", false);
return true;
}
return false;
},
isDisabled: function() {
if (this.hasInput()) {
return this.input.prop("disabled") === true;
}
return false;
},
isInline: function() {
return this.options.placement === "inline" || this.popover.hasClass("inline");
}
};
c.iconpicker = t;
c.fn.iconpicker = function(a) {
return this.each(function() {
var e = c(this);
if (!e.data("iconpicker")) {
e.data("iconpicker", new t(this, typeof a === "object" ? a : {}));
}
});
};
t.defaultOptions = c.extend(t.defaultOptions, {
icons: [ {
title: "fab fa-500px",
searchTerms: []
}, {
title: "fab fa-accessible-icon",
searchTerms: [ "accessibility", "handicap", "person", "wheelchair", "wheelchair-alt" ]
}, {
title: "fab fa-accusoft",
searchTerms: []
}, {
title: "fab fa-acquisitions-incorporated",
searchTerms: [ "Dungeons & Dragons", "d&d", "dnd", "fantasy", "game", "gaming", "tabletop" ]
}, {
title: "fas fa-ad",
searchTerms: []
}, {
title: "fas fa-address-book",
searchTerms: []
}, {
title: "far fa-address-book",
searchTerms: []
}, {
title: "fas fa-address-card",
searchTerms: []
}, {
title: "far fa-address-card",
searchTerms: []
}, {
title: "fas fa-adjust",
searchTerms: [ "contrast" ]
}, {
title: "fab fa-adn",
searchTerms: []
}, {
title: "fab fa-adversal",
searchTerms: []
}, {
title: "fab fa-affiliatetheme",
searchTerms: []
}, {
title: "fas fa-air-freshener",
searchTerms: []
}, {
title: "fab fa-algolia",
searchTerms: []
}, {
title: "fas fa-align-center",
searchTerms: [ "middle", "text" ]
}, {
title: "fas fa-align-justify",
searchTerms: [ "text" ]
}, {
title: "fas fa-align-left",
searchTerms: [ "text" ]
}, {
title: "fas fa-align-right",
searchTerms: [ "text" ]
}, {
title: "fab fa-alipay",
searchTerms: []
}, {
title: "fas fa-allergies",
searchTerms: [ "freckles", "hand", "intolerances", "pox", "spots" ]
}, {
title: "fab fa-amazon",
searchTerms: []
}, {
title: "fab fa-amazon-pay",
searchTerms: []
}, {
title: "fas fa-ambulance",
searchTerms: [ "help", "machine", "support", "vehicle" ]
}, {
title: "fas fa-american-sign-language-interpreting",
searchTerms: []
}, {
title: "fab fa-amilia",
searchTerms: []
}, {
title: "fas fa-anchor",
searchTerms: [ "link" ]
}, {
title: "fab fa-android",
searchTerms: [ "robot" ]
}, {
title: "fab fa-angellist",
searchTerms: []
}, {
title: "fas fa-angle-double-down",
searchTerms: [ "arrows" ]
}, {
title: "fas fa-angle-double-left",
searchTerms: [ "arrows", "back", "laquo", "previous", "quote" ]
}, {
title: "fas fa-angle-double-right",
searchTerms: [ "arrows", "forward", "next", "quote", "raquo" ]
}, {
title: "fas fa-angle-double-up",
searchTerms: [ "arrows" ]
}, {
title: "fas fa-angle-down",
searchTerms: [ "arrow" ]
}, {
title: "fas fa-angle-left",
searchTerms: [ "arrow", "back", "previous" ]
}, {
title: "fas fa-angle-right",
searchTerms: [ "arrow", "forward", "next" ]
}, {
title: "fas fa-angle-up",
searchTerms: [ "arrow" ]
}, {
title: "fas fa-angry",
searchTerms: [ "disapprove", "emoticon", "face", "mad", "upset" ]
}, {
title: "far fa-angry",
searchTerms: [ "disapprove", "emoticon", "face", "mad", "upset" ]
}, {
title: "fab fa-angrycreative",
searchTerms: []
}, {
title: "fab fa-angular",
searchTerms: []
}, {
title: "fas fa-ankh",
searchTerms: [ "amulet", "copper", "coptic christianity", "copts", "crux ansata", "egyptian", "venus" ]
}, {
title: "fab fa-app-store",
searchTerms: []
}, {
title: "fab fa-app-store-ios",
searchTerms: []
}, {
title: "fab fa-apper",
searchTerms: []
}, {
title: "fab fa-apple",
searchTerms: [ "food", "fruit", "mac", "osx" ]
}, {
title: "fas fa-apple-alt",
searchTerms: [ "fall", "food", "fruit", "fuji", "macintosh", "seasonal" ]
}, {
title: "fab fa-apple-pay",
searchTerms: []
}, {
title: "fas fa-archive",
searchTerms: [ "box", "package", "storage" ]
}, {
title: "fas fa-archway",
searchTerms: [ "arc", "monument", "road", "street" ]
}, {
title: "fas fa-arrow-alt-circle-down",
searchTerms: [ "arrow-circle-o-down", "download" ]
}, {
title: "far fa-arrow-alt-circle-down",
searchTerms: [ "arrow-circle-o-down", "download" ]
}, {
title: "fas fa-arrow-alt-circle-left",
searchTerms: [ "arrow-circle-o-left", "back", "previous" ]
}, {
title: "far fa-arrow-alt-circle-left",
searchTerms: [ "arrow-circle-o-left", "back", "previous" ]
}, {
title: "fas fa-arrow-alt-circle-right",
searchTerms: [ "arrow-circle-o-right", "forward", "next" ]
}, {
title: "far fa-arrow-alt-circle-right",
searchTerms: [ "arrow-circle-o-right", "forward", "next" ]
}, {
title: "fas fa-arrow-alt-circle-up",
searchTerms: [ "arrow-circle-o-up" ]
}, {
title: "far fa-arrow-alt-circle-up",
searchTerms: [ "arrow-circle-o-up" ]
}, {
title: "fas fa-arrow-circle-down",
searchTerms: [ "download" ]
}, {
title: "fas fa-arrow-circle-left",
searchTerms: [ "back", "previous" ]
}, {
title: "fas fa-arrow-circle-right",
searchTerms: [ "forward", "next" ]
}, {
title: "fas fa-arrow-circle-up",
searchTerms: []
}, {
title: "fas fa-arrow-down",
searchTerms: [ "download" ]
}, {
title: "fas fa-arrow-left",
searchTerms: [ "back", "previous" ]
}, {
title: "fas fa-arrow-right",
searchTerms: [ "forward", "next" ]
}, {
title: "fas fa-arrow-up",
searchTerms: []
}, {
title: "fas fa-arrows-alt",
searchTerms: [ "arrow", "arrows", "bigger", "enlarge", "expand", "fullscreen", "move", "position", "reorder", "resize" ]
}, {
title: "fas fa-arrows-alt-h",
searchTerms: [ "arrows-h", "resize" ]
}, {
title: "fas fa-arrows-alt-v",
searchTerms: [ "arrows-v", "resize" ]
}, {
title: "fas fa-assistive-listening-systems",
searchTerms: []
}, {
title: "fas fa-asterisk",
searchTerms: [ "details" ]
}, {
title: "fab fa-asymmetrik",
searchTerms: []
}, {
title: "fas fa-at",
searchTerms: [ "e-mail", "email" ]
}, {
title: "fas fa-atlas",
searchTerms: [ "book", "directions", "geography", "map", "wayfinding" ]
}, {
title: "fas fa-atom",
searchTerms: [ "atheism", "chemistry", "science" ]
}, {
title: "fab fa-audible",
searchTerms: []
}, {
title: "fas fa-audio-description",
searchTerms: []
}, {
title: "fab fa-autoprefixer",
searchTerms: []
}, {
title: "fab fa-avianex",
searchTerms: []
}, {
title: "fab fa-aviato",
searchTerms: []
}, {
title: "fas fa-award",
searchTerms: [ "honor", "praise", "prize", "recognition", "ribbon" ]
}, {
title: "fab fa-aws",
searchTerms: []
}, {
title: "fas fa-backspace",
searchTerms: [ "command", "delete", "keyboard", "undo" ]
}, {
title: "fas fa-backward",
searchTerms: [ "previous", "rewind" ]
}, {
title: "fas fa-balance-scale",
searchTerms: [ "balanced", "justice", "legal", "measure", "weight" ]
}, {
title: "fas fa-ban",
searchTerms: [ "abort", "ban", "block", "cancel", "delete", "hide", "prohibit", "remove", "stop", "trash" ]
}, {
title: "fas fa-band-aid",
searchTerms: [ "bandage", "boo boo", "ouch" ]
}, {
title: "fab fa-bandcamp",
searchTerms: []
}, {
title: "fas fa-barcode",
searchTerms: [ "scan" ]
}, {
title: "fas fa-bars",
searchTerms: [ "checklist", "drag", "hamburger", "list", "menu", "nav", "navigation", "ol", "reorder", "settings", "todo", "ul" ]
}, {
title: "fas fa-baseball-ball",
searchTerms: []
}, {
title: "fas fa-basketball-ball",
searchTerms: []
}, {
title: "fas fa-bath",
searchTerms: []
}, {
title: "fas fa-battery-empty",
searchTerms: [ "power", "status" ]
}, {
title: "fas fa-battery-full",
searchTerms: [ "power", "status" ]
}, {
title: "fas fa-battery-half",
searchTerms: [ "power", "status" ]
}, {
title: "fas fa-battery-quarter",
searchTerms: [ "power", "status" ]
}, {
title: "fas fa-battery-three-quarters",
searchTerms: [ "power", "status" ]
}, {
title: "fas fa-bed",
searchTerms: [ "lodging", "sleep", "travel" ]
}, {
title: "fas fa-beer",
searchTerms: [ "alcohol", "bar", "beverage", "drink", "liquor", "mug", "stein" ]
}, {
title: "fab fa-behance",
searchTerms: []
}, {
title: "fab fa-behance-square",
searchTerms: []
}, {
title: "fas fa-bell",
searchTerms: [ "alert", "notification", "reminder" ]
}, {
title: "far fa-bell",
searchTerms: [ "alert", "notification", "reminder" ]
}, {
title: "fas fa-bell-slash",
searchTerms: []
}, {
title: "far fa-bell-slash",
searchTerms: []
}, {
title: "fas fa-bezier-curve",
searchTerms: [ "curves", "illustrator", "lines", "path", "vector" ]
}, {
title: "fas fa-bible",
searchTerms: [ "book", "catholicism", "christianity" ]
}, {
title: "fas fa-bicycle",
searchTerms: [ "bike", "gears", "transportation", "vehicle" ]
}, {
title: "fab fa-bimobject",
searchTerms: []
}, {
title: "fas fa-binoculars",
searchTerms: []
}, {
title: "fas fa-birthday-cake",
searchTerms: []
}, {
title: "fab fa-bitbucket",
searchTerms: [ "bitbucket-square", "git" ]
}, {
title: "fab fa-bitcoin",
searchTerms: []
}, {
title: "fab fa-bity",
searchTerms: []
}, {
title: "fab fa-black-tie",
searchTerms: []
}, {
title: "fab fa-blackberry",
searchTerms: []
}, {
title: "fas fa-blender",
searchTerms: []
}, {
title: "fas fa-blender-phone",
searchTerms: [ "appliance", "fantasy", "silly" ]
}, {
title: "fas fa-blind",
searchTerms: []
}, {
title: "fab fa-blogger",
searchTerms: []
}, {
title: "fab fa-blogger-b",
searchTerms: []
}, {
title: "fab fa-bluetooth",
searchTerms: []
}, {
title: "fab fa-bluetooth-b",
searchTerms: []
}, {
title: "fas fa-bold",
searchTerms: []
}, {
title: "fas fa-bolt",
searchTerms: [ "electricity", "lightning", "weather", "zap" ]
}, {
title: "fas fa-bomb",
searchTerms: []
}, {
title: "fas fa-bone",
searchTerms: []
}, {
title: "fas fa-bong",
searchTerms: [ "aparatus", "cannabis", "marijuana", "pipe", "smoke", "smoking" ]
}, {
title: "fas fa-book",
searchTerms: [ "documentation", "read" ]
}, {
title: "fas fa-book-dead",
searchTerms: [ "Dungeons & Dragons", "crossbones", "d&d", "dark arts", "death", "dnd", "documentation", "evil", "fantasy", "halloween", "holiday", "read", "skull", "spell" ]
}, {
title: "fas fa-book-open",
searchTerms: [ "flyer", "notebook", "open book", "pamphlet", "reading" ]
}, {
title: "fas fa-book-reader",
searchTerms: [ "library" ]
}, {
title: "fas fa-bookmark",
searchTerms: [ "save" ]
}, {
title: "far fa-bookmark",
searchTerms: [ "save" ]
}, {
title: "fas fa-bowling-ball",
searchTerms: []
}, {
title: "fas fa-box",
searchTerms: [ "package" ]
}, {
title: "fas fa-box-open",
searchTerms: []
}, {
title: "fas fa-boxes",
searchTerms: []
}, {
title: "fas fa-braille",
searchTerms: []
}, {
title: "fas fa-brain",
searchTerms: [ "cerebellum", "gray matter", "intellect", "medulla oblongata", "mind", "noodle", "wit" ]
}, {
title: "fas fa-briefcase",
searchTerms: [ "bag", "business", "luggage", "office", "work" ]
}, {
title: "fas fa-briefcase-medical",
searchTerms: [ "health briefcase" ]
}, {
title: "fas fa-broadcast-tower",
searchTerms: [ "airwaves", "radio", "waves" ]
}, {
title: "fas fa-broom",
searchTerms: [ "clean", "firebolt", "fly", "halloween", "holiday", "nimbus 2000", "quidditch", "sweep", "witch" ]
}, {
title: "fas fa-brush",
searchTerms: [ "bristles", "color", "handle", "painting" ]
}, {
title: "fab fa-btc",
searchTerms: []
}, {
title: "fas fa-bug",
searchTerms: [ "insect", "report" ]
}, {
title: "fas fa-building",
searchTerms: [ "apartment", "business", "company", "office", "work" ]
}, {
title: "far fa-building",
searchTerms: [ "apartment", "business", "company", "office", "work" ]
}, {
title: "fas fa-bullhorn",
searchTerms: [ "announcement", "broadcast", "louder", "megaphone", "share" ]
}, {
title: "fas fa-bullseye",
searchTerms: [ "target" ]
}, {
title: "fas fa-burn",
searchTerms: [ "energy" ]
}, {
title: "fab fa-buromobelexperte",
searchTerms: []
}, {
title: "fas fa-bus",
searchTerms: [ "machine", "public transportation", "transportation", "vehicle" ]
}, {
title: "fas fa-bus-alt",
searchTerms: [ "machine", "public transportation", "transportation", "vehicle" ]
}, {
title: "fas fa-business-time",
searchTerms: [ "briefcase", "business socks", "clock", "flight of the conchords", "wednesday" ]
}, {
title: "fab fa-buysellads",
searchTerms: []
}, {
title: "fas fa-calculator",
searchTerms: []
}, {
title: "fas fa-calendar",
searchTerms: [ "calendar-o", "date", "event", "schedule", "time", "when" ]
}, {
title: "far fa-calendar",
searchTerms: [ "calendar-o", "date", "event", "schedule", "time", "when" ]
}, {
title: "fas fa-calendar-alt",
searchTerms: [ "calendar", "date", "event", "schedule", "time", "when" ]
}, {
title: "far fa-calendar-alt",
searchTerms: [ "calendar", "date", "event", "schedule", "time", "when" ]
}, {
title: "fas fa-calendar-check",
searchTerms: [ "accept", "agree", "appointment", "confirm", "correct", "done", "ok", "select", "success", "todo" ]
}, {
title: "far fa-calendar-check",
searchTerms: [ "accept", "agree", "appointment", "confirm", "correct", "done", "ok", "select", "success", "todo" ]
}, {
title: "fas fa-calendar-minus",
searchTerms: [ "delete", "negative", "remove" ]
}, {
title: "far fa-calendar-minus",
searchTerms: [ "delete", "negative", "remove" ]
}, {
title: "fas fa-calendar-plus",
searchTerms: [ "add", "create", "new", "positive" ]
}, {
title: "far fa-calendar-plus",
searchTerms: [ "add", "create", "new", "positive" ]
}, {
title: "fas fa-calendar-times",
searchTerms: [ "archive", "delete", "remove", "x" ]
}, {
title: "far fa-calendar-times",
searchTerms: [ "archive", "delete", "remove", "x" ]
}, {
title: "fas fa-camera",
searchTerms: [ "photo", "picture", "record" ]
}, {
title: "fas fa-camera-retro",
searchTerms: [ "photo", "picture", "record" ]
}, {
title: "fas fa-campground",
searchTerms: [ "camping", "fall", "outdoors", "seasonal", "tent" ]
}, {
title: "fas fa-cannabis",
searchTerms: [ "bud", "chronic", "drugs", "endica", "endo", "ganja", "marijuana", "mary jane", "pot", "reefer", "sativa", "spliff", "weed", "whacky-tabacky" ]
}, {
title: "fas fa-capsules",
searchTerms: [ "drugs", "medicine" ]
}, {
title: "fas fa-car",
searchTerms: [ "machine", "transportation", "vehicle" ]
}, {
title: "fas fa-car-alt",
searchTerms: []
}, {
title: "fas fa-car-battery",
searchTerms: []
}, {
title: "fas fa-car-crash",
searchTerms: []
}, {
title: "fas fa-car-side",
searchTerms: []
}, {
title: "fas fa-caret-down",
searchTerms: [ "arrow", "dropdown", "menu", "more", "triangle down" ]
}, {
title: "fas fa-caret-left",
searchTerms: [ "arrow", "back", "previous", "triangle left" ]
}, {
title: "fas fa-caret-right",
searchTerms: [ "arrow", "forward", "next", "triangle right" ]
}, {
title: "fas fa-caret-square-down",
searchTerms: [ "caret-square-o-down", "dropdown", "menu", "more" ]
}, {
title: "far fa-caret-square-down",
searchTerms: [ "caret-square-o-down", "dropdown", "menu", "more" ]
}, {
title: "fas fa-caret-square-left",
searchTerms: [ "back", "caret-square-o-left", "previous" ]
}, {
title: "far fa-caret-square-left",
searchTerms: [ "back", "caret-square-o-left", "previous" ]
}, {
title: "fas fa-caret-square-right",
searchTerms: [ "caret-square-o-right", "forward", "next" ]
}, {
title: "far fa-caret-square-right",
searchTerms: [ "caret-square-o-right", "forward", "next" ]
}, {
title: "fas fa-caret-square-up",
searchTerms: [ "caret-square-o-up" ]
}, {
title: "far fa-caret-square-up",
searchTerms: [ "caret-square-o-up" ]
}, {
title: "fas fa-caret-up",
searchTerms: [ "arrow", "triangle up" ]
}, {
title: "fas fa-cart-arrow-down",
searchTerms: [ "shopping" ]
}, {
title: "fas fa-cart-plus",
searchTerms: [ "add", "create", "new", "positive", "shopping" ]
}, {
title: "fas fa-cat",
searchTerms: [ "feline", "halloween", "holiday", "kitten", "kitty", "meow", "pet" ]
}, {
title: "fab fa-cc-amazon-pay",
searchTerms: []
}, {
title: "fab fa-cc-amex",
searchTerms: [ "amex" ]
}, {
title: "fab fa-cc-apple-pay",
searchTerms: []
}, {
title: "fab fa-cc-diners-club",
searchTerms: []
}, {
title: "fab fa-cc-discover",
searchTerms: []
}, {
title: "fab fa-cc-jcb",
searchTerms: []
}, {
title: "fab fa-cc-mastercard",
searchTerms: []
}, {
title: "fab fa-cc-paypal",
searchTerms: []
}, {
title: "fab fa-cc-stripe",
searchTerms: []
}, {
title: "fab fa-cc-visa",
searchTerms: []
}, {
title: "fab fa-centercode",
searchTerms: []
}, {
title: "fas fa-certificate",
searchTerms: [ "badge", "star" ]
}, {
title: "fas fa-chair",
searchTerms: [ "furniture", "seat" ]
}, {
title: "fas fa-chalkboard",
searchTerms: [ "blackboard", "learning", "school", "teaching", "whiteboard", "writing" ]
}, {
title: "fas fa-chalkboard-teacher",
searchTerms: [ "blackboard", "instructor", "learning", "professor", "school", "whiteboard", "writing" ]
}, {
title: "fas fa-charging-station",
searchTerms: []
}, {
title: "fas fa-chart-area",
searchTerms: [ "analytics", "area-chart", "graph" ]
}, {
title: "fas fa-chart-bar",
searchTerms: [ "analytics", "bar-chart", "graph" ]
}, {
title: "far fa-chart-bar",
searchTerms: [ "analytics", "bar-chart", "graph" ]
}, {
title: "fas fa-chart-line",
searchTerms: [ "activity", "analytics", "dashboard", "graph", "line-chart" ]
}, {
title: "fas fa-chart-pie",
searchTerms: [ "analytics", "graph", "pie-chart" ]
}, {
title: "fas fa-check",
searchTerms: [ "accept", "agree", "checkmark", "confirm", "correct", "done", "notice", "notification", "notify", "ok", "select", "success", "tick", "todo", "yes" ]
}, {
title: "fas fa-check-circle",
searchTerms: [ "accept", "agree", "confirm", "correct", "done", "ok", "select", "success", "todo", "yes" ]
}, {
title: "far fa-check-circle",
searchTerms: [ "accept", "agree", "confirm", "correct", "done", "ok", "select", "success", "todo", "yes" ]
}, {
title: "fas fa-check-double",
searchTerms: [ "accept", "agree", "checkmark", "confirm", "correct", "done", "notice", "notification", "notify", "ok", "select", "success", "tick", "todo" ]
}, {
title: "fas fa-check-square",
searchTerms: [ "accept", "agree", "checkmark", "confirm", "correct", "done", "ok", "select", "success", "todo", "yes" ]
}, {
title: "far fa-check-square",
searchTerms: [ "accept", "agree", "checkmark", "confirm", "correct", "done", "ok", "select", "success", "todo", "yes" ]
}, {
title: "fas fa-chess",
searchTerms: []
}, {
title: "fas fa-chess-bishop",
searchTerms: []
}, {
title: "fas fa-chess-board",
searchTerms: []
}, {
title: "fas fa-chess-king",
searchTerms: []
}, {
title: "fas fa-chess-knight",
searchTerms: []
}, {
title: "fas fa-chess-pawn",
searchTerms: []
}, {
title: "fas fa-chess-queen",
searchTerms: []
}, {
title: "fas fa-chess-rook",
searchTerms: []
}, {
title: "fas fa-chevron-circle-down",
searchTerms: [ "arrow", "dropdown", "menu", "more" ]
}, {
title: "fas fa-chevron-circle-left",
searchTerms: [ "arrow", "back", "previous" ]
}, {
title: "fas fa-chevron-circle-right",
searchTerms: [ "arrow", "forward", "next" ]
}, {
title: "fas fa-chevron-circle-up",
searchTerms: [ "arrow" ]
}, {
title: "fas fa-chevron-down",
searchTerms: []
}, {
title: "fas fa-chevron-left",
searchTerms: [ "back", "bracket", "previous" ]
}, {
title: "fas fa-chevron-right",
searchTerms: [ "bracket", "forward", "next" ]
}, {
title: "fas fa-chevron-up",
searchTerms: []
}, {
title: "fas fa-child",
searchTerms: []
}, {
title: "fab fa-chrome",
searchTerms: [ "browser" ]
}, {
title: "fas fa-church",
searchTerms: [ "building", "community", "religion" ]
}, {
title: "fas fa-circle",
searchTerms: [ "circle-thin", "dot", "notification" ]
}, {
title: "far fa-circle",
searchTerms: [ "circle-thin", "dot", "notification" ]
}, {
title: "fas fa-circle-notch",
searchTerms: [ "circle-o-notch" ]
}, {
title: "fas fa-city",
searchTerms: [ "buildings", "busy", "skyscrapers", "urban", "windows" ]
}, {
title: "fas fa-clipboard",
searchTerms: [ "paste" ]
}, {
title: "far fa-clipboard",
searchTerms: [ "paste" ]
}, {
title: "fas fa-clipboard-check",
searchTerms: [ "accept", "agree", "confirm", "done", "ok", "select", "success", "todo", "yes" ]
}, {
title: "fas fa-clipboard-list",
searchTerms: [ "checklist", "completed", "done", "finished", "intinerary", "ol", "schedule", "todo", "ul" ]
}, {
title: "fas fa-clock",
searchTerms: [ "date", "late", "schedule", "timer", "timestamp", "watch" ]
}, {
title: "far fa-clock",
searchTerms: [ "date", "late", "schedule", "timer", "timestamp", "watch" ]
}, {
title: "fas fa-clone",
searchTerms: [ "copy", "duplicate" ]
}, {
title: "far fa-clone",
searchTerms: [ "copy", "duplicate" ]
}, {
title: "fas fa-closed-captioning",
searchTerms: [ "cc" ]
}, {
title: "far fa-closed-captioning",
searchTerms: [ "cc" ]
}, {
title: "fas fa-cloud",
searchTerms: [ "save" ]
}, {
title: "fas fa-cloud-download-alt",
searchTerms: [ "import" ]
}, {
title: "fas fa-cloud-meatball",
searchTerms: []
}, {
title: "fas fa-cloud-moon",
searchTerms: [ "crescent", "evening", "halloween", "holiday", "lunar", "night", "sky" ]
}, {
title: "fas fa-cloud-moon-rain",
searchTerms: []
}, {
title: "fas fa-cloud-rain",
searchTerms: [ "precipitation" ]
}, {
title: "fas fa-cloud-showers-heavy",
searchTerms: [ "precipitation", "rain", "storm" ]
}, {
title: "fas fa-cloud-sun",
searchTerms: [ "day", "daytime", "fall", "outdoors", "seasonal" ]
}, {
title: "fas fa-cloud-sun-rain",
searchTerms: []
}, {
title: "fas fa-cloud-upload-alt",
searchTerms: [ "cloud-upload" ]
}, {
title: "fab fa-cloudscale",
searchTerms: []
}, {
title: "fab fa-cloudsmith",
searchTerms: []
}, {
title: "fab fa-cloudversify",
searchTerms: []
}, {
title: "fas fa-cocktail",
searchTerms: [ "alcohol", "beverage", "drink" ]
}, {
title: "fas fa-code",
searchTerms: [ "brackets", "html" ]
}, {
title: "fas fa-code-branch",
searchTerms: [ "branch", "code-fork", "fork", "git", "github", "rebase", "svn", "vcs", "version" ]
}, {
title: "fab fa-codepen",
searchTerms: []
}, {
title: "fab fa-codiepie",
searchTerms: []
}, {
title: "fas fa-coffee",
searchTerms: [ "beverage", "breakfast", "cafe", "drink", "fall", "morning", "mug", "seasonal", "tea" ]
}, {
title: "fas fa-cog",
searchTerms: [ "settings" ]
}, {
title: "fas fa-cogs",
searchTerms: [ "gears", "settings" ]
}, {
title: "fas fa-coins",
searchTerms: []
}, {
title: "fas fa-columns",
searchTerms: [ "dashboard", "panes", "split" ]
}, {
title: "fas fa-comment",
searchTerms: [ "bubble", "chat", "conversation", "feedback", "message", "note", "notification", "sms", "speech", "texting" ]
}, {
title: "far fa-comment",
searchTerms: [ "bubble", "chat", "conversation", "feedback", "message", "note", "notification", "sms", "speech", "texting" ]
}, {
title: "fas fa-comment-alt",
searchTerms: [ "bubble", "chat", "commenting", "conversation", "feedback", "message", "note", "notification", "sms", "speech", "texting" ]
}, {
title: "far fa-comment-alt",
searchTerms: [ "bubble", "chat", "commenting", "conversation", "feedback", "message", "note", "notification", "sms", "speech", "texting" ]
}, {
title: "fas fa-comment-dollar",
searchTerms: []
}, {
title: "fas fa-comment-dots",
searchTerms: []
}, {
title: "far fa-comment-dots",
searchTerms: []
}, {
title: "fas fa-comment-slash",
searchTerms: []
}, {
title: "fas fa-comments",
searchTerms: [ "bubble", "chat", "conversation", "feedback", "message", "note", "notification", "sms", "speech", "texting" ]
}, {
title: "far fa-comments",
searchTerms: [ "bubble", "chat", "conversation", "feedback", "message", "note", "notification", "sms", "speech", "texting" ]
}, {
title: "fas fa-comments-dollar",
searchTerms: []
}, {
title: "fas fa-compact-disc",
searchTerms: [ "bluray", "cd", "disc", "media" ]
}, {
title: "fas fa-compass",
searchTerms: [ "directory", "location", "menu", "safari" ]
}, {
title: "far fa-compass",
searchTerms: [ "directory", "location", "menu", "safari" ]
}, {
title: "fas fa-compress",
searchTerms: [ "collapse", "combine", "contract", "merge", "smaller" ]
}, {
title: "fas fa-concierge-bell",
searchTerms: [ "attention", "hotel", "service", "support" ]
}, {
title: "fab fa-connectdevelop",
searchTerms: []
}, {
title: "fab fa-contao",
searchTerms: []
}, {
title: "fas fa-cookie",
searchTerms: [ "baked good", "chips", "food", "snack", "sweet", "treat" ]
}, {
title: "fas fa-cookie-bite",
searchTerms: [ "baked good", "bitten", "chips", "eating", "food", "snack", "sweet", "treat" ]
}, {
title: "fas fa-copy",
searchTerms: [ "clone", "duplicate", "file", "files-o" ]
}, {
title: "far fa-copy",
searchTerms: [ "clone", "duplicate", "file", "files-o" ]
}, {
title: "fas fa-copyright",
searchTerms: []
}, {
title: "far fa-copyright",
searchTerms: []
}, {
title: "fas fa-couch",
searchTerms: [ "furniture", "sofa" ]
}, {
title: "fab fa-cpanel",
searchTerms: []
}, {
title: "fab fa-creative-commons",
searchTerms: []
}, {
title: "fab fa-creative-commons-by",
searchTerms: []
}, {
title: "fab fa-creative-commons-nc",
searchTerms: []
}, {
title: "fab fa-creative-commons-nc-eu",
searchTerms: []
}, {
title: "fab fa-creative-commons-nc-jp",
searchTerms: []
}, {
title: "fab fa-creative-commons-nd",
searchTerms: []
}, {
title: "fab fa-creative-commons-pd",
searchTerms: []
}, {
title: "fab fa-creative-commons-pd-alt",
searchTerms: []
}, {
title: "fab fa-creative-commons-remix",
searchTerms: []
}, {
title: "fab fa-creative-commons-sa",
searchTerms: []
}, {
title: "fab fa-creative-commons-sampling",
searchTerms: []
}, {
title: "fab fa-creative-commons-sampling-plus",
searchTerms: []
}, {
title: "fab fa-creative-commons-share",
searchTerms: []
}, {
title: "fab fa-creative-commons-zero",
searchTerms: []
}, {
title: "fas fa-credit-card",
searchTerms: [ "buy", "checkout", "credit-card-alt", "debit", "money", "payment", "purchase" ]
}, {
title: "far fa-credit-card",
searchTerms: [ "buy", "checkout", "credit-card-alt", "debit", "money", "payment", "purchase" ]
}, {
title: "fab fa-critical-role",
searchTerms: [ "Dungeons & Dragons", "d&d", "dnd", "fantasy", "game", "gaming", "tabletop" ]
}, {
title: "fas fa-crop",
searchTerms: [ "design" ]
}, {
title: "fas fa-crop-alt",
searchTerms: []
}, {
title: "fas fa-cross",
searchTerms: [ "catholicism", "christianity" ]
}, {
title: "fas fa-crosshairs",
searchTerms: [ "gpd", "picker", "position" ]
}, {
title: "fas fa-crow",
searchTerms: [ "bird", "bullfrog", "fauna", "halloween", "holiday", "toad" ]
}, {
title: "fas fa-crown",
searchTerms: []
}, {
title: "fab fa-css3",
searchTerms: [ "code" ]
}, {
title: "fab fa-css3-alt",
searchTerms: []
}, {
title: "fas fa-cube",
searchTerms: [ "package" ]
}, {
title: "fas fa-cubes",
searchTerms: [ "packages" ]
}, {
title: "fas fa-cut",
searchTerms: [ "scissors" ]
}, {
title: "fab fa-cuttlefish",
searchTerms: []
}, {
title: "fab fa-d-and-d",
searchTerms: []
}, {
title: "fab fa-d-and-d-beyond",
searchTerms: [ "Dungeons & Dragons", "d&d", "dnd", "fantasy", "gaming", "tabletop" ]
}, {
title: "fab fa-dashcube",
searchTerms: []
}, {
title: "fas fa-database",
searchTerms: []
}, {
title: "fas fa-deaf",
searchTerms: []
}, {
title: "fab fa-delicious",
searchTerms: []
}, {
title: "fas fa-democrat",
searchTerms: [ "american", "democratic party", "donkey", "election", "left", "left-wing", "liberal", "politics", "usa" ]
}, {
title: "fab fa-deploydog",
searchTerms: []
}, {
title: "fab fa-deskpro",
searchTerms: []
}, {
title: "fas fa-desktop",
searchTerms: [ "computer", "cpu", "demo", "desktop", "device", "machine", "monitor", "pc", "screen" ]
}, {
title: "fab fa-dev",
searchTerms: []
}, {
title: "fab fa-deviantart",
searchTerms: []
}, {
title: "fas fa-dharmachakra",
searchTerms: [ "buddhism", "buddhist", "wheel of dharma" ]
}, {
title: "fas fa-diagnoses",
searchTerms: []
}, {
title: "fas fa-dice",
searchTerms: [ "chance", "gambling", "game", "roll" ]
}, {
title: "fas fa-dice-d20",
searchTerms: [ "Dungeons & Dragons", "chance", "d&d", "dnd", "fantasy", "gambling", "game", "roll" ]
}, {
title: "fas fa-dice-d6",
searchTerms: [ "Dungeons & Dragons", "chance", "d&d", "dnd", "fantasy", "gambling", "game", "roll" ]
}, {
title: "fas fa-dice-five",
searchTerms: [ "chance", "gambling", "game", "roll" ]
}, {
title: "fas fa-dice-four",
searchTerms: [ "chance", "gambling", "game", "roll" ]
}, {
title: "fas fa-dice-one",
searchTerms: [ "chance", "gambling", "game", "roll" ]
}, {
title: "fas fa-dice-six",
searchTerms: [ "chance", "gambling", "game", "roll" ]
}, {
title: "fas fa-dice-three",
searchTerms: [ "chance", "gambling", "game", "roll" ]
}, {
title: "fas fa-dice-two",
searchTerms: [ "chance", "gambling", "game", "roll" ]
}, {
title: "fab fa-digg",
searchTerms: []
}, {
title: "fab fa-digital-ocean",
searchTerms: []
}, {
title: "fas fa-digital-tachograph",
searchTerms: []
}, {
title: "fas fa-directions",
searchTerms: []
}, {
title: "fab fa-discord",
searchTerms: []
}, {
title: "fab fa-discourse",
searchTerms: []
}, {
title: "fas fa-divide",
searchTerms: []
}, {
title: "fas fa-dizzy",
searchTerms: [ "dazed", "disapprove", "emoticon", "face" ]
}, {
title: "far fa-dizzy",
searchTerms: [ "dazed", "disapprove", "emoticon", "face" ]
}, {
title: "fas fa-dna",
searchTerms: [ "double helix", "helix" ]
}, {
title: "fab fa-dochub",
searchTerms: []
}, {
title: "fab fa-docker",
searchTerms: []
}, {
title: "fas fa-dog",
searchTerms: [ "canine", "fauna", "mammmal", "pet", "pooch", "puppy", "woof" ]
}, {
title: "fas fa-dollar-sign",
searchTerms: [ "$", "dollar-sign", "money", "price", "usd" ]
}, {
title: "fas fa-dolly",
searchTerms: []
}, {
title: "fas fa-dolly-flatbed",
searchTerms: []
}, {
title: "fas fa-donate",
searchTerms: [ "generosity", "give" ]
}, {
title: "fas fa-door-closed",
searchTerms: []
}, {
title: "fas fa-door-open",
searchTerms: []
}, {
title: "fas fa-dot-circle",
searchTerms: [ "bullseye", "notification", "target" ]
}, {
title: "far fa-dot-circle",
searchTerms: [ "bullseye", "notification", "target" ]
}, {
title: "fas fa-dove",
searchTerms: [ "bird", "fauna", "flying", "peace" ]
}, {
title: "fas fa-download",
searchTerms: [ "import" ]
}, {
title: "fab fa-draft2digital",
searchTerms: []
}, {
title: "fas fa-drafting-compass",
searchTerms: [ "mechanical drawing", "plot", "plotting" ]
}, {
title: "fas fa-dragon",
searchTerms: [ "Dungeons & Dragons", "d&d", "dnd", "fantasy" ]
}, {
title: "fas fa-draw-polygon",
searchTerms: []
}, {
title: "fab fa-dribbble",
searchTerms: []
}, {
title: "fab fa-dribbble-square",
searchTerms: []
}, {
title: "fab fa-dropbox",
searchTerms: []
}, {
title: "fas fa-drum",
searchTerms: [ "instrument", "music", "percussion", "snare", "sound" ]
}, {
title: "fas fa-drum-steelpan",
searchTerms: [ "calypso", "instrument", "music", "percussion", "reggae", "snare", "sound", "steel", "tropical" ]
}, {
title: "fas fa-drumstick-bite",
searchTerms: []
}, {
title: "fab fa-drupal",
searchTerms: []
}, {
title: "fas fa-dumbbell",
searchTerms: [ "exercise", "gym", "strength", "weight", "weight-lifting" ]
}, {
title: "fas fa-dungeon",
searchTerms: [ "Dungeons & Dragons", "d&d", "dnd", "door", "entrance", "fantasy", "gate" ]
}, {
title: "fab fa-dyalog",
searchTerms: []
}, {
title: "fab fa-earlybirds",
searchTerms: []
}, {
title: "fab fa-ebay",
searchTerms: []
}, {
title: "fab fa-edge",
searchTerms: [ "browser", "ie" ]
}, {
title: "fas fa-edit",
searchTerms: [ "edit", "pen", "pencil", "update", "write" ]
}, {
title: "far fa-edit",
searchTerms: [ "edit", "pen", "pencil", "update", "write" ]
}, {
title: "fas fa-eject",
searchTerms: []
}, {
title: "fab fa-elementor",
searchTerms: []
}, {
title: "fas fa-ellipsis-h",
searchTerms: [ "dots", "drag", "kebab", "list", "menu", "nav", "navigation", "ol", "reorder", "settings", "ul" ]
}, {
title: "fas fa-ellipsis-v",
searchTerms: [ "dots", "drag", "kebab", "list", "menu", "nav", "navigation", "ol", "reorder", "settings", "ul" ]
}, {
title: "fab fa-ello",
searchTerms: []
}, {
title: "fab fa-ember",
searchTerms: []
}, {
title: "fab fa-empire",
searchTerms: []
}, {
title: "fas fa-envelope",
searchTerms: [ "e-mail", "email", "letter", "mail", "message", "notification", "support" ]
}, {
title: "far fa-envelope",
searchTerms: [ "e-mail", "email", "letter", "mail", "message", "notification", "support" ]
}, {
title: "fas fa-envelope-open",
searchTerms: [ "e-mail", "email", "letter", "mail", "message", "notification", "support" ]
}, {
title: "far fa-envelope-open",
searchTerms: [ "e-mail", "email", "letter", "mail", "message", "notification", "support" ]
}, {
title: "fas fa-envelope-open-text",
searchTerms: []
}, {
title: "fas fa-envelope-square",
searchTerms: [ "e-mail", "email", "letter", "mail", "message", "notification", "support" ]
}, {
title: "fab fa-envira",
searchTerms: [ "leaf" ]
}, {
title: "fas fa-equals",
searchTerms: []
}, {
title: "fas fa-eraser",
searchTerms: [ "delete", "remove" ]
}, {
title: "fab fa-erlang",
searchTerms: []
}, {
title: "fab fa-ethereum",
searchTerms: []
}, {
title: "fab fa-etsy",
searchTerms: []
}, {
title: "fas fa-euro-sign",
searchTerms: [ "eur" ]
}, {
title: "fas fa-exchange-alt",
searchTerms: [ "arrow", "arrows", "exchange", "reciprocate", "return", "swap", "transfer" ]
}, {
title: "fas fa-exclamation",
searchTerms: [ "alert", "danger", "error", "important", "notice", "notification", "notify", "problem", "warning" ]
}, {
title: "fas fa-exclamation-circle",
searchTerms: [ "alert", "danger", "error", "important", "notice", "notification", "notify", "problem", "warning" ]
}, {
title: "fas fa-exclamation-triangle",
searchTerms: [ "alert", "danger", "error", "important", "notice", "notification", "notify", "problem", "warning" ]
}, {
title: "fas fa-expand",
searchTerms: [ "bigger", "enlarge", "resize" ]
}, {
title: "fas fa-expand-arrows-alt",
searchTerms: [ "arrows-alt", "bigger", "enlarge", "move", "resize" ]
}, {
title: "fab fa-expeditedssl",
searchTerms: []
}, {
title: "fas fa-external-link-alt",
searchTerms: [ "external-link", "new", "open" ]
}, {
title: "fas fa-external-link-square-alt",
searchTerms: [ "external-link-square", "new", "open" ]
}, {
title: "fas fa-eye",
searchTerms: [ "optic", "see", "seen", "show", "sight", "views", "visible" ]
}, {
title: "far fa-eye",
searchTerms: [ "optic", "see", "seen", "show", "sight", "views", "visible" ]
}, {
title: "fas fa-eye-dropper",
searchTerms: [ "eyedropper" ]
}, {
title: "fas fa-eye-slash",
searchTerms: [ "blind", "hide", "show", "toggle", "unseen", "views", "visible", "visiblity" ]
}, {
title: "far fa-eye-slash",
searchTerms: [ "blind", "hide", "show", "toggle", "unseen", "views", "visible", "visiblity" ]
}, {
title: "fab fa-facebook",
searchTerms: [ "facebook-official", "social network" ]
}, {
title: "fab fa-facebook-f",
searchTerms: [ "facebook" ]
}, {
title: "fab fa-facebook-messenger",
searchTerms: []
}, {
title: "fab fa-facebook-square",
searchTerms: [ "social network" ]
}, {
title: "fab fa-fantasy-flight-games",
searchTerms: [ "Dungeons & Dragons", "d&d", "dnd", "fantasy", "game", "gaming", "tabletop" ]
}, {
title: "fas fa-fast-backward",
searchTerms: [ "beginning", "first", "previous", "rewind", "start" ]
}, {
title: "fas fa-fast-forward",
searchTerms: [ "end", "last", "next" ]
}, {
title: "fas fa-fax",
searchTerms: []
}, {
title: "fas fa-feather",
searchTerms: [ "bird", "light", "plucked", "quill" ]
}, {
title: "fas fa-feather-alt",
searchTerms: [ "bird", "light", "plucked", "quill" ]
}, {
title: "fas fa-female",
searchTerms: [ "human", "person", "profile", "user", "woman" ]
}, {
title: "fas fa-fighter-jet",
searchTerms: [ "airplane", "fast", "fly", "goose", "maverick", "plane", "quick", "top gun", "transportation", "travel" ]
}, {
title: "fas fa-file",
searchTerms: [ "document", "new", "page", "pdf", "resume" ]
}, {
title: "far fa-file",
searchTerms: [ "document", "new", "page", "pdf", "resume" ]
}, {
title: "fas fa-file-alt",
searchTerms: [ "document", "file-text", "invoice", "new", "page", "pdf" ]
}, {
title: "far fa-file-alt",
searchTerms: [ "document", "file-text", "invoice", "new", "page", "pdf" ]
}, {
title: "fas fa-file-archive",
searchTerms: [ ".zip", "bundle", "compress", "compression", "download", "zip" ]
}, {
title: "far fa-file-archive",
searchTerms: [ ".zip", "bundle", "compress", "compression", "download", "zip" ]
}, {
title: "fas fa-file-audio",
searchTerms: []
}, {
title: "far fa-file-audio",
searchTerms: []
}, {
title: "fas fa-file-code",
searchTerms: []
}, {
title: "far fa-file-code",
searchTerms: []
}, {
title: "fas fa-file-contract",
searchTerms: [ "agreement", "binding", "document", "legal", "signature" ]
}, {
title: "fas fa-file-csv",
searchTerms: [ "spreadsheets" ]
}, {
title: "fas fa-file-download",
searchTerms: []
}, {
title: "fas fa-file-excel",
searchTerms: []
}, {
title: "far fa-file-excel",
searchTerms: []
}, {
title: "fas fa-file-export",
searchTerms: []
}, {
title: "fas fa-file-image",
searchTerms: []
}, {
title: "far fa-file-image",
searchTerms: []
}, {
title: "fas fa-file-import",
searchTerms: []
}, {
title: "fas fa-file-invoice",
searchTerms: [ "bill", "document", "receipt" ]
}, {
title: "fas fa-file-invoice-dollar",
searchTerms: [ "$", "bill", "document", "dollar-sign", "money", "receipt", "usd" ]
}, {
title: "fas fa-file-medical",
searchTerms: []
}, {
title: "fas fa-file-medical-alt",
searchTerms: []
}, {
title: "fas fa-file-pdf",
searchTerms: []
}, {
title: "far fa-file-pdf",
searchTerms: []
}, {
title: "fas fa-file-powerpoint",
searchTerms: []
}, {
title: "far fa-file-powerpoint",
searchTerms: []
}, {
title: "fas fa-file-prescription",
searchTerms: [ "drugs", "medical", "medicine", "rx" ]
}, {
title: "fas fa-file-signature",
searchTerms: [ "John Hancock", "contract", "document", "name" ]
}, {
title: "fas fa-file-upload",
searchTerms: []
}, {
title: "fas fa-file-video",
searchTerms: []
}, {
title: "far fa-file-video",
searchTerms: []
}, {
title: "fas fa-file-word",
searchTerms: []
}, {
title: "far fa-file-word",
searchTerms: []
}, {
title: "fas fa-fill",
searchTerms: [ "bucket", "color", "paint", "paint bucket" ]
}, {
title: "fas fa-fill-drip",
searchTerms: [ "bucket", "color", "drop", "paint", "paint bucket", "spill" ]
}, {
title: "fas fa-film",
searchTerms: [ "movie" ]
}, {
title: "fas fa-filter",
searchTerms: [ "funnel", "options" ]
}, {
title: "fas fa-fingerprint",
searchTerms: [ "human", "id", "identification", "lock", "smudge", "touch", "unique", "unlock" ]
}, {
title: "fas fa-fire",
searchTerms: [ "caliente", "flame", "heat", "hot", "popular" ]
}, {
title: "fas fa-fire-extinguisher",
searchTerms: []
}, {
title: "fab fa-firefox",
searchTerms: [ "browser" ]
}, {
title: "fas fa-first-aid",
searchTerms: []
}, {
title: "fab fa-first-order",
searchTerms: []
}, {
title: "fab fa-first-order-alt",
searchTerms: []
}, {
title: "fab fa-firstdraft",
searchTerms: []
}, {
title: "fas fa-fish",
searchTerms: [ "fauna", "gold", "swimming" ]
}, {
title: "fas fa-fist-raised",
searchTerms: [ "Dungeons & Dragons", "d&d", "dnd", "fantasy", "hand", "ki", "monk", "resist", "strength", "unarmed combat" ]
}, {
title: "fas fa-flag",
searchTerms: [ "country", "notice", "notification", "notify", "pole", "report", "symbol" ]
}, {
title: "far fa-flag",
searchTerms: [ "country", "notice", "notification", "notify", "pole", "report", "symbol" ]
}, {
title: "fas fa-flag-checkered",
searchTerms: [ "notice", "notification", "notify", "pole", "racing", "report", "symbol" ]
}, {
title: "fas fa-flag-usa",
searchTerms: [ "betsy ross", "country", "old glory", "stars", "stripes", "symbol" ]
}, {
title: "fas fa-flask",
searchTerms: [ "beaker", "experimental", "labs", "science" ]
}, {
title: "fab fa-flickr",
searchTerms: []
}, {
title: "fab fa-flipboard",
searchTerms: []
}, {
title: "fas fa-flushed",
searchTerms: [ "embarrassed", "emoticon", "face" ]
}, {
title: "far fa-flushed",
searchTerms: [ "embarrassed", "emoticon", "face" ]
}, {
title: "fab fa-fly",
searchTerms: []
}, {
title: "fas fa-folder",
searchTerms: []
}, {
title: "far fa-folder",
searchTerms: []
}, {
title: "fas fa-folder-minus",
searchTerms: [ "archive", "delete", "negative", "remove" ]
}, {
title: "fas fa-folder-open",
searchTerms: []
}, {
title: "far fa-folder-open",
searchTerms: []
}, {
title: "fas fa-folder-plus",
searchTerms: [ "add", "create", "new", "positive" ]
}, {
title: "fas fa-font",
searchTerms: [ "text" ]
}, {
title: "fab fa-font-awesome",
searchTerms: [ "meanpath" ]
}, {
title: "fab fa-font-awesome-alt",
searchTerms: []
}, {
title: "fab fa-font-awesome-flag",
searchTerms: []
}, {
title: "far fa-font-awesome-logo-full",
searchTerms: []
}, {
title: "fas fa-font-awesome-logo-full",
searchTerms: []
}, {
title: "fab fa-font-awesome-logo-full",
searchTerms: []
}, {
title: "fab fa-fonticons",
searchTerms: []
}, {
title: "fab fa-fonticons-fi",
searchTerms: []
}, {
title: "fas fa-football-ball",
searchTerms: [ "fall", "pigskin", "seasonal" ]
}, {
title: "fab fa-fort-awesome",
searchTerms: [ "castle" ]
}, {
title: "fab fa-fort-awesome-alt",
searchTerms: [ "castle" ]
}, {
title: "fab fa-forumbee",
searchTerms: []
}, {
title: "fas fa-forward",
searchTerms: [ "forward", "next" ]
}, {
title: "fab fa-foursquare",
searchTerms: []
}, {
title: "fab fa-free-code-camp",
searchTerms: []
}, {
title: "fab fa-freebsd",
searchTerms: []
}, {
title: "fas fa-frog",
searchTerms: [ "amphibian", "bullfrog", "fauna", "hop", "kermit", "kiss", "prince", "ribbit", "toad", "wart" ]
}, {
title: "fas fa-frown",
searchTerms: [ "disapprove", "emoticon", "face", "rating", "sad" ]
}, {
title: "far fa-frown",
searchTerms: [ "disapprove", "emoticon", "face", "rating", "sad" ]
}, {
title: "fas fa-frown-open",
searchTerms: [ "disapprove", "emoticon", "face", "rating", "sad" ]
}, {
title: "far fa-frown-open",
searchTerms: [ "disapprove", "emoticon", "face", "rating", "sad" ]
}, {
title: "fab fa-fulcrum",
searchTerms: []
}, {
title: "fas fa-funnel-dollar",
searchTerms: []
}, {
title: "fas fa-futbol",
searchTerms: [ "ball", "football", "soccer" ]
}, {
title: "far fa-futbol",
searchTerms: [ "ball", "football", "soccer" ]
}, {
title: "fab fa-galactic-republic",
searchTerms: [ "politics", "star wars" ]
}, {
title: "fab fa-galactic-senate",
searchTerms: [ "star wars" ]
}, {
title: "fas fa-gamepad",
searchTerms: [ "controller" ]
}, {
title: "fas fa-gas-pump",
searchTerms: []
}, {
title: "fas fa-gavel",
searchTerms: [ "hammer", "judge", "lawyer", "opinion" ]
}, {
title: "fas fa-gem",
searchTerms: [ "diamond" ]
}, {
title: "far fa-gem",
searchTerms: [ "diamond" ]
}, {
title: "fas fa-genderless",
searchTerms: []
}, {
title: "fab fa-get-pocket",
searchTerms: []
}, {
title: "fab fa-gg",
searchTerms: []
}, {
title: "fab fa-gg-circle",
searchTerms: []
}, {
title: "fas fa-ghost",
searchTerms: [ "apparition", "blinky", "clyde", "floating", "halloween", "holiday", "inky", "pinky", "spirit" ]
}, {
title: "fas fa-gift",
searchTerms: [ "generosity", "giving", "party", "present", "wrapped" ]
}, {
title: "fab fa-git",
searchTerms: []
}, {
title: "fab fa-git-square",
searchTerms: []
}, {
title: "fab fa-github",
searchTerms: [ "octocat" ]
}, {
title: "fab fa-github-alt",
searchTerms: [ "octocat" ]
}, {
title: "fab fa-github-square",
searchTerms: [ "octocat" ]
}, {
title: "fab fa-gitkraken",
searchTerms: []
}, {
title: "fab fa-gitlab",
searchTerms: [ "Axosoft" ]
}, {
title: "fab fa-gitter",
searchTerms: []
}, {
title: "fas fa-glass-martini",
searchTerms: [ "alcohol", "bar", "beverage", "drink", "glass", "liquor", "martini" ]
}, {
title: "fas fa-glass-martini-alt",
searchTerms: []
}, {
title: "fas fa-glasses",
searchTerms: [ "foureyes", "hipster", "nerd", "reading", "sight", "spectacles" ]
}, {
title: "fab fa-glide",
searchTerms: []
}, {
title: "fab fa-glide-g",
searchTerms: []
}, {
title: "fas fa-globe",
searchTerms: [ "all", "coordinates", "country", "earth", "global", "gps", "language", "localize", "location", "map", "online", "place", "planet", "translate", "travel", "world" ]
}, {
title: "fas fa-globe-africa",
searchTerms: [ "all", "country", "earth", "global", "gps", "language", "localize", "location", "map", "online", "place", "planet", "translate", "travel", "world" ]
}, {
title: "fas fa-globe-americas",
searchTerms: [ "all", "country", "earth", "global", "gps", "language", "localize", "location", "map", "online", "place", "planet", "translate", "travel", "world" ]
}, {
title: "fas fa-globe-asia",
searchTerms: [ "all", "country", "earth", "global", "gps", "language", "localize", "location", "map", "online", "place", "planet", "translate", "travel", "world" ]
}, {
title: "fab fa-gofore",
searchTerms: []
}, {
title: "fas fa-golf-ball",
searchTerms: []
}, {
title: "fab fa-goodreads",
searchTerms: []
}, {
title: "fab fa-goodreads-g",
searchTerms: []
}, {
title: "fab fa-google",
searchTerms: []
}, {
title: "fab fa-google-drive",
searchTerms: []
}, {
title: "fab fa-google-play",
searchTerms: []
}, {
title: "fab fa-google-plus",
searchTerms: [ "google-plus-circle", "google-plus-official" ]
}, {
title: "fab fa-google-plus-g",
searchTerms: [ "google-plus", "social network" ]
}, {
title: "fab fa-google-plus-square",
searchTerms: [ "social network" ]
}, {
title: "fab fa-google-wallet",
searchTerms: []
}, {
title: "fas fa-gopuram",
searchTerms: [ "building", "entrance", "hinduism", "temple", "tower" ]
}, {
title: "fas fa-graduation-cap",
searchTerms: [ "learning", "school", "student" ]
}, {
title: "fab fa-gratipay",
searchTerms: [ "favorite", "heart", "like", "love" ]
}, {
title: "fab fa-grav",
searchTerms: []
}, {
title: "fas fa-greater-than",
searchTerms: []
}, {
title: "fas fa-greater-than-equal",
searchTerms: []
}, {
title: "fas fa-grimace",
searchTerms: [ "cringe", "emoticon", "face" ]
}, {
title: "far fa-grimace",
searchTerms: [ "cringe", "emoticon", "face" ]
}, {
title: "fas fa-grin",
searchTerms: [ "emoticon", "face", "laugh", "smile" ]
}, {
title: "far fa-grin",
searchTerms: [ "emoticon", "face", "laugh", "smile" ]
}, {
title: "fas fa-grin-alt",
searchTerms: [ "emoticon", "face", "laugh", "smile" ]
}, {
title: "far fa-grin-alt",
searchTerms: [ "emoticon", "face", "laugh", "smile" ]
}, {
title: "fas fa-grin-beam",
searchTerms: [ "emoticon", "face", "laugh", "smile" ]
}, {
title: "far fa-grin-beam",
searchTerms: [ "emoticon", "face", "laugh", "smile" ]
}, {
title: "fas fa-grin-beam-sweat",
searchTerms: [ "emoticon", "face", "smile" ]
}, {
title: "far fa-grin-beam-sweat",
searchTerms: [ "emoticon", "face", "smile" ]
}, {
title: "fas fa-grin-hearts",
searchTerms: [ "emoticon", "face", "love", "smile" ]
}, {
title: "far fa-grin-hearts",
searchTerms: [ "emoticon", "face", "love", "smile" ]
}, {
title: "fas fa-grin-squint",
searchTerms: [ "emoticon", "face", "laugh", "smile" ]
}, {
title: "far fa-grin-squint",
searchTerms: [ "emoticon", "face", "laugh", "smile" ]
}, {
title: "fas fa-grin-squint-tears",
searchTerms: [ "emoticon", "face", "happy", "smile" ]
}, {
title: "far fa-grin-squint-tears",
searchTerms: [ "emoticon", "face", "happy", "smile" ]
}, {
title: "fas fa-grin-stars",
searchTerms: [ "emoticon", "face", "star-struck" ]
}, {
title: "far fa-grin-stars",
searchTerms: [ "emoticon", "face", "star-struck" ]
}, {
title: "fas fa-grin-tears",
searchTerms: [ "LOL", "emoticon", "face" ]
}, {
title: "far fa-grin-tears",
searchTerms: [ "LOL", "emoticon", "face" ]
}, {
title: "fas fa-grin-tongue",
searchTerms: [ "LOL", "emoticon", "face" ]
}, {
title: "far fa-grin-tongue",
searchTerms: [ "LOL", "emoticon", "face" ]
}, {
title: "fas fa-grin-tongue-squint",
searchTerms: [ "LOL", "emoticon", "face" ]
}, {
title: "far fa-grin-tongue-squint",
searchTerms: [ "LOL", "emoticon", "face" ]
}, {
title: "fas fa-grin-tongue-wink",
searchTerms: [ "LOL", "emoticon", "face" ]
}, {
title: "far fa-grin-tongue-wink",
searchTerms: [ "LOL", "emoticon", "face" ]
}, {
title: "fas fa-grin-wink",
searchTerms: [ "emoticon", "face", "flirt", "laugh", "smile" ]
}, {
title: "far fa-grin-wink",
searchTerms: [ "emoticon", "face", "flirt", "laugh", "smile" ]
}, {
title: "fas fa-grip-horizontal",
searchTerms: [ "affordance", "drag", "drop", "grab", "handle" ]
}, {
title: "fas fa-grip-vertical",
searchTerms: [ "affordance", "drag", "drop", "grab", "handle" ]
}, {
title: "fab fa-gripfire",
searchTerms: []
}, {
title: "fab fa-grunt",
searchTerms: []
}, {
title: "fab fa-gulp",
searchTerms: []
}, {
title: "fas fa-h-square",
searchTerms: [ "hospital", "hotel" ]
}, {
title: "fab fa-hacker-news",
searchTerms: []
}, {
title: "fab fa-hacker-news-square",
searchTerms: []
}, {
title: "fab fa-hackerrank",
searchTerms: []
}, {
title: "fas fa-hammer",
searchTerms: [ "admin", "fix", "repair", "settings", "tool" ]
}, {
title: "fas fa-hamsa",
searchTerms: [ "amulet", "christianity", "islam", "jewish", "judaism", "muslim", "protection" ]
}, {
title: "fas fa-hand-holding",
searchTerms: []
}, {
title: "fas fa-hand-holding-heart",
searchTerms: []
}, {
title: "fas fa-hand-holding-usd",
searchTerms: [ "$", "dollar sign", "donation", "giving", "money", "price" ]
}, {
title: "fas fa-hand-lizard",
searchTerms: []
}, {
title: "far fa-hand-lizard",
searchTerms: []
}, {
title: "fas fa-hand-paper",
searchTerms: [ "stop" ]
}, {
title: "far fa-hand-paper",
searchTerms: [ "stop" ]
}, {
title: "fas fa-hand-peace",
searchTerms: []
}, {
title: "far fa-hand-peace",
searchTerms: []
}, {
title: "fas fa-hand-point-down",
searchTerms: [ "finger", "hand-o-down", "point" ]
}, {
title: "far fa-hand-point-down",
searchTerms: [ "finger", "hand-o-down", "point" ]
}, {
title: "fas fa-hand-point-left",
searchTerms: [ "back", "finger", "hand-o-left", "left", "point", "previous" ]
}, {
title: "far fa-hand-point-left",
searchTerms: [ "back", "finger", "hand-o-left", "left", "point", "previous" ]
}, {
title: "fas fa-hand-point-right",
searchTerms: [ "finger", "forward", "hand-o-right", "next", "point", "right" ]
}, {
title: "far fa-hand-point-right",
searchTerms: [ "finger", "forward", "hand-o-right", "next", "point", "right" ]
}, {
title: "fas fa-hand-point-up",
searchTerms: [ "finger", "hand-o-up", "point" ]
}, {
title: "far fa-hand-point-up",
searchTerms: [ "finger", "hand-o-up", "point" ]
}, {
title: "fas fa-hand-pointer",
searchTerms: [ "select" ]
}, {
title: "far fa-hand-pointer",
searchTerms: [ "select" ]
}, {
title: "fas fa-hand-rock",
searchTerms: []
}, {
title: "far fa-hand-rock",
searchTerms: []
}, {
title: "fas fa-hand-scissors",
searchTerms: []
}, {
title: "far fa-hand-scissors",
searchTerms: []
}, {
title: "fas fa-hand-spock",
searchTerms: []
}, {
title: "far fa-hand-spock",
searchTerms: []
}, {
title: "fas fa-hands",
searchTerms: []
}, {
title: "fas fa-hands-helping",
searchTerms: [ "aid", "assistance", "partnership", "volunteering" ]
}, {
title: "fas fa-handshake",
searchTerms: [ "greeting", "partnership" ]
}, {
title: "far fa-handshake",
searchTerms: [ "greeting", "partnership" ]
}, {
title: "fas fa-hanukiah",
searchTerms: [ "candle", "hanukkah", "jewish", "judaism", "light" ]
}, {
title: "fas fa-hashtag",
searchTerms: []
}, {
title: "fas fa-hat-wizard",
searchTerms: [ "Dungeons & Dragons", "buckle", "cloth", "clothing", "d&d", "dnd", "fantasy", "halloween", "holiday", "mage", "magic", "pointy", "witch" ]
}, {
title: "fas fa-haykal",
searchTerms: [ "bahai", "bahá'í", "star" ]
}, {
title: "fas fa-hdd",
searchTerms: [ "cpu", "hard drive", "harddrive", "machine", "save", "storage" ]
}, {
title: "far fa-hdd",
searchTerms: [ "cpu", "hard drive", "harddrive", "machine", "save", "storage" ]
}, {
title: "fas fa-heading",
searchTerms: [ "header" ]
}, {
title: "fas fa-headphones",
searchTerms: [ "audio", "listen", "music", "sound", "speaker" ]
}, {
title: "fas fa-headphones-alt",
searchTerms: [ "audio", "listen", "music", "sound", "speaker" ]
}, {
title: "fas fa-headset",
searchTerms: [ "audio", "gamer", "gaming", "listen", "live chat", "microphone", "shot caller", "sound", "support", "telemarketer" ]
}, {
title: "fas fa-heart",
searchTerms: [ "favorite", "like", "love" ]
}, {
title: "far fa-heart",
searchTerms: [ "favorite", "like", "love" ]
}, {
title: "fas fa-heartbeat",
searchTerms: [ "ekg", "lifeline", "vital signs" ]
}, {
title: "fas fa-helicopter",
searchTerms: [ "airwolf", "apache", "chopper", "flight", "fly" ]
}, {
title: "fas fa-highlighter",
searchTerms: [ "edit", "marker", "sharpie", "update", "write" ]
}, {
title: "fas fa-hiking",
searchTerms: [ "activity", "backpack", "fall", "fitness", "outdoors", "seasonal", "walking" ]
}, {
title: "fas fa-hippo",
searchTerms: [ "fauna", "hungry", "mammmal" ]
}, {
title: "fab fa-hips",
searchTerms: []
}, {
title: "fab fa-hire-a-helper",
searchTerms: []
}, {
title: "fas fa-history",
searchTerms: []
}, {
title: "fas fa-hockey-puck",
searchTerms: []
}, {
title: "fas fa-home",
searchTerms: [ "house", "main" ]
}, {
title: "fab fa-hooli",
searchTerms: []
}, {
title: "fab fa-hornbill",
searchTerms: []
}, {
title: "fas fa-horse",
searchTerms: [ "equus", "fauna", "mammmal", "neigh" ]
}, {
title: "fas fa-hospital",
searchTerms: [ "building", "emergency room", "medical center" ]
}, {
title: "far fa-hospital",
searchTerms: [ "building", "emergency room", "medical center" ]
}, {
title: "fas fa-hospital-alt",
searchTerms: [ "building", "emergency room", "medical center" ]
}, {
title: "fas fa-hospital-symbol",
searchTerms: []
}, {
title: "fas fa-hot-tub",
searchTerms: []
}, {
title: "fas fa-hotel",
searchTerms: [ "building", "lodging" ]
}, {
title: "fab fa-hotjar",
searchTerms: []
}, {
title: "fas fa-hourglass",
searchTerms: []
}, {
title: "far fa-hourglass",
searchTerms: []
}, {
title: "fas fa-hourglass-end",
searchTerms: []
}, {
title: "fas fa-hourglass-half",
searchTerms: []
}, {
title: "fas fa-hourglass-start",
searchTerms: []
}, {
title: "fas fa-house-damage",
searchTerms: [ "devastation", "home" ]
}, {
title: "fab fa-houzz",
searchTerms: []
}, {
title: "fas fa-hryvnia",
searchTerms: [ "money" ]
}, {
title: "fab fa-html5",
searchTerms: []
}, {
title: "fab fa-hubspot",
searchTerms: []
}, {
title: "fas fa-i-cursor",
searchTerms: []
}, {
title: "fas fa-id-badge",
searchTerms: []
}, {
title: "far fa-id-badge",
searchTerms: []
}, {
title: "fas fa-id-card",
searchTerms: [ "document", "identification", "issued" ]
}, {
title: "far fa-id-card",
searchTerms: [ "document", "identification", "issued" ]
}, {
title: "fas fa-id-card-alt",
searchTerms: [ "demographics" ]
}, {
title: "fas fa-image",
searchTerms: [ "album", "photo", "picture" ]
}, {
title: "far fa-image",
searchTerms: [ "album", "photo", "picture" ]
}, {
title: "fas fa-images",
searchTerms: [ "album", "photo", "picture" ]
}, {
title: "far fa-images",
searchTerms: [ "album", "photo", "picture" ]
}, {
title: "fab fa-imdb",
searchTerms: []
}, {
title: "fas fa-inbox",
searchTerms: []
}, {
title: "fas fa-indent",
searchTerms: []
}, {
title: "fas fa-industry",
searchTerms: [ "factory", "manufacturing" ]
}, {
title: "fas fa-infinity",
searchTerms: []
}, {
title: "fas fa-info",
searchTerms: [ "details", "help", "information", "more" ]
}, {
title: "fas fa-info-circle",
searchTerms: [ "details", "help", "information", "more" ]
}, {
title: "fab fa-instagram",
searchTerms: []
}, {
title: "fab fa-internet-explorer",
searchTerms: [ "browser", "ie" ]
}, {
title: "fab fa-ioxhost",
searchTerms: []
}, {
title: "fas fa-italic",
searchTerms: [ "italics" ]
}, {
title: "fab fa-itunes",
searchTerms: []
}, {
title: "fab fa-itunes-note",
searchTerms: []
}, {
title: "fab fa-java",
searchTerms: []
}, {
title: "fas fa-jedi",
searchTerms: [ "star wars" ]
}, {
title: "fab fa-jedi-order",
searchTerms: [ "star wars" ]
}, {
title: "fab fa-jenkins",
searchTerms: []
}, {
title: "fab fa-joget",
searchTerms: []
}, {
title: "fas fa-joint",
searchTerms: [ "blunt", "cannabis", "doobie", "drugs", "marijuana", "roach", "smoke", "smoking", "spliff" ]
}, {
title: "fab fa-joomla",
searchTerms: []
}, {
title: "fas fa-journal-whills",
searchTerms: [ "book", "jedi", "star wars", "the force" ]
}, {
title: "fab fa-js",
searchTerms: []
}, {
title: "fab fa-js-square",
searchTerms: []
}, {
title: "fab fa-jsfiddle",
searchTerms: []
}, {
title: "fas fa-kaaba",
searchTerms: [ "building", "cube", "islam", "muslim" ]
}, {
title: "fab fa-kaggle",
searchTerms: []
}, {
title: "fas fa-key",
searchTerms: [ "password", "unlock" ]
}, {
title: "fab fa-keybase",
searchTerms: []
}, {
title: "fas fa-keyboard",
searchTerms: [ "input", "type" ]
}, {
title: "far fa-keyboard",
searchTerms: [ "input", "type" ]
}, {
title: "fab fa-keycdn",
searchTerms: []
}, {
title: "fas fa-khanda",
searchTerms: [ "chakkar", "sikh", "sikhism", "sword" ]
}, {
title: "fab fa-kickstarter",
searchTerms: []
}, {
title: "fab fa-kickstarter-k",
searchTerms: []
}, {
title: "fas fa-kiss",
searchTerms: [ "beso", "emoticon", "face", "love", "smooch" ]
}, {
title: "far fa-kiss",
searchTerms: [ "beso", "emoticon", "face", "love", "smooch" ]
}, {
title: "fas fa-kiss-beam",
searchTerms: [ "beso", "emoticon", "face", "love", "smooch" ]
}, {
title: "far fa-kiss-beam",
searchTerms: [ "beso", "emoticon", "face", "love", "smooch" ]
}, {
title: "fas fa-kiss-wink-heart",
searchTerms: [ "beso", "emoticon", "face", "love", "smooch" ]
}, {
title: "far fa-kiss-wink-heart",
searchTerms: [ "beso", "emoticon", "face", "love", "smooch" ]
}, {
title: "fas fa-kiwi-bird",
searchTerms: [ "bird", "fauna" ]
}, {
title: "fab fa-korvue",
searchTerms: []
}, {
title: "fas fa-landmark",
searchTerms: [ "building", "historic", "memoroable", "politics" ]
}, {
title: "fas fa-language",
searchTerms: [ "dialect", "idiom", "localize", "speech", "translate", "vernacular" ]
}, {
title: "fas fa-laptop",
searchTerms: [ "computer", "cpu", "dell", "demo", "device", "dude you're getting", "mac", "macbook", "machine", "pc" ]
}, {
title: "fas fa-laptop-code",
searchTerms: []
}, {
title: "fab fa-laravel",
searchTerms: []
}, {
title: "fab fa-lastfm",
searchTerms: []
}, {
title: "fab fa-lastfm-square",
searchTerms: []
}, {
title: "fas fa-laugh",
searchTerms: [ "LOL", "emoticon", "face", "laugh" ]
}, {
title: "far fa-laugh",
searchTerms: [ "LOL", "emoticon", "face", "laugh" ]
}, {
title: "fas fa-laugh-beam",
searchTerms: [ "LOL", "emoticon", "face" ]
}, {
title: "far fa-laugh-beam",
searchTerms: [ "LOL", "emoticon", "face" ]
}, {
title: "fas fa-laugh-squint",
searchTerms: [ "LOL", "emoticon", "face" ]
}, {
title: "far fa-laugh-squint",
searchTerms: [ "LOL", "emoticon", "face" ]
}, {
title: "fas fa-laugh-wink",
searchTerms: [ "LOL", "emoticon", "face" ]
}, {
title: "far fa-laugh-wink",
searchTerms: [ "LOL", "emoticon", "face" ]
}, {
title: "fas fa-layer-group",
searchTerms: [ "layers" ]
}, {
title: "fas fa-leaf",
searchTerms: [ "eco", "flora", "nature", "plant" ]
}, {
title: "fab fa-leanpub",
searchTerms: []
}, {
title: "fas fa-lemon",
searchTerms: [ "food" ]
}, {
title: "far fa-lemon",
searchTerms: [ "food" ]
}, {
title: "fab fa-less",
searchTerms: []
}, {
title: "fas fa-less-than",
searchTerms: []
}, {
title: "fas fa-less-than-equal",
searchTerms: []
}, {
title: "fas fa-level-down-alt",
searchTerms: [ "level-down" ]
}, {
title: "fas fa-level-up-alt",
searchTerms: [ "level-up" ]
}, {
title: "fas fa-life-ring",
searchTerms: [ "support" ]
}, {
title: "far fa-life-ring",
searchTerms: [ "support" ]
}, {
title: "fas fa-lightbulb",
searchTerms: [ "idea", "inspiration" ]
}, {
title: "far fa-lightbulb",
searchTerms: [ "idea", "inspiration" ]
}, {
title: "fab fa-line",
searchTerms: []
}, {
title: "fas fa-link",
searchTerms: [ "chain" ]
}, {
title: "fab fa-linkedin",
searchTerms: [ "linkedin-square" ]
}, {
title: "fab fa-linkedin-in",
searchTerms: [ "linkedin" ]
}, {
title: "fab fa-linode",
searchTerms: []
}, {
title: "fab fa-linux",
searchTerms: [ "tux" ]
}, {
title: "fas fa-lira-sign",
searchTerms: [ "try", "turkish" ]
}, {
title: "fas fa-list",
searchTerms: [ "checklist", "completed", "done", "finished", "ol", "todo", "ul" ]
}, {
title: "fas fa-list-alt",
searchTerms: [ "checklist", "completed", "done", "finished", "ol", "todo", "ul" ]
}, {
title: "far fa-list-alt",
searchTerms: [ "checklist", "completed", "done", "finished", "ol", "todo", "ul" ]
}, {
title: "fas fa-list-ol",
searchTerms: [ "checklist", "list", "numbers", "ol", "todo", "ul" ]
}, {
title: "fas fa-list-ul",
searchTerms: [ "checklist", "list", "ol", "todo", "ul" ]
}, {
title: "fas fa-location-arrow",
searchTerms: [ "address", "coordinates", "gps", "location", "map", "place", "where" ]
}, {
title: "fas fa-lock",
searchTerms: [ "admin", "protect", "security" ]
}, {
title: "fas fa-lock-open",
searchTerms: [ "admin", "lock", "open", "password", "protect" ]
}, {
title: "fas fa-long-arrow-alt-down",
searchTerms: [ "long-arrow-down" ]
}, {
title: "fas fa-long-arrow-alt-left",
searchTerms: [ "back", "long-arrow-left", "previous" ]
}, {
title: "fas fa-long-arrow-alt-right",
searchTerms: [ "long-arrow-right" ]
}, {
title: "fas fa-long-arrow-alt-up",
searchTerms: [ "long-arrow-up" ]
}, {
title: "fas fa-low-vision",
searchTerms: []
}, {
title: "fas fa-luggage-cart",
searchTerms: []
}, {
title: "fab fa-lyft",
searchTerms: []
}, {
title: "fab fa-magento",
searchTerms: []
}, {
title: "fas fa-magic",
searchTerms: [ "autocomplete", "automatic", "mage", "magic", "spell", "witch", "wizard" ]
}, {
title: "fas fa-magnet",
searchTerms: []
}, {
title: "fas fa-mail-bulk",
searchTerms: []
}, {
title: "fab fa-mailchimp",
searchTerms: []
}, {
title: "fas fa-male",
searchTerms: [ "human", "man", "person", "profile", "user" ]
}, {
title: "fab fa-mandalorian",
searchTerms: []
}, {
title: "fas fa-map",
searchTerms: [ "coordinates", "location", "paper", "place", "travel" ]
}, {
title: "far fa-map",
searchTerms: [ "coordinates", "location", "paper", "place", "travel" ]
}, {
title: "fas fa-map-marked",
searchTerms: [ "address", "coordinates", "destination", "gps", "localize", "location", "map", "paper", "pin", "place", "point of interest", "position", "route", "travel", "where" ]
}, {
title: "fas fa-map-marked-alt",
searchTerms: [ "address", "coordinates", "destination", "gps", "localize", "location", "map", "paper", "pin", "place", "point of interest", "position", "route", "travel", "where" ]
}, {
title: "fas fa-map-marker",
searchTerms: [ "address", "coordinates", "gps", "localize", "location", "map", "pin", "place", "position", "travel", "where" ]
}, {
title: "fas fa-map-marker-alt",
searchTerms: [ "address", "coordinates", "gps", "localize", "location", "map", "pin", "place", "position", "travel", "where" ]
}, {
title: "fas fa-map-pin",
searchTerms: [ "address", "coordinates", "gps", "localize", "location", "map", "marker", "place", "position", "travel", "where" ]
}, {
title: "fas fa-map-signs",
searchTerms: []
}, {
title: "fab fa-markdown",
searchTerms: []
}, {
title: "fas fa-marker",
searchTerms: [ "edit", "sharpie", "update", "write" ]
}, {
title: "fas fa-mars",
searchTerms: [ "male" ]
}, {
title: "fas fa-mars-double",
searchTerms: []
}, {
title: "fas fa-mars-stroke",
searchTerms: []
}, {
title: "fas fa-mars-stroke-h",
searchTerms: []
}, {
title: "fas fa-mars-stroke-v",
searchTerms: []
}, {
title: "fas fa-mask",
searchTerms: [ "costume", "disguise", "halloween", "holiday", "secret", "super hero" ]
}, {
title: "fab fa-mastodon",
searchTerms: []
}, {
title: "fab fa-maxcdn",
searchTerms: []
}, {
title: "fas fa-medal",
searchTerms: []
}, {
title: "fab fa-medapps",
searchTerms: []
}, {
title: "fab fa-medium",
searchTerms: []
}, {
title: "fab fa-medium-m",
searchTerms: []
}, {
title: "fas fa-medkit",
searchTerms: [ "first aid", "firstaid", "health", "help", "support" ]
}, {
title: "fab fa-medrt",
searchTerms: []
}, {
title: "fab fa-meetup",
searchTerms: []
}, {
title: "fab fa-megaport",
searchTerms: []
}, {
title: "fas fa-meh",
searchTerms: [ "emoticon", "face", "neutral", "rating" ]
}, {
title: "far fa-meh",
searchTerms: [ "emoticon", "face", "neutral", "rating" ]
}, {
title: "fas fa-meh-blank",
searchTerms: [ "emoticon", "face", "neutral", "rating" ]
}, {
title: "far fa-meh-blank",
searchTerms: [ "emoticon", "face", "neutral", "rating" ]
}, {
title: "fas fa-meh-rolling-eyes",
searchTerms: [ "emoticon", "face", "neutral", "rating" ]
}, {
title: "far fa-meh-rolling-eyes",
searchTerms: [ "emoticon", "face", "neutral", "rating" ]
}, {
title: "fas fa-memory",
searchTerms: [ "DIMM", "RAM" ]
}, {
title: "fas fa-menorah",
searchTerms: [ "candle", "hanukkah", "jewish", "judaism", "light" ]
}, {
title: "fas fa-mercury",
searchTerms: [ "transgender" ]
}, {
title: "fas fa-meteor",
searchTerms: []
}, {
title: "fas fa-microchip",
searchTerms: [ "cpu", "processor" ]
}, {
title: "fas fa-microphone",
searchTerms: [ "record", "sound", "voice" ]
}, {
title: "fas fa-microphone-alt",
searchTerms: [ "record", "sound", "voice" ]
}, {
title: "fas fa-microphone-alt-slash",
searchTerms: [ "disable", "mute", "record", "sound", "voice" ]
}, {
title: "fas fa-microphone-slash",
searchTerms: [ "disable", "mute", "record", "sound", "voice" ]
}, {
title: "fas fa-microscope",
searchTerms: []
}, {
title: "fab fa-microsoft",
searchTerms: []
}, {
title: "fas fa-minus",
searchTerms: [ "collapse", "delete", "hide", "minify", "negative", "remove", "trash" ]
}, {
title: "fas fa-minus-circle",
searchTerms: [ "delete", "hide", "negative", "remove", "trash" ]
}, {
title: "fas fa-minus-square",
searchTerms: [ "collapse", "delete", "hide", "minify", "negative", "remove", "trash" ]
}, {
title: "far fa-minus-square",
searchTerms: [ "collapse", "delete", "hide", "minify", "negative", "remove", "trash" ]
}, {
title: "fab fa-mix",
searchTerms: []
}, {
title: "fab fa-mixcloud",
searchTerms: []
}, {
title: "fab fa-mizuni",
searchTerms: []
}, {
title: "fas fa-mobile",
searchTerms: [ "apple", "call", "cell phone", "cellphone", "device", "iphone", "number", "screen", "telephone", "text" ]
}, {
title: "fas fa-mobile-alt",
searchTerms: [ "apple", "call", "cell phone", "cellphone", "device", "iphone", "number", "screen", "telephone", "text" ]
}, {
title: "fab fa-modx",
searchTerms: []
}, {
title: "fab fa-monero",
searchTerms: []
}, {
title: "fas fa-money-bill",
searchTerms: [ "buy", "cash", "checkout", "money", "payment", "price", "purchase" ]
}, {
title: "fas fa-money-bill-alt",
searchTerms: [ "buy", "cash", "checkout", "money", "payment", "price", "purchase" ]
}, {
title: "far fa-money-bill-alt",
searchTerms: [ "buy", "cash", "checkout", "money", "payment", "price", "purchase" ]
}, {
title: "fas fa-money-bill-wave",
searchTerms: []
}, {
title: "fas fa-money-bill-wave-alt",
searchTerms: []
}, {
title: "fas fa-money-check",
searchTerms: [ "bank check", "cheque" ]
}, {
title: "fas fa-money-check-alt",
searchTerms: [ "bank check", "cheque" ]
}, {
title: "fas fa-monument",
searchTerms: [ "building", "historic", "memoroable" ]
}, {
title: "fas fa-moon",
searchTerms: [ "contrast", "crescent", "darker", "lunar", "night" ]
}, {
title: "far fa-moon",
searchTerms: [ "contrast", "crescent", "darker", "lunar", "night" ]
}, {
title: "fas fa-mortar-pestle",
searchTerms: [ "crush", "culinary", "grind", "medical", "mix", "spices" ]
}, {
title: "fas fa-mosque",
searchTerms: [ "building", "islam", "muslim" ]
}, {
title: "fas fa-motorcycle",
searchTerms: [ "bike", "machine", "transportation", "vehicle" ]
}, {
title: "fas fa-mountain",
searchTerms: []
}, {
title: "fas fa-mouse-pointer",
searchTerms: [ "select" ]
}, {
title: "fas fa-music",
searchTerms: [ "note", "sound" ]
}, {
title: "fab fa-napster",
searchTerms: []
}, {
title: "fab fa-neos",
searchTerms: []
}, {
title: "fas fa-network-wired",
searchTerms: []
}, {
title: "fas fa-neuter",
searchTerms: []
}, {
title: "fas fa-newspaper",
searchTerms: [ "article", "press" ]
}, {
title: "far fa-newspaper",
searchTerms: [ "article", "press" ]
}, {
title: "fab fa-nimblr",
searchTerms: []
}, {
title: "fab fa-nintendo-switch",
searchTerms: []
}, {
title: "fab fa-node",
searchTerms: []
}, {
title: "fab fa-node-js",
searchTerms: []
}, {
title: "fas fa-not-equal",
searchTerms: []
}, {
title: "fas fa-notes-medical",
searchTerms: []
}, {
title: "fab fa-npm",
searchTerms: []
}, {
title: "fab fa-ns8",
searchTerms: []
}, {
title: "fab fa-nutritionix",
searchTerms: []
}, {
title: "fas fa-object-group",
searchTerms: [ "design" ]
}, {
title: "far fa-object-group",
searchTerms: [ "design" ]
}, {
title: "fas fa-object-ungroup",
searchTerms: [ "design" ]
}, {
title: "far fa-object-ungroup",
searchTerms: [ "design" ]
}, {
title: "fab fa-odnoklassniki",
searchTerms: []
}, {
title: "fab fa-odnoklassniki-square",
searchTerms: []
}, {
title: "fas fa-oil-can",
searchTerms: []
}, {
title: "fab fa-old-republic",
searchTerms: [ "politics", "star wars" ]
}, {
title: "fas fa-om",
searchTerms: [ "buddhism", "hinduism", "jainism", "mantra" ]
}, {
title: "fab fa-opencart",
searchTerms: []
}, {
title: "fab fa-openid",
searchTerms: []
}, {
title: "fab fa-opera",
searchTerms: []
}, {
title: "fab fa-optin-monster",
searchTerms: []
}, {
title: "fab fa-osi",
searchTerms: []
}, {
title: "fas fa-otter",
searchTerms: [ "fauna", "mammmal" ]
}, {
title: "fas fa-outdent",
searchTerms: []
}, {
title: "fab fa-page4",
searchTerms: []
}, {
title: "fab fa-pagelines",
searchTerms: [ "eco", "flora", "leaf", "leaves", "nature", "plant", "tree" ]
}, {
title: "fas fa-paint-brush",
searchTerms: []
}, {
title: "fas fa-paint-roller",
searchTerms: [ "brush", "painting", "tool" ]
}, {
title: "fas fa-palette",
searchTerms: [ "colors", "painting" ]
}, {
title: "fab fa-palfed",
searchTerms: []
}, {
title: "fas fa-pallet",
searchTerms: []
}, {
title: "fas fa-paper-plane",
searchTerms: []
}, {
title: "far fa-paper-plane",
searchTerms: []
}, {
title: "fas fa-paperclip",
searchTerms: [ "attachment" ]
}, {
title: "fas fa-parachute-box",
searchTerms: [ "aid", "assistance", "rescue", "supplies" ]
}, {
title: "fas fa-paragraph",
searchTerms: []
}, {
title: "fas fa-parking",
searchTerms: []
}, {
title: "fas fa-passport",
searchTerms: [ "document", "identification", "issued" ]
}, {
title: "fas fa-pastafarianism",
searchTerms: [ "agnosticism", "atheism", "flying spaghetti monster", "fsm" ]
}, {
title: "fas fa-paste",
searchTerms: [ "clipboard", "copy" ]
}, {
title: "fab fa-patreon",
searchTerms: []
}, {
title: "fas fa-pause",
searchTerms: [ "wait" ]
}, {
title: "fas fa-pause-circle",
searchTerms: []
}, {
title: "far fa-pause-circle",
searchTerms: []
}, {
title: "fas fa-paw",
searchTerms: [ "animal", "pet" ]
}, {
title: "fab fa-paypal",
searchTerms: []
}, {
title: "fas fa-peace",
searchTerms: []
}, {
title: "fas fa-pen",
searchTerms: [ "design", "edit", "update", "write" ]
}, {
title: "fas fa-pen-alt",
searchTerms: [ "design", "edit", "update", "write" ]
}, {
title: "fas fa-pen-fancy",
searchTerms: [ "design", "edit", "fountain pen", "update", "write" ]
}, {
title: "fas fa-pen-nib",
searchTerms: [ "design", "edit", "fountain pen", "update", "write" ]
}, {
title: "fas fa-pen-square",
searchTerms: [ "edit", "pencil-square", "update", "write" ]
}, {
title: "fas fa-pencil-alt",
searchTerms: [ "design", "edit", "pencil", "update", "write" ]
}, {
title: "fas fa-pencil-ruler",
searchTerms: []
}, {
title: "fab fa-penny-arcade",
searchTerms: [ "Dungeons & Dragons", "d&d", "dnd", "fantasy", "game", "gaming", "pax", "tabletop" ]
}, {
title: "fas fa-people-carry",
searchTerms: [ "movers" ]
}, {
title: "fas fa-percent",
searchTerms: []
}, {
title: "fas fa-percentage",
searchTerms: []
}, {
title: "fab fa-periscope",
searchTerms: []
}, {
title: "fas fa-person-booth",
searchTerms: [ "changing", "changing room", "election", "human", "person", "vote", "voting" ]
}, {
title: "fab fa-phabricator",
searchTerms: []
}, {
title: "fab fa-phoenix-framework",
searchTerms: []
}, {
title: "fab fa-phoenix-squadron",
searchTerms: []
}, {
title: "fas fa-phone",
searchTerms: [ "call", "earphone", "number", "support", "telephone", "voice" ]
}, {
title: "fas fa-phone-slash",
searchTerms: []
}, {
title: "fas fa-phone-square",
searchTerms: [ "call", "number", "support", "telephone", "voice" ]
}, {
title: "fas fa-phone-volume",
searchTerms: [ "telephone", "volume-control-phone" ]
}, {
title: "fab fa-php",
searchTerms: []
}, {
title: "fab fa-pied-piper",
searchTerms: []
}, {
title: "fab fa-pied-piper-alt",
searchTerms: []
}, {
title: "fab fa-pied-piper-hat",
searchTerms: [ "clothing" ]
}, {
title: "fab fa-pied-piper-pp",
searchTerms: []
}, {
title: "fas fa-piggy-bank",
searchTerms: [ "save", "savings" ]
}, {
title: "fas fa-pills",
searchTerms: [ "drugs", "medicine" ]
}, {
title: "fab fa-pinterest",
searchTerms: []
}, {
title: "fab fa-pinterest-p",
searchTerms: []
}, {
title: "fab fa-pinterest-square",
searchTerms: []
}, {
title: "fas fa-place-of-worship",
searchTerms: []
}, {
title: "fas fa-plane",
searchTerms: [ "airplane", "destination", "fly", "location", "mode", "travel", "trip" ]
}, {
title: "fas fa-plane-arrival",
searchTerms: [ "airplane", "arriving", "destination", "fly", "land", "landing", "location", "mode", "travel", "trip" ]
}, {
title: "fas fa-plane-departure",
searchTerms: [ "airplane", "departing", "destination", "fly", "location", "mode", "take off", "taking off", "travel", "trip" ]
}, {
title: "fas fa-play",
searchTerms: [ "music", "playing", "sound", "start" ]
}, {
title: "fas fa-play-circle",
searchTerms: [ "playing", "start" ]
}, {
title: "far fa-play-circle",
searchTerms: [ "playing", "start" ]
}, {
title: "fab fa-playstation",
searchTerms: []
}, {
title: "fas fa-plug",
searchTerms: [ "connect", "online", "power" ]
}, {
title: "fas fa-plus",
searchTerms: [ "add", "create", "expand", "new", "positive" ]
}, {
title: "fas fa-plus-circle",
searchTerms: [ "add", "create", "expand", "new", "positive" ]
}, {
title: "fas fa-plus-square",
searchTerms: [ "add", "create", "expand", "new", "positive" ]
}, {
title: "far fa-plus-square",
searchTerms: [ "add", "create", "expand", "new", "positive" ]
}, {
title: "fas fa-podcast",
searchTerms: []
}, {
title: "fas fa-poll",
searchTerms: [ "results", "survey", "vote", "voting" ]
}, {
title: "fas fa-poll-h",
searchTerms: [ "results", "survey", "vote", "voting" ]
}, {
title: "fas fa-poo",
searchTerms: []
}, {
title: "fas fa-poo-storm",
searchTerms: [ "mess", "poop", "shit" ]
}, {
title: "fas fa-poop",
searchTerms: []
}, {
title: "fas fa-portrait",
searchTerms: []
}, {
title: "fas fa-pound-sign",
searchTerms: [ "gbp" ]
}, {
title: "fas fa-power-off",
searchTerms: [ "on", "reboot", "restart" ]
}, {
title: "fas fa-pray",
searchTerms: []
}, {
title: "fas fa-praying-hands",
searchTerms: []
}, {
title: "fas fa-prescription",
searchTerms: [ "drugs", "medical", "medicine", "rx" ]
}, {
title: "fas fa-prescription-bottle",
searchTerms: [ "drugs", "medical", "medicine", "rx" ]
}, {
title: "fas fa-prescription-bottle-alt",
searchTerms: [ "drugs", "medical", "medicine", "rx" ]
}, {
title: "fas fa-print",
searchTerms: []
}, {
title: "fas fa-procedures",
searchTerms: []
}, {
title: "fab fa-product-hunt",
searchTerms: []
}, {
title: "fas fa-project-diagram",
searchTerms: []
}, {
title: "fab fa-pushed",
searchTerms: []
}, {
title: "fas fa-puzzle-piece",
searchTerms: [ "add-on", "addon", "section" ]
}, {
title: "fab fa-python",
searchTerms: []
}, {
title: "fab fa-qq",
searchTerms: []
}, {
title: "fas fa-qrcode",
searchTerms: [ "scan" ]
}, {
title: "fas fa-question",
searchTerms: [ "help", "information", "support", "unknown" ]
}, {
title: "fas fa-question-circle",
searchTerms: [ "help", "information", "support", "unknown" ]
}, {
title: "far fa-question-circle",
searchTerms: [ "help", "information", "support", "unknown" ]
}, {
title: "fas fa-quidditch",
searchTerms: []
}, {
title: "fab fa-quinscape",
searchTerms: []
}, {
title: "fab fa-quora",
searchTerms: []
}, {
title: "fas fa-quote-left",
searchTerms: []
}, {
title: "fas fa-quote-right",
searchTerms: []
}, {
title: "fas fa-quran",
searchTerms: [ "book", "islam", "muslim" ]
}, {
title: "fab fa-r-project",
searchTerms: []
}, {
title: "fas fa-rainbow",
searchTerms: []
}, {
title: "fas fa-random",
searchTerms: [ "shuffle", "sort" ]
}, {
title: "fab fa-ravelry",
searchTerms: []
}, {
title: "fab fa-react",
searchTerms: []
}, {
title: "fab fa-reacteurope",
searchTerms: []
}, {
title: "fab fa-readme",
searchTerms: []
}, {
title: "fab fa-rebel",
searchTerms: []
}, {
title: "fas fa-receipt",
searchTerms: [ "check", "invoice", "table" ]
}, {
title: "fas fa-recycle",
searchTerms: []
}, {
title: "fab fa-red-river",
searchTerms: []
}, {
title: "fab fa-reddit",
searchTerms: []
}, {
title: "fab fa-reddit-alien",
searchTerms: []
}, {
title: "fab fa-reddit-square",
searchTerms: []
}, {
title: "fas fa-redo",
searchTerms: [ "forward", "refresh", "reload", "repeat" ]
}, {
title: "fas fa-redo-alt",
searchTerms: [ "forward", "refresh", "reload", "repeat" ]
}, {
title: "fas fa-registered",
searchTerms: []
}, {
title: "far fa-registered",
searchTerms: []
}, {
title: "fab fa-renren",
searchTerms: []
}, {
title: "fas fa-reply",
searchTerms: []
}, {
title: "fas fa-reply-all",
searchTerms: []
}, {
title: "fab fa-replyd",
searchTerms: []
}, {
title: "fas fa-republican",
searchTerms: [ "american", "conservative", "election", "elephant", "politics", "republican party", "right", "right-wing", "usa" ]
}, {
title: "fab fa-researchgate",
searchTerms: []
}, {
title: "fab fa-resolving",
searchTerms: []
}, {
title: "fas fa-retweet",
searchTerms: [ "refresh", "reload", "share", "swap" ]
}, {
title: "fab fa-rev",
searchTerms: []
}, {
title: "fas fa-ribbon",
searchTerms: [ "badge", "cause", "lapel", "pin" ]
}, {
title: "fas fa-ring",
searchTerms: [ "Dungeons & Dragons", "Gollum", "band", "binding", "d&d", "dnd", "fantasy", "jewelry", "precious" ]
}, {
title: "fas fa-road",
searchTerms: [ "street" ]
}, {
title: "fas fa-robot",
searchTerms: []
}, {
title: "fas fa-rocket",
searchTerms: [ "app" ]
}, {
title: "fab fa-rocketchat",
searchTerms: []
}, {
title: "fab fa-rockrms",
searchTerms: []
}, {
title: "fas fa-route",
searchTerms: []
}, {
title: "fas fa-rss",
searchTerms: [ "blog" ]
}, {
title: "fas fa-rss-square",
searchTerms: [ "blog", "feed" ]
}, {
title: "fas fa-ruble-sign",
searchTerms: [ "rub" ]
}, {
title: "fas fa-ruler",
searchTerms: []
}, {
title: "fas fa-ruler-combined",
searchTerms: []
}, {
title: "fas fa-ruler-horizontal",
searchTerms: []
}, {
title: "fas fa-ruler-vertical",
searchTerms: []
}, {
title: "fas fa-running",
searchTerms: [ "jog", "sprint" ]
}, {
title: "fas fa-rupee-sign",
searchTerms: [ "indian", "inr" ]
}, {
title: "fas fa-sad-cry",
searchTerms: [ "emoticon", "face", "tear", "tears" ]
}, {
title: "far fa-sad-cry",
searchTerms: [ "emoticon", "face", "tear", "tears" ]
}, {
title: "fas fa-sad-tear",
searchTerms: [ "emoticon", "face", "tear", "tears" ]
}, {
title: "far fa-sad-tear",
searchTerms: [ "emoticon", "face", "tear", "tears" ]
}, {
title: "fab fa-safari",
searchTerms: [ "browser" ]
}, {
title: "fab fa-sass",
searchTerms: []
}, {
title: "fas fa-save",
searchTerms: [ "floppy", "floppy-o" ]
}, {
title: "far fa-save",
searchTerms: [ "floppy", "floppy-o" ]
}, {
title: "fab fa-schlix",
searchTerms: []
}, {
title: "fas fa-school",
searchTerms: []
}, {
title: "fas fa-screwdriver",
searchTerms: [ "admin", "fix", "repair", "settings", "tool" ]
}, {
title: "fab fa-scribd",
searchTerms: []
}, {
title: "fas fa-scroll",
searchTerms: [ "Dungeons & Dragons", "announcement", "d&d", "dnd", "fantasy", "paper" ]
}, {
title: "fas fa-search",
searchTerms: [ "bigger", "enlarge", "magnify", "preview", "zoom" ]
}, {
title: "fas fa-search-dollar",
searchTerms: []
}, {
title: "fas fa-search-location",
searchTerms: []
}, {
title: "fas fa-search-minus",
searchTerms: [ "minify", "negative", "smaller", "zoom", "zoom out" ]
}, {
title: "fas fa-search-plus",
searchTerms: [ "bigger", "enlarge", "magnify", "positive", "zoom", "zoom in" ]
}, {
title: "fab fa-searchengin",
searchTerms: []
}, {
title: "fas fa-seedling",
searchTerms: []
}, {
title: "fab fa-sellcast",
searchTerms: [ "eercast" ]
}, {
title: "fab fa-sellsy",
searchTerms: []
}, {
title: "fas fa-server",
searchTerms: [ "cpu" ]
}, {
title: "fab fa-servicestack",
searchTerms: []
}, {
title: "fas fa-shapes",
searchTerms: [ "circle", "square", "triangle" ]
}, {
title: "fas fa-share",
searchTerms: []
}, {
title: "fas fa-share-alt",
searchTerms: []
}, {
title: "fas fa-share-alt-square",
searchTerms: []
}, {
title: "fas fa-share-square",
searchTerms: [ "send", "social" ]
}, {
title: "far fa-share-square",
searchTerms: [ "send", "social" ]
}, {
title: "fas fa-shekel-sign",
searchTerms: [ "ils" ]
}, {
title: "fas fa-shield-alt",
searchTerms: [ "achievement", "award", "block", "defend", "security", "winner" ]
}, {
title: "fas fa-ship",
searchTerms: [ "boat", "sea" ]
}, {
title: "fas fa-shipping-fast",
searchTerms: []
}, {
title: "fab fa-shirtsinbulk",
searchTerms: []
}, {
title: "fas fa-shoe-prints",
searchTerms: [ "feet", "footprints", "steps" ]
}, {
title: "fas fa-shopping-bag",
searchTerms: []
}, {
title: "fas fa-shopping-basket",
searchTerms: []
}, {
title: "fas fa-shopping-cart",
searchTerms: [ "buy", "checkout", "payment", "purchase" ]
}, {
title: "fab fa-shopware",
searchTerms: []
}, {
title: "fas fa-shower",
searchTerms: []
}, {
title: "fas fa-shuttle-van",
searchTerms: [ "machine", "public-transportation", "transportation", "vehicle" ]
}, {
title: "fas fa-sign",
searchTerms: []
}, {
title: "fas fa-sign-in-alt",
searchTerms: [ "arrow", "enter", "join", "log in", "login", "sign in", "sign up", "sign-in", "signin", "signup" ]
}, {
title: "fas fa-sign-language",
searchTerms: []
}, {
title: "fas fa-sign-out-alt",
searchTerms: [ "arrow", "exit", "leave", "log out", "logout", "sign-out" ]
}, {
title: "fas fa-signal",
searchTerms: [ "bars", "graph", "online", "status" ]
}, {
title: "fas fa-signature",
searchTerms: [ "John Hancock", "cursive", "name", "writing" ]
}, {
title: "fab fa-simplybuilt",
searchTerms: []
}, {
title: "fab fa-sistrix",
searchTerms: []
}, {
title: "fas fa-sitemap",
searchTerms: [ "directory", "hierarchy", "ia", "information architecture", "organization" ]
}, {
title: "fab fa-sith",
searchTerms: []
}, {
title: "fas fa-skull",
searchTerms: [ "bones", "skeleton", "yorick" ]
}, {
title: "fas fa-skull-crossbones",
searchTerms: [ "Dungeons & Dragons", "alert", "bones", "d&d", "danger", "dead", "deadly", "death", "dnd", "fantasy", "halloween", "holiday", "jolly-roger", "pirate", "poison", "skeleton", "warning" ]
}, {
title: "fab fa-skyatlas",
searchTerms: []
}, {
title: "fab fa-skype",
searchTerms: []
}, {
title: "fab fa-slack",
searchTerms: [ "anchor", "hash", "hashtag" ]
}, {
title: "fab fa-slack-hash",
searchTerms: [ "anchor", "hash", "hashtag" ]
}, {
title: "fas fa-slash",
searchTerms: []
}, {
title: "fas fa-sliders-h",
searchTerms: [ "settings", "sliders" ]
}, {
title: "fab fa-slideshare",
searchTerms: []
}, {
title: "fas fa-smile",
searchTerms: [ "approve", "emoticon", "face", "happy", "rating", "satisfied" ]
}, {
title: "far fa-smile",
searchTerms: [ "approve", "emoticon", "face", "happy", "rating", "satisfied" ]
}, {
title: "fas fa-smile-beam",
searchTerms: [ "emoticon", "face", "happy", "positive" ]
}, {
title: "far fa-smile-beam",
searchTerms: [ "emoticon", "face", "happy", "positive" ]
}, {
title: "fas fa-smile-wink",
searchTerms: [ "emoticon", "face", "happy" ]
}, {
title: "far fa-smile-wink",
searchTerms: [ "emoticon", "face", "happy" ]
}, {
title: "fas fa-smog",
searchTerms: [ "dragon" ]
}, {
title: "fas fa-smoking",
searchTerms: [ "cigarette", "nicotine", "smoking status" ]
}, {
title: "fas fa-smoking-ban",
searchTerms: [ "no smoking", "non-smoking" ]
}, {
title: "fab fa-snapchat",
searchTerms: []
}, {
title: "fab fa-snapchat-ghost",
searchTerms: []
}, {
title: "fab fa-snapchat-square",
searchTerms: []
}, {
title: "fas fa-snowflake",
searchTerms: [ "precipitation", "seasonal", "winter" ]
}, {
title: "far fa-snowflake",
searchTerms: [ "precipitation", "seasonal", "winter" ]
}, {
title: "fas fa-socks",
searchTerms: [ "business socks", "business time", "flight of the conchords", "wednesday" ]
}, {
title: "fas fa-solar-panel",
searchTerms: [ "clean", "eco-friendly", "energy", "green", "sun" ]
}, {
title: "fas fa-sort",
searchTerms: [ "order" ]
}, {
title: "fas fa-sort-alpha-down",
searchTerms: [ "sort-alpha-asc" ]
}, {
title: "fas fa-sort-alpha-up",
searchTerms: [ "sort-alpha-desc" ]
}, {
title: "fas fa-sort-amount-down",
searchTerms: [ "sort-amount-asc" ]
}, {
title: "fas fa-sort-amount-up",
searchTerms: [ "sort-amount-desc" ]
}, {
title: "fas fa-sort-down",
searchTerms: [ "arrow", "descending", "sort-desc" ]
}, {
title: "fas fa-sort-numeric-down",
searchTerms: [ "numbers", "sort-numeric-asc" ]
}, {
title: "fas fa-sort-numeric-up",
searchTerms: [ "numbers", "sort-numeric-desc" ]
}, {
title: "fas fa-sort-up",
searchTerms: [ "arrow", "ascending", "sort-asc" ]
}, {
title: "fab fa-soundcloud",
searchTerms: []
}, {
title: "fas fa-spa",
searchTerms: [ "flora", "mindfullness", "plant", "wellness" ]
}, {
title: "fas fa-space-shuttle",
searchTerms: [ "astronaut", "machine", "nasa", "rocket", "transportation" ]
}, {
title: "fab fa-speakap",
searchTerms: []
}, {
title: "fas fa-spider",
searchTerms: [ "arachnid", "bug", "charlotte", "crawl", "eight", "halloween", "holiday" ]
}, {
title: "fas fa-spinner",
searchTerms: [ "loading", "progress" ]
}, {
title: "fas fa-splotch",
searchTerms: []
}, {
title: "fab fa-spotify",
searchTerms: []
}, {
title: "fas fa-spray-can",
searchTerms: []
}, {
title: "fas fa-square",
searchTerms: [ "block", "box" ]
}, {
title: "far fa-square",
searchTerms: [ "block", "box" ]
}, {
title: "fas fa-square-full",
searchTerms: []
}, {
title: "fas fa-square-root-alt",
searchTerms: []
}, {
title: "fab fa-squarespace",
searchTerms: []
}, {
title: "fab fa-stack-exchange",
searchTerms: []
}, {
title: "fab fa-stack-overflow",
searchTerms: []
}, {
title: "fas fa-stamp",
searchTerms: []
}, {
title: "fas fa-star",
searchTerms: [ "achievement", "award", "favorite", "important", "night", "rating", "score" ]
}, {
title: "far fa-star",
searchTerms: [ "achievement", "award", "favorite", "important", "night", "rating", "score" ]
}, {
title: "fas fa-star-and-crescent",
searchTerms: [ "islam", "muslim" ]
}, {
title: "fas fa-star-half",
searchTerms: [ "achievement", "award", "rating", "score", "star-half-empty", "star-half-full" ]
}, {
title: "far fa-star-half",
searchTerms: [ "achievement", "award", "rating", "score", "star-half-empty", "star-half-full" ]
}, {
title: "fas fa-star-half-alt",
searchTerms: [ "achievement", "award", "rating", "score", "star-half-empty", "star-half-full" ]
}, {
title: "fas fa-star-of-david",
searchTerms: [ "jewish", "judaism" ]
}, {
title: "fas fa-star-of-life",
searchTerms: []
}, {
title: "fab fa-staylinked",
searchTerms: []
}, {
title: "fab fa-steam",
searchTerms: []
}, {
title: "fab fa-steam-square",
searchTerms: []
}, {
title: "fab fa-steam-symbol",
searchTerms: []
}, {
title: "fas fa-step-backward",
searchTerms: [ "beginning", "first", "previous", "rewind", "start" ]
}, {
title: "fas fa-step-forward",
searchTerms: [ "end", "last", "next" ]
}, {
title: "fas fa-stethoscope",
searchTerms: []
}, {
title: "fab fa-sticker-mule",
searchTerms: []
}, {
title: "fas fa-sticky-note",
searchTerms: []
}, {
title: "far fa-sticky-note",
searchTerms: []
}, {
title: "fas fa-stop",
searchTerms: [ "block", "box", "square" ]
}, {
title: "fas fa-stop-circle",
searchTerms: []
}, {
title: "far fa-stop-circle",
searchTerms: []
}, {
title: "fas fa-stopwatch",
searchTerms: [ "time" ]
}, {
title: "fas fa-store",
searchTerms: []
}, {
title: "fas fa-store-alt",
searchTerms: []
}, {
title: "fab fa-strava",
searchTerms: []
}, {
title: "fas fa-stream",
searchTerms: []
}, {
title: "fas fa-street-view",
searchTerms: [ "map" ]
}, {
title: "fas fa-strikethrough",
searchTerms: []
}, {
title: "fab fa-stripe",
searchTerms: []
}, {
title: "fab fa-stripe-s",
searchTerms: []
}, {
title: "fas fa-stroopwafel",
searchTerms: [ "dessert", "food", "sweets", "waffle" ]
}, {
title: "fab fa-studiovinari",
searchTerms: []
}, {
title: "fab fa-stumbleupon",
searchTerms: []
}, {
title: "fab fa-stumbleupon-circle",
searchTerms: []
}, {
title: "fas fa-subscript",
searchTerms: []
}, {
title: "fas fa-subway",
searchTerms: [ "machine", "railway", "train", "transportation", "vehicle" ]
}, {
title: "fas fa-suitcase",
searchTerms: [ "baggage", "luggage", "move", "suitcase", "travel", "trip" ]
}, {
title: "fas fa-suitcase-rolling",
searchTerms: []
}, {
title: "fas fa-sun",
searchTerms: [ "brighten", "contrast", "day", "lighter", "sol", "solar", "star", "weather" ]
}, {
title: "far fa-sun",
searchTerms: [ "brighten", "contrast", "day", "lighter", "sol", "solar", "star", "weather" ]
}, {
title: "fab fa-superpowers",
searchTerms: []
}, {
title: "fas fa-superscript",
searchTerms: [ "exponential" ]
}, {
title: "fab fa-supple",
searchTerms: []
}, {
title: "fas fa-surprise",
searchTerms: [ "emoticon", "face", "shocked" ]
}, {
title: "far fa-surprise",
searchTerms: [ "emoticon", "face", "shocked" ]
}, {
title: "fas fa-swatchbook",
searchTerms: []
}, {
title: "fas fa-swimmer",
searchTerms: [ "athlete", "head", "man", "person", "water" ]
}, {
title: "fas fa-swimming-pool",
searchTerms: [ "ladder", "recreation", "water" ]
}, {
title: "fas fa-synagogue",
searchTerms: [ "building", "jewish", "judaism", "star of david", "temple" ]
}, {
title: "fas fa-sync",
searchTerms: [ "exchange", "refresh", "reload", "rotate", "swap" ]
}, {
title: "fas fa-sync-alt",
searchTerms: [ "refresh", "reload", "rotate" ]
}, {
title: "fas fa-syringe",
searchTerms: [ "immunizations", "needle" ]
}, {
title: "fas fa-table",
searchTerms: [ "data", "excel", "spreadsheet" ]
}, {
title: "fas fa-table-tennis",
searchTerms: []
}, {
title: "fas fa-tablet",
searchTerms: [ "apple", "device", "ipad", "kindle", "screen" ]
}, {
title: "fas fa-tablet-alt",
searchTerms: [ "apple", "device", "ipad", "kindle", "screen" ]
}, {
title: "fas fa-tablets",
searchTerms: [ "drugs", "medicine" ]
}, {
title: "fas fa-tachometer-alt",
searchTerms: [ "dashboard", "tachometer" ]
}, {
title: "fas fa-tag",
searchTerms: [ "label" ]
}, {
title: "fas fa-tags",
searchTerms: [ "labels" ]
}, {
title: "fas fa-tape",
searchTerms: []
}, {
title: "fas fa-tasks",
searchTerms: [ "downloading", "downloads", "loading", "progress", "settings" ]
}, {
title: "fas fa-taxi",
searchTerms: [ "cab", "cabbie", "car", "car service", "lyft", "machine", "transportation", "uber", "vehicle" ]
}, {
title: "fab fa-teamspeak",
searchTerms: []
}, {
title: "fas fa-teeth",
searchTerms: []
}, {
title: "fas fa-teeth-open",
searchTerms: []
}, {
title: "fab fa-telegram",
searchTerms: []
}, {
title: "fab fa-telegram-plane",
searchTerms: []
}, {
title: "fas fa-temperature-high",
searchTerms: [ "mercury", "thermometer", "warm" ]
}, {
title: "fas fa-temperature-low",
searchTerms: [ "cool", "mercury", "thermometer" ]
}, {
title: "fab fa-tencent-weibo",
searchTerms: []
}, {
title: "fas fa-terminal",
searchTerms: [ "code", "command", "console", "prompt" ]
}, {
title: "fas fa-text-height",
searchTerms: []
}, {
title: "fas fa-text-width",
searchTerms: []
}, {
title: "fas fa-th",
searchTerms: [ "blocks", "boxes", "grid", "squares" ]
}, {
title: "fas fa-th-large",
searchTerms: [ "blocks", "boxes", "grid", "squares" ]
}, {
title: "fas fa-th-list",
searchTerms: [ "checklist", "completed", "done", "finished", "ol", "todo", "ul" ]
}, {
title: "fab fa-the-red-yeti",
searchTerms: []
}, {
title: "fas fa-theater-masks",
searchTerms: []
}, {
title: "fab fa-themeco",
searchTerms: []
}, {
title: "fab fa-themeisle",
searchTerms: []
}, {
title: "fas fa-thermometer",
searchTerms: [ "mercury", "status", "temperature" ]
}, {
title: "fas fa-thermometer-empty",
searchTerms: [ "mercury", "status", "temperature" ]
}, {
title: "fas fa-thermometer-full",
searchTerms: [ "fever", "mercury", "status", "temperature" ]
}, {
title: "fas fa-thermometer-half",
searchTerms: [ "mercury", "status", "temperature" ]
}, {
title: "fas fa-thermometer-quarter",
searchTerms: [ "mercury", "status", "temperature" ]
}, {
title: "fas fa-thermometer-three-quarters",
searchTerms: [ "mercury", "status", "temperature" ]
}, {
title: "fab fa-think-peaks",
searchTerms: []
}, {
title: "fas fa-thumbs-down",
searchTerms: [ "disagree", "disapprove", "dislike", "hand", "thumbs-o-down" ]
}, {
title: "far fa-thumbs-down",
searchTerms: [ "disagree", "disapprove", "dislike", "hand", "thumbs-o-down" ]
}, {
title: "fas fa-thumbs-up",
searchTerms: [ "agree", "approve", "favorite", "hand", "like", "ok", "okay", "success", "thumbs-o-up", "yes", "you got it dude" ]
}, {
title: "far fa-thumbs-up",
searchTerms: [ "agree", "approve", "favorite", "hand", "like", "ok", "okay", "success", "thumbs-o-up", "yes", "you got it dude" ]
}, {
title: "fas fa-thumbtack",
searchTerms: [ "coordinates", "location", "marker", "pin", "thumb-tack" ]
}, {
title: "fas fa-ticket-alt",
searchTerms: [ "ticket" ]
}, {
title: "fas fa-times",
searchTerms: [ "close", "cross", "error", "exit", "incorrect", "notice", "notification", "notify", "problem", "wrong", "x" ]
}, {
title: "fas fa-times-circle",
searchTerms: [ "close", "cross", "exit", "incorrect", "notice", "notification", "notify", "problem", "wrong", "x" ]
}, {
title: "far fa-times-circle",
searchTerms: [ "close", "cross", "exit", "incorrect", "notice", "notification", "notify", "problem", "wrong", "x" ]
}, {
title: "fas fa-tint",
searchTerms: [ "drop", "droplet", "raindrop", "waterdrop" ]
}, {
title: "fas fa-tint-slash",
searchTerms: []
}, {
title: "fas fa-tired",
searchTerms: [ "emoticon", "face", "grumpy" ]
}, {
title: "far fa-tired",
searchTerms: [ "emoticon", "face", "grumpy" ]
}, {
title: "fas fa-toggle-off",
searchTerms: [ "switch" ]
}, {
title: "fas fa-toggle-on",
searchTerms: [ "switch" ]
}, {
title: "fas fa-toilet-paper",
searchTerms: [ "bathroom", "halloween", "holiday", "lavatory", "prank", "restroom", "roll" ]
}, {
title: "fas fa-toolbox",
searchTerms: [ "admin", "container", "fix", "repair", "settings", "tools" ]
}, {
title: "fas fa-tooth",
searchTerms: [ "bicuspid", "dental", "molar", "mouth", "teeth" ]
}, {
title: "fas fa-torah",
searchTerms: [ "book", "jewish", "judaism" ]
}, {
title: "fas fa-torii-gate",
searchTerms: [ "building", "shintoism" ]
}, {
title: "fas fa-tractor",
searchTerms: []
}, {
title: "fab fa-trade-federation",
searchTerms: []
}, {
title: "fas fa-trademark",
searchTerms: []
}, {
title: "fas fa-traffic-light",
searchTerms: []
}, {
title: "fas fa-train",
searchTerms: [ "bullet", "locomotive", "railway" ]
}, {
title: "fas fa-transgender",
searchTerms: [ "intersex" ]
}, {
title: "fas fa-transgender-alt",
searchTerms: []
}, {
title: "fas fa-trash",
searchTerms: [ "delete", "garbage", "hide", "remove" ]
}, {
title: "fas fa-trash-alt",
searchTerms: [ "delete", "garbage", "hide", "remove", "trash", "trash-o" ]
}, {
title: "far fa-trash-alt",
searchTerms: [ "delete", "garbage", "hide", "remove", "trash", "trash-o" ]
}, {
title: "fas fa-tree",
searchTerms: [ "bark", "fall", "flora", "forest", "nature", "plant", "seasonal" ]
}, {
title: "fab fa-trello",
searchTerms: []
}, {
title: "fab fa-tripadvisor",
searchTerms: []
}, {
title: "fas fa-trophy",
searchTerms: [ "achievement", "award", "cup", "game", "winner" ]
}, {
title: "fas fa-truck",
searchTerms: [ "delivery", "shipping" ]
}, {
title: "fas fa-truck-loading",
searchTerms: []
}, {
title: "fas fa-truck-monster",
searchTerms: []
}, {
title: "fas fa-truck-moving",
searchTerms: []
}, {
title: "fas fa-truck-pickup",
searchTerms: []
}, {
title: "fas fa-tshirt",
searchTerms: [ "cloth", "clothing" ]
}, {
title: "fas fa-tty",
searchTerms: []
}, {
title: "fab fa-tumblr",
searchTerms: []
}, {
title: "fab fa-tumblr-square",
searchTerms: []
}, {
title: "fas fa-tv",
searchTerms: [ "computer", "display", "monitor", "television" ]
}, {
title: "fab fa-twitch",
searchTerms: []
}, {
title: "fab fa-twitter",
searchTerms: [ "social network", "tweet" ]
}, {
title: "fab fa-twitter-square",
searchTerms: [ "social network", "tweet" ]
}, {
title: "fab fa-typo3",
searchTerms: []
}, {
title: "fab fa-uber",
searchTerms: []
}, {
title: "fab fa-uikit",
searchTerms: []
}, {
title: "fas fa-umbrella",
searchTerms: [ "protection", "rain" ]
}, {
title: "fas fa-umbrella-beach",
searchTerms: [ "protection", "recreation", "sun" ]
}, {
title: "fas fa-underline",
searchTerms: []
}, {
title: "fas fa-undo",
searchTerms: [ "back", "control z", "exchange", "oops", "return", "rotate", "swap" ]
}, {
title: "fas fa-undo-alt",
searchTerms: [ "back", "control z", "exchange", "oops", "return", "swap" ]
}, {
title: "fab fa-uniregistry",
searchTerms: []
}, {
title: "fas fa-universal-access",
searchTerms: []
}, {
title: "fas fa-university",
searchTerms: [ "bank", "institution" ]
}, {
title: "fas fa-unlink",
searchTerms: [ "chain", "chain-broken", "remove" ]
}, {
title: "fas fa-unlock",
searchTerms: [ "admin", "lock", "password", "protect" ]
}, {
title: "fas fa-unlock-alt",
searchTerms: [ "admin", "lock", "password", "protect" ]
}, {
title: "fab fa-untappd",
searchTerms: []
}, {
title: "fas fa-upload",
searchTerms: [ "export", "publish" ]
}, {
title: "fab fa-usb",
searchTerms: []
}, {
title: "fas fa-user",
searchTerms: [ "account", "avatar", "head", "human", "man", "person", "profile" ]
}, {
title: "far fa-user",
searchTerms: [ "account", "avatar", "head", "human", "man", "person", "profile" ]
}, {
title: "fas fa-user-alt",
searchTerms: [ "account", "avatar", "head", "human", "man", "person", "profile" ]
}, {
title: "fas fa-user-alt-slash",
searchTerms: []
}, {
title: "fas fa-user-astronaut",
searchTerms: [ "avatar", "clothing", "cosmonaut", "space", "suit" ]
}, {
title: "fas fa-user-check",
searchTerms: []
}, {
title: "fas fa-user-circle",
searchTerms: [ "account", "avatar", "head", "human", "man", "person", "profile" ]
}, {
title: "far fa-user-circle",
searchTerms: [ "account", "avatar", "head", "human", "man", "person", "profile" ]
}, {
title: "fas fa-user-clock",
searchTerms: []
}, {
title: "fas fa-user-cog",
searchTerms: []
}, {
title: "fas fa-user-edit",
searchTerms: []
}, {
title: "fas fa-user-friends",
searchTerms: []
}, {
title: "fas fa-user-graduate",
searchTerms: [ "cap", "clothing", "commencement", "gown", "graduation", "student" ]
}, {
title: "fas fa-user-injured",
searchTerms: [ "cast", "ouch", "sling" ]
}, {
title: "fas fa-user-lock",
searchTerms: []
}, {
title: "fas fa-user-md",
searchTerms: [ "doctor", "job", "medical", "nurse", "occupation", "profile" ]
}, {
title: "fas fa-user-minus",
searchTerms: [ "delete", "negative", "remove" ]
}, {
title: "fas fa-user-ninja",
searchTerms: [ "assassin", "avatar", "dangerous", "deadly", "sneaky" ]
}, {
title: "fas fa-user-plus",
searchTerms: [ "positive", "sign up", "signup" ]
}, {
title: "fas fa-user-secret",
searchTerms: [ "clothing", "coat", "hat", "incognito", "privacy", "spy", "whisper" ]
}, {
title: "fas fa-user-shield",
searchTerms: []
}, {
title: "fas fa-user-slash",
searchTerms: [ "ban", "remove" ]
}, {
title: "fas fa-user-tag",
searchTerms: []
}, {
title: "fas fa-user-tie",
searchTerms: [ "avatar", "business", "clothing", "formal" ]
}, {
title: "fas fa-user-times",
searchTerms: [ "archive", "delete", "remove", "x" ]
}, {
title: "fas fa-users",
searchTerms: [ "people", "persons", "profiles" ]
}, {
title: "fas fa-users-cog",
searchTerms: []
}, {
title: "fab fa-ussunnah",
searchTerms: []
}, {
title: "fas fa-utensil-spoon",
searchTerms: [ "spoon" ]
}, {
title: "fas fa-utensils",
searchTerms: [ "cutlery", "dinner", "eat", "food", "knife", "restaurant", "spoon" ]
}, {
title: "fab fa-vaadin",
searchTerms: []
}, {
title: "fas fa-vector-square",
searchTerms: [ "anchors", "lines", "object" ]
}, {
title: "fas fa-venus",
searchTerms: [ "female" ]
}, {
title: "fas fa-venus-double",
searchTerms: []
}, {
title: "fas fa-venus-mars",
searchTerms: []
}, {
title: "fab fa-viacoin",
searchTerms: []
}, {
title: "fab fa-viadeo",
searchTerms: []
}, {
title: "fab fa-viadeo-square",
searchTerms: []
}, {
title: "fas fa-vial",
searchTerms: [ "test tube" ]
}, {
title: "fas fa-vials",
searchTerms: [ "lab results", "test tubes" ]
}, {
title: "fab fa-viber",
searchTerms: []
}, {
title: "fas fa-video",
searchTerms: [ "camera", "film", "movie", "record", "video-camera" ]
}, {
title: "fas fa-video-slash",
searchTerms: []
}, {
title: "fas fa-vihara",
searchTerms: [ "buddhism", "buddhist", "building", "monastery" ]
}, {
title: "fab fa-vimeo",
searchTerms: []
}, {
title: "fab fa-vimeo-square",
searchTerms: []
}, {
title: "fab fa-vimeo-v",
searchTerms: [ "vimeo" ]
}, {
title: "fab fa-vine",
searchTerms: []
}, {
title: "fab fa-vk",
searchTerms: []
}, {
title: "fab fa-vnv",
searchTerms: []
}, {
title: "fas fa-volleyball-ball",
searchTerms: []
}, {
title: "fas fa-volume-down",
searchTerms: [ "audio", "lower", "music", "quieter", "sound", "speaker" ]
}, {
title: "fas fa-volume-mute",
searchTerms: []
}, {
title: "fas fa-volume-off",
searchTerms: [ "audio", "music", "mute", "sound" ]
}, {
title: "fas fa-volume-up",
searchTerms: [ "audio", "higher", "louder", "music", "sound", "speaker" ]
}, {
title: "fas fa-vote-yea",
searchTerms: [ "accept", "cast", "election", "politics", "positive", "yes" ]
}, {
title: "fas fa-vr-cardboard",
searchTerms: [ "google", "reality", "virtual" ]
}, {
title: "fab fa-vuejs",
searchTerms: []
}, {
title: "fas fa-walking",
searchTerms: []
}, {
title: "fas fa-wallet",
searchTerms: []
}, {
title: "fas fa-warehouse",
searchTerms: []
}, {
title: "fas fa-water",
searchTerms: []
}, {
title: "fab fa-weebly",
searchTerms: []
}, {
title: "fab fa-weibo",
searchTerms: []
}, {
title: "fas fa-weight",
searchTerms: [ "measurement", "scale", "weight" ]
}, {
title: "fas fa-weight-hanging",
searchTerms: [ "anvil", "heavy", "measurement" ]
}, {
title: "fab fa-weixin",
searchTerms: []
}, {
title: "fab fa-whatsapp",
searchTerms: []
}, {
title: "fab fa-whatsapp-square",
searchTerms: []
}, {
title: "fas fa-wheelchair",
searchTerms: [ "handicap", "person" ]
}, {
title: "fab fa-whmcs",
searchTerms: []
}, {
title: "fas fa-wifi",
searchTerms: []
}, {
title: "fab fa-wikipedia-w",
searchTerms: []
}, {
title: "fas fa-wind",
searchTerms: [ "air", "blow", "breeze", "fall", "seasonal" ]
}, {
title: "fas fa-window-close",
searchTerms: []
}, {
title: "far fa-window-close",
searchTerms: []
}, {
title: "fas fa-window-maximize",
searchTerms: []
}, {
title: "far fa-window-maximize",
searchTerms: []
}, {
title: "fas fa-window-minimize",
searchTerms: []
}, {
title: "far fa-window-minimize",
searchTerms: []
}, {
title: "fas fa-window-restore",
searchTerms: []
}, {
title: "far fa-window-restore",
searchTerms: []
}, {
title: "fab fa-windows",
searchTerms: [ "microsoft" ]
}, {
title: "fas fa-wine-bottle",
searchTerms: [ "alcohol", "beverage", "drink", "glass", "grapes" ]
}, {
title: "fas fa-wine-glass",
searchTerms: [ "alcohol", "beverage", "drink", "grapes" ]
}, {
title: "fas fa-wine-glass-alt",
searchTerms: [ "alcohol", "beverage", "drink", "grapes" ]
}, {
title: "fab fa-wix",
searchTerms: []
}, {
title: "fab fa-wizards-of-the-coast",
searchTerms: [ "Dungeons & Dragons", "d&d", "dnd", "fantasy", "game", "gaming", "tabletop" ]
}, {
title: "fab fa-wolf-pack-battalion",
searchTerms: []
}, {
title: "fas fa-won-sign",
searchTerms: [ "krw" ]
}, {
title: "fab fa-wordpress",
searchTerms: []
}, {
title: "fab fa-wordpress-simple",
searchTerms: []
}, {
title: "fab fa-wpbeginner",
searchTerms: []
}, {
title: "fab fa-wpexplorer",
searchTerms: []
}, {
title: "fab fa-wpforms",
searchTerms: []
}, {
title: "fab fa-wpressr",
searchTerms: [ "rendact" ]
}, {
title: "fas fa-wrench",
searchTerms: [ "fix", "settings", "spanner", "tool", "update" ]
}, {
title: "fas fa-x-ray",
searchTerms: [ "radiological images", "radiology" ]
}, {
title: "fab fa-xbox",
searchTerms: []
}, {
title: "fab fa-xing",
searchTerms: []
}, {
title: "fab fa-xing-square",
searchTerms: []
}, {
title: "fab fa-y-combinator",
searchTerms: []
}, {
title: "fab fa-yahoo",
searchTerms: []
}, {
title: "fab fa-yandex",
searchTerms: []
}, {
title: "fab fa-yandex-international",
searchTerms: []
}, {
title: "fab fa-yelp",
searchTerms: []
}, {
title: "fas fa-yen-sign",
searchTerms: [ "jpy", "money" ]
}, {
title: "fas fa-yin-yang",
searchTerms: [ "daoism", "opposites", "taoism" ]
}, {
title: "fab fa-yoast",
searchTerms: []
}, {
title: "fab fa-youtube",
searchTerms: [ "film", "video", "youtube-play", "youtube-square" ]
}, {
title: "fab fa-youtube-square",
searchTerms: []
}, {
title: "fab fa-zhihu",
searchTerms: []
} ]
});
});
================================================
FILE: extension/LICENSE
================================================
The MIT License (MIT)
Copyright (c) 2016 Javi Aguilar
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: extension/manifest.json
================================================
{
"manifest_version": 2,
"name": "Font Awesome Icon Picker",
"description": "Font Awesome Icon Picker extension for Google Chrome",
"version": "2.0.2",
"icons": {
"19": "icon.png",
"128": "icon-128.png"
},
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
},
"permissions": [
"storage"
],
"content_security_policy": "script-src 'self' https://netdna.bootstrapcdn.com https://use.fontawesome.com https://code.jquery.com https://farbelous.io https://cdn.rawgit.com; object-src 'self'"
}
================================================
FILE: extension/popup.html
================================================
Font Awesome Icon Picker
================================================
FILE: extension/popup.js
================================================
/*!
* Font Awesome Icon Picker
* https://farbelous.github.io/fontawesome-iconpicker/
*
* Originally written by (c) 2016 Javi Aguilar
* Licensed under the MIT License
* https://github.com/farbelous/fontawesome-iconpicker/blob/master/LICENSE
*
*/
var FA_CSS_URL = 'https://use.fontawesome.com/releases/v5.0.8/css/all.css';
var FA_CSS_CLASSES = {};
var FA_CACHING_TIME = 7 * 24 * 3600 * 1000; // Cache for 7 days
function _selectText(element) {
var doc = window.document, range = null;
if (doc.body.createTextRange) { // ms
range = doc.body.createTextRange();
range.moveToElementText(element);
range.select();
} else if (window.getSelection) { // moz, opera, webkit
var selection = window.getSelection();
range = doc.createRange();
range.selectNodeContents(element);
selection.removeAllRanges();
selection.addRange(range);
}
}
function _loadCssRules(stylesheet_uri, callback) {
var readyCallback = function (faClasses) {
$(function () {
callback(faClasses);
});
};
chrome.storage.local.get(['faClasses', 'faClassesCacheTime'], function (items) {
if (
items.faClasses
&& items.faClassesCacheTime
&& (items.faClassesCacheTime > Date.now() - FA_CACHING_TIME)
) {
callback(items.faClasses);
} else {
$.ajax(stylesheet_uri).done(function (data) {
var style_tag = document.createElement('style');
style_tag.id = 'fa_stylesheet_inline';
style_tag.appendChild(document.createTextNode(data));
$(style_tag).insertBefore('#fa_stylesheet');
FA_CSS_CLASSES = _parseCssRules(document.styleSheets[1].rules);
$('#fa_stylesheet_inline').remove();
// Store parsed classes locally, so they won't need to be fetched every time the plugin is opened
chrome.storage.local.set({faClasses: FA_CSS_CLASSES, faClassesCacheTime: Date.now()}, function () {
});
readyCallback(FA_CSS_CLASSES);
});
}
});
}
function _parseCssRules(cssRules) {
var parsedRules = {};
for (var j = 0, k = cssRules.length; j < k; j++) {
var rule = cssRules[j], cssClasses = [];
if (
rule['selectorText']
&& rule['style']
&& rule.style['content']
) {
cssClasses = rule.selectorText.replace(/ /g, '').replace(/\./g, '').split(',');
cssClasses.forEach(
function (className) {
parsedRules[className] = rule.style.content ? rule.style.content.replace(/"/g, '') : '';
}
);
}
}
return parsedRules;
}
$(function () {
_loadCssRules(FA_CSS_URL, function (cssClasses) {
$('.iconpicker').html('').iconpicker({
showFooter: true,
templates: {
buttons: '
',
search: ' ',
footer: ''
}
}).on('iconpickerSelected iconpickerUpdated', function (e) {
if (!e.iconpickerValue) {
return;
}
var fontFamily = e.iconpickerValue.match(/fab /) ? 'Font Awesome\\ 5 Brands' : 'Font Awesome\\ 5 Free';
var $footer = e.iconpickerInstance.popover.find('.popover-footer').show();
var cssClassParts = e.iconpickerValue.split(' ');
var cssClass = cssClassParts.pop();
var glyphChar = cssClasses[cssClass + '::before'] ? cssClasses[cssClass + '::before'] :
(cssClasses[cssClass + ':before'] ? cssClasses[cssClass + ':before'] : '??');
$footer.find('.icn-inner')
.html(glyphChar)
.attr('style', 'font-family: ' + fontFamily)
.attr('class', 'icn-inner ' + cssClassParts.join(' '))
;
var _txt = $footer.find('.txt')
.html(e.iconpickerValue +
'<i class="' + e.iconpickerValue + '"></i> ');
_selectText(_txt.find('small').get(0));
});
$(function () {
$('.iconpicker .popover-footer').append($('#subfooter'));
});
});
});
================================================
FILE: index.html
================================================
Font Awesome Icon Picker plugin for Bootstrap
Font Awesome Icon Picker is a fully customizable plugin for Twitter Bootstrap,
with a powerful base API, based on
Bootstrap Popover Picker
You can use Font Awesome or another font icon set of your choice (icon options and items are customizable).
================================================
FILE: package.json
================================================
{
"name": "fontawesome-iconpicker",
"version": "3.2.0",
"description": "Font Awesome Icon Picker plugin for Twitter Bootstrap",
"homepage": "https://farbelous.github.io/fontawesome-iconpicker/",
"repository": {
"type": "git",
"url": "git@github.com:farbelous/fontawesome-iconpicker.git"
},
"author": "Javi Aguilar",
"license": "MIT",
"main": "dist/js/fontawesome-iconpicker.js",
"bugs": {
"url": "https://github.com/farbelous/fontawesome-iconpicker/issues"
},
"keywords": [
"bootstrap",
"fontawesome",
"iconpicker",
"popover",
"picker"
],
"devDependencies": {
"grunt": "^1.0.3",
"grunt-contrib-clean": "^0.5",
"grunt-contrib-concat": "^0.4",
"grunt-contrib-jshint": "^2.0.0",
"grunt-contrib-less": "^2.0.0",
"grunt-contrib-uglify": "^4.0.0",
"grunt-contrib-watch": "^1.1.0",
"grunt-http-download": "^0.1",
"grunt-jsbeautifier": "^0.2",
"grunt-string-replace": "^1.3",
"grunt-yaml": "^0.4"
}
}
================================================
FILE: src/js/iconpicker.js
================================================
/*!
* Font Awesome Icon Picker
* https://farbelous.github.io/fontawesome-iconpicker/
*
* @author Javi Aguilar, itsjavi.com
* @license MIT License
* @see https://github.com/farbelous/fontawesome-iconpicker/blob/master/LICENSE
*/
(function(factory) {
"use strict";
if (typeof define === 'function' && define.amd) {
define(['jquery'], factory);
} else if (window.jQuery && !window.jQuery.fn.iconpicker) {
factory(window.jQuery);
}
}
(function($) {
'use strict';
var _helpers = {
isEmpty: function(val) {
return ((val === false) || (val === '') || (val === null) || (val === undefined));
},
isEmptyObject: function(val) {
return (this.isEmpty(val) === true) || (val.length === 0);
},
isElement: function(selector) {
return ($(selector).length > 0);
},
isString: function(val) {
return ((typeof val === 'string') || (val instanceof String));
},
isArray: function(val) {
return $.isArray(val);
},
inArray: function(val, arr) {
return ($.inArray(val, arr) !== -1);
},
throwError: function(text) {
throw "Font Awesome Icon Picker Exception: " + text;
}
};
var Iconpicker = function(element, options) {
this._id = Iconpicker._idCounter++;
this.element = $(element).addClass('iconpicker-element');
this._trigger('iconpickerCreate', {
iconpickerValue: this.iconpickerValue
});
this.options = $.extend({}, Iconpicker.defaultOptions, this.element.data(), options);
this.options.templates = $.extend({}, Iconpicker.defaultOptions.templates, this.options.templates);
this.options.originalPlacement = this.options.placement;
// Iconpicker container element
this.container = (_helpers.isElement(this.options.container) ? $(this.options.container) : false);
if (this.container === false) {
if (this.element.is('.dropdown-toggle')) {
this.container = $('~ .dropdown-menu:first', this.element);
} else {
this.container = (this.element.is('input,textarea,button,.btn') ? this.element.parent() : this.element);
}
}
this.container.addClass('iconpicker-container');
if (this.isDropdownMenu()) {
this.options.placement = 'inline';
}
// Is the element an input? Should we search inside for any input?
this.input = (this.element.is('input,textarea') ? this.element.addClass('iconpicker-input') : false);
if (this.input === false) {
this.input = (this.container.find(this.options.input));
if (!this.input.is('input,textarea')) {
this.input = false;
}
}
// Plugin as component ?
this.component = this.isDropdownMenu() ? this.container.parent().find(this.options.component) : this.container.find(this.options.component);
if (this.component.length === 0) {
this.component = false;
} else {
this.component.find('i').addClass('iconpicker-component');
}
// Create popover and iconpicker HTML
this._createPopover();
this._createIconpicker();
if (this.getAcceptButton().length === 0) {
// disable this because we don't have accept buttons
this.options.mustAccept = false;
}
// Avoid CSS issues with input-group-addon(s)
if (this.isInputGroup()) {
this.container.parent().append(this.popover);
} else {
this.container.append(this.popover);
}
// Bind events
this._bindElementEvents();
this._bindWindowEvents();
// Refresh everything
this.update(this.options.selected);
if (this.isInline()) {
this.show();
}
this._trigger('iconpickerCreated', {
iconpickerValue: this.iconpickerValue
});
};
// Instance identifier counter
Iconpicker._idCounter = 0;
Iconpicker.defaultOptions = {
title: false, // Popover title (optional) only if specified in the template
selected: false, // use this value as the current item and ignore the original
defaultValue: false, // use this value as the current item if input or element value is empty
placement: 'bottom', // (has some issues with auto and CSS). auto, top, bottom, left, right
collision: 'none', // If true, the popover will be repositioned to another position when collapses with the window borders
animation: true, // fade in/out on show/hide ?
//hide iconpicker automatically when a value is picked. it is ignored if mustAccept is not false and the accept button is visible
hideOnSelect: false,
showFooter: false,
searchInFooter: false, // If true, the search will be added to the footer instead of the title
mustAccept: false, // only applicable when there's an iconpicker-btn-accept button in the popover footer
selectedCustomClass: 'bg-primary', // Appends this class when to the selected item
icons: [], // list of icon classes (declared at the bottom of this script for maintainability)
fullClassFormatter: function(val) {
return val;
},
input: 'input,.iconpicker-input', // children input selector
inputSearch: false, // use the input as a search box too?
container: false, // Appends the popover to a specific element. If not set, the selected element or element parent is used
component: '.input-group-addon,.iconpicker-component', // children component jQuery selector or object, relative to the container element
// Plugin templates:
templates: {
popover: '',
footer: '',
buttons: 'Cancel ' +
' Accept ',
search: ' ',
iconpicker: '',
iconpickerItem: ' ',
}
};
Iconpicker.batch = function(selector, method) {
var args = Array.prototype.slice.call(arguments, 2);
return $(selector).each(function() {
var $inst = $(this).data('iconpicker');
if (!!$inst) {
$inst[method].apply($inst, args);
}
});
};
Iconpicker.prototype = {
constructor: Iconpicker,
options: {},
_id: 0, // instance identifier for bind/unbind events
_trigger: function(name, opts) {
//triggers an event bound to the element
opts = opts || {};
this.element.trigger($.extend({
type: name,
iconpickerInstance: this
}, opts));
//console.log(name + ' triggered for instance #' + this._id);
},
_createPopover: function() {
this.popover = $(this.options.templates.popover);
// title (header)
var _title = this.popover.find('.popover-title');
if (!!this.options.title) {
_title.append($('' + this.options.title + '
'));
}
if (this.hasSeparatedSearchInput() && !this.options.searchInFooter) {
_title.append(this.options.templates.search);
} else if (!this.options.title) {
_title.remove();
}
// footer
if (this.options.showFooter && !_helpers.isEmpty(this.options.templates.footer)) {
var _footer = $(this.options.templates.footer);
if (this.hasSeparatedSearchInput() && this.options.searchInFooter) {
_footer.append($(this.options.templates.search));
}
if (!_helpers.isEmpty(this.options.templates.buttons)) {
_footer.append($(this.options.templates.buttons));
}
this.popover.append(_footer);
}
if (this.options.animation === true) {
this.popover.addClass('fade');
}
return this.popover;
},
_createIconpicker: function() {
var _self = this;
this.iconpicker = $(this.options.templates.iconpicker);
var itemClickFn = function(e) {
var $this = $(this);
if ($this.is('i')) {
$this = $this.parent();
}
_self._trigger('iconpickerSelect', {
iconpickerItem: $this,
iconpickerValue: _self.iconpickerValue
});
if (_self.options.mustAccept === false) {
_self.update($this.data('iconpickerValue'));
_self._trigger('iconpickerSelected', {
iconpickerItem: this,
iconpickerValue: _self.iconpickerValue
});
} else {
_self.update($this.data('iconpickerValue'), true);
}
if (_self.options.hideOnSelect && (_self.options.mustAccept === false)) {
// only hide when the accept button is not present
_self.hide();
}
};
var $itemElementTemplate = $(this.options.templates.iconpickerItem);
var $elementsToAppend = [];
for (var i in this.options.icons) {
if (typeof this.options.icons[i].title === 'string') {
var itemElement = $itemElementTemplate.clone();
itemElement.find('i')
.addClass(this.options.fullClassFormatter(this.options.icons[i].title));
itemElement.data('iconpickerValue', this.options.icons[i].title)
.on('click.iconpicker', itemClickFn);
itemElement.attr('title', '.' + this.options.icons[i].title);
if (this.options.icons[i].searchTerms.length > 0) {
var searchTerms = '';
for (var j = 0; j < this.options.icons[i].searchTerms.length; j++) {
searchTerms = searchTerms + this.options.icons[i].searchTerms[j] + ' ';
}
itemElement.attr('data-search-terms', searchTerms);
}
$elementsToAppend.push(itemElement);
}
}
this.iconpicker.find('.iconpicker-items').append($elementsToAppend);
this.popover.find('.popover-content').append(this.iconpicker);
return this.iconpicker;
},
_isEventInsideIconpicker: function(e) {
var _t = $(e.target);
if ((!_t.hasClass('iconpicker-element') ||
(_t.hasClass('iconpicker-element') && !_t.is(this.element))) &&
(_t.parents('.iconpicker-popover').length === 0)) {
return false;
}
return true;
},
_bindElementEvents: function() {
var _self = this;
this.getSearchInput().on('keyup.iconpicker', function() {
_self.filter($(this).val().toLowerCase());
});
this.getAcceptButton().on('click.iconpicker', function() {
var _picked = _self.iconpicker.find('.iconpicker-selected').get(0);
_self.update(_self.iconpickerValue);
_self._trigger('iconpickerSelected', {
iconpickerItem: _picked,
iconpickerValue: _self.iconpickerValue
});
if (!_self.isInline()) {
_self.hide();
}
});
this.getCancelButton().on('click.iconpicker', function() {
if (!_self.isInline()) {
_self.hide();
}
});
this.element.on('focus.iconpicker', function(e) {
_self.show();
e.stopPropagation();
});
if (this.hasComponent()) {
this.component.on('click.iconpicker', function() {
_self.toggle();
});
}
if (this.hasInput()) {
// Bind input keyup event
this.input.on('keyup.iconpicker', function(e) {
if (!_helpers.inArray(e.keyCode, [38, 40, 37, 39, 16, 17, 18, 9, 8, 91, 93, 20, 46, 186, 190, 46, 78, 188, 44, 86])) {
_self.update();
} else {
_self._updateFormGroupStatus(_self.getValid(this.value) !== false);
}
if (_self.options.inputSearch === true) {
_self.filter($(this).val().toLowerCase());
}
//_self.hide();
});
}
},
_bindWindowEvents: function() {
var $doc = $(window.document);
var _self = this;
// Add a namespace to the document events so they can be identified
// later for every instance separately
var _eventNs = '.iconpicker.inst' + this._id;
$(window).on('resize.iconpicker' + _eventNs + ' orientationchange.iconpicker' + _eventNs, function(e) {
// reposition popover
if (_self.popover.hasClass('in')) {
_self.updatePlacement();
}
});
if (!_self.isInline()) {
$doc.on('mouseup' + _eventNs, function(e) {
if (!_self._isEventInsideIconpicker(e) && !_self.isInline()) {
_self.hide();
}
});
}
},
_unbindElementEvents: function() {
this.popover.off('.iconpicker');
this.element.off('.iconpicker');
if (this.hasInput()) {
this.input.off('.iconpicker');
}
if (this.hasComponent()) {
this.component.off('.iconpicker');
}
if (this.hasContainer()) {
this.container.off('.iconpicker');
}
},
_unbindWindowEvents: function() {
// destroy window and window.document bound events
$(window).off('.iconpicker.inst' + this._id);
$(window.document).off('.iconpicker.inst' + this._id);
},
updatePlacement: function(placement, collision) {
placement = placement || this.options.placement;
this.options.placement = placement; // set new placement
collision = collision || this.options.collision;
collision = (collision === true ? 'flip' : collision);
var _pos = {
// at: Defines which position (or side) on container element to align the
// popover element against: "horizontal vertical" alignment.
at: "right bottom",
// my: Defines which position (or side) on the popover being positioned to align
// with the container element: "horizontal vertical" alignment
my: "right top",
// of: Which element to position against.
of: (this.hasInput() && !this.isInputGroup()) ? this.input : this.container,
// collision: When the positioned element overflows the window (or within element)
// in some direction, move it to an alternative position.
collision: (collision === true ? 'flip' : collision),
// within: Element to position within, affecting collision detection.
within: window
};
// remove previous classes
this.popover.removeClass('inline topLeftCorner topLeft top topRight topRightCorner ' +
'rightTop right rightBottom bottomRight bottomRightCorner ' +
'bottom bottomLeft bottomLeftCorner leftBottom left leftTop');
if (typeof placement === 'object') {
// custom position ?
return this.popover.pos($.extend({}, _pos, placement));
}
switch (placement) {
case 'inline':
{
_pos = false;
}
break;
case 'topLeftCorner':
{
_pos.my = 'right bottom';
_pos.at = 'left top';
}
break;
case 'topLeft':
{
_pos.my = 'left bottom';
_pos.at = 'left top';
}
break;
case 'top':
{
_pos.my = 'center bottom';
_pos.at = 'center top';
}
break;
case 'topRight':
{
_pos.my = 'right bottom';
_pos.at = 'right top';
}
break;
case 'topRightCorner':
{
_pos.my = 'left bottom';
_pos.at = 'right top';
}
break;
case 'rightTop':
{
_pos.my = 'left bottom';
_pos.at = 'right center';
}
break;
case 'right':
{
_pos.my = 'left center';
_pos.at = 'right center';
}
break;
case 'rightBottom':
{
_pos.my = 'left top';
_pos.at = 'right center';
}
break;
case 'bottomRightCorner':
{
_pos.my = 'left top';
_pos.at = 'right bottom';
}
break;
case 'bottomRight':
{
_pos.my = 'right top';
_pos.at = 'right bottom';
}
break;
case 'bottom':
{
_pos.my = 'center top';
_pos.at = 'center bottom';
}
break;
case 'bottomLeft':
{
_pos.my = 'left top';
_pos.at = 'left bottom';
}
break;
case 'bottomLeftCorner':
{
_pos.my = 'right top';
_pos.at = 'left bottom';
}
break;
case 'leftBottom':
{
_pos.my = 'right top';
_pos.at = 'left center';
}
break;
case 'left':
{
_pos.my = 'right center';
_pos.at = 'left center';
}
break;
case 'leftTop':
{
_pos.my = 'right bottom';
_pos.at = 'left center';
}
break;
default:
{
return false;
}
break;
}
this.popover.css({
'display': (this.options.placement === 'inline') ? '' : 'block'
});
if (_pos !== false) {
this.popover.pos(_pos).css('maxWidth', $(window).width() - this.container.offset().left - 5);
} else {
//reset position
this.popover.css({
'top': 'auto',
'right': 'auto',
'bottom': 'auto',
'left': 'auto',
'maxWidth': 'none'
});
}
this.popover.addClass(this.options.placement);
return true;
},
_updateComponents: function() {
// Update selected item
this.iconpicker.find('.iconpicker-item.iconpicker-selected')
.removeClass('iconpicker-selected ' + this.options.selectedCustomClass);
if (this.iconpickerValue) {
this.iconpicker.find('.' + this.options.fullClassFormatter(this.iconpickerValue).replace(/ /g, '.')).parent()
.addClass('iconpicker-selected ' + this.options.selectedCustomClass);
}
// Update component item
if (this.hasComponent()) {
var icn = this.component.find('i');
if (icn.length > 0) {
icn.attr('class', this.options.fullClassFormatter(this.iconpickerValue));
} else {
this.component.html(this.getHtml());
}
}
},
_updateFormGroupStatus: function(isValid) {
if (this.hasInput()) {
if (isValid !== false) {
// Remove form-group error class if any
this.input.parents('.form-group:first').removeClass('has-error');
} else {
this.input.parents('.form-group:first').addClass('has-error');
}
return true;
}
return false;
},
getValid: function(val) {
// here we must validate the value (you may change this validation
// to suit your needs
if (!_helpers.isString(val)) {
val = '';
}
var isEmpty = (val === '');
// trim string
val = $.trim(val);
var e = false;
for (var i = 0; i < this.options.icons.length; i++) {
if (this.options.icons[i].title === val) {
e = true;
break;
};
}
if (e || isEmpty) {
return val;
}
return false;
},
/**
* Sets the internal item value and updates everything, excepting the input or element.
* For doing so, call setSourceValue() or update() instead
*/
setValue: function(val) {
// sanitize first
var _val = this.getValid(val);
if (_val !== false) {
this.iconpickerValue = _val;
this._trigger('iconpickerSetValue', {
iconpickerValue: _val
});
return this.iconpickerValue;
} else {
this._trigger('iconpickerInvalid', {
iconpickerValue: val
});
return false;
}
},
getHtml: function() {
return ' ';
},
/**
* Calls setValue and if it's a valid item value, sets the input or element value
*/
setSourceValue: function(val) {
val = this.setValue(val);
if ((val !== false) && (val !== '')) {
if (this.hasInput()) {
this.input.val(this.iconpickerValue);
} else {
this.element.data('iconpickerValue', this.iconpickerValue);
}
this._trigger('iconpickerSetSourceValue', {
iconpickerValue: val
});
}
return val;
},
/**
* Returns the input or element item value, without formatting, or defaultValue
* if it's empty string, undefined, false or null
* @param {type} defaultValue
* @returns string|mixed
*/
getSourceValue: function(defaultValue) {
// returns the input or element value, as string
defaultValue = defaultValue || this.options.defaultValue;
var val = defaultValue;
if (this.hasInput()) {
val = this.input.val();
} else {
val = this.element.data('iconpickerValue');
}
if ((val === undefined) || (val === '') || (val === null) || (val === false)) {
// if not defined or empty, return default
val = defaultValue;
}
return val;
},
hasInput: function() {
return (this.input !== false);
},
isInputSearch: function() {
return (this.hasInput() && (this.options.inputSearch === true));
},
isInputGroup: function() {
return this.container.is('.input-group');
},
isDropdownMenu: function() {
return this.container.is('.dropdown-menu');
},
hasSeparatedSearchInput: function() {
return (this.options.templates.search !== false) && (!this.isInputSearch());
},
hasComponent: function() {
return (this.component !== false);
},
hasContainer: function() {
return (this.container !== false);
},
getAcceptButton: function() {
return this.popover.find('.iconpicker-btn-accept');
},
getCancelButton: function() {
return this.popover.find('.iconpicker-btn-cancel');
},
getSearchInput: function() {
return this.popover.find('.iconpicker-search');
},
filter: function(filterText) {
if (_helpers.isEmpty(filterText)) {
this.iconpicker.find('.iconpicker-item').show();
return $(false);
} else {
var found = [];
this.iconpicker.find('.iconpicker-item').each(function() {
var $this = $(this);
var text = $this.attr('title').toLowerCase();
var searchTerms = $this.attr('data-search-terms') ? $this.attr('data-search-terms').toLowerCase() : '';
text = text + ' ' + searchTerms;
var regex = false;
try {
regex = new RegExp('(^|\\W)' + filterText, 'g');
} catch (e) {
regex = false;
}
if ((regex !== false) && text.match(regex)) {
found.push($this);
$this.show();
} else {
$this.hide();
}
});
return found;
}
},
show: function() {
if (this.popover.hasClass('in')) {
return false;
}
// hide other non-inline pickers
$.iconpicker.batch($('.iconpicker-popover.in:not(.inline)').not(this.popover), 'hide');
this._trigger('iconpickerShow', {
iconpickerValue: this.iconpickerValue
});
this.updatePlacement();
this.popover.addClass('in');
setTimeout($.proxy(function() {
this.popover.css('display', this.isInline() ? '' : 'block');
this._trigger('iconpickerShown', {
iconpickerValue: this.iconpickerValue
});
}, this), this.options.animation ? 300 : 1); // animation duration
},
hide: function() {
if (!this.popover.hasClass('in')) {
return false;
}
this._trigger('iconpickerHide', {
iconpickerValue: this.iconpickerValue
});
this.popover.removeClass('in');
setTimeout($.proxy(function() {
this.popover.css('display', 'none');
this.getSearchInput().val('');
this.filter(''); // clear filter
this._trigger('iconpickerHidden', {
iconpickerValue: this.iconpickerValue
});
}, this), this.options.animation ? 300 : 1);
},
toggle: function() {
if (this.popover.is(":visible")) {
this.hide();
} else {
this.show(true);
}
},
update: function(val, updateOnlyInternal) {
val = (val ? val : this.getSourceValue(this.iconpickerValue));
// reads the input or element value again and tries to update the plugin
// fallback to the current selected item value
this._trigger('iconpickerUpdate', {
iconpickerValue: this.iconpickerValue
});
if (updateOnlyInternal === true) {
val = this.setValue(val);
} else {
val = this.setSourceValue(val);
this._updateFormGroupStatus(val !== false);
}
if (val !== false) {
this._updateComponents();
}
this._trigger('iconpickerUpdated', {
iconpickerValue: this.iconpickerValue
});
return val;
},
destroy: function() {
this._trigger('iconpickerDestroy', {
iconpickerValue: this.iconpickerValue
});
// unbinds events and resets everything to the initial state,
// including component mode
this.element.removeData('iconpicker').removeData('iconpickerValue').removeClass('iconpicker-element');
this._unbindElementEvents();
this._unbindWindowEvents();
$(this.popover).remove();
this._trigger('iconpickerDestroyed', {
iconpickerValue: this.iconpickerValue
});
},
disable: function() {
if (this.hasInput()) {
this.input.prop('disabled', true);
return true;
}
return false;
},
enable: function() {
if (this.hasInput()) {
this.input.prop('disabled', false);
return true;
}
return false;
},
isDisabled: function() {
if (this.hasInput()) {
return (this.input.prop('disabled') === true);
}
return false;
},
isInline: function() {
return (this.options.placement === 'inline') || (this.popover.hasClass('inline'));
}
};
$.iconpicker = Iconpicker;
// jQuery plugin
$.fn.iconpicker = function(options) {
return this.each(function() {
var $this = $(this);
if (!$this.data('iconpicker')) {
// create plugin instance (only if not exists) and expose the entire instance API
$this.data('iconpicker', new Iconpicker(this, ((typeof options === 'object') ? options : {})));
}
});
};
// List of all Font Awesome icons without class prefix
Iconpicker.defaultOptions = $.extend(
Iconpicker.defaultOptions,
//###REPLACE-WITH-FONT-AWESOME-5-FONTS###
);
}));
================================================
FILE: src/js/jquery.ui.pos.js
================================================
(function(factory) {
if (typeof define === "function" && define.amd) {
// AMD. Register as an anonymous module.
define(["jquery"], factory);
} else {
// Browser globals
factory(jQuery);
}
}(function($) {
$.ui = $.ui || {};
var version = $.ui.version = "1.12.1";
/*!
* jQuery UI Position 1.12.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
* Released under the MIT license.
* http://jquery.org/license
*
* http://api.jqueryui.com/position/
*/
//>>label: Position
//>>group: Core
//>>description: Positions elements relative to other elements.
//>>docs: http://api.jqueryui.com/position/
//>>demos: http://jqueryui.com/position/
(function() {
var cachedScrollbarWidth,
max = Math.max,
abs = Math.abs,
rhorizontal = /left|center|right/,
rvertical = /top|center|bottom/,
roffset = /[\+\-]\d+(\.[\d]+)?%?/,
rposition = /^\w+/,
rpercent = /%$/,
_position = $.fn.pos;
function getOffsets(offsets, width, height) {
return [
parseFloat(offsets[0]) * (rpercent.test(offsets[0]) ? width / 100 : 1),
parseFloat(offsets[1]) * (rpercent.test(offsets[1]) ? height / 100 : 1)
];
}
function parseCss(element, property) {
return parseInt($.css(element, property), 10) || 0;
}
function getDimensions(elem) {
var raw = elem[0];
if (raw.nodeType === 9) {
return {
width: elem.width(),
height: elem.height(),
offset: {
top: 0,
left: 0
}
};
}
if ($.isWindow(raw)) {
return {
width: elem.width(),
height: elem.height(),
offset: {
top: elem.scrollTop(),
left: elem.scrollLeft()
}
};
}
if (raw.preventDefault) {
return {
width: 0,
height: 0,
offset: {
top: raw.pageY,
left: raw.pageX
}
};
}
return {
width: elem.outerWidth(),
height: elem.outerHeight(),
offset: elem.offset()
};
}
$.pos = {
scrollbarWidth: function() {
if (cachedScrollbarWidth !== undefined) {
return cachedScrollbarWidth;
}
var w1, w2,
div = $(""),
innerDiv = div.children()[0];
$("body").append(div);
w1 = innerDiv.offsetWidth;
div.css("overflow", "scroll");
w2 = innerDiv.offsetWidth;
if (w1 === w2) {
w2 = div[0].clientWidth;
}
div.remove();
return (cachedScrollbarWidth = w1 - w2);
},
getScrollInfo: function(within) {
var overflowX = within.isWindow || within.isDocument ? "" :
within.element.css("overflow-x"),
overflowY = within.isWindow || within.isDocument ? "" :
within.element.css("overflow-y"),
hasOverflowX = overflowX === "scroll" ||
(overflowX === "auto" && within.width < within.element[0].scrollWidth),
hasOverflowY = overflowY === "scroll" ||
(overflowY === "auto" && within.height < within.element[0].scrollHeight);
return {
width: hasOverflowY ? $.pos.scrollbarWidth() : 0,
height: hasOverflowX ? $.pos.scrollbarWidth() : 0
};
},
getWithinInfo: function(element) {
var withinElement = $(element || window),
isWindow = $.isWindow(withinElement[0]),
isDocument = !!withinElement[0] && withinElement[0].nodeType === 9,
hasOffset = !isWindow && !isDocument;
return {
element: withinElement,
isWindow: isWindow,
isDocument: isDocument,
offset: hasOffset ? $(element).offset() : {
left: 0,
top: 0
},
scrollLeft: withinElement.scrollLeft(),
scrollTop: withinElement.scrollTop(),
width: withinElement.outerWidth(),
height: withinElement.outerHeight()
};
}
};
$.fn.pos = function(options) {
if (!options || !options.of) {
return _position.apply(this, arguments);
}
// Make a copy, we don't want to modify arguments
options = $.extend({}, options);
var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,
target = $(options.of),
within = $.pos.getWithinInfo(options.within),
scrollInfo = $.pos.getScrollInfo(within),
collision = (options.collision || "flip").split(" "),
offsets = {};
dimensions = getDimensions(target);
if (target[0].preventDefault) {
// Force left top to allow flipping
options.at = "left top";
}
targetWidth = dimensions.width;
targetHeight = dimensions.height;
targetOffset = dimensions.offset;
// Clone to reuse original targetOffset later
basePosition = $.extend({}, targetOffset);
// Force my and at to have valid horizontal and vertical positions
// if a value is missing or invalid, it will be converted to center
$.each(["my", "at"], function() {
var pos = (options[this] || "").split(" "),
horizontalOffset,
verticalOffset;
if (pos.length === 1) {
pos = rhorizontal.test(pos[0]) ?
pos.concat(["center"]) :
rvertical.test(pos[0]) ? ["center"].concat(pos) : ["center", "center"];
}
pos[0] = rhorizontal.test(pos[0]) ? pos[0] : "center";
pos[1] = rvertical.test(pos[1]) ? pos[1] : "center";
// Calculate offsets
horizontalOffset = roffset.exec(pos[0]);
verticalOffset = roffset.exec(pos[1]);
offsets[this] = [
horizontalOffset ? horizontalOffset[0] : 0,
verticalOffset ? verticalOffset[0] : 0
];
// Reduce to just the positions without the offsets
options[this] = [
rposition.exec(pos[0])[0],
rposition.exec(pos[1])[0]
];
});
// Normalize collision option
if (collision.length === 1) {
collision[1] = collision[0];
}
if (options.at[0] === "right") {
basePosition.left += targetWidth;
} else if (options.at[0] === "center") {
basePosition.left += targetWidth / 2;
}
if (options.at[1] === "bottom") {
basePosition.top += targetHeight;
} else if (options.at[1] === "center") {
basePosition.top += targetHeight / 2;
}
atOffset = getOffsets(offsets.at, targetWidth, targetHeight);
basePosition.left += atOffset[0];
basePosition.top += atOffset[1];
return this.each(function() {
var collisionPosition, using,
elem = $(this),
elemWidth = elem.outerWidth(),
elemHeight = elem.outerHeight(),
marginLeft = parseCss(this, "marginLeft"),
marginTop = parseCss(this, "marginTop"),
collisionWidth = elemWidth + marginLeft + parseCss(this, "marginRight") +
scrollInfo.width,
collisionHeight = elemHeight + marginTop + parseCss(this, "marginBottom") +
scrollInfo.height,
position = $.extend({}, basePosition),
myOffset = getOffsets(offsets.my, elem.outerWidth(), elem.outerHeight());
if (options.my[0] === "right") {
position.left -= elemWidth;
} else if (options.my[0] === "center") {
position.left -= elemWidth / 2;
}
if (options.my[1] === "bottom") {
position.top -= elemHeight;
} else if (options.my[1] === "center") {
position.top -= elemHeight / 2;
}
position.left += myOffset[0];
position.top += myOffset[1];
collisionPosition = {
marginLeft: marginLeft,
marginTop: marginTop
};
$.each(["left", "top"], function(i, dir) {
if ($.ui.pos[collision[i]]) {
$.ui.pos[collision[i]][dir](position, {
targetWidth: targetWidth,
targetHeight: targetHeight,
elemWidth: elemWidth,
elemHeight: elemHeight,
collisionPosition: collisionPosition,
collisionWidth: collisionWidth,
collisionHeight: collisionHeight,
offset: [atOffset[0] + myOffset[0], atOffset[1] + myOffset[1]],
my: options.my,
at: options.at,
within: within,
elem: elem
});
}
});
if (options.using) {
// Adds feedback as second argument to using callback, if present
using = function(props) {
var left = targetOffset.left - position.left,
right = left + targetWidth - elemWidth,
top = targetOffset.top - position.top,
bottom = top + targetHeight - elemHeight,
feedback = {
target: {
element: target,
left: targetOffset.left,
top: targetOffset.top,
width: targetWidth,
height: targetHeight
},
element: {
element: elem,
left: position.left,
top: position.top,
width: elemWidth,
height: elemHeight
},
horizontal: right < 0 ? "left" : left > 0 ? "right" : "center",
vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle"
};
if (targetWidth < elemWidth && abs(left + right) < targetWidth) {
feedback.horizontal = "center";
}
if (targetHeight < elemHeight && abs(top + bottom) < targetHeight) {
feedback.vertical = "middle";
}
if (max(abs(left), abs(right)) > max(abs(top), abs(bottom))) {
feedback.important = "horizontal";
} else {
feedback.important = "vertical";
}
options.using.call(this, props, feedback);
};
}
elem.offset($.extend(position, {
using: using
}));
});
};
$.ui.pos = {
_trigger: function(position, data, name, triggered) {
if (data.elem) {
data.elem.trigger({
'type': name,
'position': position,
'positionData': data,
'triggered': triggered
});
}
},
fit: {
left: function(position, data) {
$.ui.pos._trigger(position, data, 'posCollide', 'fitLeft');
var within = data.within,
withinOffset = within.isWindow ? within.scrollLeft : within.offset.left,
outerWidth = within.width,
collisionPosLeft = position.left - data.collisionPosition.marginLeft,
overLeft = withinOffset - collisionPosLeft,
overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,
newOverRight;
// Element is wider than within
if (data.collisionWidth > outerWidth) {
// Element is initially over the left side of within
if (overLeft > 0 && overRight <= 0) {
newOverRight = position.left + overLeft + data.collisionWidth - outerWidth -
withinOffset;
position.left += overLeft - newOverRight;
// Element is initially over right side of within
} else if (overRight > 0 && overLeft <= 0) {
position.left = withinOffset;
// Element is initially over both left and right sides of within
} else {
if (overLeft > overRight) {
position.left = withinOffset + outerWidth - data.collisionWidth;
} else {
position.left = withinOffset;
}
}
// Too far left -> align with left edge
} else if (overLeft > 0) {
position.left += overLeft;
// Too far right -> align with right edge
} else if (overRight > 0) {
position.left -= overRight;
// Adjust based on position and margin
} else {
position.left = max(position.left - collisionPosLeft, position.left);
}
$.ui.pos._trigger(position, data, 'posCollided', 'fitLeft');
},
top: function(position, data) {
$.ui.pos._trigger(position, data, 'posCollide', 'fitTop');
var within = data.within,
withinOffset = within.isWindow ? within.scrollTop : within.offset.top,
outerHeight = data.within.height,
collisionPosTop = position.top - data.collisionPosition.marginTop,
overTop = withinOffset - collisionPosTop,
overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,
newOverBottom;
// Element is taller than within
if (data.collisionHeight > outerHeight) {
// Element is initially over the top of within
if (overTop > 0 && overBottom <= 0) {
newOverBottom = position.top + overTop + data.collisionHeight - outerHeight -
withinOffset;
position.top += overTop - newOverBottom;
// Element is initially over bottom of within
} else if (overBottom > 0 && overTop <= 0) {
position.top = withinOffset;
// Element is initially over both top and bottom of within
} else {
if (overTop > overBottom) {
position.top = withinOffset + outerHeight - data.collisionHeight;
} else {
position.top = withinOffset;
}
}
// Too far up -> align with top
} else if (overTop > 0) {
position.top += overTop;
// Too far down -> align with bottom edge
} else if (overBottom > 0) {
position.top -= overBottom;
// Adjust based on position and margin
} else {
position.top = max(position.top - collisionPosTop, position.top);
}
$.ui.pos._trigger(position, data, 'posCollided', 'fitTop');
}
},
flip: {
left: function(position, data) {
$.ui.pos._trigger(position, data, 'posCollide', 'flipLeft');
var within = data.within,
withinOffset = within.offset.left + within.scrollLeft,
outerWidth = within.width,
offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,
collisionPosLeft = position.left - data.collisionPosition.marginLeft,
overLeft = collisionPosLeft - offsetLeft,
overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,
myOffset = data.my[0] === "left" ?
-data.elemWidth :
data.my[0] === "right" ?
data.elemWidth :
0,
atOffset = data.at[0] === "left" ?
data.targetWidth :
data.at[0] === "right" ?
-data.targetWidth :
0,
offset = -2 * data.offset[0],
newOverRight,
newOverLeft;
if (overLeft < 0) {
newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth -
outerWidth - withinOffset;
if (newOverRight < 0 || newOverRight < abs(overLeft)) {
position.left += myOffset + atOffset + offset;
}
} else if (overRight > 0) {
newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset +
atOffset + offset - offsetLeft;
if (newOverLeft > 0 || abs(newOverLeft) < overRight) {
position.left += myOffset + atOffset + offset;
}
}
$.ui.pos._trigger(position, data, 'posCollided', 'flipLeft');
},
top: function(position, data) {
$.ui.pos._trigger(position, data, 'posCollide', 'flipTop');
var within = data.within,
withinOffset = within.offset.top + within.scrollTop,
outerHeight = within.height,
offsetTop = within.isWindow ? within.scrollTop : within.offset.top,
collisionPosTop = position.top - data.collisionPosition.marginTop,
overTop = collisionPosTop - offsetTop,
overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,
top = data.my[1] === "top",
myOffset = top ?
-data.elemHeight :
data.my[1] === "bottom" ?
data.elemHeight :
0,
atOffset = data.at[1] === "top" ?
data.targetHeight :
data.at[1] === "bottom" ?
-data.targetHeight :
0,
offset = -2 * data.offset[1],
newOverTop,
newOverBottom;
if (overTop < 0) {
newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight -
outerHeight - withinOffset;
if (newOverBottom < 0 || newOverBottom < abs(overTop)) {
position.top += myOffset + atOffset + offset;
}
} else if (overBottom > 0) {
newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset +
offset - offsetTop;
if (newOverTop > 0 || abs(newOverTop) < overBottom) {
position.top += myOffset + atOffset + offset;
}
}
$.ui.pos._trigger(position, data, 'posCollided', 'flipTop');
}
},
flipfit: {
left: function() {
$.ui.pos.flip.left.apply(this, arguments);
$.ui.pos.fit.left.apply(this, arguments);
},
top: function() {
$.ui.pos.flip.top.apply(this, arguments);
$.ui.pos.fit.top.apply(this, arguments);
}
}
};
// fraction support test
(function() {
var testElement, testElementParent, testElementStyle, offsetLeft, i,
body = document.getElementsByTagName("body")[0],
div = document.createElement("div");
//Create a "fake body" for testing based on method used in jQuery.support
testElement = document.createElement(body ? "div" : "body");
testElementStyle = {
visibility: "hidden",
width: 0,
height: 0,
border: 0,
margin: 0,
background: "none"
};
if (body) {
$.extend(testElementStyle, {
position: "absolute",
left: "-1000px",
top: "-1000px"
});
}
for (i in testElementStyle) {
testElement.style[i] = testElementStyle[i];
}
testElement.appendChild(div);
testElementParent = body || document.documentElement;
testElementParent.insertBefore(testElement, testElementParent.firstChild);
div.style.cssText = "position: absolute; left: 10.7432222px;";
offsetLeft = $(div).offset().left;
$.support.offsetFractions = offsetLeft > 10 && offsetLeft < 11;
testElement.innerHTML = "";
testElementParent.removeChild(testElement);
})();
})();
var position = $.ui.position;
}));
================================================
FILE: src/less/iconpicker.less
================================================
/*!
* Font Awesome Icon Picker
* https://farbelous.github.io/fontawesome-iconpicker/
*
* @author Javi Aguilar, itsjavi.com
* @license MIT License
* @see https://github.com/farbelous/fontawesome-iconpicker/blob/master/LICENSE
*/
@import 'variables.less';
@import 'popovers.less';
.iconpicker {
* {
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
box-sizing: content-box;
position: relative;
}
position: relative;
.clearfix();
text-align: left;
text-shadow: none;
line-height: 0;
display: block;
margin: 0;
overflow: hidden;
.iconpicker-items {
position: relative;
.clearfix();
clear: both;
float: none;
padding: @base_spacing 0 0 @base_spacing;
background: #fff;
//margin:0 -@base_spacing -@base_spacing 0;
//width:@picker_width - (@base_spacing*2);
margin: 0;
overflow: hidden;
overflow-y: auto;
min-height: @row_outer_height;
max-height: (@row_outer_height * @num_rows) + 1;
}
.iconpicker-item {
float: left;
width: @item_size;
height: @item_size;
padding: @base_spacing;
margin: 0 @base_spacing @base_spacing 0;
text-align: center;
cursor: pointer;
border-radius: 3px;
font-size: @item_size;
.outer-border();
color: inherit;
&:hover:not(.iconpicker-selected) {
background-color: @hover_bg;
}
&.iconpicker-selected {
box-shadow: none;
color: #fff;
background: #000;
}
/*&:nth-child(4n+4) {
margin-right: 0;
}
&:nth-last-child(-n+4) {
margin-bottom: 0;
}*/
//box-shadow:0;
}
}
.iconpicker-component {
cursor: pointer;
}
================================================
FILE: src/less/popovers.less
================================================
//
// Popovers
// --------------------------------------------------
.iconpicker-popover.popover {
position: absolute;
top: 0;
left: 0;
display: none;
max-width: none;
padding: 1px;
text-align: left;
width: @picker_width + @num_cols;
background: @popover-title-bg;
z-index: 9;
// Offset the popover to account for the popover arrow
&.top, &.topLeftCorner, &.topLeft, &.topRight, &.topRightCorner {
margin-top: -@popover-arrow-width;
}
&.right, &.rightTop, &.rightBottom {
margin-left: @popover-arrow-width;
}
&.bottom, &.bottomRightCorner, &.bottomRight, &.bottomLeft, &.bottomLeftCorner {
margin-top: @popover-arrow-width;
}
&.left, &.leftBottom, &.leftTop {
margin-left: -@popover-arrow-width;
}
&.inline {
> .arrow {
display: none;
}
margin: 0 0 @base_spacing 0;
position: relative;
display: inline-block;
opacity: 1;
top: auto;
left: auto;
bottom: auto;
right: auto;
max-width: 100%;
box-shadow: none;
z-index: auto;
vertical-align: top;
}
}
.dropdown-menu .iconpicker-popover.inline {
margin: 0;
border: none;
}
.dropdown-menu.iconpicker-container {
padding: 0;
}
.iconpicker-popover.popover .popover-title {
//padding: 8px 14px;
//border-radius: 5px 5px 0 0;
padding: @base_spacing;
font-size: @title_size;
line-height: @title_size + 2px;
border-bottom: 1px solid darken(@popover-title-bg, 5%);
background-color: @popover-title-bg;
input[type=search].iconpicker-search {
margin: 0 0 2px 0;
}
}
.iconpicker-popover.popover .popover-title-text ~ input[type=search].iconpicker-search {
margin-top: @base_spacing;
}
.iconpicker-popover.popover .popover-content {
//padding: 9px 14px;
padding: 0px;
text-align: center;
//overflow:hidden;
}
.iconpicker-popover .popover-footer {
.clearfix();
float: none;
clear: both;
padding: @base_spacing;
text-align: right;
margin: 0;
border-top: 1px solid darken(@popover-title-bg, 5%);
background-color: @popover-title-bg;
.iconpicker-btn {
margin-left: 10px;
}
input[type=search].iconpicker-search {
/*width:auto;
float:left;*/
margin-bottom: @base_spacing;
}
}
// Arrows
//
// .arrow is outer, .arrow:after is inner
.iconpicker-popover.popover > .arrow {
&,
&:after {
position: absolute;
display: block;
width: 0;
height: 0;
border-color: transparent;
border-style: solid;
}
}
.iconpicker-popover.popover > .arrow {
border-width: @popover-arrow-outer-width;
}
.iconpicker-popover.popover > .arrow:after {
border-width: @popover-arrow-width;
content: "";
}
.iconpicker-popover.popover {
&.top, &.topLeft, &.topRight {
> .arrow {
left: 50%;
margin-left: -@popover-arrow-outer-width;
border-bottom-width: 0;
border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback
border-top-color: @popover-arrow-outer-color;
bottom: -@popover-arrow-outer-width;
&:after {
content: " ";
bottom: 1px;
margin-left: -@popover-arrow-width;
border-bottom-width: 0;
border-top-color: @popover-arrow-color;
}
}
}
&.topLeft > .arrow {
left: @arrow_position;
margin-left: 0;
}
&.topRight > .arrow {
left: auto;
right: @arrow_position;
margin-left: 0;
}
&.right, &.rightTop, &.rightBottom {
> .arrow {
top: 50%;
left: -@popover-arrow-outer-width;
margin-top: -@popover-arrow-outer-width;
border-left-width: 0;
border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback
border-right-color: @popover-arrow-outer-color;
&:after {
content: " ";
left: 1px;
bottom: -@popover-arrow-width;
border-left-width: 0;
border-right-color: @popover-arrow-color;
}
}
}
&.rightTop > .arrow {
top: auto;
bottom: @arrow_position;
margin-top: 0;
}
&.rightBottom > .arrow {
top: @arrow_position;
margin-top: 0;
}
&.bottom, &.bottomRight, &.bottomLeft {
> .arrow {
left: 50%;
margin-left: -@popover-arrow-outer-width;
border-top-width: 0;
border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback
border-bottom-color: @popover-arrow-outer-color;
top: -@popover-arrow-outer-width;
&:after {
content: " ";
top: 1px;
margin-left: -@popover-arrow-width;
border-top-width: 0;
border-bottom-color: @popover-arrow-color;
}
}
}
&.bottomLeft > .arrow {
left: @arrow_position;
margin-left: 0;
}
&.bottomRight > .arrow {
left: auto;
right: @arrow_position;
margin-left: 0;
}
&.left, &.leftBottom, &.leftTop {
> .arrow {
top: 50%;
right: -@popover-arrow-outer-width;
margin-top: -@popover-arrow-outer-width;
border-right-width: 0;
border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback
border-left-color: @popover-arrow-outer-color;
&:after {
content: " ";
right: 1px;
border-right-width: 0;
border-left-color: @popover-arrow-color;
bottom: -@popover-arrow-width;
}
}
}
&.leftBottom > .arrow {
top: @arrow_position;
margin-top: 0;
}
&.leftTop > .arrow {
top: auto;
bottom: @arrow_position;
margin-top: 0;
}
}
================================================
FILE: src/less/variables.less
================================================
// Iconpicker variables:
@item_size: 14px;
@hover_bg: #eee;
@num_cols: 4;
@num_rows: 5;
@base_spacing: 12px;
@scrollbar_compensation: @base_spacing + 6px;
@picker_width: (@item_size * @num_cols) + (@num_cols * @base_spacing * (@num_cols - 1)) + @base_spacing + @scrollbar_compensation;
@row_outer_height: (@item_size + (@base_spacing * 3)) - 1px;
@title_size: (@base_spacing + @item_size) / 2;
@border_color: #ddd;
@arrow_position: 8px; // arrow position when not centered (either for left, right, top or bottom)
//== Popovers
//
//##
//** Popover body background color
@popover-bg: #fff;
//** Popover maximum width
@popover-max-width: 276px;
//** Popover border color
@popover-border-color: rgba(0, 0, 0, .2);
//** Popover fallback border color
@popover-fallback-border-color: #ccc;
//** Popover title background color
@popover-title-bg: darken(@popover-bg, 3%);
//** Popover arrow width
@popover-arrow-width: 10px;
//** Popover arrow color
@popover-arrow-color: #fff;
//** Popover outer arrow width
@popover-arrow-outer-width: (@popover-arrow-width + 1);
//** Popover outer arrow color
@popover-arrow-outer-color: fadein(@popover-border-color, 5%);
//** Popover outer arrow fallback color
@popover-arrow-outer-fallback-color: darken(@popover-fallback-border-color, 20%);
// Clearfix
//
// For modern browsers
// 1. The space content is one way to avoid an Opera bug when the
// contenteditable attribute is included anywhere else in the document.
// Otherwise it causes space to appear at the top and bottom of elements
// that are clearfixed.
// 2. The use of `table` rather than `block` is only necessary if using
// `:before` to contain the top-margins of child elements.
//
// Source: http://nicolasgallagher.com/micro-clearfix-hack/
.clearfix() {
&:before,
&:after {
content: " "; // 1
display: table; // 2
}
&:after {
clear: both;
}
}
.outer-border() {
box-shadow: 0 0 0 1px @border_color;
}
//
// Other Bootstrap Variables:
// --------------------------------------------------
//== Colors
//
//## Gray and brand colors for use across Bootstrap.
@gray-darker: lighten(#000, 13.5%); // #222
@gray-dark: lighten(#000, 20%); // #333
@gray: lighten(#000, 33.5%); // #555
@gray-light: lighten(#000, 60%); // #999
@gray-lighter: lighten(#000, 93.5%); // #eee
@brand-primary: #428bca;
@brand-success: #5cb85c;
@brand-info: #5bc0de;
@brand-warning: #f0ad4e;
@brand-danger: #d9534f;
//== Scaffolding
//
// ## Settings for some of the most global styles.
//** Background color for ``.
@body-bg: #fff;
//** Global text color on ``.
@text-color: @gray-dark;
//** Global textual link color.
@link-color: @brand-primary;
//** Link hover color set via `darken()` function.
@link-hover-color: darken(@link-color, 15%);