vue-poster-editor
Version: 
A poster editor based on Vue.js
93 lines (70 loc) • 2.91 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
    value: true
});
var _findIndex2 = require('lodash/findIndex');
var _findIndex3 = _interopRequireDefault(_findIndex2);
var _defaultsDeep2 = require('lodash/defaultsDeep');
var _defaultsDeep3 = _interopRequireDefault(_defaultsDeep2);
exports.hexaToRgba = hexaToRgba;
exports.useEffects = useEffects;
var _editorDefaults = require('../editor-defaults');
var _editorDefaults2 = _interopRequireDefault(_editorDefaults);
var _onecolor = require('../utils/onecolor');
var _onecolor2 = _interopRequireDefault(_onecolor);
var _tinycolor = require('tinycolor2');
var _tinycolor2 = _interopRequireDefault(_tinycolor);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function hexaToRgba(val) {
    var defaultVal = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
    if (!val) {
        return defaultVal;
    }
    var color = _onecolor2.default.rgbaParser(val);
    return color ? color.cssa() : defaultVal;
};
function useEffects(type, props) {
    var effects = type === 'text' ? props.textEffects : props.imageEffects;
    if (!props.aggregatedColors || !props.aggregatedColors.length) {
        var aggregatedColors = [];
        effects.forEach(function (effect) {
            ['stroke', 'filling', 'shadow'].forEach(function (key) {
                if (!effect[key] || !effect[key].color) {
                    return;
                }
                var color = aggregatedColors.find(function (color) {
                    return _tinycolor2.default.equals(effect[key].color, color);
                });
                if (!color && effect[key]) {
                    aggregatedColors.push(effect[key].color);
                }
            });
        });
        props.aggregatedColors = aggregatedColors;
    }
    var effectType = type === 'text' ? 'textEffect' : 'imageEffect';
    effects.forEach(function (effect) {
        (0, _defaultsDeep3.default)(effect, _editorDefaults2.default[effectType]);
    });
    effects.forEach(function (effect) {
        ['stroke', 'filling', 'shadow'].forEach(function (key) {
            if (!effect[key] || !effect[key].color) {
                return;
            }
            var linkIndex = (0, _findIndex3.default)(props.aggregatedColors, function (aggregatedColor) {
                return _tinycolor2.default.equals(effect[key].color, aggregatedColor);
            });
            if (linkIndex > -1) {
                effect[key].$linkIndex = linkIndex;
            }
        });
    });
    if (type === 'text') {
        var linkIndex = (0, _findIndex3.default)(props.aggregatedColors, function (aggregatedColor) {
            return _tinycolor2.default.equals(props.color, aggregatedColor);
        });
        if (linkIndex > -1) {
            props.$linkIndex = linkIndex;
        }
    }
};