# elementor/4.0.4/modules/atomic-widgets/import-export/modifiers/interactions-props-modifier.php

Elementor Website Builder – more than just a page builder, version 4.0.4. 59 lines.

- Page: https://pluginprobe.com/plugins/elementor/4.0.4/code/modules/atomic-widgets/import-export/modifiers/interactions-props-modifier.php
- Raw: https://pluginprobe.com/plugins/elementor/4.0.4/raw/modules/atomic-widgets/import-export/modifiers/interactions-props-modifier.php
- Modified: 2026-03-30T09:49:26+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.0.4/code/modules/atomic-widgets/import-export/modifiers/interactions-props-modifier.php#L10-L20`.

```php
<?php

namespace Elementor\Modules\AtomicWidgets\ImportExport\Modifiers;

use Elementor\Modules\AtomicWidgets\PropsResolver\Import_Export_Props_Resolver;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Interactions_Props_Modifier {
	private Import_Export_Props_Resolver $props_resolver;

	private array $schema;

	public function __construct( Import_Export_Props_Resolver $props_resolver, array $schema ) {
		$this->props_resolver = $props_resolver;
		$this->schema = $schema;
	}

	public static function make( Import_Export_Props_Resolver $props_resolver, array $schema ) {
		return new self( $props_resolver, $schema );
	}

	public function run( array $element ) {
		if ( ! isset( $element['interactions'] ) ) {
			return $element;
		}

		$interactions = $element['interactions'];
		if ( is_string( $interactions ) ) {
			$decoded = json_decode( $interactions, true );
			if ( json_last_error() !== JSON_ERROR_NONE || ! is_array( $decoded ) ) {
				return $element;
			}
			$interactions = $decoded;
		}

		if ( empty( $interactions['items'] ) || ! is_array( $interactions['items'] ) ) {
			return $element;
		}

		foreach ( $interactions['items'] as $index => $item ) {
			if ( ! is_array( $item ) || empty( $item['$$type'] ) || ! array_key_exists( 'value', $item ) || ! is_array( $item['value'] ) ) {
				continue;
			}

			$interactions['items'][ $index ]['value'] = $this->props_resolver->resolve(
				$this->schema,
				$item['value']
			);
		}

		$element['interactions'] = $interactions;

		return $element;
	}
}

```
