/home/sylamedg/www/wp-content/themes/neom-blog/assets/fonticonpicker/jquery.fonticonpicker.js
/**
* jQuery fontIconPicker - v2.0.0
*
* An icon picker built on top of font icons and jQuery
*
* http://codeb.it/fontIconPicker
*
* Made by Alessandro Benoit & Swashata
* Under MIT License
*
* {@link https://github.com/micc83/fontIconPicker}
*/
!(function (a) {
"use strict";
function c(c, d) {
(this.element = a(c)),
(this.settings = a.extend({}, b, d)),
this.settings.emptyIcon && this.settings.iconsPerPage--,
(this.iconPicker = a("<div/>", {
class: "icons-selector",
style: "position: relative",
html:
'<div class="selector"><span class="selected-icon"><i class="fa-times-circle-o"></i></span><span class="selector-button"><i class="fip-icon-down-dir"></i></span></div><div class="selector-popup" style="display: none;">' +
(this.settings.hasSearch ? '<div class="selector-search"><input type="text" name="" value="" placeholder="Search icon" class="icons-search-input"/><i class="fip-icon-search"></i></div>' : "") +
'<div class="selector-category">' +
'<select name="" class="icon-category-select" style="display: none">' +
"</select>" +
"</div>" +
'<div class="fip-icons-container"></div>' +
'<div class="selector-footer" style="display:none;">' +
'<span class="selector-pages">1/2</span>' +
'<span class="selector-arrows">' +
'<span class="selector-arrow-left" style="display:none;">' +
'<i class="fip-icon-left-dir"></i>' +
"</span>" +
'<span class="selector-arrow-right">' +
'<i class="fip-icon-right-dir"></i>' +
"</span>" +
"</span>" +
"</div>" +
"</div>",
})),
(this.iconContainer = this.iconPicker.find(".fip-icons-container")),
(this.searchIcon = this.iconPicker.find(".selector-search i")),
(this.iconsSearched = []),
(this.isSearch = !1),
(this.totalPage = 1),
(this.currentPage = 1),
(this.currentIcon = !1),
(this.iconsCount = 0),
(this.open = !1),
(this.searchValues = []),
(this.availableCategoriesSearch = []),
(this.triggerEvent = null),
(this.backupSource = []),
(this.backupSearch = []),
(this.isCategorized = !1),
(this.selectCategory = this.iconPicker.find(".icon-category-select")),
(this.selectedCategory = !1),
(this.availableCategories = []),
(this.unCategorizedKey = null),
this.init();
}
var b = {
theme: "fip-grey",
source: !1,
emptyIcon: !0,
emptyIconValue: "",
iconsPerPage: 20,
hasSearch: !0,
searchSource: !1,
useAttribute: !1,
attributeName: "data-icon",
convertToHex: !0,
allCategoryText: "From all categories",
unCategorizedText: "Uncategorized",
};
(c.prototype = {
init: function () {
this.iconPicker.addClass(this.settings.theme), this.iconPicker.css({ left: -9999 }).appendTo("body");
var b = this.iconPicker.outerHeight(),
c = this.iconPicker.outerWidth();
if (
(this.iconPicker.css({ left: "" }),
this.element.before(this.iconPicker),
this.element.css({
visibility: "hidden",
top: 0,
position: "relative",
zIndex: "-1",
left: "-" + c + "px",
display: "inline-block",
height: b + "px",
width: c + "px",
padding: "0",
margin: "0 -" + c + "px 0 0",
border: "0 none",
verticalAlign: "top",
}),
!this.element.is("select"))
) {
var d = (function () {
for (var a = 3, b = document.createElement("div"), c = b.all || []; (b.innerHTML = "<!--[if gt IE " + ++a + "]><br><![endif]-->"), c[0]; );
return a > 4 ? a : !a;
})(),
e = document.createElement("div");
this.triggerEvent = 9 !== d && "oninput" in e ? ["input", "keyup"] : ["keyup"];
}
!this.settings.source && this.element.is("select")
? ((this.settings.source = []),
(this.settings.searchSource = []),
this.element.find("optgroup").length
? ((this.isCategorized = !0),
this.element.find("optgroup").each(
a.proxy(function (b, c) {
var d = this.availableCategories.length,
e = a("<option />");
e.attr("value", d),
e.html(a(c).attr("label")),
this.selectCategory.append(e),
(this.availableCategories[d] = []),
(this.availableCategoriesSearch[d] = []),
a(c)
.find("option")
.each(
a.proxy(function (b, c) {
var e = a(c).val(),
f = a(c).html();
e && e !== this.settings.emptyIconValue && (this.settings.source.push(e), this.availableCategories[d].push(e), this.searchValues.push(f), this.availableCategoriesSearch[d].push(f));
}, this)
);
}, this)
),
this.element.find("> option").length &&
this.element.find("> option").each(
a.proxy(function (b, c) {
var d = a(c).val(),
e = a(c).html();
return d && "" !== d && d != this.settings.emptyIconValue
? (null === this.unCategorizedKey &&
((this.unCategorizedKey = this.availableCategories.length),
(this.availableCategories[this.unCategorizedKey] = []),
(this.availableCategoriesSearch[this.unCategorizedKey] = []),
a("<option />").attr("value", this.unCategorizedKey).html(this.settings.unCategorizedText).appendTo(this.selectCategory)),
this.settings.source.push(d),
this.availableCategories[this.unCategorizedKey].push(d),
this.searchValues.push(e),
this.availableCategoriesSearch[this.unCategorizedKey].push(e),
void 0)
: !0;
}, this)
))
: this.element.find("option").each(
a.proxy(function (b, c) {
var d = a(c).val(),
e = a(c).html();
d && (this.settings.source.push(d), this.searchValues.push(e));
}, this)
),
(this.backupSource = this.settings.source.slice(0)),
(this.backupSearch = this.searchValues.slice(0)),
this.loadCategories())
: this.initSourceIndex(),
this.loadIcons(),
this.selectCategory.on(
"change keyup",
a.proxy(function (b) {
if (this.isCategorized === !1) return !1;
var c = a(b.currentTarget),
d = c.val();
if ("all" === c.val()) (this.settings.source = this.backupSource), (this.searchValues = this.backupSearch);
else {
var e = parseInt(d, 10);
this.availableCategories[e] && ((this.settings.source = this.availableCategories[e]), (this.searchValues = this.availableCategoriesSearch[e]));
}
this.resetSearch(), this.loadIcons();
}, this)
),
this.iconPicker.find(".selector-button").click(
a.proxy(function () {
this.toggleIconSelector();
}, this)
),
this.iconPicker.find(".selector-arrow-right").click(
a.proxy(function (b) {
this.currentPage < this.totalPage && (this.iconPicker.find(".selector-arrow-left").show(), (this.currentPage = this.currentPage + 1), this.renderIconContainer()),
this.currentPage === this.totalPage && a(b.currentTarget).hide();
}, this)
),
this.iconPicker.find(".selector-arrow-left").click(
a.proxy(function (b) {
this.currentPage > 1 && (this.iconPicker.find(".selector-arrow-right").show(), (this.currentPage = this.currentPage - 1), this.renderIconContainer()), 1 === this.currentPage && a(b.currentTarget).hide();
}, this)
),
this.iconPicker.find(".icons-search-input").keyup(
a.proxy(function (b) {
var c = a(b.currentTarget).val();
return "" === c
? (this.resetSearch(), void 0)
: (this.searchIcon.removeClass("fip-icon-search"),
this.searchIcon.addClass("fip-icon-cancel"),
(this.isSearch = !0),
(this.currentPage = 1),
(this.iconsSearched = []),
a.grep(
this.searchValues,
a.proxy(function (a, b) {
return a.toLowerCase().search(c.toLowerCase()) >= 0 ? ((this.iconsSearched[this.iconsSearched.length] = this.settings.source[b]), !0) : void 0;
}, this)
),
this.renderIconContainer(),
void 0);
}, this)
),
this.iconPicker.find(".selector-search").on(
"click",
".fip-icon-cancel",
a.proxy(function () {
this.iconPicker.find(".icons-search-input").focus(), this.resetSearch();
}, this)
),
this.iconContainer.on(
"click",
".fip-box",
a.proxy(function (b) {
this.setSelectedIcon(a(b.currentTarget).find("i").attr("data-fip-value")), this.toggleIconSelector();
}, this)
),
this.iconPicker.click(function (a) {
return a.stopPropagation(), !1;
}),
a("html").click(
a.proxy(function () {
this.open && this.toggleIconSelector();
}, this)
);
},
initSourceIndex: function () {
if ("object" == typeof this.settings.source) {
if (a.isArray(this.settings.source))
(this.isCategorized = !1),
this.selectCategory.html("").hide(),
(this.settings.source = a.map(this.settings.source, function (a) {
return "function" == typeof a.toString ? a.toString() : a;
})),
(this.searchValues = a.isArray(this.settings.searchSource)
? a.map(this.settings.searchSource, function (a) {
return "function" == typeof a.toString ? a.toString() : a;
})
: this.settings.source.slice(0));
else {
var b = a.extend(!0, {}, this.settings.source);
(this.settings.source = []),
(this.searchValues = []),
(this.availableCategoriesSearch = []),
(this.selectedCategory = !1),
(this.availableCategories = []),
(this.unCategorizedKey = null),
(this.isCategorized = !0),
this.selectCategory.html("");
for (var c in b) {
var d = this.availableCategories.length,
e = a("<option />");
e.attr("value", d), e.html(c), this.selectCategory.append(e), (this.availableCategories[d] = []), (this.availableCategoriesSearch[d] = []);
for (var f in b[c]) {
var g = b[c][f],
h = this.settings.searchSource && this.settings.searchSource[c] && this.settings.searchSource[c][f] ? this.settings.searchSource[c][f] : g;
"function" == typeof g.toString && (g = g.toString()),
g && g !== this.settings.emptyIconValue && (this.settings.source.push(g), this.availableCategories[d].push(g), this.searchValues.push(h), this.availableCategoriesSearch[d].push(h));
}
}
}
(this.backupSource = this.settings.source.slice(0)), (this.backupSearch = this.searchValues.slice(0)), this.loadCategories();
}
},
loadCategories: function () {
this.isCategorized !== !1 && (a('<option value="all">' + this.settings.allCategoryText + "</option>").prependTo(this.selectCategory), this.selectCategory.show().val("all").trigger("change"));
},
loadIcons: function () {
this.iconContainer.html('<i class="fip-icon-spin3 animate-spin loading"></i>'), this.settings.source instanceof Array && this.renderIconContainer();
},
renderIconContainer: function () {
var b,
c = [];
if (
((c = this.isSearch ? this.iconsSearched : this.settings.source),
(this.iconsCount = c.length),
(this.totalPage = Math.ceil(this.iconsCount / this.settings.iconsPerPage)),
this.totalPage > 1 ? this.iconPicker.find(".selector-footer").show() : this.iconPicker.find(".selector-footer").hide(),
this.iconPicker.find(".selector-pages").html(this.currentPage + "/" + this.totalPage + " <em>(" + this.iconsCount + ")</em>"),
(b = (this.currentPage - 1) * this.settings.iconsPerPage),
this.settings.emptyIcon)
)
this.iconContainer.html('<span class="fip-box"><i class="fa fa-times-circle-o" data-fip-value="fa-times-circle-o"></i></span>');
else {
if (c.length < 1) return this.iconContainer.html('<span class="icons-picker-error"><i class="fa fa-times-circle-o" data-fip-value="fa-times-circle-o"></i></span>'), void 0;
this.iconContainer.html("");
}
c = c.slice(b, b + this.settings.iconsPerPage);
for (var e, d = 0; (e = c[d++]); ) {
var f = e;
a.grep(
this.settings.source,
a.proxy(function (a, b) {
return a === e ? ((f = this.searchValues[b]), !0) : !1;
}, this)
),
a("<span/>", {
html:
'<i data-fip-value="' +
e +
'" ' +
(this.settings.useAttribute ? this.settings.attributeName + '="' + (this.settings.convertToHex ? "&#x" + parseInt(e, 10).toString(16) + ";" : e) + '"' : 'class="fa ' + e + '"') +
"></i>",
class: "fip-box",
title: f,
}).appendTo(this.iconContainer);
}
this.settings.emptyIcon || (this.element.val() && -1 !== a.inArray(this.element.val(), this.settings.source))
? -1 === a.inArray(this.element.val(), this.settings.source)
? this.setSelectedIcon()
: this.setSelectedIcon(this.element.val())
: this.setSelectedIcon(c[0]);
},
setHighlightedIcon: function () {
this.iconContainer.find(".current-icon").removeClass("current-icon"),
this.currentIcon &&
this.iconContainer
.find('[data-fip-value="' + this.currentIcon + '"]')
.parent("span")
.addClass("current-icon");
},
setSelectedIcon: function (a) {
if (
("fa-times-circle-o" === a && (a = ""),
this.settings.useAttribute
? a
? this.iconPicker.find(".selected-icon").html("<i " + this.settings.attributeName + '="' + (this.settings.convertToHex ? "&#x" + parseInt(a, 10).toString(16) + ";" : a) + '"></i>')
: this.iconPicker.find(".selected-icon").html('<i class="fa-times-circle-o"></i>')
: this.iconPicker.find(".selected-icon").html('<i class="fa ' + (a || "fa-times-circle-o") + '"></i>'),
this.element.val("" === a ? this.settings.emptyIconValue : a).trigger("change"),
null !== this.triggerEvent)
)
for (var b in this.triggerEvent) this.element.trigger(this.triggerEvent[b]);
(this.currentIcon = a), this.setHighlightedIcon();
},
toggleIconSelector: function () {
(this.open = this.open ? 0 : 1),
this.iconPicker.find(".selector-popup").slideToggle(300),
this.iconPicker.find(".selector-button i").toggleClass("fip-icon-down-dir"),
this.iconPicker.find(".selector-button i").toggleClass("fip-icon-up-dir"),
this.open && this.iconPicker.find(".icons-search-input").focus().select();
},
resetSearch: function () {
this.iconPicker.find(".icons-search-input").val(""),
this.searchIcon.removeClass("fip-icon-cancel"),
this.searchIcon.addClass("fip-icon-search"),
this.iconPicker.find(".selector-arrow-left").hide(),
(this.currentPage = 1),
(this.isSearch = !1),
this.renderIconContainer(),
this.totalPage > 1 && this.iconPicker.find(".selector-arrow-right").show();
},
}),
(a.fn.fontIconPicker = function (b) {
return (
this.each(function () {
a.data(this, "fontIconPicker") || a.data(this, "fontIconPicker", new c(this, b));
}),
(this.setIcons = a.proxy(function (b, c) {
void 0 === b && (b = !1),
void 0 === c && (c = !1),
this.each(function () {
(a.data(this, "fontIconPicker").settings.source = b),
(a.data(this, "fontIconPicker").settings.searchSource = c),
a.data(this, "fontIconPicker").initSourceIndex(),
a.data(this, "fontIconPicker").resetSearch(),
a.data(this, "fontIconPicker").loadIcons();
});
}, this)),
(this.destroyPicker = a.proxy(function () {
this.each(function () {
a.data(this, "fontIconPicker") &&
(a.data(this, "fontIconPicker").iconPicker.remove(),
a.data(this, "fontIconPicker").element.css({ visibility: "", top: "", position: "", zIndex: "", left: "", display: "", height: "", width: "", padding: "", margin: "", border: "", verticalAlign: "" }),
a.removeData(this, "fontIconPicker"));
});
}, this)),
(this.refreshPicker = a.proxy(function (d) {
d || (d = b),
this.destroyPicker(),
this.each(function () {
a.data(this, "fontIconPicker") || a.data(this, "fontIconPicker", new c(this, d));
});
}, this)),
this
);
});
})(jQuery);