packages/kirki-framework/module-webfonts/src/assets/scripts/vendor-typekit/src/modules/google/fontapiurlbuilder.js
goog.provide('webfont.modules.google.FontApiUrlBuilder');
/**
* @constructor
*/
webfont.modules.google.FontApiUrlBuilder = function(apiUrl, text) {
if (apiUrl) {
this.apiUrl_ = apiUrl;
} else {
this.apiUrl_ = webfont.modules.google.FontApiUrlBuilder.DEFAULT_API_URL;
}
this.fontFamilies_ = [];
this.subsets_ = [];
this.text_ = text || '';
};
webfont.modules.google.FontApiUrlBuilder.DEFAULT_API_URL = 'https://fonts.googleapis.com/css';
goog.scope(function () {
var FontApiUrlBuilder = webfont.modules.google.FontApiUrlBuilder;
FontApiUrlBuilder.prototype.setFontFamilies = function(fontFamilies) {
this.parseFontFamilies_(fontFamilies);
};
FontApiUrlBuilder.prototype.parseFontFamilies_ =
function(fontFamilies) {
var length = fontFamilies.length;
for (var i = 0; i < length; i++) {
var elements = fontFamilies[i].split(':');
if (elements.length == 3) {
this.subsets_.push(elements.pop());
}
var joinCharacter = '';
if (elements.length == 2 && elements[1] != ''){
joinCharacter = ':';
}
this.fontFamilies_.push(elements.join(joinCharacter));
}
};
FontApiUrlBuilder.prototype.webSafe = function(string) {
return string.replace(/ /g, '+');
};
FontApiUrlBuilder.prototype.build = function() {
if (this.fontFamilies_.length == 0) {
throw new Error('No fonts to load!');
}
if (this.apiUrl_.indexOf("kit=") != -1) {
return this.apiUrl_;
}
var length = this.fontFamilies_.length;
var sb = [];
for (var i = 0; i < length; i++) {
sb.push(this.webSafe(this.fontFamilies_[i]));
}
var url = this.apiUrl_ + '?family=' + sb.join('%7C'); // '|' escaped.
if (this.subsets_.length > 0) {
url += '&subset=' + this.subsets_.join(',');
}
if (this.text_.length > 0) {
url += '&text=' + encodeURIComponent(this.text_);
}
return url;
};
});