vue-poster-editor
Version: 
A poster editor based on Vue.js
135 lines (115 loc) • 3.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
    value: true
});
exports.commandValueMap = exports.commandAliasMap = exports.tagMap = exports.styleValueMap = exports.styleMap = exports.CUSTOMIZE_MARK = undefined;
var _onecolor = require('../onecolor');
var _onecolor2 = _interopRequireDefault(_onecolor);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var CUSTOMIZE_MARK = 'data-customize';
var styleMap = reverseSetMap({
    'color': 'color',
    'text-decoration': 'textDecoration',
    'text-decoration-line': 'textDecoration',
    'font-size': 'fontSize',
    'font-family': 'fontFamily',
    'font-weight': 'fontWeight',
    'font-style': 'fontStyle'
});
styleMap.textDecoration = 'text-decoration';
var styleValueMap = {
    'color': function color(value) {
        return _onecolor2.default.cssa(value);
    },
    'font-size': function fontSize(value) {
        return isNaN(value - 0) ? value : value + 'px';
    },
    'fontSize': function fontSize(value) {
        return parseFloat(value);
    },
    'font-weight': resetFontWeightValue,
    'fontWeight': resetFontWeightValue,
    'font-family': function fontFamily(value) {
        return value.replace(/"/g, '').split(',')[0];
    },
    'fontFamily': function fontFamily(value) {
        return value.replace(/"/g, '').split(',')[0];
    }
};
var attrMap = {
    'face': 'fontFamily'
};
var tagMap = {
    'b': { 'fontWeight': 700 },
    'strong': { 'fontWeight': 700 },
    'em': { 'fontStyle': 'italic' },
    'i': { 'fontStyle': 'italic' },
    'font': function font(inheritStyle, elem) {
        var result = {};
        Array.prototype.slice.call(elem.attributes).forEach(function (prop) {
            var _name = attrMap[prop.name] || prop.name;
            result[_name] = prop.value;
        });
        return result;
    },
    'u': function u(inheritStyle) {
        return mergeTextDecoration(inheritStyle, 'underline');
    },
    'strike': function strike(inheritStyle) {
        return mergeTextDecoration(inheritStyle, 'line-through');
    }
};
var commandAliasMap = {
    'fontWeight': 'bold',
    'fontStyle': 'italic',
    'color': 'foreColor',
    'fontFamily': 'fontName'
};
var commandValueMap = {
    'fontSize': function fontSize(value) {
        return parseFloat(value);
    },
    'fontWeight': function fontWeight(value) {
        return value ? 700 : 400;
    },
    'fontStyle': function fontStyle(value) {
        return value ? 'italic' : 'normal';
    },
    'fontFamily': function fontFamily(value) {
        return value.replace(/"/g, '').split(',')[0];
    },
    'color': function color(value) {
        return value;
    },
    'textDecoration': function textDecoration(value) {
        return value;
    }
};
exports.CUSTOMIZE_MARK = CUSTOMIZE_MARK;
exports.styleMap = styleMap;
exports.styleValueMap = styleValueMap;
exports.tagMap = tagMap;
exports.commandAliasMap = commandAliasMap;
exports.commandValueMap = commandValueMap;
function reverseSetMap(map) {
    Object.keys(map).forEach(function (name) {
        map[map[name]] = name;
    });
    return map;
}
function mergeTextDecoration(inheritStyle, value) {
    var oldValue = inheritStyle['textDecoration'];
    if (!oldValue) {
        return { 'textDecoration': value };
    } else if (oldValue.indexOf(value) === -1) {
        return { 'textDecoration': oldValue + ' ' + value };
    }
}
function resetFontWeightValue(value) {
    var map = {
        '700': 700,
        'bold': 700,
        'true': 700
    };
    return map[value] || 400;
}