# ghostkit/3.7.2/assets/js/utils/instance.js

Block Animations, Motion &amp; Scroll Effects – Ghost Kit, version 3.7.2. 54 lines.

- Page: https://pluginprobe.com/plugins/ghostkit/3.7.2/code/assets/js/utils/instance.js
- Raw: https://pluginprobe.com/plugins/ghostkit/3.7.2/raw/assets/js/utils/instance.js
- Modified: 2024-02-18T18:40:24+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/ghostkit/3.7.2/code/assets/js/utils/instance.js#L10-L20`.

```javascript
/**
 * Helper class to get and set instances from elements.
 * These instances contains many helpful data such as block APIs and extensions data.
 *
 * Example:
 * GHOSTKIT.instance.get(element, 'effects');
 */
const elementsMap = new Map();

export default {
	getAll() {
		return elementsMap;
	},

	get(element, key) {
		if (elementsMap.has(element)) {
			if (key) {
				return elementsMap.get(element).get(key) || null;
			}

			return elementsMap.get(element) || null;
		}

		return null;
	},

	set(element, key, val) {
		if (!elementsMap.has(element)) {
			elementsMap.set(element, new Map());
		}

		const instanceMap = elementsMap.get(element);

		instanceMap.set(key, val);
	},

	remove(element, key) {
		if (!elementsMap.has(element)) {
			return;
		}

		const instanceMap = elementsMap.get(element);

		if (key) {
			instanceMap.delete(key);
		}

		// Free up element references if there are no instances left for an element or key is missing.
		if (!key || instanceMap.size === 0) {
			elementsMap.delete(element);
		}
	},
};

```
