viewConfig = $viewConfig; $this->themeList = $themeList; } /** * @param FallbackContext $assetContext * @return bool */ public function isSplit(FallbackContext $assetContext) { return (bool)$this->getPartSize($assetContext); } /** * @param FallbackContext $assetContext * @return \Magento\Framework\Config\View */ public function getConfig(FallbackContext $assetContext) { $themePath = $assetContext->getAreaCode() . '/' . $assetContext->getThemePath(); if (!isset($this->config[$themePath])) { $this->config[$themePath] = $this->viewConfig->getViewConfig([ 'area' => $assetContext->getAreaCode(), 'themeModel' => $this->getThemeProvider()->getThemeByFullPath( $themePath ) ]); } return $this->config[$themePath]; } /** * @param FallbackContext $assetContext * @return int */ public function getPartSize(FallbackContext $assetContext) { $size = $this->getConfig($assetContext)->getVarValue( self::VIEW_CONFIG_MODULE, self::VIEW_CONFIG_BUNDLE_SIZE_NAME ); $unit = preg_replace('/[^a-zA-Z]+/', '', $size); $unit = strtoupper($unit); switch ($unit) { case 'KB': return (int)$size; case 'MB': return (int)$size * 1024; default: return (int)($size / 1024); } } /** * @return ThemeProviderInterface */ private function getThemeProvider() { if (null === $this->themeProvider) { $this->themeProvider = ObjectManager::getInstance()->get(ThemeProviderInterface::class); } return $this->themeProvider; } }