<?php

namespace Planaday\Html\Tags\Form\Booking;

use Planaday\Html\Tags\Form\Booking\AddressInput\AddressInput;
use Planaday\Html\Tags\Form\Booking\ApiAttributesInput\ApiAttributesInput;
use Planaday\Html\Tags\Form\Booking\CompanyInput\CompanyInput;
use Planaday\Html\Tags\Form\Booking\ExtraFieldsInput\ExtraFieldsInput;
use Planaday\Html\Tags\Form\Booking\InvoiceInput\InvoiceInput;
use Planaday\Html\Tags\Form\Booking\DayPartsChecklist\DayPartsChecklist;
use Planaday\Html\Tags\Form\Booking\MaterialsChecklist\MaterialsChecklist;
use Planaday\Html\Tags\Form\Booking\PersonInput\PersonInput;
use Planaday\Html\Tags\TagHandlerTemplate;
use Planaday\Utility\DependencyInjection\Container;

class BookingFormTagHandler extends TagHandlerTemplate {
	public function __construct() {
		$this->tags = [
			PersonInput::TAG        => function ( Container $registry ) {
				return new PersonInput( $registry );
			},
			DayPartsChecklist::TAG  => function ( Container $registry ) {
				return new DayPartsChecklist( $registry );
			},
			MaterialsChecklist::TAG  => function ( Container $registry ) {
				return new MaterialsChecklist( $registry );
			},
			ApiAttributesInput::TAG => function ( Container $registry ) {
				return new ApiAttributesInput( $registry );
			},
			ExtraFieldsInput::TAG   => function ( Container $registry ) {
				return new ExtraFieldsInput( $registry );
			},
			CompanyInput::TAG       => function ( Container $registry ) {
				return new CompanyInput( $registry );
			},
			AddressInput::TAG       => function ( Container $registry ) {
				return new AddressInput( $registry );
			},
			InvoiceInput::TAG       => function ( Container $registry ) {
				return new InvoiceInput( $registry );
			},
		];
	}
}