1 line
5.5 KiB
Plaintext
1 line
5.5 KiB
Plaintext
{"version":3,"file":"ObservablePoint.mjs","sources":["../src/ObservablePoint.ts"],"sourcesContent":["import type { IPoint } from './IPoint';\nimport type { IPointData } from './IPointData';\n\nexport interface ObservablePoint extends GlobalMixins.Point, IPoint {}\n\n/**\n * The ObservablePoint object represents a location in a two-dimensional coordinate system, where `x` represents\n * the position on the horizontal axis and `y` represents the position on the vertical axis.\n *\n * An `ObservablePoint` is a point that triggers a callback when the point's position is changed.\n * @memberof PIXI\n */\nexport class ObservablePoint<T = any> implements IPoint\n{\n /** The callback function triggered when `x` and/or `y` are changed */\n public cb: (this: T) => any;\n\n /** The owner of the callback */\n public scope: any;\n\n _x: number;\n _y: number;\n\n /**\n * Creates a new `ObservablePoint`\n * @param cb - callback function triggered when `x` and/or `y` are changed\n * @param scope - owner of callback\n * @param {number} [x=0] - position of the point on the x axis\n * @param {number} [y=0] - position of the point on the y axis\n */\n constructor(cb: (this: T) => any, scope: T, x = 0, y = 0)\n {\n this._x = x;\n this._y = y;\n\n this.cb = cb;\n this.scope = scope;\n }\n\n /**\n * Creates a clone of this point.\n * The callback and scope params can be overridden otherwise they will default\n * to the clone object's values.\n * @override\n * @param cb - The callback function triggered when `x` and/or `y` are changed\n * @param scope - The owner of the callback\n * @returns a copy of this observable point\n */\n clone(cb = this.cb, scope = this.scope): ObservablePoint\n {\n return new ObservablePoint(cb, scope, this._x, this._y);\n }\n\n /**\n * Sets the point to a new `x` and `y` position.\n * If `y` is omitted, both `x` and `y` will be set to `x`.\n * @param {number} [x=0] - position of the point on the x axis\n * @param {number} [y=x] - position of the point on the y axis\n * @returns The observable point instance itself\n */\n set(x = 0, y = x): this\n {\n if (this._x !== x || this._y !== y)\n {\n this._x = x;\n this._y = y;\n this.cb.call(this.scope);\n }\n\n return this;\n }\n\n /**\n * Copies x and y from the given point (`p`)\n * @param p - The point to copy from. Can be any of type that is or extends `IPointData`\n * @returns The observable point instance itself\n */\n copyFrom(p: IPointData): this\n {\n if (this._x !== p.x || this._y !== p.y)\n {\n this._x = p.x;\n this._y = p.y;\n this.cb.call(this.scope);\n }\n\n return this;\n }\n\n /**\n * Copies this point's x and y into that of the given point (`p`)\n * @param p - The point to copy to. Can be any of type that is or extends `IPointData`\n * @returns The point (`p`) with values updated\n */\n copyTo<T extends IPoint>(p: T): T\n {\n p.set(this._x, this._y);\n\n return p;\n }\n\n /**\n * Accepts another point (`p`) and returns `true` if the given point is equal to this point\n * @param p - The point to check\n * @returns Returns `true` if both `x` and `y` are equal\n */\n equals(p: IPointData): boolean\n {\n return (p.x === this._x) && (p.y === this._y);\n }\n\n /** Position of the observable point on the x axis. */\n get x(): number\n {\n return this._x;\n }\n\n set x(value: number)\n {\n if (this._x !== value)\n {\n this._x = value;\n this.cb.call(this.scope);\n }\n }\n\n /** Position of the observable point on the y axis. */\n get y(): number\n {\n return this._y;\n }\n\n set y(value: number)\n {\n if (this._y !== value)\n {\n this._y = value;\n this.cb.call(this.scope);\n }\n }\n}\n\nif (process.env.DEBUG)\n{\n ObservablePoint.prototype.toString = function toString(): string\n {\n return `[@pixi/math:ObservablePoint x=${this.x} y=${this.y} scope=${this.scope}]`;\n };\n}\n"],"names":[],"mappings":"AAYO,MAAM,gBACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBI,YAAY,IAAsB,OAAU,IAAI,GAAG,IAAI,GACvD;AACS,SAAA,KAAK,GACV,KAAK,KAAK,GAEV,KAAK,KAAK,IACV,KAAK,QAAQ;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,KAAK,KAAK,IAAI,QAAQ,KAAK,OACjC;AACI,WAAO,IAAI,gBAAgB,IAAI,OAAO,KAAK,IAAI,KAAK,EAAE;AAAA,EAC1D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,IAAI,IAAI,GAAG,IAAI,GACf;AACI,YAAI,KAAK,OAAO,KAAK,KAAK,OAAO,OAE7B,KAAK,KAAK,GACV,KAAK,KAAK,GACV,KAAK,GAAG,KAAK,KAAK,KAAK,IAGpB;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAS,GACT;AACQ,YAAA,KAAK,OAAO,EAAE,KAAK,KAAK,OAAO,EAAE,OAEjC,KAAK,KAAK,EAAE,GACZ,KAAK,KAAK,EAAE,GACZ,KAAK,GAAG,KAAK,KAAK,KAAK,IAGpB;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAyB,GACzB;AACI,WAAA,EAAE,IAAI,KAAK,IAAI,KAAK,EAAE,GAEf;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,GACP;AACI,WAAQ,EAAE,MAAM,KAAK,MAAQ,EAAE,MAAM,KAAK;AAAA,EAC9C;AAAA;AAAA,EAGA,IAAI,IACJ;AACI,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,EAAE,OACN;AACQ,SAAK,OAAO,UAEZ,KAAK,KAAK,OACV,KAAK,GAAG,KAAK,KAAK,KAAK;AAAA,EAE/B;AAAA;AAAA,EAGA,IAAI,IACJ;AACI,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,EAAE,OACN;AACQ,SAAK,OAAO,UAEZ,KAAK,KAAK,OACV,KAAK,GAAG,KAAK,KAAK,KAAK;AAAA,EAE/B;AACJ;AAII,gBAAgB,UAAU,WAAW,WACrC;AACW,SAAA,iCAAiC,KAAK,CAAC,MAAM,KAAK,CAAC,UAAU,KAAK,KAAK;AAClF;"} |