final public function get_layout_definition() : array {

		$standard_fields = [];
		// Add heading field to module.
		if ( true === apply_filters( 'hogan/module/' . $this->name . '/heading/enabled', false ) ) {
			hogan_append_heading_field( $standard_fields, $this );
		}

		// Add lead field to module.
		if ( true === apply_filters( 'hogan/module/' . $this->name . '/lead/enabled', false ) ) {
			hogan_append_lead_field( $standard_fields, $this );
		}

		$sub_fields = array_merge(
			apply_filters( 'hogan/module/' . $this->name . '/fields_before', [] ),
			$standard_fields,
			$this->get_fields(),
			apply_filters( 'hogan/module/' . $this->name . '/fields_after', [] )
		);

		return [
			'key'        => $this->field_key,
			'name'       => $this->name,
			'label'      => $this->label,
			'display'    => apply_filters( 'hogan/module/' . $this->name . '/layout/display', 'block' ),
			'sub_fields' => apply_filters( 'hogan/module/' . $this->name . '/layout/sub_fields', $sub_fields ),
			'min'        => apply_filters( 'hogan/module/' . $this->name . '/layout/min', '' ),
			'max'        => apply_filters( 'hogan/module/' . $this->name . '/layout/max', '' ),
		];
	}