diff --git a/src/core/const.js b/src/core/const.js index 569d9f9..1853e9b 100644 --- a/src/core/const.js +++ b/src/core/const.js @@ -296,7 +296,7 @@ * @type {RegExp|string} * @example `image.png` */ -export const IMAGE_TYPE = /\.(gif|jpe?g|tiff|png|svg)$/i; +export const URL_FILE_EXTENSION = /\.(\w{3,4})(?:$|\?|#)/i; /** * Regexp for data URI. diff --git a/src/core/const.js b/src/core/const.js index 569d9f9..1853e9b 100644 --- a/src/core/const.js +++ b/src/core/const.js @@ -296,7 +296,7 @@ * @type {RegExp|string} * @example `image.png` */ -export const IMAGE_TYPE = /\.(gif|jpe?g|tiff|png|svg)$/i; +export const URL_FILE_EXTENSION = /\.(\w{3,4})(?:$|\?|#)/i; /** * Regexp for data URI. diff --git a/src/core/textures/BaseTexture.js b/src/core/textures/BaseTexture.js index e8ab42a..cbf1684 100644 --- a/src/core/textures/BaseTexture.js +++ b/src/core/textures/BaseTexture.js @@ -1,5 +1,5 @@ import { - uid, getImageTypeOfUrl, decomposeDataUri, getSvgSize, + uid, getUrlFileExtension, decomposeDataUri, getSvgSize, getResolutionOfUrl, BaseTextureCache, TextureCache, } from '../utils'; import { RESOLUTION, SCALE_MODES, MIPMAP_TEXTURES, WRAP_MODES } from '../const'; @@ -399,7 +399,7 @@ // Check for subType validity const firstSubType = dataUri.subType.split('+')[0]; - imageType = getImageTypeOfUrl(`.${firstSubType}`); + imageType = getUrlFileExtension(`.${firstSubType}`); if (!imageType) { @@ -408,7 +408,7 @@ } else { - imageType = getImageTypeOfUrl(this.imageUrl); + imageType = getUrlFileExtension(this.imageUrl); if (!imageType) { diff --git a/src/core/const.js b/src/core/const.js index 569d9f9..1853e9b 100644 --- a/src/core/const.js +++ b/src/core/const.js @@ -296,7 +296,7 @@ * @type {RegExp|string} * @example `image.png` */ -export const IMAGE_TYPE = /\.(gif|jpe?g|tiff|png|svg)$/i; +export const URL_FILE_EXTENSION = /\.(\w{3,4})(?:$|\?|#)/i; /** * Regexp for data URI. diff --git a/src/core/textures/BaseTexture.js b/src/core/textures/BaseTexture.js index e8ab42a..cbf1684 100644 --- a/src/core/textures/BaseTexture.js +++ b/src/core/textures/BaseTexture.js @@ -1,5 +1,5 @@ import { - uid, getImageTypeOfUrl, decomposeDataUri, getSvgSize, + uid, getUrlFileExtension, decomposeDataUri, getSvgSize, getResolutionOfUrl, BaseTextureCache, TextureCache, } from '../utils'; import { RESOLUTION, SCALE_MODES, MIPMAP_TEXTURES, WRAP_MODES } from '../const'; @@ -399,7 +399,7 @@ // Check for subType validity const firstSubType = dataUri.subType.split('+')[0]; - imageType = getImageTypeOfUrl(`.${firstSubType}`); + imageType = getUrlFileExtension(`.${firstSubType}`); if (!imageType) { @@ -408,7 +408,7 @@ } else { - imageType = getImageTypeOfUrl(this.imageUrl); + imageType = getUrlFileExtension(this.imageUrl); if (!imageType) { diff --git a/src/core/utils/index.js b/src/core/utils/index.js index 4413edf..0d8a7ff 100644 --- a/src/core/utils/index.js +++ b/src/core/utils/index.js @@ -1,4 +1,4 @@ -import { RETINA_PREFIX, DATA_URI, IMAGE_TYPE, SVG_SIZE, VERSION } from '../const'; +import { RETINA_PREFIX, DATA_URI, URL_FILE_EXTENSION, SVG_SIZE, VERSION } from '../const'; import EventEmitter from 'eventemitter3'; import pluginTarget from './pluginTarget'; @@ -129,9 +129,9 @@ * @param {string} url - the image path * @return {string|undefined} image extension */ -export function getImageTypeOfUrl(url) +export function getUrlFileExtension(url) { - const extension = IMAGE_TYPE.exec(url); + const extension = URL_FILE_EXTENSION.exec(url); if (extension) { diff --git a/src/core/const.js b/src/core/const.js index 569d9f9..1853e9b 100644 --- a/src/core/const.js +++ b/src/core/const.js @@ -296,7 +296,7 @@ * @type {RegExp|string} * @example `image.png` */ -export const IMAGE_TYPE = /\.(gif|jpe?g|tiff|png|svg)$/i; +export const URL_FILE_EXTENSION = /\.(\w{3,4})(?:$|\?|#)/i; /** * Regexp for data URI. diff --git a/src/core/textures/BaseTexture.js b/src/core/textures/BaseTexture.js index e8ab42a..cbf1684 100644 --- a/src/core/textures/BaseTexture.js +++ b/src/core/textures/BaseTexture.js @@ -1,5 +1,5 @@ import { - uid, getImageTypeOfUrl, decomposeDataUri, getSvgSize, + uid, getUrlFileExtension, decomposeDataUri, getSvgSize, getResolutionOfUrl, BaseTextureCache, TextureCache, } from '../utils'; import { RESOLUTION, SCALE_MODES, MIPMAP_TEXTURES, WRAP_MODES } from '../const'; @@ -399,7 +399,7 @@ // Check for subType validity const firstSubType = dataUri.subType.split('+')[0]; - imageType = getImageTypeOfUrl(`.${firstSubType}`); + imageType = getUrlFileExtension(`.${firstSubType}`); if (!imageType) { @@ -408,7 +408,7 @@ } else { - imageType = getImageTypeOfUrl(this.imageUrl); + imageType = getUrlFileExtension(this.imageUrl); if (!imageType) { diff --git a/src/core/utils/index.js b/src/core/utils/index.js index 4413edf..0d8a7ff 100644 --- a/src/core/utils/index.js +++ b/src/core/utils/index.js @@ -1,4 +1,4 @@ -import { RETINA_PREFIX, DATA_URI, IMAGE_TYPE, SVG_SIZE, VERSION } from '../const'; +import { RETINA_PREFIX, DATA_URI, URL_FILE_EXTENSION, SVG_SIZE, VERSION } from '../const'; import EventEmitter from 'eventemitter3'; import pluginTarget from './pluginTarget'; @@ -129,9 +129,9 @@ * @param {string} url - the image path * @return {string|undefined} image extension */ -export function getImageTypeOfUrl(url) +export function getUrlFileExtension(url) { - const extension = IMAGE_TYPE.exec(url); + const extension = URL_FILE_EXTENSION.exec(url); if (extension) { diff --git a/src/deprecation.js b/src/deprecation.js index ddd472d..40ef4f5 100644 --- a/src/deprecation.js +++ b/src/deprecation.js @@ -83,6 +83,7 @@ * @deprecated since version 3.0.0 */ Stage: { + enumerable: true, get() { warn('You do not need to use a PIXI Stage any more, you can simply render any container.'); @@ -100,6 +101,7 @@ * @deprecated since version 3.0.0 */ DisplayObjectContainer: { + enumerable: true, get() { warn('DisplayObjectContainer has been shortened to Container, please use Container from now on.'); @@ -117,6 +119,7 @@ * @deprecated since version 3.0.0 */ Strip: { + enumerable: true, get() { warn('The Strip class has been renamed to Mesh and moved to mesh.Mesh, please use mesh.Mesh from now on.'); @@ -134,6 +137,7 @@ * @deprecated since version 3.0.0 */ Rope: { + enumerable: true, get() { warn('The Rope class has been moved to mesh.Rope, please use mesh.Rope from now on.'); @@ -151,6 +155,7 @@ * @deprecated since version 4.0.0 */ ParticleContainer: { + enumerable: true, get() { warn('The ParticleContainer class has been moved to particles.ParticleContainer, ' @@ -169,6 +174,7 @@ * @deprecated since version 3.0.0 */ MovieClip: { + enumerable: true, get() { warn('The MovieClip class has been moved to extras.MovieClip, please use extras.MovieClip from now on.'); @@ -186,6 +192,7 @@ * @deprecated since version 3.0.0 */ TilingSprite: { + enumerable: true, get() { warn('The TilingSprite class has been moved to extras.TilingSprite, ' @@ -204,6 +211,7 @@ * @deprecated since version 3.0.0 */ BitmapText: { + enumerable: true, get() { warn('The BitmapText class has been moved to extras.BitmapText, ' @@ -222,6 +230,7 @@ * @deprecated since version 3.0.0 */ blendModes: { + enumerable: true, get() { warn('The blendModes has been moved to BLEND_MODES, please use BLEND_MODES from now on.'); @@ -239,6 +248,7 @@ * @deprecated since version 3.0.0 */ scaleModes: { + enumerable: true, get() { warn('The scaleModes has been moved to SCALE_MODES, please use SCALE_MODES from now on.'); @@ -256,6 +266,7 @@ * @deprecated since version 3.0.0 */ BaseTextureCache: { + enumerable: true, get() { warn('The BaseTextureCache class has been moved to utils.BaseTextureCache, ' @@ -274,6 +285,7 @@ * @deprecated since version 3.0.0 */ TextureCache: { + enumerable: true, get() { warn('The TextureCache class has been moved to utils.TextureCache, ' @@ -292,6 +304,7 @@ * @deprecated since version 3.0.6 */ math: { + enumerable: true, get() { warn('The math namespace is deprecated, please access members already accessible on PIXI.'); @@ -308,6 +321,7 @@ * @deprecated since version 3.0.6 */ AbstractFilter: { + enumerable: true, get() { warn('AstractFilter has been renamed to Filter, please use PIXI.Filter'); @@ -324,6 +338,7 @@ * @deprecated since version 4.0.0 */ TransformManual: { + enumerable: true, get() { warn('TransformManual has been renamed to TransformBase, please update your pixi-spine'); diff --git a/src/core/const.js b/src/core/const.js index 569d9f9..1853e9b 100644 --- a/src/core/const.js +++ b/src/core/const.js @@ -296,7 +296,7 @@ * @type {RegExp|string} * @example `image.png` */ -export const IMAGE_TYPE = /\.(gif|jpe?g|tiff|png|svg)$/i; +export const URL_FILE_EXTENSION = /\.(\w{3,4})(?:$|\?|#)/i; /** * Regexp for data URI. diff --git a/src/core/textures/BaseTexture.js b/src/core/textures/BaseTexture.js index e8ab42a..cbf1684 100644 --- a/src/core/textures/BaseTexture.js +++ b/src/core/textures/BaseTexture.js @@ -1,5 +1,5 @@ import { - uid, getImageTypeOfUrl, decomposeDataUri, getSvgSize, + uid, getUrlFileExtension, decomposeDataUri, getSvgSize, getResolutionOfUrl, BaseTextureCache, TextureCache, } from '../utils'; import { RESOLUTION, SCALE_MODES, MIPMAP_TEXTURES, WRAP_MODES } from '../const'; @@ -399,7 +399,7 @@ // Check for subType validity const firstSubType = dataUri.subType.split('+')[0]; - imageType = getImageTypeOfUrl(`.${firstSubType}`); + imageType = getUrlFileExtension(`.${firstSubType}`); if (!imageType) { @@ -408,7 +408,7 @@ } else { - imageType = getImageTypeOfUrl(this.imageUrl); + imageType = getUrlFileExtension(this.imageUrl); if (!imageType) { diff --git a/src/core/utils/index.js b/src/core/utils/index.js index 4413edf..0d8a7ff 100644 --- a/src/core/utils/index.js +++ b/src/core/utils/index.js @@ -1,4 +1,4 @@ -import { RETINA_PREFIX, DATA_URI, IMAGE_TYPE, SVG_SIZE, VERSION } from '../const'; +import { RETINA_PREFIX, DATA_URI, URL_FILE_EXTENSION, SVG_SIZE, VERSION } from '../const'; import EventEmitter from 'eventemitter3'; import pluginTarget from './pluginTarget'; @@ -129,9 +129,9 @@ * @param {string} url - the image path * @return {string|undefined} image extension */ -export function getImageTypeOfUrl(url) +export function getUrlFileExtension(url) { - const extension = IMAGE_TYPE.exec(url); + const extension = URL_FILE_EXTENSION.exec(url); if (extension) { diff --git a/src/deprecation.js b/src/deprecation.js index ddd472d..40ef4f5 100644 --- a/src/deprecation.js +++ b/src/deprecation.js @@ -83,6 +83,7 @@ * @deprecated since version 3.0.0 */ Stage: { + enumerable: true, get() { warn('You do not need to use a PIXI Stage any more, you can simply render any container.'); @@ -100,6 +101,7 @@ * @deprecated since version 3.0.0 */ DisplayObjectContainer: { + enumerable: true, get() { warn('DisplayObjectContainer has been shortened to Container, please use Container from now on.'); @@ -117,6 +119,7 @@ * @deprecated since version 3.0.0 */ Strip: { + enumerable: true, get() { warn('The Strip class has been renamed to Mesh and moved to mesh.Mesh, please use mesh.Mesh from now on.'); @@ -134,6 +137,7 @@ * @deprecated since version 3.0.0 */ Rope: { + enumerable: true, get() { warn('The Rope class has been moved to mesh.Rope, please use mesh.Rope from now on.'); @@ -151,6 +155,7 @@ * @deprecated since version 4.0.0 */ ParticleContainer: { + enumerable: true, get() { warn('The ParticleContainer class has been moved to particles.ParticleContainer, ' @@ -169,6 +174,7 @@ * @deprecated since version 3.0.0 */ MovieClip: { + enumerable: true, get() { warn('The MovieClip class has been moved to extras.MovieClip, please use extras.MovieClip from now on.'); @@ -186,6 +192,7 @@ * @deprecated since version 3.0.0 */ TilingSprite: { + enumerable: true, get() { warn('The TilingSprite class has been moved to extras.TilingSprite, ' @@ -204,6 +211,7 @@ * @deprecated since version 3.0.0 */ BitmapText: { + enumerable: true, get() { warn('The BitmapText class has been moved to extras.BitmapText, ' @@ -222,6 +230,7 @@ * @deprecated since version 3.0.0 */ blendModes: { + enumerable: true, get() { warn('The blendModes has been moved to BLEND_MODES, please use BLEND_MODES from now on.'); @@ -239,6 +248,7 @@ * @deprecated since version 3.0.0 */ scaleModes: { + enumerable: true, get() { warn('The scaleModes has been moved to SCALE_MODES, please use SCALE_MODES from now on.'); @@ -256,6 +266,7 @@ * @deprecated since version 3.0.0 */ BaseTextureCache: { + enumerable: true, get() { warn('The BaseTextureCache class has been moved to utils.BaseTextureCache, ' @@ -274,6 +285,7 @@ * @deprecated since version 3.0.0 */ TextureCache: { + enumerable: true, get() { warn('The TextureCache class has been moved to utils.TextureCache, ' @@ -292,6 +304,7 @@ * @deprecated since version 3.0.6 */ math: { + enumerable: true, get() { warn('The math namespace is deprecated, please access members already accessible on PIXI.'); @@ -308,6 +321,7 @@ * @deprecated since version 3.0.6 */ AbstractFilter: { + enumerable: true, get() { warn('AstractFilter has been renamed to Filter, please use PIXI.Filter'); @@ -324,6 +338,7 @@ * @deprecated since version 4.0.0 */ TransformManual: { + enumerable: true, get() { warn('TransformManual has been renamed to TransformBase, please update your pixi-spine'); diff --git a/src/index.js b/src/index.js index 8124be3..b2075f2 100644 --- a/src/index.js +++ b/src/index.js @@ -1,7 +1,11 @@ -// import polyfills first +// import polyfills import './polyfill'; -// export lib +// export core +export * from './deprecation'; +export * from './core'; + +// export libs import * as accessibility from './accessibility'; import * as extract from './extract'; import * as extras from './extras'; @@ -12,7 +16,6 @@ import * as particles from './particles'; import * as prepare from './prepare'; -export * from './core'; export { accessibility, extract, @@ -25,9 +28,6 @@ prepare, }; -// Mixin the deprecations -import './deprecation'; - /** * A premade instance of the loader that can be used to loader resources. * diff --git a/src/core/const.js b/src/core/const.js index 569d9f9..1853e9b 100644 --- a/src/core/const.js +++ b/src/core/const.js @@ -296,7 +296,7 @@ * @type {RegExp|string} * @example `image.png` */ -export const IMAGE_TYPE = /\.(gif|jpe?g|tiff|png|svg)$/i; +export const URL_FILE_EXTENSION = /\.(\w{3,4})(?:$|\?|#)/i; /** * Regexp for data URI. diff --git a/src/core/textures/BaseTexture.js b/src/core/textures/BaseTexture.js index e8ab42a..cbf1684 100644 --- a/src/core/textures/BaseTexture.js +++ b/src/core/textures/BaseTexture.js @@ -1,5 +1,5 @@ import { - uid, getImageTypeOfUrl, decomposeDataUri, getSvgSize, + uid, getUrlFileExtension, decomposeDataUri, getSvgSize, getResolutionOfUrl, BaseTextureCache, TextureCache, } from '../utils'; import { RESOLUTION, SCALE_MODES, MIPMAP_TEXTURES, WRAP_MODES } from '../const'; @@ -399,7 +399,7 @@ // Check for subType validity const firstSubType = dataUri.subType.split('+')[0]; - imageType = getImageTypeOfUrl(`.${firstSubType}`); + imageType = getUrlFileExtension(`.${firstSubType}`); if (!imageType) { @@ -408,7 +408,7 @@ } else { - imageType = getImageTypeOfUrl(this.imageUrl); + imageType = getUrlFileExtension(this.imageUrl); if (!imageType) { diff --git a/src/core/utils/index.js b/src/core/utils/index.js index 4413edf..0d8a7ff 100644 --- a/src/core/utils/index.js +++ b/src/core/utils/index.js @@ -1,4 +1,4 @@ -import { RETINA_PREFIX, DATA_URI, IMAGE_TYPE, SVG_SIZE, VERSION } from '../const'; +import { RETINA_PREFIX, DATA_URI, URL_FILE_EXTENSION, SVG_SIZE, VERSION } from '../const'; import EventEmitter from 'eventemitter3'; import pluginTarget from './pluginTarget'; @@ -129,9 +129,9 @@ * @param {string} url - the image path * @return {string|undefined} image extension */ -export function getImageTypeOfUrl(url) +export function getUrlFileExtension(url) { - const extension = IMAGE_TYPE.exec(url); + const extension = URL_FILE_EXTENSION.exec(url); if (extension) { diff --git a/src/deprecation.js b/src/deprecation.js index ddd472d..40ef4f5 100644 --- a/src/deprecation.js +++ b/src/deprecation.js @@ -83,6 +83,7 @@ * @deprecated since version 3.0.0 */ Stage: { + enumerable: true, get() { warn('You do not need to use a PIXI Stage any more, you can simply render any container.'); @@ -100,6 +101,7 @@ * @deprecated since version 3.0.0 */ DisplayObjectContainer: { + enumerable: true, get() { warn('DisplayObjectContainer has been shortened to Container, please use Container from now on.'); @@ -117,6 +119,7 @@ * @deprecated since version 3.0.0 */ Strip: { + enumerable: true, get() { warn('The Strip class has been renamed to Mesh and moved to mesh.Mesh, please use mesh.Mesh from now on.'); @@ -134,6 +137,7 @@ * @deprecated since version 3.0.0 */ Rope: { + enumerable: true, get() { warn('The Rope class has been moved to mesh.Rope, please use mesh.Rope from now on.'); @@ -151,6 +155,7 @@ * @deprecated since version 4.0.0 */ ParticleContainer: { + enumerable: true, get() { warn('The ParticleContainer class has been moved to particles.ParticleContainer, ' @@ -169,6 +174,7 @@ * @deprecated since version 3.0.0 */ MovieClip: { + enumerable: true, get() { warn('The MovieClip class has been moved to extras.MovieClip, please use extras.MovieClip from now on.'); @@ -186,6 +192,7 @@ * @deprecated since version 3.0.0 */ TilingSprite: { + enumerable: true, get() { warn('The TilingSprite class has been moved to extras.TilingSprite, ' @@ -204,6 +211,7 @@ * @deprecated since version 3.0.0 */ BitmapText: { + enumerable: true, get() { warn('The BitmapText class has been moved to extras.BitmapText, ' @@ -222,6 +230,7 @@ * @deprecated since version 3.0.0 */ blendModes: { + enumerable: true, get() { warn('The blendModes has been moved to BLEND_MODES, please use BLEND_MODES from now on.'); @@ -239,6 +248,7 @@ * @deprecated since version 3.0.0 */ scaleModes: { + enumerable: true, get() { warn('The scaleModes has been moved to SCALE_MODES, please use SCALE_MODES from now on.'); @@ -256,6 +266,7 @@ * @deprecated since version 3.0.0 */ BaseTextureCache: { + enumerable: true, get() { warn('The BaseTextureCache class has been moved to utils.BaseTextureCache, ' @@ -274,6 +285,7 @@ * @deprecated since version 3.0.0 */ TextureCache: { + enumerable: true, get() { warn('The TextureCache class has been moved to utils.TextureCache, ' @@ -292,6 +304,7 @@ * @deprecated since version 3.0.6 */ math: { + enumerable: true, get() { warn('The math namespace is deprecated, please access members already accessible on PIXI.'); @@ -308,6 +321,7 @@ * @deprecated since version 3.0.6 */ AbstractFilter: { + enumerable: true, get() { warn('AstractFilter has been renamed to Filter, please use PIXI.Filter'); @@ -324,6 +338,7 @@ * @deprecated since version 4.0.0 */ TransformManual: { + enumerable: true, get() { warn('TransformManual has been renamed to TransformBase, please update your pixi-spine'); diff --git a/src/index.js b/src/index.js index 8124be3..b2075f2 100644 --- a/src/index.js +++ b/src/index.js @@ -1,7 +1,11 @@ -// import polyfills first +// import polyfills import './polyfill'; -// export lib +// export core +export * from './deprecation'; +export * from './core'; + +// export libs import * as accessibility from './accessibility'; import * as extract from './extract'; import * as extras from './extras'; @@ -12,7 +16,6 @@ import * as particles from './particles'; import * as prepare from './prepare'; -export * from './core'; export { accessibility, extract, @@ -25,9 +28,6 @@ prepare, }; -// Mixin the deprecations -import './deprecation'; - /** * A premade instance of the loader that can be used to loader resources. * diff --git a/src/interaction/InteractionManager.js b/src/interaction/InteractionManager.js index be01acc..7f429df 100644 --- a/src/interaction/InteractionManager.js +++ b/src/interaction/InteractionManager.js @@ -571,7 +571,7 @@ return; } - core.ticker.shared.remove(this.update); + core.ticker.shared.remove(this.update, this); if (window.navigator.msPointerEnabled) { @@ -623,6 +623,7 @@ window.document.removeEventListener('mousemove', this.onPointerMove, true); this.interactionDOMElement.removeEventListener('mousedown', this.onPointerDown, true); this.interactionDOMElement.removeEventListener('mouseout', this.onPointerOut, true); + this.interactionDOMElement.removeEventListener('mouseover', this.onPointerOver, true); window.removeEventListener('mouseup', this.onPointerUp, true); } } diff --git a/src/core/const.js b/src/core/const.js index 569d9f9..1853e9b 100644 --- a/src/core/const.js +++ b/src/core/const.js @@ -296,7 +296,7 @@ * @type {RegExp|string} * @example `image.png` */ -export const IMAGE_TYPE = /\.(gif|jpe?g|tiff|png|svg)$/i; +export const URL_FILE_EXTENSION = /\.(\w{3,4})(?:$|\?|#)/i; /** * Regexp for data URI. diff --git a/src/core/textures/BaseTexture.js b/src/core/textures/BaseTexture.js index e8ab42a..cbf1684 100644 --- a/src/core/textures/BaseTexture.js +++ b/src/core/textures/BaseTexture.js @@ -1,5 +1,5 @@ import { - uid, getImageTypeOfUrl, decomposeDataUri, getSvgSize, + uid, getUrlFileExtension, decomposeDataUri, getSvgSize, getResolutionOfUrl, BaseTextureCache, TextureCache, } from '../utils'; import { RESOLUTION, SCALE_MODES, MIPMAP_TEXTURES, WRAP_MODES } from '../const'; @@ -399,7 +399,7 @@ // Check for subType validity const firstSubType = dataUri.subType.split('+')[0]; - imageType = getImageTypeOfUrl(`.${firstSubType}`); + imageType = getUrlFileExtension(`.${firstSubType}`); if (!imageType) { @@ -408,7 +408,7 @@ } else { - imageType = getImageTypeOfUrl(this.imageUrl); + imageType = getUrlFileExtension(this.imageUrl); if (!imageType) { diff --git a/src/core/utils/index.js b/src/core/utils/index.js index 4413edf..0d8a7ff 100644 --- a/src/core/utils/index.js +++ b/src/core/utils/index.js @@ -1,4 +1,4 @@ -import { RETINA_PREFIX, DATA_URI, IMAGE_TYPE, SVG_SIZE, VERSION } from '../const'; +import { RETINA_PREFIX, DATA_URI, URL_FILE_EXTENSION, SVG_SIZE, VERSION } from '../const'; import EventEmitter from 'eventemitter3'; import pluginTarget from './pluginTarget'; @@ -129,9 +129,9 @@ * @param {string} url - the image path * @return {string|undefined} image extension */ -export function getImageTypeOfUrl(url) +export function getUrlFileExtension(url) { - const extension = IMAGE_TYPE.exec(url); + const extension = URL_FILE_EXTENSION.exec(url); if (extension) { diff --git a/src/deprecation.js b/src/deprecation.js index ddd472d..40ef4f5 100644 --- a/src/deprecation.js +++ b/src/deprecation.js @@ -83,6 +83,7 @@ * @deprecated since version 3.0.0 */ Stage: { + enumerable: true, get() { warn('You do not need to use a PIXI Stage any more, you can simply render any container.'); @@ -100,6 +101,7 @@ * @deprecated since version 3.0.0 */ DisplayObjectContainer: { + enumerable: true, get() { warn('DisplayObjectContainer has been shortened to Container, please use Container from now on.'); @@ -117,6 +119,7 @@ * @deprecated since version 3.0.0 */ Strip: { + enumerable: true, get() { warn('The Strip class has been renamed to Mesh and moved to mesh.Mesh, please use mesh.Mesh from now on.'); @@ -134,6 +137,7 @@ * @deprecated since version 3.0.0 */ Rope: { + enumerable: true, get() { warn('The Rope class has been moved to mesh.Rope, please use mesh.Rope from now on.'); @@ -151,6 +155,7 @@ * @deprecated since version 4.0.0 */ ParticleContainer: { + enumerable: true, get() { warn('The ParticleContainer class has been moved to particles.ParticleContainer, ' @@ -169,6 +174,7 @@ * @deprecated since version 3.0.0 */ MovieClip: { + enumerable: true, get() { warn('The MovieClip class has been moved to extras.MovieClip, please use extras.MovieClip from now on.'); @@ -186,6 +192,7 @@ * @deprecated since version 3.0.0 */ TilingSprite: { + enumerable: true, get() { warn('The TilingSprite class has been moved to extras.TilingSprite, ' @@ -204,6 +211,7 @@ * @deprecated since version 3.0.0 */ BitmapText: { + enumerable: true, get() { warn('The BitmapText class has been moved to extras.BitmapText, ' @@ -222,6 +230,7 @@ * @deprecated since version 3.0.0 */ blendModes: { + enumerable: true, get() { warn('The blendModes has been moved to BLEND_MODES, please use BLEND_MODES from now on.'); @@ -239,6 +248,7 @@ * @deprecated since version 3.0.0 */ scaleModes: { + enumerable: true, get() { warn('The scaleModes has been moved to SCALE_MODES, please use SCALE_MODES from now on.'); @@ -256,6 +266,7 @@ * @deprecated since version 3.0.0 */ BaseTextureCache: { + enumerable: true, get() { warn('The BaseTextureCache class has been moved to utils.BaseTextureCache, ' @@ -274,6 +285,7 @@ * @deprecated since version 3.0.0 */ TextureCache: { + enumerable: true, get() { warn('The TextureCache class has been moved to utils.TextureCache, ' @@ -292,6 +304,7 @@ * @deprecated since version 3.0.6 */ math: { + enumerable: true, get() { warn('The math namespace is deprecated, please access members already accessible on PIXI.'); @@ -308,6 +321,7 @@ * @deprecated since version 3.0.6 */ AbstractFilter: { + enumerable: true, get() { warn('AstractFilter has been renamed to Filter, please use PIXI.Filter'); @@ -324,6 +338,7 @@ * @deprecated since version 4.0.0 */ TransformManual: { + enumerable: true, get() { warn('TransformManual has been renamed to TransformBase, please update your pixi-spine'); diff --git a/src/index.js b/src/index.js index 8124be3..b2075f2 100644 --- a/src/index.js +++ b/src/index.js @@ -1,7 +1,11 @@ -// import polyfills first +// import polyfills import './polyfill'; -// export lib +// export core +export * from './deprecation'; +export * from './core'; + +// export libs import * as accessibility from './accessibility'; import * as extract from './extract'; import * as extras from './extras'; @@ -12,7 +16,6 @@ import * as particles from './particles'; import * as prepare from './prepare'; -export * from './core'; export { accessibility, extract, @@ -25,9 +28,6 @@ prepare, }; -// Mixin the deprecations -import './deprecation'; - /** * A premade instance of the loader that can be used to loader resources. * diff --git a/src/interaction/InteractionManager.js b/src/interaction/InteractionManager.js index be01acc..7f429df 100644 --- a/src/interaction/InteractionManager.js +++ b/src/interaction/InteractionManager.js @@ -571,7 +571,7 @@ return; } - core.ticker.shared.remove(this.update); + core.ticker.shared.remove(this.update, this); if (window.navigator.msPointerEnabled) { @@ -623,6 +623,7 @@ window.document.removeEventListener('mousemove', this.onPointerMove, true); this.interactionDOMElement.removeEventListener('mousedown', this.onPointerDown, true); this.interactionDOMElement.removeEventListener('mouseout', this.onPointerOut, true); + this.interactionDOMElement.removeEventListener('mouseover', this.onPointerOver, true); window.removeEventListener('mouseup', this.onPointerUp, true); } } diff --git a/test/core/Container.js b/test/core/Container.js old mode 100755 new mode 100644 index e139b07..3713447 --- a/test/core/Container.js +++ b/test/core/Container.js @@ -18,7 +18,7 @@ describe('events', function () { - it('should trigger "added" and "removed" events on it\'s children', function () + it('should trigger "added" and "removed" events on its children', function () { var container = new PIXI.Container(); var child = new PIXI.DisplayObject(); @@ -47,4 +47,87 @@ expect(triggeredRemoved).to.be.true; }); }); + + describe('addChild', function () + { + it('should remove from current parent', function () + { + var parent = new PIXI.Container(); + var container = new PIXI.Container(); + var child = new PIXI.DisplayObject(); + + assertRemovedFromParent(parent, container, child, function () { container.addChild(child); }); + }); + }); + + describe('removeChildAt', function () + { + it('should remove from current parent', function () + { + var parent = new PIXI.Container(); + var child = new PIXI.DisplayObject(); + + assertRemovedFromParent(parent, null, child, function () { parent.removeChildAt(0); }); + }); + }); + + describe('addChildAt', function () + { + it('should allow placements at start', function () + { + var container = new PIXI.Container(); + var child = new PIXI.DisplayObject(); + + container.addChild(new PIXI.DisplayObject()); + container.addChildAt(child, 0); + + expect(container.children.length).to.be.equals(2); + expect(container.children[0]).to.be.equals(child); + }); + + it('should allow placements at end', function () + { + var container = new PIXI.Container(); + var child = new PIXI.DisplayObject(); + + container.addChild(new PIXI.DisplayObject()); + container.addChildAt(child, 1); + + expect(container.children.length).to.be.equals(2); + expect(container.children[1]).to.be.equals(child); + }); + + it('should throw on out-of-bounds', function () + { + var container = new PIXI.Container(); + var child = new PIXI.DisplayObject(); + + container.addChild(new PIXI.DisplayObject()); + + expect(function () { container.addChildAt(child, -1); }).to.throw('The index -1 supplied is out of bounds 1'); + expect(function () { container.addChildAt(child, 2); }).to.throw('The index 2 supplied is out of bounds 1'); + }); + + it('should remove from current parent', function () + { + var parent = new PIXI.Container(); + var container = new PIXI.Container(); + var child = new PIXI.DisplayObject(); + + assertRemovedFromParent(parent, container, child, function () { container.addChildAt(child, 0); }); + }); + }); + + function assertRemovedFromParent(parent, container, child, functionToAssert) + { + parent.addChild(child); + + expect(parent.children.length).to.be.equals(1); + expect(child.parent).to.be.equals(parent); + + functionToAssert(); + + expect(parent.children.length).to.be.equals(0); + expect(child.parent).to.be.equals(container); + } }); diff --git a/src/core/const.js b/src/core/const.js index 569d9f9..1853e9b 100644 --- a/src/core/const.js +++ b/src/core/const.js @@ -296,7 +296,7 @@ * @type {RegExp|string} * @example `image.png` */ -export const IMAGE_TYPE = /\.(gif|jpe?g|tiff|png|svg)$/i; +export const URL_FILE_EXTENSION = /\.(\w{3,4})(?:$|\?|#)/i; /** * Regexp for data URI. diff --git a/src/core/textures/BaseTexture.js b/src/core/textures/BaseTexture.js index e8ab42a..cbf1684 100644 --- a/src/core/textures/BaseTexture.js +++ b/src/core/textures/BaseTexture.js @@ -1,5 +1,5 @@ import { - uid, getImageTypeOfUrl, decomposeDataUri, getSvgSize, + uid, getUrlFileExtension, decomposeDataUri, getSvgSize, getResolutionOfUrl, BaseTextureCache, TextureCache, } from '../utils'; import { RESOLUTION, SCALE_MODES, MIPMAP_TEXTURES, WRAP_MODES } from '../const'; @@ -399,7 +399,7 @@ // Check for subType validity const firstSubType = dataUri.subType.split('+')[0]; - imageType = getImageTypeOfUrl(`.${firstSubType}`); + imageType = getUrlFileExtension(`.${firstSubType}`); if (!imageType) { @@ -408,7 +408,7 @@ } else { - imageType = getImageTypeOfUrl(this.imageUrl); + imageType = getUrlFileExtension(this.imageUrl); if (!imageType) { diff --git a/src/core/utils/index.js b/src/core/utils/index.js index 4413edf..0d8a7ff 100644 --- a/src/core/utils/index.js +++ b/src/core/utils/index.js @@ -1,4 +1,4 @@ -import { RETINA_PREFIX, DATA_URI, IMAGE_TYPE, SVG_SIZE, VERSION } from '../const'; +import { RETINA_PREFIX, DATA_URI, URL_FILE_EXTENSION, SVG_SIZE, VERSION } from '../const'; import EventEmitter from 'eventemitter3'; import pluginTarget from './pluginTarget'; @@ -129,9 +129,9 @@ * @param {string} url - the image path * @return {string|undefined} image extension */ -export function getImageTypeOfUrl(url) +export function getUrlFileExtension(url) { - const extension = IMAGE_TYPE.exec(url); + const extension = URL_FILE_EXTENSION.exec(url); if (extension) { diff --git a/src/deprecation.js b/src/deprecation.js index ddd472d..40ef4f5 100644 --- a/src/deprecation.js +++ b/src/deprecation.js @@ -83,6 +83,7 @@ * @deprecated since version 3.0.0 */ Stage: { + enumerable: true, get() { warn('You do not need to use a PIXI Stage any more, you can simply render any container.'); @@ -100,6 +101,7 @@ * @deprecated since version 3.0.0 */ DisplayObjectContainer: { + enumerable: true, get() { warn('DisplayObjectContainer has been shortened to Container, please use Container from now on.'); @@ -117,6 +119,7 @@ * @deprecated since version 3.0.0 */ Strip: { + enumerable: true, get() { warn('The Strip class has been renamed to Mesh and moved to mesh.Mesh, please use mesh.Mesh from now on.'); @@ -134,6 +137,7 @@ * @deprecated since version 3.0.0 */ Rope: { + enumerable: true, get() { warn('The Rope class has been moved to mesh.Rope, please use mesh.Rope from now on.'); @@ -151,6 +155,7 @@ * @deprecated since version 4.0.0 */ ParticleContainer: { + enumerable: true, get() { warn('The ParticleContainer class has been moved to particles.ParticleContainer, ' @@ -169,6 +174,7 @@ * @deprecated since version 3.0.0 */ MovieClip: { + enumerable: true, get() { warn('The MovieClip class has been moved to extras.MovieClip, please use extras.MovieClip from now on.'); @@ -186,6 +192,7 @@ * @deprecated since version 3.0.0 */ TilingSprite: { + enumerable: true, get() { warn('The TilingSprite class has been moved to extras.TilingSprite, ' @@ -204,6 +211,7 @@ * @deprecated since version 3.0.0 */ BitmapText: { + enumerable: true, get() { warn('The BitmapText class has been moved to extras.BitmapText, ' @@ -222,6 +230,7 @@ * @deprecated since version 3.0.0 */ blendModes: { + enumerable: true, get() { warn('The blendModes has been moved to BLEND_MODES, please use BLEND_MODES from now on.'); @@ -239,6 +248,7 @@ * @deprecated since version 3.0.0 */ scaleModes: { + enumerable: true, get() { warn('The scaleModes has been moved to SCALE_MODES, please use SCALE_MODES from now on.'); @@ -256,6 +266,7 @@ * @deprecated since version 3.0.0 */ BaseTextureCache: { + enumerable: true, get() { warn('The BaseTextureCache class has been moved to utils.BaseTextureCache, ' @@ -274,6 +285,7 @@ * @deprecated since version 3.0.0 */ TextureCache: { + enumerable: true, get() { warn('The TextureCache class has been moved to utils.TextureCache, ' @@ -292,6 +304,7 @@ * @deprecated since version 3.0.6 */ math: { + enumerable: true, get() { warn('The math namespace is deprecated, please access members already accessible on PIXI.'); @@ -308,6 +321,7 @@ * @deprecated since version 3.0.6 */ AbstractFilter: { + enumerable: true, get() { warn('AstractFilter has been renamed to Filter, please use PIXI.Filter'); @@ -324,6 +338,7 @@ * @deprecated since version 4.0.0 */ TransformManual: { + enumerable: true, get() { warn('TransformManual has been renamed to TransformBase, please update your pixi-spine'); diff --git a/src/index.js b/src/index.js index 8124be3..b2075f2 100644 --- a/src/index.js +++ b/src/index.js @@ -1,7 +1,11 @@ -// import polyfills first +// import polyfills import './polyfill'; -// export lib +// export core +export * from './deprecation'; +export * from './core'; + +// export libs import * as accessibility from './accessibility'; import * as extract from './extract'; import * as extras from './extras'; @@ -12,7 +16,6 @@ import * as particles from './particles'; import * as prepare from './prepare'; -export * from './core'; export { accessibility, extract, @@ -25,9 +28,6 @@ prepare, }; -// Mixin the deprecations -import './deprecation'; - /** * A premade instance of the loader that can be used to loader resources. * diff --git a/src/interaction/InteractionManager.js b/src/interaction/InteractionManager.js index be01acc..7f429df 100644 --- a/src/interaction/InteractionManager.js +++ b/src/interaction/InteractionManager.js @@ -571,7 +571,7 @@ return; } - core.ticker.shared.remove(this.update); + core.ticker.shared.remove(this.update, this); if (window.navigator.msPointerEnabled) { @@ -623,6 +623,7 @@ window.document.removeEventListener('mousemove', this.onPointerMove, true); this.interactionDOMElement.removeEventListener('mousedown', this.onPointerDown, true); this.interactionDOMElement.removeEventListener('mouseout', this.onPointerOut, true); + this.interactionDOMElement.removeEventListener('mouseover', this.onPointerOver, true); window.removeEventListener('mouseup', this.onPointerUp, true); } } diff --git a/test/core/Container.js b/test/core/Container.js old mode 100755 new mode 100644 index e139b07..3713447 --- a/test/core/Container.js +++ b/test/core/Container.js @@ -18,7 +18,7 @@ describe('events', function () { - it('should trigger "added" and "removed" events on it\'s children', function () + it('should trigger "added" and "removed" events on its children', function () { var container = new PIXI.Container(); var child = new PIXI.DisplayObject(); @@ -47,4 +47,87 @@ expect(triggeredRemoved).to.be.true; }); }); + + describe('addChild', function () + { + it('should remove from current parent', function () + { + var parent = new PIXI.Container(); + var container = new PIXI.Container(); + var child = new PIXI.DisplayObject(); + + assertRemovedFromParent(parent, container, child, function () { container.addChild(child); }); + }); + }); + + describe('removeChildAt', function () + { + it('should remove from current parent', function () + { + var parent = new PIXI.Container(); + var child = new PIXI.DisplayObject(); + + assertRemovedFromParent(parent, null, child, function () { parent.removeChildAt(0); }); + }); + }); + + describe('addChildAt', function () + { + it('should allow placements at start', function () + { + var container = new PIXI.Container(); + var child = new PIXI.DisplayObject(); + + container.addChild(new PIXI.DisplayObject()); + container.addChildAt(child, 0); + + expect(container.children.length).to.be.equals(2); + expect(container.children[0]).to.be.equals(child); + }); + + it('should allow placements at end', function () + { + var container = new PIXI.Container(); + var child = new PIXI.DisplayObject(); + + container.addChild(new PIXI.DisplayObject()); + container.addChildAt(child, 1); + + expect(container.children.length).to.be.equals(2); + expect(container.children[1]).to.be.equals(child); + }); + + it('should throw on out-of-bounds', function () + { + var container = new PIXI.Container(); + var child = new PIXI.DisplayObject(); + + container.addChild(new PIXI.DisplayObject()); + + expect(function () { container.addChildAt(child, -1); }).to.throw('The index -1 supplied is out of bounds 1'); + expect(function () { container.addChildAt(child, 2); }).to.throw('The index 2 supplied is out of bounds 1'); + }); + + it('should remove from current parent', function () + { + var parent = new PIXI.Container(); + var container = new PIXI.Container(); + var child = new PIXI.DisplayObject(); + + assertRemovedFromParent(parent, container, child, function () { container.addChildAt(child, 0); }); + }); + }); + + function assertRemovedFromParent(parent, container, child, functionToAssert) + { + parent.addChild(child); + + expect(parent.children.length).to.be.equals(1); + expect(child.parent).to.be.equals(parent); + + functionToAssert(); + + expect(parent.children.length).to.be.equals(0); + expect(child.parent).to.be.equals(container); + } }); diff --git a/test/core/util.js b/test/core/util.js index 983ac28..c5d7f9d 100755 --- a/test/core/util.js +++ b/test/core/util.js @@ -94,17 +94,81 @@ }); }); - describe('getImageTypeOfUrl', function () + describe('getUrlFileExtension', function () { it('should exist', function () { - expect(PIXI.utils.getImageTypeOfUrl) + expect(PIXI.utils.getUrlFileExtension) .to.be.a('function'); }); - it('should return image type of URL in lower case', function () + it('should return extension of URL in lower case', function () { - var imageType = PIXI.utils.getImageTypeOfUrl('http://foo.bar/baz.PNG'); + var imageType = PIXI.utils.getUrlFileExtension('http://foo.bar/baz.PNG'); + + expect(imageType) + .to.equal('png'); + }); + + it('should return extension of URL when absolute', function () + { + var imageType = PIXI.utils.getUrlFileExtension('/you/baz.PNG'); + + expect(imageType) + .to.equal('png'); + }); + + it('should return extension of URL when relative', function () + { + var imageType = PIXI.utils.getUrlFileExtension('me/baz.PNG'); + + expect(imageType) + .to.equal('png'); + }); + + it('should return extension of URL when just an extension', function () + { + var imageType = PIXI.utils.getUrlFileExtension('.PNG'); + + expect(imageType) + .to.equal('png'); + }); + + it('should work with a hash on the url', function () + { + var imageType = PIXI.utils.getUrlFileExtension('http://foo.bar/baz.PNG#derp'); + + expect(imageType) + .to.equal('png'); + }); + + it('should work with a hash path on the url', function () + { + var imageType = PIXI.utils.getUrlFileExtension('http://foo.bar/baz.PNG#derp/this/is/a/path/me.jpg'); + + expect(imageType) + .to.equal('png'); + }); + + it('should work with a query string on the url', function () + { + var imageType = PIXI.utils.getUrlFileExtension('http://foo.bar/baz.PNG?v=1&file=me.jpg'); + + expect(imageType) + .to.equal('png'); + }); + + it('should work with a hash and query string on the url', function () + { + var imageType = PIXI.utils.getUrlFileExtension('http://foo.bar/baz.PNG?v=1&file=me.jpg#not-today'); + + expect(imageType) + .to.equal('png'); + }); + + it('should work with a hash path and query string on the url', function () + { + var imageType = PIXI.utils.getUrlFileExtension('http://foo.bar/baz.PNG?v=1&file=me.jpg#path/self/not-today.svg'); expect(imageType) .to.equal('png');