public function apply($transformer, $context, $node)
{
$interactive = Interactive::create();
if (Type::is($context, InstantArticle::getClassName())) {
$instant_article = $context;
} elseif ($transformer->getInstantArticle()) {
$instant_article = $transformer->getInstantArticle();
$context->disableEmptyValidation();
$context = Paragraph::create();
$context->disableEmptyValidation();
} else {
$transformer->addWarning(new NoRootInstantArticleFoundWarning(null, $node));
return $context;
}
// Builds the interactive
$iframe = $this->getProperty(self::PROPERTY_IFRAME, $node);
$url = $this->getProperty(self::PROPERTY_URL, $node);
if ($iframe) {
$interactive->withHTML($iframe);
}
if ($url) {
$interactive->withSource($url);
}
if ($iframe || $url) {
$instant_article->addChild($interactive);
if ($instant_article !== $context) {
$instant_article->addChild($context);
}
} else {
$transformer->addWarning(new InvalidSelector(self::PROPERTY_IFRAME, $instant_article, $node, $this));
}
if ($this->getProperty(self::PROPERTY_WIDTH_COLUMN_WIDTH, $node)) {
$interactive->withMargin(Interactive::COLUMN_WIDTH);
} else {
$interactive->withMargin(Interactive::NO_MARGIN);
}
$width = $this->getProperty(self::PROPERTY_WIDTH, $node);
if ($width) {
$interactive->withWidth($width);
}
$height = $this->getProperty(self::PROPERTY_HEIGHT, $node);
if ($height) {
$interactive->withHeight($height);
}
$suppress_warnings = $transformer->suppress_warnings;
$transformer->suppress_warnings = true;
$transformer->transform($interactive, $node);
$transformer->suppress_warnings = $suppress_warnings;
return $context;
}