protected function prepare_properties( $items ) {
		$key   = isset( $this->layout_key ) &&
		$this->layout_key === '_layout' ? 'flexible' : 'repeater';
		$items = array_map( 'papi_property', $items );

		$exclude_properties = $this->exclude_properties;
		$exclude_properties = array_merge( $exclude_properties, apply_filters( 'papi/property/' . $key . '/exclude', [] ) );

		return array_filter( $items, function ( $item ) use ( $exclude_properties ) {
			if ( ! is_object( $item ) ) {
				return false;
			}

			if ( empty( $item->type ) ) {
				return false;
			}

			return ! in_array( $item->type, $exclude_properties, true );
		} );
	}