UNPKG

vue-poster-editor

Version:

A poster editor based on Vue.js

113 lines (80 loc) 2.95 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _noop2 = require('lodash/noop'); var _noop3 = _interopRequireDefault(_noop2); var _assign2 = require('lodash/assign'); var _assign3 = _interopRequireDefault(_assign2); var _jquery = require('jquery'); var _jquery2 = _interopRequireDefault(_jquery); var _bluebird = require('bluebird'); var _bluebird2 = _interopRequireDefault(_bluebird); var _fontfaceobserver = require('fontfaceobserver'); var _fontfaceobserver2 = _interopRequireDefault(_fontfaceobserver); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var FontFace = window.FontFace; if (!document.fonts || !document.fonts.load) { FontFace = window.FontFace = function (name, url, descriptors) { this.name = name; this.url = url; (0, _assign3.default)(this, { style: 'normal', weight: 'normal' }, descriptors); var _dfd = this._dfd = {}; _dfd.promise = new _bluebird2.default(function (resolve, reject) { _dfd.resolve = resolve; _dfd.reject = reject; }); }; (0, _assign3.default)(FontFace.prototype, { toCSS: function toCSS() { var css = '@font-face {\n'; css += 'font-family: ' + this.name + ';\n'; css += 'src: ' + this.url + ';'; css += 'font-weight: ' + this.weight + ';'; css += 'font-style: ' + this.style + ';'; css += '}'; return css; }, load: function load() { return this._dfd.promise; } }); var fonts = document.fonts = { ready: _bluebird2.default.resolve(), check: _noop3.default, _fonts: [], size: 0, loadTimeout: 1000, add: function add(fontFace) { var style = fonts.style; if (!style) { style = fonts.style = (0, _jquery2.default)('<style />').appendTo('head'); } if (!(fontFace instanceof FontFace)) { throw new TypeError('Only support FontFace'); } fonts._fonts.push(fontFace); fonts.size = fonts._fonts.length; var dfd = fontFace._dfd; new _fontfaceobserver2.default(fontFace.name).load('BESbswy', fonts.loadTimeout).then(dfd.resolve, function (font) { dfd.resolve(font); }); var cssText = style.html(); cssText += '\n'; cssText += fontFace.toCSS(); style.html(cssText); return fonts; }, load: function load() { var promises = fonts._fonts.map(function (font) { return font.load(); }); return _bluebird2.default.all(promises); } }; }; exports.default = FontFace; module.exports = exports['default'];