'use strict';

Object.defineProperty(exports, '__esModule', { value: true });

var tslib_es6 = require('../../../../../tslib@2.3.0/node_modules/tslib/tslib.es6.js');
var Displayable = require('./Displayable.js');
var Path = require('./Path.js');
var util = require('../core/util.js');
var platform = require('../core/platform.js');
var parseText = require('./helper/parseText.js');

var DEFAULT_TSPAN_STYLE = util.defaults({
    strokeFirst: true,
    font: platform.DEFAULT_FONT,
    x: 0,
    y: 0,
    textAlign: 'left',
    textBaseline: 'top',
    miterLimit: 2
}, Path.DEFAULT_PATH_STYLE);
var TSpan = (function (_super) {
    tslib_es6.__extends(TSpan, _super);
    function TSpan() {
        return _super !== null && _super.apply(this, arguments) || this;
    }
    TSpan.prototype.hasStroke = function () {
        return parseText.tSpanHasStroke(this.style);
    };
    TSpan.prototype.hasFill = function () {
        var style = this.style;
        var fill = style.fill;
        return fill != null && fill !== 'none';
    };
    TSpan.prototype.createStyle = function (obj) {
        return util.createObject(DEFAULT_TSPAN_STYLE, obj);
    };
    TSpan.prototype.setBoundingRect = function (rect) {
        this._rect = rect;
    };
    TSpan.prototype.getBoundingRect = function () {
        if (!this._rect) {
            this._rect = parseText.tSpanCreateBoundingRect(this.style);
        }
        return this._rect;
    };
    TSpan.initDefaultProps = (function () {
        var tspanProto = TSpan.prototype;
        tspanProto.dirtyRectTolerance = 10;
    })();
    return TSpan;
}(Displayable.default));
TSpan.prototype.type = 'tspan';

exports.DEFAULT_TSPAN_STYLE = DEFAULT_TSPAN_STYLE;
exports.default = TSpan;
