// 支付宝小程序的context适配
var CAPITALIZED_ATTRS_MAP = {
    fillStyle: 'FillStyle',
    fontSize: 'FontSize',
    globalAlpha: 'GlobalAlpha',
    opacity: 'GlobalAlpha',
    lineCap: 'LineCap',
    lineJoin: 'LineJoin',
    lineWidth: 'LineWidth',
    miterLimit: 'MiterLimit',
    strokeStyle: 'StrokeStyle',
    textAlign: 'TextAlign',
    textBaseline: 'TextBaseline',
    shadow: 'Shadow',
    font: 'Font'
};
function strLen(str) {
    var len = 0;
    for (var i = 0; i < str.length; i++) {
        if (str.charCodeAt(i) > 0 && str.charCodeAt(i) < 128) {
            len++;
        }
        else {
            len += 2;
        }
    }
    return len;
}
export default (function (ctx) {
    Object.keys(CAPITALIZED_ATTRS_MAP).map(function (key) {
        Object.defineProperty(ctx, key, {
            set: function (value) {
                // 记录最新设置的值
                ctx["__" + key] = value;
                if (key === 'shadow' && ctx.setShadow && Array.isArray(value)) {
                    ctx.setShadow(value[0], value[1], value[2], value[3]);
                    return;
                }
                var name = 'set' + CAPITALIZED_ATTRS_MAP[key];
                if (!ctx[name]) {
                    return;
                }
                ctx[name](value);
            }
        });
        return key;
    });
    // 钉钉钉钉小程序框架不支持 measureText 方法，用此方法 mock
    if (!ctx.measureText) {
        ctx.measureText = function (text) {
            var fontSize = 12;
            var font = ctx.__font;
            if (font) {
                fontSize = parseInt(font.split(' ')[3], 10);
            }
            fontSize /= 2;
            return {
                width: strLen(text) * fontSize
            };
        };
    }
    return ctx;
});
