You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.1 KiB
73 lines
2.1 KiB
GoogleFontsManager = {
|
|
url: "https://fonts.googleapis.com/css2?display=swap&family=",
|
|
activeFonts: [],
|
|
|
|
updateFontList: function () {
|
|
let googleFontsLink = $("#google-fonts-link", Vvveb.Builder.frameHead);
|
|
|
|
if (this.activeFonts.length == 0) {
|
|
googleFontsLink.remove();
|
|
return;
|
|
}
|
|
|
|
if (googleFontsLink.length < 1) {
|
|
googleFontsLink = $(`<link id="google-fonts-link" href="" rel="stylesheet">`);
|
|
Vvveb.Builder.frameHead.append(googleFontsLink);
|
|
}
|
|
|
|
googleFontsLink.attr("href", this.url + this.activeFonts.join("&family="));
|
|
},
|
|
|
|
removeFont: function (fontName) {
|
|
let index = this.activeFonts.indexOf(fontName);
|
|
this.activeFonts.splice(index, 1);
|
|
this.updateFontList();
|
|
},
|
|
|
|
addFont: function (fontName) {
|
|
this.activeFonts.push(fontName);
|
|
this.updateFontList();
|
|
}
|
|
}
|
|
|
|
|
|
Vvveb.FontsManager.addProvider("google", GoogleFontsManager);
|
|
|
|
let googleFonts = {};
|
|
let googlefontNames = [];
|
|
//load google fonts list and update wyswyg font selector and style tab font-family list
|
|
$.ajax({
|
|
url: Vvveb.baseUrl + "../../resources/google-fonts.json",
|
|
cache: true,
|
|
dataType: "json",
|
|
success: function(data) {
|
|
//let json = JSON.parse(data);
|
|
googleFonts = data ;
|
|
//let fontSelect = $("#font-familly");
|
|
|
|
let fontSelect = $("<optgroup label='Google Fonts'></optgroup>");
|
|
for (font in googleFonts) {
|
|
googlefontNames.push({"text":font, "value":font, "data-provider": "google"});
|
|
let option = new Option(font, font);
|
|
option.dataset.provider = "google";
|
|
//option.style.setProperty("font-family", font);
|
|
fontSelect.append(option);
|
|
}
|
|
$("#font-family").append(fontSelect);
|
|
|
|
let list = Vvveb.Components.getProperty("_base", "font-family");
|
|
list.onChange = function (node,value, input, component) {
|
|
let option = input.options[input.selectedIndex];
|
|
Vvveb.FontsManager.addFont(option.dataset.provider, value, node);
|
|
return node;
|
|
};
|
|
|
|
list.data.options.push({optgroup:"Google Fonts"});
|
|
list.data.options = list.data.options.concat(googlefontNames);
|
|
|
|
Vvveb.Components.updateProperty("_base", "font-family", {data:list.data});
|
|
|
|
//update default font list
|
|
fontList = list.data.options;
|
|
}
|
|
});
|