@@ -133,6 +105,41 @@ export default function Version(): JSX.Element
)}
+ {latestVersion && (
+
+
+ Current version (Stable)
+
+
+
+ Here you can find the documentation for current released version.
+
+
+
+
+
+
{latestVersion.version}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )}
+
{pastVersions.length > 0 && (
diff --git a/src/tutorials/dev/gettingStarted/index.ts b/src/tutorials/dev/gettingStarted/index.ts
new file mode 100644
index 000000000..a0b7a6af6
--- /dev/null
+++ b/src/tutorials/dev/gettingStarted/index.ts
@@ -0,0 +1,36 @@
+import code1 from '!!raw-loader!./step1-code';
+import code2 from '!!raw-loader!./step2-code';
+import completedCode2 from '!!raw-loader!./step2-completed-code';
+import code3 from '!!raw-loader!./step3-code';
+import completedCode3 from '!!raw-loader!./step3-completed-code';
+import code4 from '!!raw-loader!./step4-code';
+import type { TutorialStep } from '../..';
+import content1 from './step1-content.md';
+import content2 from './step2-content.md';
+import content3 from './step3-content.md';
+import content4 from './step4-content.md';
+
+export const gettingStartedTutorialSteps: TutorialStep[] = [
+ {
+ header: 'Getting Started',
+ Content: content1,
+ code: code1,
+ },
+ {
+ header: 'Set up something',
+ Content: content2,
+ code: code2,
+ completedCode: completedCode2,
+ },
+ {
+ header: 'Do something',
+ Content: content3,
+ code: code3,
+ completedCode: completedCode3,
+ },
+ {
+ header: 'You did it!',
+ Content: content4,
+ code: code4,
+ },
+];
diff --git a/src/tutorials/dev/gettingStarted/step1-code.js b/src/tutorials/dev/gettingStarted/step1-code.js
new file mode 100644
index 000000000..dce725b33
--- /dev/null
+++ b/src/tutorials/dev/gettingStarted/step1-code.js
@@ -0,0 +1,8 @@
+import * as PIXI from 'pixi.js';
+
+const app = new PIXI.Application({
+ background: '#1099bb',
+ resizeTo: window,
+});
+
+document.body.appendChild(app.view);
diff --git a/src/tutorials/dev/gettingStarted/step1-content.md b/src/tutorials/dev/gettingStarted/step1-content.md
new file mode 100644
index 000000000..46168e89b
--- /dev/null
+++ b/src/tutorials/dev/gettingStarted/step1-content.md
@@ -0,0 +1,15 @@
+# Getting Started
+
+Welcome to the PixiJS tutorial!
+
+Please go through the tutorial steps at your own pace and challenge yourself using the editor on the right hand side. Here PixiJS has already been included as guided under the [Getting Started](/guides/basics/getting-started#loading-pixijs) section. Let's start with the creation of a PixiJS canvas application and add its view to the DOM.
+
+```javascript
+// Create a PixiJS application of type canvas with specify background color and make it resize to the iframe window
+const app = new PIXI.Application() < HTMLCanvasElement > { background: '#1099bb', resizeTo: window };
+
+// Adding the application's view to the DOM
+document.body.appendChild(app.view);
+```
+
+When you are ready, proceed to the next exercise using the _Next >_ button below, or feel free to skip to any exercise using the drop-down menu on the top right hand corner of the card.
diff --git a/src/tutorials/dev/gettingStarted/step2-code.js b/src/tutorials/dev/gettingStarted/step2-code.js
new file mode 100644
index 000000000..dce725b33
--- /dev/null
+++ b/src/tutorials/dev/gettingStarted/step2-code.js
@@ -0,0 +1,8 @@
+import * as PIXI from 'pixi.js';
+
+const app = new PIXI.Application({
+ background: '#1099bb',
+ resizeTo: window,
+});
+
+document.body.appendChild(app.view);
diff --git a/src/tutorials/dev/gettingStarted/step2-completed-code.js b/src/tutorials/dev/gettingStarted/step2-completed-code.js
new file mode 100644
index 000000000..ef428c17d
--- /dev/null
+++ b/src/tutorials/dev/gettingStarted/step2-completed-code.js
@@ -0,0 +1,21 @@
+import * as PIXI from 'pixi.js';
+
+const app = new PIXI.Application({
+ background: '#1099bb',
+ resizeTo: window,
+});
+
+document.body.appendChild(app.view);
+
+// create a new Sprite from an image path
+const bunny = PIXI.Sprite.from('https://pixijs.com/assets/bunny.png');
+
+// add to stage
+app.stage.addChild(bunny);
+
+// center the sprite's anchor point
+bunny.anchor.set(0.5);
+
+// move the sprite to the center of the screen
+bunny.x = app.screen.width / 2;
+bunny.y = app.screen.height / 2;
diff --git a/src/tutorials/dev/gettingStarted/step2-content.md b/src/tutorials/dev/gettingStarted/step2-content.md
new file mode 100644
index 000000000..4e1e4a2cf
--- /dev/null
+++ b/src/tutorials/dev/gettingStarted/step2-content.md
@@ -0,0 +1,29 @@
+# Creating a Sprite
+
+So far all we've been doing is prep work. We haven't actually told PixiJS to draw anything. Let's fix that by adding an image to be displayed.
+
+There are a number of ways to draw images in PixiJS, but the simplest is by using a [Sprite](https://pixijs.download/release/docs/PIXI.Sprite.html). We'll get into the details of how the scene graph works in a later guide, but for now all you need to know is that PixiJS renders a hierarchy of [DisplayObjects](https://pixijs.download/release/docs/PIXI.DisplayObject.html). A Sprite is a type of DisplayObject that wraps a loaded image resource to allow drawing it, scaling it, rotating it, and so forth.
+
+Before PixiJS can render an image, it needs to be loaded. Just like in any web page, image loading happens asynchronously. We'll talk a lot more about resource loading in later guides. For now, we can use a helper method on the PIXI.Sprite class to handle the image loading for us:
+
+```JavaScript
+// Magically load the PNG asynchronously
+const bunny = PIXI.Sprite.from('https://pixijs.com/assets/bunny.png')
+```
+
+Then we need to add our new sprite to the stage. The stage is simply a [Container](https://pixijs.download/release/docs/PIXI.Container.html) that is the root of the scene graph. Every child of the stage container will be rendered every frame. By adding our sprite to the stage, we tell PixiJS's renderer we want to draw it.
+
+```JavaScript
+app.stage.addChild(bunny)
+```
+
+Now let's set the Sprite's anchor and position it so that it's bang on at the center.
+
+```JavaScript
+// center the sprite's anchor point
+bunny.anchor.set(0.5)
+
+// move the sprite to the center of the screen
+bunny.x = app.screen.width / 2
+bunny.y = app.screen.height / 2
+```
diff --git a/src/tutorials/dev/gettingStarted/step3-code.js b/src/tutorials/dev/gettingStarted/step3-code.js
new file mode 100644
index 000000000..9be26c31d
--- /dev/null
+++ b/src/tutorials/dev/gettingStarted/step3-code.js
@@ -0,0 +1,20 @@
+import * as PIXI from 'pixi.js';
+
+const app = new PIXI.Application({
+ background: '#1099bb',
+ resizeTo: window,
+});
+
+document.body.appendChild(app.view);
+
+// create a new Sprite from an image path
+const bunny = PIXI.Sprite.from('https://pixijs.com/assets/bunny.png');
+
+// center the sprite's anchor point
+bunny.anchor.set(0.5);
+
+// move the sprite to the center of the screen
+bunny.x = app.screen.width / 2;
+bunny.y = app.screen.height / 2;
+
+app.stage.addChild(bunny);
diff --git a/src/tutorials/dev/gettingStarted/step3-completed-code.js b/src/tutorials/dev/gettingStarted/step3-completed-code.js
new file mode 100644
index 000000000..945c6ab20
--- /dev/null
+++ b/src/tutorials/dev/gettingStarted/step3-completed-code.js
@@ -0,0 +1,29 @@
+import * as PIXI from 'pixi.js';
+
+const app = new PIXI.Application({
+ background: '#1099bb',
+ resizeTo: window,
+});
+
+document.body.appendChild(app.view);
+
+// create a new Sprite from an image path
+const bunny = PIXI.Sprite.from('https://pixijs.com/assets/bunny.png');
+
+// center the sprite's anchor point
+bunny.anchor.set(0.5);
+
+// move the sprite to the center of the screen
+bunny.x = app.screen.width / 2;
+bunny.y = app.screen.height / 2;
+
+app.stage.addChild(bunny);
+
+// Listen for animate update
+app.ticker.add((delta) =>
+{
+ // just for fun, let's rotate mr rabbit a little
+ // delta is 1 if running at 100% performance
+ // creates frame-independent transformation
+ bunny.rotation += 0.1 * delta;
+});
diff --git a/src/tutorials/dev/gettingStarted/step3-content.md b/src/tutorials/dev/gettingStarted/step3-content.md
new file mode 100644
index 000000000..09ae74098
--- /dev/null
+++ b/src/tutorials/dev/gettingStarted/step3-content.md
@@ -0,0 +1,15 @@
+# Writing an Update Loop
+
+While you _can_ use PixiJS for static content, for most projects you'll want to add animation. Our sample app is actually cranking away, rendering the same sprite in the same place multiple times a second. All we have to do to make the image move is to update its attributes once per frame. To do this, we want to hook into the application's _ticker_. A ticker is a PixiJS object that runs one or more callbacks each frame. Doing so is surprisingly easy. Add the following to the end of your script block:
+
+```javascript
+// Listen for animate update
+app.ticker.add((delta) => {
+ // just for fun, let's rotate mr rabbit a little
+ // delta is 1 if running at 100% performance
+ // creates frame-independent transformation
+ bunny.rotation += 0.1 * delta;
+});
+```
+
+All you need to do is to call `app.ticker.add(...)`, pass it a callback function, and then update your scene in that function. It will get called every frame, and you can move, rotate etc. whatever you'd like to drive your project's animations.
diff --git a/src/tutorials/dev/gettingStarted/step4-code.js b/src/tutorials/dev/gettingStarted/step4-code.js
new file mode 100644
index 000000000..945c6ab20
--- /dev/null
+++ b/src/tutorials/dev/gettingStarted/step4-code.js
@@ -0,0 +1,29 @@
+import * as PIXI from 'pixi.js';
+
+const app = new PIXI.Application({
+ background: '#1099bb',
+ resizeTo: window,
+});
+
+document.body.appendChild(app.view);
+
+// create a new Sprite from an image path
+const bunny = PIXI.Sprite.from('https://pixijs.com/assets/bunny.png');
+
+// center the sprite's anchor point
+bunny.anchor.set(0.5);
+
+// move the sprite to the center of the screen
+bunny.x = app.screen.width / 2;
+bunny.y = app.screen.height / 2;
+
+app.stage.addChild(bunny);
+
+// Listen for animate update
+app.ticker.add((delta) =>
+{
+ // just for fun, let's rotate mr rabbit a little
+ // delta is 1 if running at 100% performance
+ // creates frame-independent transformation
+ bunny.rotation += 0.1 * delta;
+});
diff --git a/src/tutorials/dev/gettingStarted/step4-content.md b/src/tutorials/dev/gettingStarted/step4-content.md
new file mode 100644
index 000000000..f9901c218
--- /dev/null
+++ b/src/tutorials/dev/gettingStarted/step4-content.md
@@ -0,0 +1,3 @@
+# You did it!
+
+Congratulations! Now you are ready for the real world ~
diff --git a/src/tutorials/dev/index.ts b/src/tutorials/dev/index.ts
new file mode 100644
index 000000000..78bf74949
--- /dev/null
+++ b/src/tutorials/dev/index.ts
@@ -0,0 +1,8 @@
+import { gettingStartedTutorialSteps } from './gettingStarted';
+
+export default {
+ gettingStarted: {
+ description: 'Learn the basics of how to use PixiJS.',
+ steps: gettingStartedTutorialSteps,
+ },
+};
diff --git a/src/tutorials/dev/tutorialsData.json b/src/tutorials/dev/tutorialsData.json
new file mode 100644
index 000000000..5edfac93a
--- /dev/null
+++ b/src/tutorials/dev/tutorialsData.json
@@ -0,0 +1 @@
+["gettingStarted"]
diff --git a/src/tutorials/index.ts b/src/tutorials/index.ts
new file mode 100644
index 000000000..29dad746c
--- /dev/null
+++ b/src/tutorials/index.ts
@@ -0,0 +1,26 @@
+import v7x from './v7.3.2/index';
+import dev from './dev/index';
+
+export type TutorialStep = {
+ header: string;
+ Content: string;
+ code: string;
+ completedCode?: string;
+};
+
+export type TutorialEntry = {
+ description: string;
+ thumbnail?: string;
+ steps: TutorialStep[];
+};
+
+// TODO: Use await import to dynamically load versioned content on demand instead?
+const versions: Record> = {
+ '7.3.2': v7x,
+ dev,
+};
+
+export function getTutorialEntry(version: string, key: string)
+{
+ return versions[version]?.[key];
+}
diff --git a/src/tutorials/v7.3.2/gettingStarted/index.ts b/src/tutorials/v7.3.2/gettingStarted/index.ts
index 79b2a054a..a0b7a6af6 100644
--- a/src/tutorials/v7.3.2/gettingStarted/index.ts
+++ b/src/tutorials/v7.3.2/gettingStarted/index.ts
@@ -4,7 +4,7 @@ import completedCode2 from '!!raw-loader!./step2-completed-code';
import code3 from '!!raw-loader!./step3-code';
import completedCode3 from '!!raw-loader!./step3-completed-code';
import code4 from '!!raw-loader!./step4-code';
-import type { TutorialStep } from '@site/src/tutorials/v7.3.2';
+import type { TutorialStep } from '../..';
import content1 from './step1-content.md';
import content2 from './step2-content.md';
import content3 from './step3-content.md';
diff --git a/src/tutorials/v7.3.2/index.ts b/src/tutorials/v7.3.2/index.ts
index 30959e667..78bf74949 100644
--- a/src/tutorials/v7.3.2/index.ts
+++ b/src/tutorials/v7.3.2/index.ts
@@ -1,26 +1,8 @@
import { gettingStartedTutorialSteps } from './gettingStarted';
-export type TutorialStep = {
- header: string;
- Content: string;
- code: string;
- completedCode?: string;
-};
-
-export type TutorialEntry = {
- description: string;
- thumbnail?: string;
- steps: TutorialStep[];
-};
-
-const tutorialsData: Record = {
+export default {
gettingStarted: {
description: 'Learn the basics of how to use PixiJS.',
steps: gettingStartedTutorialSteps,
},
};
-
-export function getTutorialEntry(key: string)
-{
- return tutorialsData[key];
-}
diff --git a/versioned_docs/version-7.3.2/branding.md b/versioned_docs/version-7.3.2/branding.md
new file mode 100644
index 000000000..99b8ab8e8
--- /dev/null
+++ b/versioned_docs/version-7.3.2/branding.md
@@ -0,0 +1,68 @@
+# Branding
+
+Below are links to assorted PixiJS branding assets usable for including on your site, game, or app. All assets here are free-to-use. If you have any questions or requests, please [file an issue](https://github.com/pixijs/pixijs.com/issues/new).
+
+## Banner
+
+This is the banner that is displayed at the top of our [README](https://github.com/pixijs/pixijs/blob/dev/README.md).
+
+![PixiJS Banner](https://files.pixijs.download/branding/pixijs-banner.png)
+
+## Logo
+
+We recommend using the Logo in places where the audience may not be familiar with PixiJS.
+
+### Logo (Dark)
+
+Download: [SVG](https://files.pixijs.download/branding/pixijs-logo-full-dark.svg)
+[PNG](https://files.pixijs.download/branding/pixijs-logo-full-dark.png)
+
+![PixiJS Logo Full Dark](https://files.pixijs.download/branding/pixijs-logo-full-dark.png)
+
+### Logo (Dark, Transparent)
+
+Download: [SVG](https://files.pixijs.download/branding/pixijs-logo-transparent-dark.svg)
+[PNG](https://files.pixijs.download/branding/pixijs-logo-transparent-dark.png)
+
+![PixiJS Logo Full Dark](https://files.pixijs.download/branding/pixijs-logo-transparent-dark.png)
+
+### Logo (Pink)
+
+Download: [SVG](https://files.pixijs.download/branding/pixijs-logo-full-light.svg)
+[PNG](https://files.pixijs.download/branding/pixijs-logo-full-light.png)
+
+![PixiJS Logo Full Light](https://files.pixijs.download/branding/pixijs-logo-full-light.png)
+
+### Logo (Pink, Transparent)
+
+Download: [SVG](https://files.pixijs.download/branding/pixijs-logo-transparent-light.svg)
+[PNG](https://files.pixijs.download/branding/pixijs-logo-transparent-light.png)
+
+![PixiJS Logo Full Light](https://files.pixijs.download/branding/pixijs-logo-transparent-light.png)
+
+## Mark
+
+We recommend using the Mark in places where the audience is someone familiar with the ecosystem, such as PixiJS Discord users, plugin authors, social media followers.
+
+### Mark (Pink, Large)
+
+512px x 512px
+
+Download: [SVG](https://files.pixijs.download/branding/pixijs-logo.svg)
+[PNG](https://files.pixijs.download/branding/pixijs-logo.png)
+
+![PixiJS Logo Full Dark](https://files.pixijs.download/branding/pixijs-logo.png)
+
+### Mark (Pink)
+
+Download: [SVG](https://files.pixijs.download/branding/pixijs-logo-mark-dark.svg)
+[PNG](https://files.pixijs.download/branding/pixijs-logo-mark-dark.png)
+
+![PixiJS Logo Mark Dark](https://files.pixijs.download/branding/pixijs-logo-mark-dark.png)
+
+### Mark (Light)
+
+Download: [SVG](https://files.pixijs.download/branding/pixijs-logo-mark-light.svg)
+[PNG](https://files.pixijs.download/branding/pixijs-logo-mark-light.png)
+
+![PixiJS Logo Mark Light](https://files.pixijs.download/branding/pixijs-logo-mark-light.png)
diff --git a/versioned_docs/version-7.3.2/examples/index.md b/versioned_docs/version-7.3.2/examples/index.md
new file mode 100644
index 000000000..98e22ea4b
--- /dev/null
+++ b/versioned_docs/version-7.3.2/examples/index.md
@@ -0,0 +1,17 @@
+---
+hide_table_of_contents: true
+sidebar_position: 0
+---
+
+# Examples
+
+Welcome to the PixiJS Examples page! Here you can find a variety of demos and code snippets to help you get started with PixiJS.
+
+Check out some of our featured examples below:
+
+- [Basic Container](./basic/container.md)
+- [Blend Modes](./basic/blend-modes.md)
+- [Tiling Sprite](./sprite/tiling-sprite.md)
+- [Animated Sprite](./sprite/animated-sprite-jet.md)
+- [Text](./text/pixi-text.md)
+- [Graphics](./graphics/simple.md)
diff --git a/versioned_docs/version-7.3.2/faq.md b/versioned_docs/version-7.3.2/faq.md
new file mode 100644
index 000000000..01cd259d7
--- /dev/null
+++ b/versioned_docs/version-7.3.2/faq.md
@@ -0,0 +1,40 @@
+# FAQ
+
+## What is PixiJS for?
+
+Everything! Pixi.js is a rendering library that will allow you to create rich,
+interactive graphic experiences, cross-platform applications, and games without
+having to dive into the WebGL API or grapple with the intricacies of browser and
+device compatibility. Killer performance with a clean API, means not only will
+your content be better - but also faster to build!
+
+## Is PixiJS free?
+
+PixiJS is and always will be free and Open Source. That said, financial contributions
+are what make it possible to push PixiJS further, faster. Contributions allow us to
+commission the PixiJS developer community to accelerate feature development and create
+more in-depth documentation. Support Us by making a contribution via Open Collective. Go on! It will be a massive help AND make you feel good about yourself, win win ;)
+
+## Where do I get it?
+
+Visit our GitHub page to download the very latest version of PixiJS. This is the most up-to-date resource for PixiJS and should always be your first port of call to make sure you are using the latest version. Just click the 'Download' link in the navigation.
+
+## How do I get started?
+
+Right here! Take a look through the Resources section for a wealth of information including documentation, forums, tutorials and the Goodboy blog.
+
+## Why should I use PixiJS?
+
+Because you care about speed. PixiJS' #1 mantra has always been speed. We really do feel the need! We do everything we can to make PixiJS as streamlined, efficient and fast as possible, whilst balancing it with offering as many crucial and valuable features as we can.
+
+## Is PixiJS a game engine?
+
+No. PixiJS is what we've come to think of as a "creation engine". Whilst it is extremely good for making games, the core essence of PixiJS is simply moving things around on screens as quickly and efficiently as possible. It does of course happen that it is absolutely brilliant for making games though!
+
+## Who makes PixiJS?
+
+Outside of the highly active PixiJS community, it is primarily maintained by Mat Groves, Technical Partner of our creative agency Goodboy Digital. One of the huge advantages of creating PixiJS within the framework of a working agency is that it means its features are always driven by genuine industry demands and critically are always trialled "in anger" in our cutting-edge games, sites and apps.
+
+## I found a bug. What should I do?
+
+Two things - lets us know via the PixiJS GitHub community and even better yet, if you know how, post a fix! Our Community is stronger in numbers so we're always keen to welcome new contributors into the team to help us shape what PixiJS becomes next.
diff --git a/versioned_docs/version-7.3.2/guides/basics/architecture-overview.md b/versioned_docs/version-7.3.2/guides/basics/architecture-overview.md
new file mode 100644
index 000000000..f74a2ceb7
--- /dev/null
+++ b/versioned_docs/version-7.3.2/guides/basics/architecture-overview.md
@@ -0,0 +1,25 @@
+# Architecture Overview
+
+OK, now that you've gotten a feel for how easy it is to build a PixiJS application, let's get into the specifics. For the rest of the Basics section, we're going to work from the high level down to the details. We'll start with an overview of how PixiJS is put together.
+
+## The Code
+
+Before we get into how the code is layed out, let's talk about where it lives. PixiJS is an open source product hosted on [GitHub](https://github.com/pixijs/pixijs). Like any GitHub repo, you can browse and download the raw source files for each PixiJS class, as well as search existing issues & bugs, and even submit your own. PixiJS is written in a JavaScript variant called [TypeScript](https://www.typescriptlang.org), which enables type-checking in JavaScript via a pre-compile step.
+
+## The Components
+
+PixiJS is a modular rendering engine. Each task required for generating, updating and displaying content is broken out into its own component. Not only does this make the code cleaner, it allows for greater extensibility. Additionally, with the use of the [PixiJS Customize tool](https://pixijs.io/customize/), it's possible to build a custom PixiJS file containing only the subset of features your project needs, saving download size.
+
+Here's a list of the major components that make up PixiJS. Note that this list isn't exhaustive. Additionally, don't worry too much about how each component works. The goal here is to give you a feel for what's under the hood as we start exploring the engine.
+
+### Major Components
+
+| Component | Description |
+| --- | --- |
+| **Renderer** `@pixi/core` | The core of the PixiJS system is the renderer, which displays the scene graph and draws it to the screen. The default renderer for PixiJS is based on WebGL under the hood. |
+| **Container** `@pixi/display` | Main display object which creates a scene graph: the tree of renderable objects to be displayed, such as sprites, graphics and text. See [Scene Graph](scene-graph) for more details. |
+| **Loader** `@pixi/loader` | The loader system provides tools for asynchronously loading resources such as images and audio files. |
+| **Ticker** `@pixi/ticker` | Tickers provide periodic callbacks based on a clock. Your game update logic will generally be run in response to a tick once per frame. You can have multiple tickers in use at one time. |
+| **Application** `@pixi/app` | The Application is a simple helper that wraps a Loader, Ticker and Renderer into a single, convenient easy-to-use object. Great for getting started quickly, prototyping and building simple projects. |
+| **Interaction** `@pixi/interaction` | PixiJS supports both touch and mouse-based interaction - making objects clickable, firing hover events, etc. |
+| **Accessibility** `@pixi/accessibility` | Woven through our display system is a rich set of tools for enabling keyboard and screen-reader accessibility. |
diff --git a/versioned_docs/version-7.3.2/guides/basics/getting-started.md b/versioned_docs/version-7.3.2/guides/basics/getting-started.md
new file mode 100644
index 000000000..8c84ec24d
--- /dev/null
+++ b/versioned_docs/version-7.3.2/guides/basics/getting-started.md
@@ -0,0 +1,176 @@
+# Getting Started
+
+In this section we're going to build the simplest possible PixiJS application. In doing so, we'll walk through the basics of how to build and serve the code.
+
+### Advanced Users
+
+A quick note before we start: this guide is aimed at beginning PixiJS developers who have minimal
+experience developing JavaScript-based applications. If you are a coding veteran, you may find that
+the level of detail here is not helpful. If that's the case, you may want to skim this guide, then
+jump into [how to work with PixiJS and packers](#TODO) like webpack and npm.
+
+### A Note About JavaScript
+
+One final note. The JavaScript universe is currently in transition from old-school JavaScript (ES5) to the newer ES6 flavor:
+
+```javascript
+// ES5
+var x = 5;
+setTimeout(function() { alert(x); }, 1000);
+// ES6
+const x = 5;
+setTimeout(() => alert(x), 1000);
+```
+
+ES6 brings a number of major advantages in terms of clearer syntax, better variable scoping, native class support, etc. By now, all major browsers support it. Given this, our examples in these guides will use ES6. This doesn't mean you can't use PixiJS with ES5 programs! Just mentally substitute "var" for "let/const", expand the shorter function-passing syntax, and everything will run just fine.
+
+### Components of a PixiJS Application
+
+OK! With those notes out of the way, let's get started. There are only a few steps required to write a PixiJS application:
+
+* Create an HTML file
+* Serve the file with a web server
+* Load the PixiJS library
+* Create an [Application](https://pixijs.download/release/docs/PIXI.Application.html)
+* Add the generated view to the DOM
+* Add an image to the stage
+* Write an update loop
+
+Let's walk through them together.
+
+### The HTML File
+
+PixiJS is a JavaScript library that runs in a web page. So the first thing we're going to need is some HTML in a file. In a real PixiJS application, you might want to embed your display within a complex existing page, or you might want your display area to fill the whole page. For this demo, we'll build an empty page to start:
+
+```html
+
+
+
+
+
+
Hello PixiJS
+
+
+```
+
+Create a new folder named `pixi-test`, then copy and paste this HTML into a new file in the `pixi-test` folder named `index.html`.
+
+### Serving the File
+
+You will need to run a web server to develop locally with PixiJS. Web browsers prevent loading local files (such as images and audio files) on locally loaded web pages. If you just double-click your new HTML file, you'll get an error when you try to add a sprite to the PixiJS stage.
+
+Running a web server sounds complex and difficult, but it turns out there are a number of simple web servers that will serve this purpose. For this guide, we're going to be working with [Mongoose](https://mongoose.ws), but you could just as easily use [XAMPP](https://www.apachefriends.org/download.html) or the [http-server Node.js package](https://www.npmjs.com/package/http-server) to serve your files.
+
+To start serving your page with Mongoose, go to [the Mongoose download page](https://mongoose.ws) and download the free server for your operating system. Mongoose defaults to serving the files in the folder it's run in, so copy the downloaded executable into the folder you created in the prior step (`pixi-test`). Double-click the executable, tell your operating system that you trust the file to run, and you'll have a running web server, serving your new folder.
+
+Test that everything is working by opening your browser of choice and entering `http://127.0.0.1:8080` in the location bar. (Mongoose by default serves files on port 8080.) You should see "Hello PixiJS" and nothing else. If you get an error at this step, it means you didn't name your file `index.html` or you mis-configured your web server.
+
+### Loading PixiJS
+
+OK, so we have a web page, and we're serving it. But it's empty. The next step is to actually load the PixiJS library. If we were building a real application, we'd want to download a target version of PixiJS from the [Pixi Github repo](https://github.com/pixijs/pixijs) so that our version wouldn't change on us. But for this sample application, we'll just use the CDN version of PixiJS. Add this line to the `` section of your `index.html` file:
+
+```html
+
+```
+
+This will include a *non-minified* version of the latest version of PixiJS when your page loads, ready to be used. We use the non-minified version because we're in development. In production, you'd want to use `pixi.min.js` instead, which is compressed for faster download and excludes assertions and deprecation warnings that can help when building your project, but take longer to download and run.
+
+### Creating an Application
+
+Loading the library doesn't do much good if we don't *use* it, so the next step is to start up PixiJS. Start by replacing the line `
Hello PixiJS
` with a script tag like so:
+
+```html
+
+```
+
+What we're doing here is adding a JavaScript code block, and in that block creating a new PIXI.Application instance. [Application](https://pixijs.download/release/docs/PIXI.Application.html) is a helper class that simplifies working with PixiJS. It creates the renderer, creates the stage, and starts a ticker for updating. In production, you'll almost certainly want to do these steps yourself for added customization and control - we'll cover doing so in a later guide. For now, the Application class is a perfect way to start playing with PixiJS without worrying about the details.
+
+### Adding the View to the DOM
+
+When the PIXI.Application class creates the renderer, it builds a Canvas element that it will render *to*. In order to see what we draw with PixiJS, we need to add this Canvas element to the web page's DOM. Append the following line to your page's script block:
+
+```JavaScript
+ document.body.appendChild(app.view);
+```
+
+This takes the view created by the application (the Canvas element) and adds it to the body of your page.
+
+### Creating a Sprite
+
+So far all we've been doing is prep work. We haven't actually told PixiJS to draw anything. Let's fix that by adding an image to be displayed.
+
+There are a number of ways to draw images in PixiJS, but the simplest is by using a [Sprite](https://pixijs.download/release/docs/PIXI.Sprite.html). We'll get into the details of how the scene graph works in a later guide, but for now all you need to know is that PixiJS renders a hierarchy of [DisplayObjects](https://pixijs.download/release/docs/PIXI.DisplayObject.html). A Sprite is a type of DisplayObject that wraps a loaded image resource to allow drawing it, scaling it, rotating it, and so forth.
+
+Before PixiJS can render an image, it needs to be loaded. Just like in any web page, image loading happens asynchronously. We'll talk a lot more about resource loading in later guides. For now, we can use a helper method on the PIXI.Sprite class to handle the image loading for us:
+
+```JavaScript
+ // Magically load the PNG asynchronously
+ let sprite = PIXI.Sprite.from('sample.png');
+```
+
+[Download the sample PNG here](/images/sample.png), and save it into your `pixi-test` directory next to your `index.html`.
+
+### Adding the Sprite to the Stage
+
+Finally, we need to add our new sprite to the stage. The stage is simply a [Container](https://pixijs.download/release/docs/PIXI.Container.html) that is the root of the scene graph. Every child of the stage container will be rendered every frame. By adding our sprite to the stage, we tell PixiJS's renderer we want to draw it.
+
+```JavaScript
+ app.stage.addChild(sprite);
+```
+
+### Writing an Update Loop
+
+While you _can_ use PixiJS for static content, for most projects you'll want to add animation. Our sample app is actually cranking away, rendering the same sprite in the same place multiple times a second. All we have to do to make the image move is to update its attributes once per frame. To do this, we want to hook into the application's _ticker_. A ticker is a PixiJS object that runs one or more callbacks each frame. Doing so is surprisingly easy. Add the following to the end of your script block:
+
+```javascript
+ // Add a variable to count up the seconds our demo has been running
+ let elapsed = 0.0;
+ // Tell our application's ticker to run a new callback every frame, passing
+ // in the amount of time that has passed since the last tick
+ app.ticker.add((delta) => {
+ // Add the time to our total elapsed time
+ elapsed += delta;
+ // Update the sprite's X position based on the cosine of our elapsed time. We divide
+ // by 50 to slow the animation down a bit...
+ sprite.x = 100.0 + Math.cos(elapsed/50.0) * 100.0;
+ });
+```
+
+All you need to do is to call `app.ticker.add(...)`, pass it a callback function, and then update your scene in that function. It will get called every frame, and you can move, rotate etc. whatever you'd like to drive your project's animations.
+
+### Putting It All Together
+
+That's it! The simplest PixiJS project!
+
+Here's the whole thing in one place. Check your file and make sure it matches if you're getting errors.
+
+```html
+
+
+
+
+
+
+
+
+
+```
+
+Once you have things working, the next thing to do is to read through the rest of the Basics guides to dig into how all this works in much greater depth.
diff --git a/versioned_docs/version-7.3.2/guides/basics/render-loop.md b/versioned_docs/version-7.3.2/guides/basics/render-loop.md
new file mode 100644
index 000000000..938d4d0b1
--- /dev/null
+++ b/versioned_docs/version-7.3.2/guides/basics/render-loop.md
@@ -0,0 +1,35 @@
+# Render Loop
+
+Now that you understand the major parts of the system, let's look at how these parts work together to get your project onto the screen. Unlike a web page, PixiJS is constantly updating and re-drawing itself, over and over. You update your objects, then PixiJS renders them to the screen, then the process repeats. We call this cycle the render loop.
+
+The majority of any PixiJS project is contained in this update + render cycle. You code the updates, PixiJS handles the rendering.
+
+Let's walk through what happens each frame of the render loop. There are three main steps.
+
+
+
+## Running Ticker Callbacks
+
+The first step is to calculate how much time has elapsed since the last frame, and then call the Application object's ticker callbacks with that time delta. This allows your project's code to animate and update the sprites, etc. on the stage in preparation for rendering.
+
+## Updating the Scene Graph
+
+We'll talk a *lot* more about what a scene graph is and what it's made of in the next guide, but for now, all you need to know is that it contains the things you're drawing - sprites, text, etc. - and that these objects are in a tree-like hierarchy. After you've updated your game objects by moving, rotating and so forth, PixiJS needs to calculate the new positions and state of every object in the scene, before it can start drawing.
+
+
+
+## Rendering the Scene Graph
+
+Now that our game's state has been updated, it's time to draw it to the screen. The rendering system starts with the root of the scene graph (`app.stage`), and starts rendering each object and its children, until all objects have been drawn. No culling or other cleverness is built into this process. If you have lots of objects outside of the visible portion of the stage, you'll want to investigate disabling them as an optimization.
+
+## Frame Rates
+
+A note about frame rates. The render loop can't be run infinitely fast - drawing things to the screen takes time. In addition, it's not generally useful to have a frame updated more than once per screen update (commonly 60fps, but newer monitors can support 144fps and up). Finally, PixiJS runs in the context of a web browser like Chrome or Firefox. The browser itself has to balance the needs of various internal operations with servicing any open tabs. All this to say, determining when to draw a frame is a complex issue.
+
+
+
+In cases where you want to adjust that behavior, you can set the `minFPS` and `maxFPS` attributes on a Ticker to give PixiJS hints as to the range of tick speeds you want to support. Just be aware that due to the complex environment, your project cannot _guarantee_ a given FPS. Use the passed `delta` value in your ticker callbacks to scale any animations to ensure smooth playback.
+
+## Custom Render Loops
+
+What we've just covered is the default render loop provided out of the box by the Application helper class. There are many other ways of creating a render loop that may be helpful for advanced users looking to solve a given problem. While you're prototyping and learning PixiJS, sticking with the Application's provided system is the recommended approach.
diff --git a/versioned_docs/version-7.3.2/guides/basics/scene-graph.md b/versioned_docs/version-7.3.2/guides/basics/scene-graph.md
new file mode 100644
index 000000000..9e4370353
--- /dev/null
+++ b/versioned_docs/version-7.3.2/guides/basics/scene-graph.md
@@ -0,0 +1,152 @@
+# Scene Graph
+
+Every frame, PixiJS is updating and then rendering the scene graph. Let's talk about what's in the scene graph, and how it impacts how you develop your project. If you've built games before, this should all sound very familiar, but if you're coming from HTML and the DOM, it's worth understanding before we get into specific types of objects you can render.
+
+## The Scene Graph Is a Tree
+
+The scene graph's root node is a container maintained by the application, and referenced with `app.stage`. When you add a sprite or other renderable object as a child to the stage, it's added to the scene graph and will be rendered and interactable. Most PixiJS objects can also have children, and so as you build more complex scenes, you will end up with a tree of parent-child relationships, rooted at the app's stage.
+
+(A helpful tool for exploring your project is the [Pixi.js devtools plugin](https://chrome.google.com/webstore/detail/pixijs-devtools/aamddddknhcagpehecnhphigffljadon) for Chrome, which allows you to view and manipulate the scene graph in real time as it's running!)
+
+## Parents and Children
+
+When a parent moves, its children move as well. When a parent is rotated, its children are rotated too. Hide a parent, and the children will also be hidden. If you have a game object that's made up of multiple sprites, you can collect them under a container to treat them as a single object in the world, moving and rotating as one.
+
+
+
+Each frame, PixiJS runs through the scene graph from the root down through all the children to the leaves to calculate each object's final position, rotation, visibility, transparency, etc. If a parent's alpha is set to 0.5 (making it 50% transparent), all its children will start at 50% transparent as well. If a child is then set to 0.5 alpha, it won't be 50% transparent, it will be 0.5 x 0.5 = 0.25 alpha, or 75% transparent. Similarly, an object's position is relative to its parent, so if a parent is set to an x position of 50 pixels, and the child is set to an x position of 100 pixels, it will be drawn at a screen offset of 150 pixels, or 50 + 100.
+
+Here's an example. We'll create three sprites, each a child of the last, and animate their position, rotation, scale and alpha. Even though each sprite's properties are set to the same values, the parent-child chain amplifies each change:
+
+```javascript
+// Create the application helper and add its render target to the page
+const app = new PIXI.Application({ width: 640, height: 360 });
+document.body.appendChild(app.view);
+
+// Add a container to center our sprite stack on the page
+const container = new PIXI.Container();
+container.x = app.screen.width / 2;
+container.y = app.screen.height / 2;
+app.stage.addChild(container);
+
+// Create the 3 sprites, each a child of the last
+const sprites = [];
+let parent = container;
+for (let i = 0; i < 3; i++) {
+ let sprite = PIXI.Sprite.from('assets/images/sample.png');
+ sprite.anchor.set(0.5);
+ parent.addChild(sprite);
+ sprites.push(sprite);
+ parent = sprite;
+}
+
+// Set all sprite's properties to the same value, animated over time
+let elapsed = 0.0;
+app.ticker.add((delta) => {
+ elapsed += delta / 60;
+ const amount = Math.sin(elapsed);
+ const scale = 1.0 + 0.25 * amount;
+ const alpha = 0.75 + 0.25 * amount;
+ const angle = 40 * amount;
+ const x = 75 * amount;
+ for (let i = 0; i < sprites.length; i++) {
+ const sprite = sprites[i];
+ sprite.scale.set(scale);
+ sprite.alpha = alpha;
+ sprite.angle = angle;
+ sprite.x = x;
+ }
+});
+```
+
+The cumulative translation, rotation, scale and skew of any given node in the scene graph is stored in the object's `worldTransform` property. Similarly, the cumulative alpha value is stored in the `worldAlpha` property.
+
+## Render Order
+
+So we have a tree of things to draw. Who gets drawn first?
+
+PixiJS renders the tree from the root down. At each level, the current object is rendered, then each child is rendered in order of insertion. So the second child is rendered on top of the first child, and the third over the second.
+
+Check out this example, with two parent objects A & D, and two children B & C under A:
+
+```javascript
+// Create the application helper and add its render target to the page
+const app = new PIXI.Application({ width: 640, height: 360 });
+document.body.appendChild(app.view);
+
+// Label showing scene graph hierarchy
+const label = new PIXI.Text('Scene Graph:\n\napp.stage\n ┗ A\n ┗ B\n ┗ C\n ┗ D', {fill: '#ffffff'});
+label.position = {x: 300, y: 100};
+app.stage.addChild(label);
+
+// Helper function to create a block of color with a letter
+const letters = [];
+function addLetter(letter, parent, color, pos) {
+ const bg = new PIXI.Sprite(PIXI.Texture.WHITE);
+ bg.width = 100;
+ bg.height = 100;
+ bg.tint = color;
+
+ const text = new PIXI.Text(letter, {fill: "#ffffff"});
+ text.anchor.set(0.5);
+ text.position = {x: 50, y: 50};
+
+ const container = new PIXI.Container();
+ container.position = pos;
+ container.visible = false;
+ container.addChild(bg, text);
+ parent.addChild(container);
+
+ letters.push(container);
+ return container;
+}
+
+// Define 4 letters
+let a = addLetter('A', app.stage, 0xff0000, {x: 100, y: 100});
+let b = addLetter('B', a, 0x00ff00, {x: 20, y: 20});
+let c = addLetter('C', a, 0x0000ff, {x: 20, y: 40});
+let d = addLetter('D', app.stage, 0xff8800, {x: 140, y: 100});
+
+// Display them over time, in order
+let elapsed = 0.0;
+app.ticker.add((delta) => {
+ elapsed += delta / 60.0;
+ if (elapsed >= letters.length) { elapsed = 0.0; }
+ for (let i = 0; i < letters.length; i ++) {
+ letters[i].visible = elapsed >= i;
+ }
+});
+```
+
+If you'd like to re-order a child object, you can use `setChildIndex()`. To add a child at a given point in a parent's list, use `addChildAt()`. Finally, you can enable automatic sorting of an object's children using the `sortableChildren` option combined with setting the `zIndex` property on each child.
+
+## Culling
+
+If you're building a project where a large proportion of your DisplayObject's are off-screen (say, a side-scrolling game), you will want to *cull* those objects. Culling is the process of evaluating if an object (or its children!) is on the screen, and if not, turning off rendering for it. If you don't cull off-screen objects, the renderer will still draw them, even though none of their pixels end up on the screen.
+
+PixiJS doesn't provide built-in support for viewport culling, but you can find 3rd party plugins that might fit your needs. Alternately, if you'd like to build your own culling system, simply run your objects during each tick and set `renderable` to false on any object that doesn't need to be drawn.
+
+## Local vs Global Coordinates
+
+If you add a sprite to the stage, by default it will show up in the top left corner of the screen. That's the origin of the global coordinate space used by PixiJS. If all your objects were children of the stage, that's the only coordinates you'd need to worry about. But once you introduce containers and children, things get more complicated. A child object at [50, 100] is 50 pixels right and 100 pixels down *from its parent*.
+
+We call these two coordinate systems "global" and "local" coordinates. When you use `position.set(x, y)` on an object, you're always working in local coordinates, relative to the object's parent.
+
+The problem is, there are many times when you want to know the global position of an object. For example, if you want to cull offscreen objects to save render time, you need to know if a given child is outside the view rectangle.
+
+To convert from local to global coordinates, you use the `toGlobal()` function. Here's a sample usage:
+
+```javascript
+// Get the global position of an object, relative to the top-left of the screen
+let globalPos = obj.toGlobal(new PIXI.Point(0,0));
+```
+
+This snippet will set `globalPos` to be the global coordinates for the child object, relative to [0, 0] in the global coordinate system.
+
+## Global vs Screen Coordinates
+
+When your project is working with the host operating system or browser, there is a third coordinate system that comes into play - "screen" coordinates (aka "viewport" coordinates). Screen coordinates represent position relative to the top-left of the canvas element that PixiJS is rendering into. Things like the DOM and native mouse click events work in screen space.
+
+Now, in many cases, screen space is equivalent to world space. This is the case if the size of the canvas is the same as the size of the render view specified when you create you PIXI.Application. By default, this will be the case - you'll create for example an 800x600 application window and add it to your HTML page, and it will stay that size. 100 pixels in world coordinates will equal 100 pixels in screen space. BUT! It is common to stretch the rendered view to have it fill the screen, or to render at a lower resolution and up-scale for speed. In that case, the screen size of the canvas element will change (e.g. via CSS), but the underlying render view will *not*, resulting in a mis-match between world coordinates and screen coordinates.
+
+
diff --git a/versioned_docs/version-7.3.2/guides/basics/what-pixijs-is-not.md b/versioned_docs/version-7.3.2/guides/basics/what-pixijs-is-not.md
new file mode 100644
index 000000000..980435b39
--- /dev/null
+++ b/versioned_docs/version-7.3.2/guides/basics/what-pixijs-is-not.md
@@ -0,0 +1,39 @@
+# What PixiJS Is Not
+
+While PixiJS can do many things, there are things it can't do, or that require additional tools to accomplish. Newcomers to PixiJS often struggle to identify which tasks PixiJS can solve, and which require outside solutions. If you're about to start a project, it can be helpful to know if PixiJS is a good fit for your needs. The following list is obviously incomplete - PixiJS is also not, for example, a duck - but it includes many common tasks or features that you might expect us to support.
+
+## PixiJS Is Not ... A Framework
+
+PixiJS is a rendering engine, and it supports additional features such as interaction management that are commonly needed when using a render engine. But it is not a framework like Unity or Phaser. Frameworks are designed to do all the things you'd need to do when building a game - user settings management, music playback, object scripting, art pipeline management... the list goes on. PixiJS is designed to do one thing really well - render graphical content. This lets us focus on keeping up with new technology, and makes downloading PixiJS blazingly fast.
+
+## ... A 3D Renderer
+
+PixiJS is built for 2D. Platformers, adventure games, interactive ads, custom data visualization... all good. But if you want to render 3D models, you might want to check out [babylon.js](https://www.babylonjs.com) or [three.js](https://threejs.org).
+
+## ... A Mobile App
+
+If you're looking to build mobile games, you can do it with PixiJS, but you'll need to use a deployment system like [Apache Cordova](https://cordova.apache.org) if you want access to native bindings. We don't provide access to the camera, location services, notifications, etc.
+
+## ... A UI Library
+
+Building a truly generic UI system is a huge challenge, as anyone who has worked with Unity's UI tools can attest. We've chosen to avoid the complexity to stay true to our core focus on speed. While you can certainly build your own UI using PixiJS's scene graph and interaction manager, we don't ship with a UI library out of the box.
+
+## ... A Data Store
+
+There are many techniques and technologies that you can use to store settings, scores, and other data. Cookies, Web Storage, server-based storage... there are many solutions, each with advantages and disadvantages. You can use any of them with PixiJS, but we don't provide tools to do so.
+
+## ... An Audio Library
+
+At least, not out of the box. Again, web audio technology is a constantly evolving challenge, with constantly changing rules and requirements across many browsers. There are a number of dedicated web audio libraries (such as [Howler.js](https://howlerjs.com) that can be used with PixiJS to play sound effects and music. Alternatively, the [PixiJS Sound plugin](https://github.com/pixijs/pixi-sound) is designed to work well with PixiJS.
+
+## ... A Development Environment
+
+There are a number of tools that are useful for building 2D art and games that you might expect to be a part of PixiJS, but we're a rendering engine, not a development environment. Packing sprite sheets, processing images, building mipmaps or Retina-ready sprites - there are great standalone tools for this type of tooling. Where appropriate throughout the guides, we'll point you to tools that may be useful.
+
+## So Is PixiJS Right For Me?
+
+Only you know! If you're looking for a tightly focused, fast and efficient rendering engine for your next web-based project, PixiJS is likely a great fit.
+
+If you need a full game development framework, with native bindings and a rich UI library, you may want to explore other options.
+
+Or you may not. It can be faster and easier to build just the subset of a full framework that your project needs than it can be to digest a monolithic API with bells and whistles you don't need. There are hundreds of complex, rich games and visual projects that use PixiJS for rendering, with plugins or custom code to add the UI and sound effects. There are benefits to both approaches. Regardless, we hope you have a better feel for what PixiJS can (and cannot!) offer your project.
diff --git a/versioned_docs/version-7.3.2/guides/basics/what-pixijs-is.md b/versioned_docs/version-7.3.2/guides/basics/what-pixijs-is.md
new file mode 100644
index 000000000..a11c20d51
--- /dev/null
+++ b/versioned_docs/version-7.3.2/guides/basics/what-pixijs-is.md
@@ -0,0 +1,31 @@
+# What PixiJS Is
+
+So what exactly *is* PixiJS? At its heart, PixiJS is a rendering system that uses WebGL (or optionally Canvas) to display images and other 2D visual content. It provides a full scene graph (a hierarchy of objects to render), and provides interaction support to enable handling click and touch events. It is a natural replacement for Flash in the modern HTML5 world, but provides better performance and pixel-level effects that go beyond what Flash could achieve. It is perfect for online games, educational content, interactive ads, data visualization... any web-based application where complex graphics are important. And coupled with technology such as Cordova and Electron, PixiJS apps can be distributed beyond the browser as mobile and desktop applications.
+
+
+
+Here's what else you get with PixiJS:
+
+## PixiJS Is ... Fast
+
+One of the major features that distinguishes PixiJS from other web-based rendering solutions is *speed*. From the ground up, the render pipeline has been built to get the most performance possible out of your users' browsers. Automatic sprite and geometry batching, careful use of WebGL resources, a tight scene graph - no matter your application, speed is valuable, and PixiJS has it to spare.
+
+## ... More Than Just Sprites
+
+Drawing images on a page can be handled with HTML5 and the DOM, so why use PixiJS? Beyond performance, the answer is that PixiJS goes well beyond simple images. Draw trails and tracks with [SimpleRope](https://pixijs.download/release/docs/PIXI.SimpleRope.html). Draw polygons, lines, circles and other primitives with [Graphics](https://pixijs.download/release/docs/PIXI.Graphics.html). [Text](https://pixijs.download/release/docs/PIXI.Text.html) provides full text rendering support that's just as performant as sprites. And even when drawing simple images, PixiJS natively supports spritesheets for efficient loading and ease of development.
+
+## ... WebGL Native
+
+WebGL is the JavaScript API for accessing users' GPUs for fast rendering and advanced effects. PixiJS leverages WebGL to display thousands of moving sprites efficiently even on mobile devices. But using WebGL offers more than just speed. By using the [Filter](https://pixijs.download/release/docs/PIXI.Filter.html) class, you can write shader programs (or use pre-built ones!) to achieve displacement maps, blurring, and other advanced visual effects that cannot be accomplished with just the DOM or Canvas APIs.
+
+## ... Open Source
+
+Want to understand how the engine works? Trying to track down a bug? Been burned by closed-source projects going dark? With PixiJS, you get a mature project with full source code access. We're MIT licensed for compatibility, and [hosted on GitHub](https://github.com/pixijs/pixijs) for issue tracking and ease of access.
+
+## ... Extensible
+
+Open source helps. So does being based on JavaScript. But the real reason PixiJS is easy to extend is the clean internal API that underlies every part of the system. After years of development and 5 major releases, PixiJS is ready to make your project a success, no matter what your needs.
+
+## ... Easy to Deploy
+
+Flash required the player. Unity requires an installer or app store. PixiJS requires... a browser. Deploying PixiJS on the web is exactly like deploying a web site. That's all it is - JavaScript + images + audio, like you've done a hundred times. Your users simply visit a URL, and your game or other content is ready to run. But it doesn't stop at the web. If you want to deploy a mobile app, wrap your PixiJS code in Cordova. Want to deploy a standalone desktop program? Build an Electron wrapper, and you're ready to rock.
diff --git a/versioned_docs/version-7.3.2/guides/components/assets.md b/versioned_docs/version-7.3.2/guides/components/assets.md
new file mode 100644
index 000000000..ecd24388d
--- /dev/null
+++ b/versioned_docs/version-7.3.2/guides/components/assets.md
@@ -0,0 +1,161 @@
+# Assets
+## The Assets package
+
+The Assets package is a modern replacement for the old `PIXI.Loader` class. It is a promise-based resource management solution that will download, cache and parse your assets into something you can use. The downloads can be simultaneous and in the background, meaning faster startup times for your app, the cache ensures that you never download the same asset twice and the extensible parser system allows you to easily extend and customize the process to your needs.
+
+
+## Getting started
+
+The `@pixi/assets` package doesn't come bundled with PixiJS in version 6.x and must be added externally, however it will become integrated with version 7. The class that does all the heavy lifting is called `AssetsClass` but you don't need to create your own instance since you will find one ready to use in `PIXI.Assets`.
+This package relies heavily on JavaScript Promises that all modern browsers support, however, if your target browser [doesn't support promises](https://caniuse.com/promises) you should look into [polyfilling them](https://github.com/zloirock/core-js#ecmascript-promise).
+
+## Making our first Assets Promise
+To quickly use the `PIXI.Assets` instance, you just need to call `PIXI.Assets.load` and pass in an asset. This will return a promise that when resolved will yield the value you seek.
+In this example, we will load a texture and then turn it into a sprite.
+
+
+
+One very important thing to keep in mind while using `Assets` is that all requests are cached and if the URL is the same, the promise returned will also be the same.
+To show it in code:
+```js
+promise1 = PIXI.Assets.load('bunny.png')
+promise2 = PIXI.Assets.load('bunny.png')
+
+//promise1 === promise2
+```
+
+Out of the box, the following assets types can be loaded without the need for external plugins:
+
+- Textures (`avif`, `webp`, `png`, `jpg`, `gif`)
+- Sprite sheets (`json`)
+- Bitmap fonts (`xml`, `fnt`, `txt`)
+- Web fonts (`ttf`, `woff`, `woff2`)
+- Json files (`json`)
+- Text files (`txt`)
+
+More types can be added fairly easily by creating additional loader parsers.
+
+## Warning about solved promises
+
+When an asset is downloaded, it is cached as a promise inside the `Assets` instance and if you try to download it again you will get a reference to the already resolved promise.
+However promise handlers `.then(...)`/`.catch(...)`/`.finally(...)` are always asynchronous, this means that even if a promise was already resolved the code below the `.then(...)`/`.catch(...)`/`.finally(...)` will execute before the code inside them.
+See this example:
+
+```js
+console.log(1);
+alreadyResolvedPromise.then(() => console.log(2));
+console.log(3);
+
+// Console output:
+// 1
+// 3
+// 2
+```
+
+To learn more about why this happens you will need to learn about [Microtasks](https://javascript.info/microtask-queue), however, using async functions should mitigate this problem.
+
+
+## Using Async/Await
+
+There is a way to work with promises that is more intuitive and easier to read: `async`/`await`.
+
+To use it we first need to create a function/method and mark it as `async`.
+
+```js
+async function test() {
+ // ...
+}
+```
+
+This function now wraps the return value in a promise and allows us to use the `await` keyword before a promise to halt the execution of the code until it is resolved and gives us the value.
+
+See this example:
+
+
+
+The `texture` variable now is not a promise but the resolved texture that resulted after waiting for this promise to resolve.
+
+```js
+const texture = await PIXI.Assets.load('examples/assets/bunny.png');
+```
+
+This allows us to write more readable code without falling into callback hell and to better think when our program halts and yields.
+
+## Loading multiple assets
+
+We can add assets to the cache and then load them all simultaneously by using `PIXI.Assets.add(...)` and then calling `PIXI.Assets.load(...)` with all the keys you want to have loaded.
+See the following example:
+
+
+
+However, if you want to take full advantage of `@pixi/Assets` you should use bundles.
+Bundles are just a way to group assets together and can be added manually by calling `PIXI.Assets.addBundle(...)`/`PIXI.Assets.loadBundle(...)`.
+
+```js
+ PIXI.Assets.addBundle('animals', {
+ bunny: 'bunny.png',
+ chicken: 'chicken.png',
+ thumper: 'thumper.png',
+ });
+
+ const assets = await PIXI.Assets.loadBundle('animals');
+```
+
+However, the best way to handle bundles is to use a manifest and call `PIXI.Assets.init({manifest})` with said manifest (or even better, an URL pointing to it).
+Splitting our assets into bundles that correspond to screens or stages of our app will come in handy for loading in the background while the user is using the app instead of locking them in a single monolithic loading screen.
+
+```json
+{
+ "bundles":[
+ {
+ "name":"load-screen",
+ "assets":[
+ {
+ "name":"background",
+ "srcs":"sunset.png"
+ },
+ {
+ "name":"bar",
+ "srcs":"load-bar.{png,webp}"
+ }
+ ]
+ },
+ {
+ "name":"game-screen",
+ "assets":[
+ {
+ "name":"character",
+ "srcs":"robot.png"
+ },
+ {
+ "name":"enemy",
+ "srcs":"bad-guy.png"
+ }
+ ]
+ }
+ ]
+}
+```
+```js
+PIXI.Assets.init({manifest: "path/manifest.json"});
+```
+
+Beware that **you can only call `init` once**.
+
+Remember there is no downside in repeating URLs since they will all be cached, so if you need the same asset in two bundles you can duplicate the request without any extra cost!
+
+## Background loading
+
+The old approach to loading was to use `PIXI.Loader` to load all your assets at the beginning of your app, but users are less patient now and want content to be instantly available so the practices are moving towards loading the bare minimum needed to show the user some content and, while they are interacting with that, we keep loading the following content in the background.
+
+Luckily, `@pixi/assets` has us covered with a system that allows us to load everything in the background and in case we need some assets right now, bump them to the top of the queue so we can minimize loading times.
+
+To achieve this, we have the methods `PIXI.Assets.backgroundLoad(...)` and `PIXI.Assets.backgroundLoadBundle(...)` that will passively begin to load these assets in the background. So when you finally come to loading them you will get a promise that resolves to the loaded assets immediately.
+
+When you finally need the assets to show, you call the usual `PIXI.Assets.load(...)` or `PIXI.Assets.loadBundle(...)` and you will get the corresponding promise.
+
+The best way to do this is using bundles, see the following example:
+
+
+
+We create one bundle for each screen our game will have and set them all to start downloading at the beginning of our app. If the user progresses slowly enough in our app then they should never get to see a loading screen after the first one!
diff --git a/versioned_docs/version-7.3.2/guides/components/containers.md b/versioned_docs/version-7.3.2/guides/components/containers.md
new file mode 100644
index 000000000..c4bd5de39
--- /dev/null
+++ b/versioned_docs/version-7.3.2/guides/components/containers.md
@@ -0,0 +1,96 @@
+# Containers
+
+The [Container](https://pixijs.download/release/docs/PIXI.Container.html) class provides a simple display object that does what its name implies - collect a set of child objects together. But beyond grouping objects, containers have a few uses that you should be aware of.
+
+## Containers as Groups
+
+Almost every type of display object is also derived from Container - even Sprites! This means that in many cases you can create a parent-child hierarchy with the objects you want to render.
+
+However, it's a good idea _not_ to do this. Standalone Container objects are **very** cheap to render, and having a proper hierarchy of Container objects, each containing one or more renderable objects, provides flexibility in rendering order. It also future-proofs your code, as when you need to add an additional object to a branch of the tree, your animation logic doesn't need to change - just drop the new object into the proper Container, and your logic moves the Container with no changes to your code.
+
+So that's the primary use for Containers - as groups of renderable objects in a hierarchy.
+
+Check out the [container example code](/examples/basic/container).
+
+## Masking
+
+Another common use for Container objects is as hosts for masked content. "Masking" is a technique where parts of your scene graph are only visible within a given area.
+
+Think of a pop-up window. It has a frame made of one or more Sprites, then has a scrollable content area that hides content outside the frame. A Container plus a mask makes that scrollable area easy to implement. Add the Container, set its `mask` property to a Graphics object with a rect, and add the text, image, etc. content you want to display as children of that masked Container. Any content that extends beyond the rectangular mask will simply not be drawn. Move the contents of the Container to scroll as desired.
+
+```javascript
+// Create the application helper and add its render target to the page
+let app = new PIXI.Application({ width: 640, height: 360 });
+document.body.appendChild(app.view);
+
+// Create window frame
+let frame = new PIXI.Graphics();
+frame.beginFill(0x666666);
+frame.lineStyle({ color: 0xffffff, width: 4, alignment: 0 });
+frame.drawRect(0, 0, 208, 208);
+frame.position.set(320 - 104, 180 - 104);
+app.stage.addChild(frame);
+
+// Create a graphics object to define our mask
+let mask = new PIXI.Graphics();
+// Add the rectangular area to show
+mask.beginFill(0xffffff);
+mask.drawRect(0,0,200,200);
+mask.endFill();
+
+// Add container that will hold our masked content
+let maskContainer = new PIXI.Container();
+// Set the mask to use our graphics object from above
+maskContainer.mask = mask;
+// Add the mask as a child, so that the mask is positioned relative to its parent
+maskContainer.addChild(mask);
+// Offset by the window's frame width
+maskContainer.position.set(4,4);
+// And add the container to the window!
+frame.addChild(maskContainer);
+
+// Create contents for the masked container
+let text = new PIXI.Text(
+ 'This text will scroll up and be masked, so you can see how masking works. Lorem ipsum and all that.\n\n' +
+ 'You can put anything in the container and it will be masked!',
+ {
+ fontSize: 24,
+ fill: 0x1010ff,
+ wordWrap: true,
+ wordWrapWidth: 180
+ }
+);
+text.x = 10;
+maskContainer.addChild(text);
+
+// Add a ticker callback to scroll the text up and down
+let elapsed = 0.0;
+app.ticker.add((delta) => {
+ // Update the text's y coordinate to scroll it
+ elapsed += delta;
+ text.y = 10 + -100.0 + Math.cos(elapsed/50.0) * 100.0;
+});
+```
+
+There are two types of masks supported by PixiJS:
+
+Use a [Graphics](https://pixijs.download/release/docs/PIXI.Graphics.html) object to create a mask with an arbitrary shape - powerful, but doesn't support anti-aliasing
+
+Sprite: Use the alpha channel from a [Sprite](https://pixijs.download/release/docs/PIXI.Sprite.html) as your mask, providing anti-aliased edging - _not_ supported on the Canvas renderer
+
+## Filtering
+
+Another common use for Container objects is as hosts for filtered content. Filters are an advanced, WebGL-only feature that allows PixiJS to perform per-pixel effects like blurring and displacements. By setting a filter on a Container, the area of the screen the Container encompasses will be processed by the filter after the Container's contents have been rendered.
+
+Below are list of filters available by default in PixiJS. There is, however, a community repository with [many more filters](https://github.com/pixijs/filters).
+
+| Filter | Description |
+| --- | --- |
+| AlphaFilter: `@pixi/filter-alpha` | Similar to setting `alpha` property, but flattens the Container instead of applying to children individually. |
+| BlurFilter: `@pixi/filter-blur` | Apply a blur effect |
+| ColorMatrixFilter: `@pixi/filter-color-matrix` | A color matrix is a flexible way to apply more complex tints or color transforms (e.g., sepia tone). |
+| DisplacementFilter: `@pixi/filter-displacement` | Displacement maps create visual offset pixels, for instance creating a wavy water effect. |
+| FXAAFilter: `@pixi/filter-fxaa` | Basic FXAA (Fast Approximate Anti-Aliasing) to create smoothing effect. |
+| NoiseFilter: `@pixi/filter-noise` | Create random noise (e.g., grain effect). |
+
+_**Important:** Filters should be use somewhat sparingly. They can slow performance and increase memory if used too often in a scene._
diff --git a/versioned_docs/version-7.3.2/guides/components/display-object.md b/versioned_docs/version-7.3.2/guides/components/display-object.md
new file mode 100644
index 000000000..dd2b90d7b
--- /dev/null
+++ b/versioned_docs/version-7.3.2/guides/components/display-object.md
@@ -0,0 +1,21 @@
+# Display Objects
+
+[DisplayObject](https://pixijs.download/release/docs/PIXI.DisplayObject.html) is the core class for anything that can be rendered by the engine. It's the base class for sprites, text, complex graphics, containers, etc., and provides much of the common functionality for those objects. As you're learning PixiJS, it's important to [read through the documentation for this class](https://pixijs.download/release/docs/PIXI.DisplayObject.html) to understand how to move, scale, rotate and compose the visual elements of your project.
+
+Be aware that you won't use DisplayObject directly - you'll use its functions and attributes in derived classes.
+
+## Commonly Used Attributes
+
+The most common attributes you'll use when laying out and animating content in PixiJS are provided by the DisplayObject class:
+
+| Property | Description |
+| --- | --- |
+| **position** | X- and Y-position are given in pixels and change the position of the object relative to its parent, also available directly as `object.x` / `object.y` |
+| **rotation** | Rotation is specified in radians, and turns an object clockwise (0.0 - 2 * Math.PI) |
+| **angle** | Angle is an alias for rotation that is specified in degrees instead of radians (0.0 - 360.0) |
+| **pivot** | Point the object rotates around, in pixels - also sets origin for child objects |
+| **alpha** | Opacity from 0.0 (fully transparent) to 1.0 (fully opaque), inherited by children |
+| **scale** | Scale is specified as a percent with 1.0 being 100% or actual-size, and can be set independently for the x and y axis |
+| **skew** | Skew transforms the object in x and y similar to the CSS skew() function, and is specified in radians |
+| **visible** | Whether the object is visible or not, as a boolean value - prevents updating and rendering object and children |
+| **renderable** | Whether the object should be rendered - when `false`, object will still be updated, but won't be rendered, doesn't affect children |
diff --git a/versioned_docs/version-7.3.2/guides/components/graphics.md b/versioned_docs/version-7.3.2/guides/components/graphics.md
new file mode 100644
index 000000000..5c1e0c73b
--- /dev/null
+++ b/versioned_docs/version-7.3.2/guides/components/graphics.md
@@ -0,0 +1,104 @@
+# Graphics
+
+[Graphics](https://pixijs.download/release/docs/PIXI.Graphics.html) is a complex and much misunderstood tool in the PixiJS toolbox. At first glance, it looks like a tool for drawing shapes. And it is! But it can also be used to generate masks. How does that work?
+
+In this guide, we're going to de-mystify the Graphics object, starting with how to think about what it does.
+
+Check out the [graphics example code](/examples/graphics/simple).
+
+## Graphics Is About Building - Not Drawing
+
+First-time users of the PIXI.Graphics class often struggle with how it works. Let's look at an example snippet that creates a Graphics object and draws a rectangle:
+
+```javascript
+// Create a Graphics object, set a fill color, draw a rectangle
+let obj = new PIXI.Graphics();
+obj.beginFill(0xff0000);
+obj.drawRect(0, 0, 200, 100);
+
+// Add it to the stage to render
+app.stage.addChild(obj);
+```
+
+That code will work - you'll end up with a red rectangle on the screen. But it's pretty confusing when you start to think about it. Why am I drawing a rectangle when *constructing* the object? Isn't drawing something a one-time action? How does the rectangle get drawn the *second* frame? And it gets even weirder when you create a Graphics object with a bunch of drawThis and drawThat calls, and then you use it as a *mask*. What???
+
+The problem is that the function names are centered around *drawing*, which is an action that puts pixels on the screen. But in spite of that, the Graphics object is really about *building*.
+
+Let's look a bit deeper at that `drawRect()` call. When you call `drawRect()`, PixiJS doesn't actually draw anything. Instead, it stores the rectangle you "drew" into a list of geometry for later use. If you then add the Graphics object to the scene, the renderer will come along, and ask the Graphics object to render itself. At that point, your rectangle actually gets drawn - along with any other shapes, lines, etc. that you've added to the geometry list.
+
+Once you understand what's going on, things start to make a lot more sense. When you use a Graphics object as a mask, for example, the masking system uses that list of graphics primitives in the geometry list to constrain which pixels make it to the screen. There's no drawing involved.
+
+That's why it helps to think of the Graphics class not as a drawing tool, but as a geometry building tool.
+
+## Types of Primitives
+
+There are a lot of functions in the PIXI.Graphics class, but as a quick orientation, here's the list of basic primitives you can add:
+
+* Line
+* Rect
+* RoundRect
+* Circle
+* Ellipse
+* Arc
+* Bezier and Quadratic Curve
+
+In addition, the Graphics Extras package (`@pixi/graphics-extras`) optionally includes the following complex primitives:
+
+* Torus
+* Chamfer Rect
+* Fillet Rect
+* Regular Polygon
+* Star
+* Rounded Polygon
+
+## The Geometry List
+
+Inside every Graphics object is a GraphicsGeometry object. The [GraphicsGeometry](https://pixijs.download/release/docs/PIXI.GraphicsGeometry.html) class manages the list of geometry primitives created by the Graphics parent object. For the most part, you will not work directly with this object. The owning Graphics object creates and manages it. However, there are two related cases where you *do* work with the list.
+
+First, you can re-use geometry from one Graphics object in another. No matter whether you're re-drawing the same shape over and over, or re-using it as a mask over and over, it's more efficient to share identical GraphicsGeometry. You can do this like so:
+
+```javascript
+// Create a master graphics object
+let template = new PIXI.Graphics();
+// Add a circle
+template.drawCircle(100, 100, 50);
+
+// Create 5 duplicate objects
+for (let i = 0; i < 5; i++) {
+ // Initialize the duplicate using our template's pre-built geometry
+ let duplicate = new PIXI.Graphics(template.geometry);
+}
+```
+
+This leads to the second time you need to be aware of the underlying GraphicsGeometry object - avoiding memory leaks. Because Graphics objects can share geometry, you *must* call `destroy()` when you no longer need them. Failure to do so will prevent the GraphicsGeometry object it owns from being properly de-referenced, and will lead to memory leaks.
+
+## Graphics For Display
+
+OK, so now that we've covered how the PIXI.Graphics class works, let's look at how you use it. The most obvious use of a Graphics object is to draw dynamically generated shapes to the screen.
+
+Doing so is simple. Create the object, call the various builder functions to add your custom primitives, then add the object to the scene graph. Each frame, the renderer will come along, ask the Graphics object to render itself, and each primitive, with associated line and fill styles, will be drawn to the screen.
+
+
+## Graphics as a Mask
+
+You can also use a Graphics object as a complex mask. To do so, build your object and primitives as usual. Next create a PIXI.Container object that will contain the masked content, and set its `mask` property to your Graphics object. The children of the container will now be clipped to only show through inside the geometry you've created. This technique works for both WebGL and Canvas-based rendering.
+
+Check out the [masking example code](/examples/graphics/simple).
+
+## Caveats and Gotchas
+
+The Graphics class is a complex beast, and so there are a number of things to be aware of when using it.
+
+**Memory Leaks**: The first has already been mentioned - call `destroy()` on any Graphics object you no longer need to avoid memory leaks.
+
+**Holes**: Holes you create have to be completely contained in the shape or else it may not be able to triangulate correctly.
+
+**Changing Geometry**: If you want to change the shape of a Graphics object, you don't need to delete and recreate it. Instead you can use the `clear()` function to reset the contents of the geometry list, then add new primitives as desired. Be careful of performance when doing this every frame.
+
+**Performance**: Graphics objects are generally quite performant. However, if you build highly complex geometry, you may pass the threshold that permits batching during rendering, which can negatively impact performance. It's better for batching to use many Graphics objects instead of a single Graphics with many shapes.
+
+**Transparency**: Because the Graphics object renders its primitives sequentially, be careful when using blend modes or partial transparency with overlapping geometry. Blend modes like `ADD` and `MULTIPLY` will work *on each primitive*, not on the final composite image. Similarly, partially transparent Graphics objects will show primitives overlapping. To apply transparency or blend modes to a single flattened surface, consider using AlphaFilter or RenderTexture.
+
+
diff --git a/versioned_docs/version-7.3.2/guides/components/interaction.md b/versioned_docs/version-7.3.2/guides/components/interaction.md
new file mode 100644
index 000000000..3aa113495
--- /dev/null
+++ b/versioned_docs/version-7.3.2/guides/components/interaction.md
@@ -0,0 +1,110 @@
+# Interaction
+
+PixiJS is primarily a rendering system, but it also includes support for interactivity. Adding support for mouse and touch events to your project is simple and consistent.
+
+## Event Modes
+
+The new event-based system that replaced InteractionManager from v6 has expanded the definition of what a DisplayObject means to be interactive. With this we have introduced `eventMode` which allows you to control how an object responds to interaction events. This is similar to the `interactive` property in v6 but with more options.
+
+| eventMode | Description |
+|---|---|
+| `none` | Ignores all interaction events, similar to CSS's `pointer-events: none`, good optimization for non-interactive children |
+| `passive` | Does not emit events and ignores hit testing on itself but does allow for events and hit testing only its interactive children. If you want to be compatible with v6, set this as your default `eventMode` (see options in Renderer, Application, etc) |
+| `auto` | Does not emit events and but is hit tested if parent is interactive. Same as `interactive = false` in v7 |
+| `static` | Emit events and is hit tested. Same as `interaction = true` in v7, useful for objects like buttons that do not move. |
+| `dynamic` | Emits events and is hit tested but will also receive mock interaction events fired from a ticker to allow for interaction when the mouse isn't moving. This is useful for elements that independently moving or animating. |
+
+## Event Types
+
+PixiJS supports the following event types:
+
+| Event Type | Description |
+|---|---|
+| `pointercancel` | Fired when a pointer device button is released outside the display object that initially registered a pointerdown. |
+| `pointerdown` | Fired when a pointer device button is pressed on the display object. |
+| `pointerenter` | Fired when a pointer device enters the display object. |
+| `pointerleave` | Fired when a pointer device leaves the display object. |
+| `pointermove` | Fired when a pointer device is moved while over the display object. |
+| `globalpointermove` | Fired when a pointer device is moved, regardless of hit-testing the current object. |
+| `pointerout` | Fired when a pointer device is moved off the display object. |
+| `pointerover` | Fired when a pointer device is moved onto the display object. |
+| `pointertap` | Fired when a pointer device is tapped twice on the display object. |
+| `pointerup` | Fired when a pointer device button is released over the display object. |
+| `pointerupoutside` | Fired when a pointer device button is released outside the display object that initially registered a pointerdown. |
+| `mousedown ` | Fired when a mouse button is pressed on the display object. |
+| `mouseenter` | Fired when the mouse cursor enters the display object. |
+| `mouseleave` | Fired when the mouse cursor leaves the display object. |
+| `mousemove ` | Fired when the mouse cursor is moved while over the display object. |
+| `globalmousemove` | Fired when a mouse is moved, regardless of hit-testing the current object. |
+| `mouseout ` | Fired when the mouse cursor is moved off the display object. |
+| `mouseover ` | Fired when the mouse cursor is moved onto the display object. |
+| `mouseup ` | Fired when a mouse button is released over the display object. |
+| `mouseupoutside ` | Fired when a mouse button is released outside the display object that initially registered a mousedown. |
+| `click ` | Fired when a mouse button is clicked (pressed and released) over the display object. |
+| `touchcancel ` | Fired when a touch point is removed outside of the display object that initially registered a touchstart. |
+| `touchend ` | Fired when a touch point is removed from the display object. |
+| `touchendoutside ` | Fired when a touch point is removed outside of the display object that initially registered a touchstart. |
+| `touchmove ` | Fired when a touch point is moved along the display object. |
+| `globaltouchmove` | Fired when a touch point is moved, regardless of hit-testing the current object. |
+| `touchstart ` | Fired when a touch point is placed on the display object. |
+| `tap ` | Fired when a touch point is tapped twice on the display object. |
+| `wheel ` | Fired when a mouse wheel is spun over the display object. |
+| `rightclick ` | Fired when a right mouse button is clicked (pressed and released) over the display object. |
+| `rightdown ` | Fired when a right mouse button is pressed on the display object. |
+| `rightup ` | Fired when a right mouse button is released over the display object. |
+| `rightupoutside ` | Fired when a right mouse button is released outside the display object that initially registered a rightdown. |
+
+
+## Enabling Interaction
+
+Any DisplayObject-derived object (Sprite, Container, etc.) can become interactive simply by setting its `eventMode` property to any of the eventModes listed above. Doing so will cause the object to emit interaction events that can be responded to in order to drive your project's behavior.
+
+Check out the [interaction example code](/examples/events/click).
+
+To respond to clicks and taps, bind to the events fired on the object, like so:
+
+```javascript
+let sprite = PIXI.Sprite.from('/some/texture.png');
+sprite.on('pointerdown', (event) => { alert('clicked!'); });
+sprite.eventMode = 'static';
+```
+
+Check out the [DisplayObject](https://pixijs.download/release/docs/PIXI.DisplayObject.html) for the list of interaction events supported.
+
+### Checking if Object is Interactive
+
+You can check if an object is interactive by calling the `isInteractive` property. This will return true if `eventMode` is set to `static` or `dynamic`.
+
+```javascript
+if (sprite.isInteractive()) {
+ // sprite is interactive
+}
+```
+
+## Use Pointer Events
+
+PixiJS supports three types of interaction events - mouse, touch and pointer. Mouse events are fired by mouse movement, clicks etc. Touch events are fired for touch-capable devices. And pointer events are fired for _both_.
+
+What this means is that, in many cases, you can write your project to use pointer events and it will just work when used with _either_ mouse or touch input. Given that, the only reason to use non-pointer events is to support different modes of operation based on input type or to support multi-touch interaction. In all other cases, prefer pointer events.
+
+## Optimization
+
+Hit testing requires walking the full object tree, which in complex projects can become an optimization bottleneck. To mitigate this issue, PixiJS Container-derived objects have a property named `interactiveChildren`. If you have Containers or other objects with complex child trees that you know will never be interactive, you can set this property to `false` and the hit testing algorithm will skip those children when checking for hover and click events. As an example, if you were building a side-scrolling game, you would probably want to set `background.interactiveChildren = false` for your background layer with rocks, clouds, flowers, etc. Doing so would speed up hit testing substantially due to the number of unclickable child objects the background layer would contain.
+
+The `EventSystem` can also be customised to be more performant:
+```js
+const app = new PIXI.Application({
+ /**
+ * by default we use `auto` for backwards compatibility.
+ * However `passive` is more performant and will be used by default in the future,
+ */
+ eventMode: 'passive',
+ eventFeatures: {
+ move: true,
+ /** disables the global move events which can be very expensive in large scenes */
+ globalMove: false,
+ click: true,
+ wheel: true,
+ }
+});
+```
diff --git a/versioned_docs/version-7.3.2/guides/components/sprite-sheets.md b/versioned_docs/version-7.3.2/guides/components/sprite-sheets.md
new file mode 100644
index 000000000..08511fa71
--- /dev/null
+++ b/versioned_docs/version-7.3.2/guides/components/sprite-sheets.md
@@ -0,0 +1,84 @@
+# Spritesheets
+
+Now that you understand basic sprites, it's time to talk about a better way to create them - the [Spritesheet](https://pixijs.download/release/docs/PIXI.Spritesheet.html) class.
+
+A Spritesheet is a media format for more efficiently downloading and rendering Sprites. While somewhat more complex to create and use, they are a key tool in optimizing your project.
+
+## Anatomy of a Spritesheet
+
+The basic idea of a spritesheet is to pack a series of images together into a single image, track where each source image ends up, and use that combined image as a shared BaseTexture for the resulting Sprites.
+
+The first step is to collect the images you want to combine. The sprite packer then collects the images, and creates a new combined image.
+
+
+
+As this image is being created, the tool building it keeps track of the location of the rectangle where each source image is stored. It then writes out a JSON file with that information.
+
+
+
+These two files, in combination, can be passed into a SpriteSheet constructor. The SpriteSheet object then parses the JSON, and creates a series of Texture objects, one for each source image, setting the source rectangle for each based on the JSON data. Each texture uses the same shared BaseTexture as its source.
+
+## Doubly Efficient
+
+SpriteSheets help your project in two ways.
+
+First, by __speeding up the loading process__. While downloading a SpriteSheet's texture requires moving the same (or even slightly more!) number of bytes, they're grouped into a single file. This means that the user's browser can request and download far fewer files for the same number of Sprites. The number of files *itself* is a key driver of download speed, because each request requires a round-trip to the webserver, and browsers are limited to how many files they can download simultaneously. Converting a project from individual source images to shared sprite sheets can cut your download time in half, at no cost in quality.
+
+Second, by __improving batch rendering__. WebGL rendering speed scales roughly with the number of draw calls made. Batching multiple Sprites, etc. into a single draw call is the main secret to how PixiJS can run so blazingly fast. Maximizing batching is a complex topic, but when multiple Sprites all share a common BaseTexture, it makes it more likely that they can be batched together and rendered in a single call.
+
+## Creating SpriteSheets
+
+You can use a 3rd party tool to assemble your sprite sheet files. Here are two that may fit your needs:
+
+[ShoeBox](http://renderhjs.net/shoebox/): ShoeBox is a free, Adobe AIR-based sprite packing utility that is great for small projects or learning how SpriteSheets work.
+
+[TexturePacker](https://www.codeandweb.com/texturepacker): TexturePacker is a more polished tool that supports advanced features and workflows. A free version is available which has all the necessary features for packing spritesheets for PixiJS. It's a good fit for larger projects and professional game development, or projects that need more complex tile mapping features.
+
+Spritesheet data can also be created manually or programmatically, and supplied to a new AnimatedSprite. This may be an easier option if your sprites are already contained in a single image.
+
+```javascript
+// Create object to store sprite sheet data
+const atlasData = {
+ frames: {
+ enemy1: {
+ frame: { x: 0, y:0, w:32, h:32 },
+ sourceSize: { w: 32, h: 32 },
+ spriteSourceSize: { x: 0, y: 0, w: 32, h: 32 }
+ },
+ enemy2: {
+ frame: { x: 32, y:0, w:32, h:32 },
+ sourceSize: { w: 32, h: 32 },
+ spriteSourceSize: { x: 0, y: 0, w: 32, h: 32 }
+ },
+ },
+ meta: {
+ image: 'images/spritesheet.png',
+ format: 'RGBA8888',
+ size: { w: 128, h: 32 },
+ scale: 1
+ },
+ animations: {
+ enemy: ['enemy1','enemy2'] //array of frames by name
+ }
+}
+
+
+// Create the SpriteSheet from data and image
+const spritesheet = new PIXI.Spritesheet(
+ PIXI.BaseTexture.from(atlasData.meta.image),
+ atlasData
+);
+
+// Generate all the Textures asynchronously
+await spritesheet.parse();
+
+// spritesheet is ready to use!
+const anim = new PIXI.AnimatedSprite(spritesheet.animations.enemy);
+
+// set the animation speed
+anim.animationSpeed = 0.1666;
+// play the animation on a loop
+anim.play();
+// add it to the stage to render
+app.stage.addChild(anim);
+```
diff --git a/versioned_docs/version-7.3.2/guides/components/sprites.md b/versioned_docs/version-7.3.2/guides/components/sprites.md
new file mode 100644
index 000000000..db495b6b3
--- /dev/null
+++ b/versioned_docs/version-7.3.2/guides/components/sprites.md
@@ -0,0 +1,41 @@
+# Sprites
+
+Sprites are the simplest and most common renderable object in PixiJS. They represent a single image to be displayed on the screen. Each [Sprite](https://pixijs.download/release/docs/PIXI.Sprite.html) contains a [Texture](https://pixijs.download/release/docs/PIXI.Texture.html) to be drawn, along with all the transformation and display state required to function in the scene graph.
+
+## Creating Sprites
+
+To create a Sprite, all you need is a Texture (check out the Texture guide). Load a PNG's URL using the PIXI.Loader class, then call `PIXI.Sprite.from(url)` and you're all set. As a convenience during prototyping, you can pass a non-loaded URL to `from()` and PixiJS will handle it, but your sprite will "pop in" after it loads if you don't pre-load your textures.
+
+Check out the [sprite example code](/examples/sprite/basic).
+
+## Using Sprites
+
+In our [DisplayObject guide](display-object), we learned about the DisplayObject class and the various properties it defines. Since Sprite objects are also display objects, you can move a sprite, rotate it, and update any other display property.
+
+## Alpha, Tint and Blend Modes
+
+Alpha is a standard display object property. You can use it to fade sprites into the scene by animating each sprite's alpha from 0.0 to 1.0 over a period of time.
+
+Tinting allows you multiply the color value of every pixel by a single color. For example, if you had a dungeon game, you might show a character's poison status by setting `obj.tint = 0x00FF00`, which would give a green tint to the character.
+
+Blend modes change how pixel colors are added to the screen when rendering. The three main modes are __add__, which adds each pixel's RGB channels to whatever is under your sprite (useful for glows and lighting), __multiply__ which works like `tint`, but on a per-pixel basis, and __screen__, which overlays the pixels, brightening whatever is underneath them.
+
+## Scale vs Width & Height
+
+One common area of confusion when working with sprites lies in scaling and dimensions. The PIXI.DisplayObject class allows you to set the x and y scale for any object. Sprites, being DisplayObjects, also support scaling. In addition, however, Sprites support explicit `width` and `height` attributes that can be used to achieve the same effect, but are in pixels instead of a percentage. This works because a Sprite object owns a Texture, which has an explicit width and height. When you set a Sprite's width, internally PixiJS converts that width into a percentage of the underlying texture's width and updates the object's x-scale. So width and height are really just convenience methods for changing scale, based on pixel dimensions rather than percentages.
+
+## Pivot vs Anchor
+
+If you add a sprite to your stage and rotate it, it will by default rotate around the top-left corner of the image. In some cases, this is what you want. In many cases, however, what you want is for the sprite to rotate around the center of the image it contains, or around an arbitrary point.
+
+There are two ways to achieve this: *pivots* and *anchors*
+
+An object's __pivot__ is an offset, expressed in pixels, from the top-left corner of the Sprite. It defaults to (0, 0). If you have a Sprite whose texture is 100px x 50px, and want to set the pivot point to the center of the image, you'd set your pivot to (50, 25) - half the width, and half the height. Note that pivots can be set *outside* of the image, meaning the pivot may be less than zero or greater than the width/height. This can be useful in setting up complex animation hierarchies, for example. Every DisplayObject has a pivot.
+
+An __anchor__, in contrast, is only available for Sprites. Anchors are specified in percentages, from 0.0 to 1.0, in each dimension. To rotate around the center point of a texture using anchors, you'd set your Sprite's anchor to (0.5, 0.5) - 50% in width and height. While less common, anchors can also be outside the standard 0.0 - 1.0 range.
+
+The nice thing about anchors is that they are resolution and dimension agnostic. If you set your Sprite to be anchored in the middle then later change the size of the texture, your object will still rotate correctly. If you had instead set a pivot using pixel-based calculations, changing the texture size would require changing your pivot point.
+
+So, generally speaking, you'll want to use anchors when working with Sprites.
+
+One final note: unlike CSS, where setting the transform-origin of the image doesn't move it, in PixiJS setting an anchor or pivot *will* move your object on the screen. In other words, setting an anchor or pivot affects not just the rotation origin, but also the position of the sprite relative to its parent.
diff --git a/versioned_docs/version-7.3.2/guides/components/text.md b/versioned_docs/version-7.3.2/guides/components/text.md
new file mode 100644
index 000000000..d7a1b53c1
--- /dev/null
+++ b/versioned_docs/version-7.3.2/guides/components/text.md
@@ -0,0 +1,106 @@
+# Text
+
+Whether it's a high score or a diagram label, text is often the best way to convey information in your projects. Surprisingly, drawing text to the screen with WebGL is a very complex process - there's no built in support for it at all. One of the values PixiJS provides is in hiding this complexity to allow you to draw text in diverse styles, fonts and colors with a few lines of code. In addition, these bits of text are just as much scene objects as sprites - you can tint text, rotate it, alpha-blend it, and otherwise treat it like any other graphical object.
+
+Let's dig into how this works.
+
+## There Are Two Kinds of Text
+
+Because of the challenges of working with text in WebGL, PixiJS provides two very different solutions. In this guide, we're going to go over both methods in some detail to help you make the right choice for your project's needs. Selecting the wrong text type can have a large negative impact on your project's performance and appearance.
+
+## The Text Object
+
+In order to draw text to the screen, you use a [Text](https://pixijs.download/release/docs/PIXI.Text.html) object. Under the hood, this class draws text to an off-screen buffer using the browser's normal text rendering, then uses that offscreen buffer as the source for drawing the text object. Effectively what this means is that whenever you create or change text, PixiJS creates a new rasterized image of that text, and then treats it like a sprite. This approach allows truly rich text display while keeping rendering speed high.
+
+So when working with PIXI.Text objects, there are two sets of options - standard display object options like position, rotation, etc that work *after* the text is rasterized internally, and text style options that are used *while* rasterizing. Because text once rendered is basically just a sprite, there's no need to review the standard options. Instead, let's focus on how text is styled.
+
+Check out the [text example code](/examples/text/pixi-text).
+
+## Text Styles
+
+There are a lot of text style options available (see [TextStyle](https://pixijs.download/release/docs/PIXI.TextStyle.html)), but they break down into 5 main groups:
+
+**Font**: `fontFamily` to select the webfont to use, `fontSize` to specify the size of the text to draw, along with options for font weight, style and variant.
+
+**Appearance**: Set the color with `fill` or add a `stroke` outline, including options for gradient fills.
+
+**Drop-Shadows**: Set a drop-shadow with `dropShadow`, with a host of related options to specify offset, blur, opacity, etc.
+
+**Layout**: Enable with `wordWrap` and `wordWrapWidth`, and then customize the `lineHeight` and `align` or `letterSpacing`
+
+**Utilities**: Add `padding` or `trim` extra space to deal with funky font families if needed.
+
+To interactively test out feature of Text Style, [check out this tool](https://pixijs.io/pixi-text-style/).
+
+## Loading and Using Fonts
+
+In order for PixiJS to build a PIXI.Text object, you'll need to make sure that the font you want to use is loaded by the browser. Unfortunately, at the time of writing, the PIXI.Loader system does not support loading font files, so you'll need to use a 3rd party font loader to ensure that any custom web fonts you want to use are pre-loaded. It's not enough to add an @font-face declaration in your project's CSS because browsers will happily render text using a fallback font while your custom font loads.
+
+Any javascript library that can load a web font will work, you just want something that will delay starting your project until the font has been fully loaded by the browser.
+
+One such library is [FontFaceObserver](https://fontfaceobserver.com). Here's a simple example that shows how to use it to ensure the web font "Short Stack" is loaded before your app starts. First, we need a font-face declaration in CSS:
+
+```css
+@font-face {
+ font-family: Short Stack;
+ src: url(short-stack.woff2) format('woff2'),
+ url(short-stack.woff) format('woff');
+}
+```
+
+Now that the browser knows what our font is and how to find the source files, it's time to use the library to load them:
+
+```javascript
+// Create the loader
+let font = new FontFaceObserver('Short Stack', {});
+// Start loading the font
+font.load().then(() => {
+ // Successful load, start up your PixiJS app as usual
+ let app = new PIXI.Application({ width: 640, height: 360 });
+ document.body.appendChild(app.view);
+ // ... etc ...
+
+}, () => {
+ // Failed load, log the error or display a message to the user
+ alert('Unable to load required font!');
+});
+```
+
+## Caveats and Gotchas
+
+While PixiJS does make working with text easy, there are a few things you need to watch out for.
+
+First, changing an existing text string requires re-generating the internal render of that text, which is a slow operation that can impact performance if you change many text objects each frame. If your project requires lots of frequently changing text on the screen at once, consider using a PIXI.BitmapText object (explained below) which uses a fixed bitmap font that doesn't require re-generation when text changes.
+
+Second, be careful when scaling text. Setting a text object's scale to > 1.0 will result in blurry/pixely display, because the text is not re-rendered at the higher resolution needed to look sharp - it's still the same resolution it was when generated. To deal with this, you can render at a higher initial size and down-scale, instead. This will use more memory, but will allow your text to always look clear and crisp.
+
+## BitmapText
+
+In addition to the standard PIXI.Text approach to adding text to your project, PixiJS also supports *bitmap fonts*. Bitmap fonts are very different from TrueType or other general purpose fonts, in that they consist of a single image containing pre-rendered versions of every letter you want to use. When drawing text with a bitmap font, PixiJS doesn't need to render the font glyphs into a temporary buffer - it can simply copy and stamp out each character of a string from the master font image.
+
+The primary advantage of this approach is speed - changing text frequently is much cheaper and rendering each additional piece of text is much faster due to the shared source texture.
+
+Check out the [bitmap text example code](/examples/text/bitmap-text).
+
+## BitmapFont
+
+- 3rd party solutions
+- BitmapFont.from auto-generation
+
+## Selecting the Right Approach
+
+PIXI.Text
+- Static text
+- Small number of text objects
+- High fidelity text rendering (kerning e.g.)
+- Text layout (line & letter spacing)
+
+PIXI.BitmapText
+- Dynamic text
+- Large number of text objects
+- Lower memory
+
+
diff --git a/versioned_docs/version-7.3.2/guides/components/textures.md b/versioned_docs/version-7.3.2/guides/components/textures.md
new file mode 100644
index 000000000..492cf2f8c
--- /dev/null
+++ b/versioned_docs/version-7.3.2/guides/components/textures.md
@@ -0,0 +1,75 @@
+# Textures
+
+We're slowly working our way down from the high level to the low. We've talked about the scene graph, and in general about display objects that live in it. We're about to get to sprites and other simple display objects. But before we do, we need to talk about textures.
+
+In PixiJS, textures are one of the core resources used by display objects. A texture, broadly speaking, represents a source of pixels to be used to fill in an area on the screen. The simplest example is a sprite - a rectangle that is completely filled with a single texture. But things can get much more complex.
+
+## Life-cycle of a Texture
+
+Let's examine how textures really work, by following the path your image data travels on its way to the screen.
+
+Here's the flow we're going to follow: Source Image > Loader > BaseTexture > Texture
+
+### Serving the Image
+
+To start with, you have the image you want to display. The first step is to make it available on your server. This may seem obvious, but if you're coming to PixiJS from other game development systems, it's worth remembering that everything has to be loaded over the network. If you're developing locally, please be aware that you *must* use a webserver to test, or your images won't load due to how browsers treat local file security.
+
+### Loading the Image
+
+To work with the image, the first step is to pull the image file from your webserver into the user's web browser. To do this, we can use `PIXI.Texture.from()`, which works for quick demos, but in production you'll use the Loader class. A Loader wraps and manages using an `` element to tell the browser to fetch the image, and then notifies you when that has been completed. This process is *asynchronous* - you request the load, then time passes, then an event fires to let you know the load is completed. We'll go into the loader in a lot more depth in a later guide.
+
+### BaseTextures Own the Data
+
+Once the Loader has done its work, the loaded `` element contains the pixel data we need. But to use it to render something, PixiJS has to take that raw image file and upload it to the GPU. This brings us to the real workhorse of the texture system - the [BaseTexture](https://pixijs.download/release/docs/PIXI.BaseTexture.html) class. Each BaseTexture manages a single pixel source - usually an image, but can also be a Canvas or Video element. BaseTextures allow PixiJS to convert the image to pixels and use those pixels in rendering. In addition, it also contains settings that control how the texture data is rendered, such as the wrap mode (for UV coordinates outside the 0.0-1.0 range) and scale mode (used when scaling a texture).
+
+BaseTextures are automatically cached, so that calling `PIXI.Texture.from()` repeatedly for the same URL returns the same BaseTexture each time. Destroying a BaseTexture frees the image data associated with it.
+
+### Textures are a View on BaseTextures
+
+So finally, we get to the PIXI.Texture class itself! At this point, you may be wondering what the Texture object *does*. After all, the BaseTexture manages the pixels and render settings. And the answer is, it doesn't do very much. Textures are light-weight views on an underlying BaseTexture. Their main attribute is the source rectangle within the BaseTexture from which to pull.
+
+If all PixiJS drew were sprites, that would be pretty redundant. But consider [SpriteSheets](./sprite-sheets). A SpriteSheet is a single image that contains multiple sprite images arranged within. In a [Spritesheet](https://pixijs.download/release/docs/PIXI.Spritesheet.html) object, a single BaseTexture is referenced by a set of Textures, one for each source image in the original sprite sheet. By sharing a single BaseTexture, the browser only downloads one file, and our batching renderer can blaze through drawing sprites since they all share the same underlying pixel data. The SpriteSheet's Textures pull out just the rectangle of pixels needed by each sprite.
+
+
+
+That is why we have both Textures and BaseTextures - to allow sprite sheets, animations, button states, etc to be loaded as a single image, while only displaying the part of the master image that is needed.
+
+## Loading Textures
+
+We will discuss resource loading in a later guide, but one of the most common issues new users face when building a PixiJS project is how best to load their textures. Using `PIXI.Texture.from()` as we do in our demo snippets will work, but will result in pop-in as each texture is loaded while your objects are already being rendered in the scene graph.
+
+Instead, here's a quick cheat sheet of one good solution:
+
+1. Show a loading image
+2. Create a Loader
+3. Run all texture-based objects, add their textures to the loader
+4. Start the loader, and optionally update your loading image based on progress callbacks
+5. On loader completion, run all objects and use `PIXI.Texture.from()` to pull the loaded textures out of the texture cache
+6. Prepare your textures (optional - see below)
+7. Hide your loading image, start rendering your scene graph
+
+Using this workflow ensures that your textures are pre-loaded, to prevent pop-in, and is relatively easy to code.
+
+Regarding preparing textures: Even after you've loaded your textures, the images still need to be pushed to the GPU and decoded. Doing this for a large number of source images can be slow and cause lag spikes when your project first loads. To solve this, you can use the [Prepare](https://pixijs.download/release/docs/PIXI.Prepare.html) plugin, which allows you to pre-load textures in a final step before displaying your project.
+
+## Unloading Textures
+
+Once you're done with a Texture, you may wish to free up the memory (both WebGL-managed buffers and browser-based) that it uses. To do so, you should call `destroy()` on the BaseTexture that owns the data. Remember that Textures don't manage pixel data!
+
+This is a particularly good idea for short-lived imagery like cut-scenes that are large and will only be used once. If you want to remove *all* textures and wipe the slate clean, you can use the `PIXI.utils.destroyTextureCache()` function.
+
+## Beyond Images
+
+As we alluded to above, you can make a Texture out of more than just images:
+
+Video: Pass an HTML5 `