{"version":3,"file":"Text.mjs","sources":["../../src/animate/Text.ts"],"sourcesContent":["import { ColorMatrixFilter } from '@pixi/filter-color-matrix';\nimport { Text, TextStyleAlign } from '@pixi/text';\nimport { Graphics } from '@pixi/graphics';\nimport { Sprite } from '@pixi/sprite';\nimport { utils } from './utils';\n\n// Possible align values\nenum ALIGN_VALUES\n    {\n    center = 0,\n    right = 1,\n    left = -1\n}\n\n// Map of short names to long names\nconst STYLE_PROPS = {\n    o: 'font', // TODO: deprecate in Pixi v4\n    z: 'fontSize',\n    f: 'fontFamily',\n    y: 'fontStyle',\n    g: 'fontWeight',\n    i: 'fill',\n    a: 'align',\n    s: 'stroke',\n    t: 'strokeThickness',\n    w: 'wordWrap',\n    d: 'wordWrapWidth',\n    l: 'lineHeight',\n    h: 'dropShadow',\n    c: 'dropShadowColor',\n    n: 'dropShadowAngle',\n    b: 'dropShadowBlur',\n    p: 'padding',\n    x: 'textBaseline',\n    j: 'lineJoin',\n    m: 'miterLimit',\n    e: 'letterSpacing',\n};\n\n/**\n * Check if a value is undefined, fallback to default value\n * @param value - The value to check\n * @param defaultValue - The default value if value is undefined\n * @return Either the value or the default value\n */\nfunction isUndefinedOr<T>(value: T, defaultValue: T): T\n{\n    return value === undefined ? defaultValue : value;\n}\n\nexport class AnimateText extends Text\n{\n    // **************************\n    //     Text methods\n    // **************************\n\n    /**\n     * Setter for the alignment, also sets the anchor point\n     * to make sure the positioning is correct.\n     * @param align - Either center (0), right (1), left (-1)\n     * @return This instance for chaining\n     */\n    public setAlign(align: 'center' | 'right' | 'left' | 0 | 1 | -1): this\n    {\n        if (typeof align === 'string')\n        {\n            align = ALIGN_VALUES[align];\n        }\n        this.style.align = ALIGN_VALUES[align] as TextStyleAlign || 'left';\n        this.anchor.x = (align + 1) / 2;\n\n        return this;\n    }\n    /**\n     * Shortcut for `setAlign`.\n     */\n    public g = this.setAlign;\n\n    /**\n     * Set the style, a chainable version of style setter\n     * @param style -\n     * @return This instance for chaining.\n     */\n    // TODO: improve typing of style parameter - (needs ITextStyle interface to exist)\n    public setStyle(style: any): this\n    {\n        // Replace short STYLE_PROPS with long names\n        for (const k in STYLE_PROPS)\n        {\n            if ((style as any)[k] !== undefined)\n            {\n                (style as any)[(STYLE_PROPS as any)[k]] = (style as any)[k];\n                delete (style as any)[k];\n            }\n        }\n        this.style = style as any;\n\n        return this;\n    }\n    /**\n     * Shortcut for `setStyle`.\n     */\n    public ss = this.setStyle;\n\n    /**\n     * Initial setting of the drop shadow.\n     * @param color - The color to set\n     * @param angle - The angle of offset, in radians\n     * @param distance - The offset distance\n     * @return This instance for chaining\n     */\n    public setShadow(color: string | number, angle: number, distance: number): this\n    {\n        const style = this.style;\n\n        style.dropShadow = true;\n\n        // Convert color to hex string\n        if (color && typeof color === 'number')\n        {\n            color = `#${color.toString(16)}`;\n        }\n        style.dropShadowColor = isUndefinedOr(color, style.dropShadowColor);\n        style.dropShadowAngle = isUndefinedOr(angle, style.dropShadowAngle);\n        style.dropShadowDistance = isUndefinedOr(distance, style.dropShadowDistance);\n\n        return this;\n    }\n    /**\n     * Shortcut for `setShadow`.\n     */\n    public sh = this.setShadow;\n\n    // **************************\n    //     DisplayObject methods\n    // **************************\n\n    /**\n     * Function to set if this is renderable or not. Useful for setting masks.\n     * @param renderable - Make renderable. Defaults to false.\n     * @return This instance, for chaining.\n     */\n    public setRenderable(renderable?: boolean): this\n    {\n        this.renderable = !!renderable;\n\n        return this;\n    }\n    /**\n     * Shortcut for `setRenderable`.\n     */\n    public re = this.setRenderable;\n\n    /**\n     * Shortcut for `setTransform`.\n     */\n    public t = super.setTransform;\n\n    /**\n     * Setter for mask to be able to chain.\n     * @param mask - The mask shape to use\n     * @return Instance for chaining\n     */\n    public setMask(mask: Graphics | Sprite): this\n    {\n        // According to PIXI, only Graphics and Sprites can\n        // be used as mask, let's ignore everything else, like other\n        // movieclips and displayobjects/containers\n        if (mask)\n        {\n            if (!(mask instanceof Graphics) && !(mask instanceof Sprite))\n            {\n                if (typeof console !== 'undefined' && console.warn)\n                {\n                    console.warn('Warning: Masks can only be PIXI.Graphics or PIXI.Sprite objects.');\n                }\n\n                return this;\n            }\n        }\n        this.mask = mask;\n\n        return this;\n    }\n    /**\n     * Shortcut for `setMask`.\n     */\n    public ma = this.setMask;\n\n    /**\n     * Chainable setter for alpha\n     * @param alpha - The alpha amount to use, from 0 to 1\n     * @return Instance for chaining\n     */\n    public setAlpha(alpha: number): this\n    {\n        this.alpha = alpha;\n\n        return this;\n    }\n    /**\n     * Shortcut for `setAlpha`.\n     */\n    public a = this.setAlpha;\n\n    /**\n     * Set the tint values by color.\n     * @param tint - The color value to tint\n     * @return Object for chaining\n     */\n    public setTint(tint: string | number): this\n    {\n        if (typeof tint === 'string')\n        {\n            tint = utils.hexToUint(tint);\n        }\n        // this.tint = tint\n        // return this;\n        // TODO: Replace with DisplayObject.tint setter\n        // once the functionality is added to Pixi.js, for\n        // now we'll use the slower ColorMatrixFilter to handle\n        // the color transformation\n        const r = (tint >> 16) & 0xFF;\n        const g = (tint >> 8) & 0xFF;\n        const b = tint & 0xFF;\n\n        return this.setColorTransform(r / 255, 0, g / 255, 0, b / 255, 0);\n    }\n    /**\n     * Shortcut for `setTint`.\n     */\n    public i = this.setTint;\n\n    /**\n     * Set additive and multiply color, tinting\n     * @param r - The multiply red value\n     * @param rA - The additive red value\n     * @param g - The multiply green value\n     * @param gA - The additive green value\n     * @param b - The multiply blue value\n     * @param bA - The additive blue value\n     * @return Object for chaining\n     */\n    public setColorTransform(r: number, rA: number, g: number, gA: number, b: number, bA: number): this\n    {\n        const filter = this.colorTransformFilter;\n\n        filter.matrix[0] = r;\n        filter.matrix[4] = rA;\n        filter.matrix[6] = g;\n        filter.matrix[9] = gA;\n        filter.matrix[12] = b;\n        filter.matrix[14] = bA;\n        this.filters = [filter];\n\n        return this;\n    }\n    /**\n     * Shortcut for `setColor`.\n     */\n    public c = this.setColorTransform;\n\n    protected _colorTransformFilter: ColorMatrixFilter;\n    /**\n     * The current default color transforming filter\n     */\n    public set colorTransformFilter(filter: ColorMatrixFilter)\n    {\n        this._colorTransformFilter = filter;\n    }\n    public get colorTransformFilter(): ColorMatrixFilter\n    {\n        return this._colorTransformFilter || new ColorMatrixFilter();\n    }\n}\n"],"names":["ALIGN_VALUES"],"mappings":"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"}