vendor/ivory/google-map/src/Helper/Subscriber/ApiJavascriptSubscriber.php line 25

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the Ivory Google Map package.
  4.  *
  5.  * (c) Eric GELOEN <geloen.eric@gmail.com>
  6.  *
  7.  * For the full copyright and license information, please read the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. namespace Ivory\GoogleMap\Helper\Subscriber;
  11. use Ivory\GoogleMap\Helper\Event\ApiEvent;
  12. use Ivory\GoogleMap\Helper\Event\ApiEvents;
  13. use Ivory\GoogleMap\Helper\Formatter\Formatter;
  14. use Ivory\GoogleMap\Helper\Renderer\ApiRenderer;
  15. use Ivory\GoogleMap\Helper\Renderer\Html\JavascriptTagRenderer;
  16. use Symfony\Component\EventDispatcher\EventDispatcherInterface;
  17. use Symfony\Contracts\EventDispatcher\Event;
  18. /**
  19.  * @author GeLo <geloen.eric@gmail.com>
  20.  */
  21. class ApiJavascriptSubscriber extends AbstractDelegateSubscriber
  22. {
  23.     /**
  24.      * @var ApiRenderer
  25.      */
  26.     private $apiRenderer;
  27.     /**
  28.      * @var JavascriptTagRenderer
  29.      */
  30.     private $javascriptTagRenderer;
  31.     public function __construct(
  32.         Formatter $formatter,
  33.         ApiRenderer $apiRenderer,
  34.         JavascriptTagRenderer $javascriptTagRenderer
  35.     ) {
  36.         parent::__construct($formatter);
  37.         $this->setApiRenderer($apiRenderer);
  38.         $this->setJavascriptTagRenderer($javascriptTagRenderer);
  39.     }
  40.     /**
  41.      * @return ApiRenderer
  42.      */
  43.     public function getApiRenderer()
  44.     {
  45.         return $this->apiRenderer;
  46.     }
  47.     public function setApiRenderer(ApiRenderer $apiRenderer)
  48.     {
  49.         $this->apiRenderer $apiRenderer;
  50.     }
  51.     /**
  52.      * @return JavascriptTagRenderer
  53.      */
  54.     public function getJavascriptTagRenderer()
  55.     {
  56.         return $this->javascriptTagRenderer;
  57.     }
  58.     public function setJavascriptTagRenderer(JavascriptTagRenderer $javascriptTagRenderer)
  59.     {
  60.         $this->javascriptTagRenderer $javascriptTagRenderer;
  61.     }
  62.     /**
  63.      * {@inheritdoc}
  64.      */
  65.     public function handle(Event $event$eventNameEventDispatcherInterface $eventDispatcher)
  66.     {
  67.         parent::handle($event$eventName$eventDispatcher);
  68.         if ($event instanceof ApiEvent) {
  69.             $this->handleApi($event);
  70.         }
  71.     }
  72.     /**
  73.      * @return string[][]
  74.      */
  75.     public static function getDelegatedSubscribedEvents()
  76.     {
  77.         return [
  78.             ApiEvents::JAVASCRIPT => [
  79.                 ApiEvents::JAVASCRIPT_MAP,
  80.                 ApiEvents::JAVASCRIPT_AUTOCOMPLETE,
  81.             ],
  82.         ];
  83.     }
  84.     private function handleApi(ApiEvent $event)
  85.     {
  86.         $event->setCode($this->getJavascriptTagRenderer()->render($this->getApiRenderer()->render(
  87.             $event->getCallbacks(),
  88.             $event->getRequirements(),
  89.             $event->getSources(),
  90.             $event->getLibraries()
  91.         )));
  92.     }
  93. }