private function registerContentTypes()
 {
     $container = $this->container;
     $output = $this->output;
     $this->output->registerContentType('TemplateSelector', function (TemplateSelector $selector) use($container, $output) {
         /** @var RepositoryInterface $repo */
         $repo = $container->get('Repository')->forEntity(Template::class);
         $templates = $repo->getAll();
         // @todo Grouping
         $groups = ['Available Templates' => $templates];
         $accordion = new Accordion('Accordion Title', null, new \stdClass());
         foreach ($groups as $title => $group) {
             $compound = new Compound('div', $title, null, new \stdClass());
             foreach ($group as $item) {
                 $imageData = new ImageEntity();
                 $imageData->url = '/' . $item->path . '/preview.png';
                 $image = new Image($imageData, $item->path);
                 $compound->add($image);
             }
             $accordion->add($compound);
         }
         $accordion->accept($output);
     });
 }
 /**
  * Render an accordion
  *
  * @param   Accordion $accordion The accordion
  *
  * @return  integer Number of bytes written to the output
  */
 public function visitAccordion(Accordion $accordion)
 {
     $accordion->setId('accordion-' . spl_object_hash($accordion));
     $this->preRenderChildElements($accordion);
     return $this->applyLayout('accordion.php', $accordion);
 }