# elementor/4.3.0-beta3/assets/js/packages/session/session.js

Elementor Website Builder – more than just a page builder, version 4.3.0-beta3. 130 lines.

- Page: https://pluginprobe.com/plugins/elementor/4.3.0-beta3/code/assets/js/packages/session/session.js
- Raw: https://pluginprobe.com/plugins/elementor/4.3.0-beta3/raw/assets/js/packages/session/session.js
- Modified: 2026-09-01T11:47:36+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/elementor/4.3.0-beta3/code/assets/js/packages/session/session.js#L10-L20`.

```javascript
(function(react) {

//#region \0rolldown/runtime.js
	var __create = Object.create;
	var __defProp = Object.defineProperty;
	var __name = (target, value) => __defProp(target, "name", {
		value,
		configurable: true
	});
	var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
	var __getOwnPropNames = Object.getOwnPropertyNames;
	var __getProtoOf = Object.getPrototypeOf;
	var __hasOwnProp = Object.prototype.hasOwnProperty;
	var __exportAll = (all, no_symbols) => {
		let target = {};
		for (var name in all) {
			__defProp(target, name, {
				get: all[name],
				enumerable: true
			});
		}
		if (!no_symbols) {
			__defProp(target, Symbol.toStringTag, { value: "Module" });
		}
		return target;
	};
	var __copyProps = (to, from, except, desc) => {
		if (from && typeof from === "object" || typeof from === "function") {
			for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
				key = keys[i];
				if (!__hasOwnProp.call(to, key) && key !== except) {
					__defProp(to, key, {
						get: ((k) => from[k]).bind(null, key),
						enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
					});
				}
			}
		}
		return to;
	};
	var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
		value: mod,
		enumerable: true
	}) : target, mod));

//#endregion
react = __toESM(react);

//#region packages/packages/libs/session/src/session-storage.ts
	var getSessionStorageItem = (key) => {
		return JSON.parse(sessionStorage.getItem(key) || "{}")?.item;
	};
	var setSessionStorageItem = (key, item) => {
		sessionStorage.setItem(key, JSON.stringify({ item }));
		window.dispatchEvent(new StorageEvent("storage", {
			key,
			storageArea: sessionStorage
		}));
	};
	var removeSessionStorageItem = (key) => {
		sessionStorage.removeItem(key);
		window.dispatchEvent(new StorageEvent("storage", {
			key,
			storageArea: sessionStorage
		}));
	};

//#endregion
//#region packages/packages/libs/session/src/session-storage-context.tsx
	var Context = (0, react.createContext)(null);
	function SessionStorageProvider({ children, prefix }) {
		const contextPrefix = (0, react.useContext)(Context)?.prefix ?? "";
		const chainedPrefix = contextPrefix ? `${contextPrefix}/${prefix}` : prefix;
		return /* @__PURE__ */ react.createElement(Context.Provider, { value: { prefix: chainedPrefix } }, children);
	}

//#endregion
//#region packages/packages/libs/session/src/use-session-storage.ts
	var useSessionStorage = (key, customPrefix) => {
		const contextPrefix = (0, react.useContext)(Context)?.prefix ?? "";
		const prefixedKey = `${customPrefix ? customPrefix : contextPrefix}/${key}`;
		const [value, setValue] = (0, react.useState)();
		(0, react.useEffect)(() => {
			return subscribeToSessionStorage(prefixedKey, (newValue) => {
				setValue(newValue ?? null);
			});
		}, [prefixedKey]);
		const saveValue = (newValue) => {
			setSessionStorageItem(prefixedKey, newValue);
		};
		const removeValue = () => {
			removeSessionStorageItem(prefixedKey);
		};
		return [
			value,
			saveValue,
			removeValue
		];
	};
	var subscribeToSessionStorage = (key, subscriber) => {
		subscriber(getSessionStorageItem(key));
		const abortController = new AbortController();
		window.addEventListener("storage", (e) => {
			if (e.key !== key || e.storageArea !== sessionStorage) return;
			subscriber(getSessionStorageItem(key));
		}, { signal: abortController.signal });
		return () => {
			abortController.abort();
		};
	};

//#endregion
//#region packages/packages/libs/session/src/index.ts
	var src_exports = /* @__PURE__ */ __exportAll({
		Context: () => Context,
		SessionStorageProvider: () => SessionStorageProvider,
		getSessionStorageItem: () => getSessionStorageItem,
		removeSessionStorageItem: () => removeSessionStorageItem,
		setSessionStorageItem: () => setSessionStorageItem,
		useSessionStorage: () => useSessionStorage
	});

//#endregion
//#region \0elementor-package-library-entry
	(window.elementorV2 = window.elementorV2 || {}).session = src_exports;

//#endregion
})(React);
window.elementorV2.session?.init?.();
//# sourceMappingURL=session.js.map
```
