src/properties/class-papi-property-repeater.php
protected function render_properties( $row, $value ) {
		$layout = $this->get_setting( 'layout' );

		if ( $layout === 'row' ): ?>
			<td class="repeater-layout-row">
			<div class="repeater-content-open">
			<table class="papi-table">
			<tbody>
		<?php endif;

		$has_value = $value !== false;

		foreach ( $row as $property ) {
			// Don't show the property if it's disabled.
			if ( $property->disabled() ) {
				continue;
			}

			$render_property = clone $property->get_options();
			$value_slug      = $property->get_slug( true );

			if ( $has_value ) {
				if ( array_key_exists( $value_slug, $value ) ) {
					$render_property->value = $value[$value_slug];
				} else {
					if ( array_key_exists( $property->get_slug(), $value ) ) {
						$render_property->value = $property->default_value;
					} else {
						continue;
					}
				}
			}

			$render_property->slug = $this->html_name( $property, $this->counter );
			$render_property->raw  = $layout === 'table';

			if ( $layout === 'table' ) {
				echo '<td class="repeater-column ' . ( $property->display() ? '' : 'papi-hide' ) . '">';
				echo '<div class="repeater-content-open">';
				echo sprintf(
					'<label for="%s" class="papi-visually-hidden">%s</label>',
					esc_attr( $this->html_id( $property, $this->counter ) ),
					esc_html( $property->title )
				);
			}

			papi_render_property( $render_property );

			if ( $layout === 'table' ) {
				echo '</div>';
				echo '</td>';
			}
		}

		if ( $layout === 'row' ): ?>
			</tbody>
			</table>
			</div>
			</td>
		<?php endif;
	}
protected function render_properties( $row, $value ) {
		$layout = $this->get_setting( 'layout' );

		if ( $layout === 'row' ): ?>
			<td class="repeater-layout-row">
			<div class="repeater-content-open">
			<table class="papi-table">
			<tbody>
		<?php endif;

		$has_value = $value !== false;

		foreach ( $row as $property ) {
			// Don't show the property if it's disabled.
			if ( $property->disabled() ) {
				continue;
			}

			$render_property = clone $property->get_options();
			$value_slug      = $property->get_slug( true );

			if ( $has_value ) {
				if ( array_key_exists( $value_slug, $value ) ) {
					$render_property->value = $value[$value_slug];
				} else {
					if ( array_key_exists( $property->get_slug(), $value ) ) {
						$render_property->value = $property->default_value;
					} else {
						continue;
					}
				}
			}

			$render_property->slug = $this->html_name( $property, $this->counter );
			$render_property->raw  = $layout === 'table';

			if ( $layout === 'table' ) {
				echo '<td class="repeater-column ' . ( $property->display() ? '' : 'papi-hide' ) . '">';
				echo '<div class="repeater-content-open">';
				echo sprintf(
					'<label for="%s" class="papi-visually-hidden">%s</label>',
					esc_attr( $this->html_id( $property, $this->counter ) ),
					esc_html( $property->title )
				);
			}

			papi_render_property( $render_property );

			if ( $layout === 'table' ) {
				echo '</div>';
				echo '</td>';
			}
		}

		if ( $layout === 'row' ): ?>
			</tbody>
			</table>
			</div>
			</td>
		<?php endif;
	}
Render properties.

@param array      $row
@param array|bool $value