@@ -152,15 +152,15 @@ discard block |
||
152 | 152 | 'options' => $tagOptions |
153 | 153 | ]; |
154 | 154 | // Include any imports |
155 | - $importFiles = []; |
|
156 | - self::extractImportFiles(self::$manifest, $manifestKey, $importFiles); |
|
157 | - foreach ($importFiles as $importFile) { |
|
158 | - $tags[] = [ |
|
159 | - 'crossorigin' => $tagOptions['crossorigin'] ?? true, |
|
160 | - 'type' => 'import', |
|
161 | - 'url' => $importFile, |
|
162 | - ]; |
|
163 | - } |
|
155 | + $importFiles = []; |
|
156 | + self::extractImportFiles(self::$manifest, $manifestKey, $importFiles); |
|
157 | + foreach ($importFiles as $importFile) { |
|
158 | + $tags[] = [ |
|
159 | + 'crossorigin' => $tagOptions['crossorigin'] ?? true, |
|
160 | + 'type' => 'import', |
|
161 | + 'url' => $importFile, |
|
162 | + ]; |
|
163 | + } |
|
164 | 164 | // Include any CSS tags |
165 | 165 | $cssFiles = []; |
166 | 166 | self::extractCssFiles(self::$manifest, $manifestKey, $cssFiles); |
@@ -178,32 +178,32 @@ discard block |
||
178 | 178 | return $tags; |
179 | 179 | } |
180 | 180 | |
181 | - /** |
|
182 | - * Extract any import files from entries recursively |
|
183 | - * |
|
184 | - * @param array $manifest |
|
185 | - * @param string $manifestKey |
|
186 | - * @param array $importFiles |
|
187 | - * |
|
188 | - * @return array |
|
189 | - */ |
|
190 | - protected static function extractImportFiles(array $manifest, string $manifestKey, array &$importFiles): array |
|
191 | - { |
|
192 | - $entry = $manifest[$manifestKey] ?? null; |
|
193 | - if (!$entry) { |
|
194 | - return []; |
|
195 | - } |
|
196 | - |
|
197 | - $imports = $entry['imports'] ?? []; |
|
198 | - foreach($imports as $import) { |
|
199 | - $importFiles[] = $manifest[$import]['file']; |
|
200 | - self::extractImportFiles($manifest, $import, $importFiles); |
|
201 | - } |
|
202 | - |
|
203 | - return $importFiles; |
|
204 | - } |
|
205 | - |
|
206 | - /** |
|
181 | + /** |
|
182 | + * Extract any import files from entries recursively |
|
183 | + * |
|
184 | + * @param array $manifest |
|
185 | + * @param string $manifestKey |
|
186 | + * @param array $importFiles |
|
187 | + * |
|
188 | + * @return array |
|
189 | + */ |
|
190 | + protected static function extractImportFiles(array $manifest, string $manifestKey, array &$importFiles): array |
|
191 | + { |
|
192 | + $entry = $manifest[$manifestKey] ?? null; |
|
193 | + if (!$entry) { |
|
194 | + return []; |
|
195 | + } |
|
196 | + |
|
197 | + $imports = $entry['imports'] ?? []; |
|
198 | + foreach($imports as $import) { |
|
199 | + $importFiles[] = $manifest[$import]['file']; |
|
200 | + self::extractImportFiles($manifest, $import, $importFiles); |
|
201 | + } |
|
202 | + |
|
203 | + return $importFiles; |
|
204 | + } |
|
205 | + |
|
206 | + /** |
|
207 | 207 | * Extract any CSS files from entries recursively |
208 | 208 | * |
209 | 209 | * @param array $manifest |
@@ -233,30 +233,30 @@ discard block |
||
233 | 233 | } |
234 | 234 | |
235 | 235 | // modulepreload any imports from modern tags |
236 | - $modulepreloadPolyfillRequired = false; |
|
237 | - foreach($tags as $tag) { |
|
238 | - if (!empty($tag)) { |
|
239 | - $url = FileHelper::createUrl($this->serverPublic, $tag['url']); |
|
240 | - switch ($tag['type']) { |
|
241 | - case 'import': |
|
242 | - $lines[] = HtmlHelper::tag('link', '', [ |
|
243 | - 'crossorigin' => $tag['crossorigin'], |
|
244 | - 'href' => $url, |
|
245 | - 'rel' => 'modulepreload', |
|
246 | - ]); |
|
247 | - $modulepreloadPolyfillRequired = true; |
|
248 | - break; |
|
249 | - default: |
|
250 | - break; |
|
251 | - } |
|
252 | - } |
|
253 | - } |
|
254 | - if($modulepreloadPolyfillRequired && ! $this->modulepreloadPolyfillIncluded) { |
|
255 | - $this->modulepreloadPolyfillIncluded = true; |
|
256 | - $lines[] = HtmlHelper::script( |
|
257 | - FileHelper::fetchScript('modulepreload-polyfill.min.js', $this->cacheKeySuffix), |
|
258 | - ['type' => 'module'] |
|
259 | - ); |
|
236 | + $modulepreloadPolyfillRequired = false; |
|
237 | + foreach($tags as $tag) { |
|
238 | + if (!empty($tag)) { |
|
239 | + $url = FileHelper::createUrl($this->serverPublic, $tag['url']); |
|
240 | + switch ($tag['type']) { |
|
241 | + case 'import': |
|
242 | + $lines[] = HtmlHelper::tag('link', '', [ |
|
243 | + 'crossorigin' => $tag['crossorigin'], |
|
244 | + 'href' => $url, |
|
245 | + 'rel' => 'modulepreload', |
|
246 | + ]); |
|
247 | + $modulepreloadPolyfillRequired = true; |
|
248 | + break; |
|
249 | + default: |
|
250 | + break; |
|
251 | + } |
|
252 | + } |
|
253 | + } |
|
254 | + if($modulepreloadPolyfillRequired && ! $this->modulepreloadPolyfillIncluded) { |
|
255 | + $this->modulepreloadPolyfillIncluded = true; |
|
256 | + $lines[] = HtmlHelper::script( |
|
257 | + FileHelper::fetchScript('modulepreload-polyfill.min.js', $this->cacheKeySuffix), |
|
258 | + ['type' => 'module'] |
|
259 | + ); |
|
260 | 260 | } |
261 | 261 | |
262 | 262 | return implode("\r\n", $lines); |
@@ -383,37 +383,37 @@ discard block |
||
383 | 383 | } |
384 | 384 | } |
385 | 385 | |
386 | - // modulepreload any imports from modern tags |
|
387 | - $modulepreloadPolyfillRequired = false; |
|
388 | - foreach($tags as $tag) { |
|
389 | - if (!empty($tag)) { |
|
390 | - $url = FileHelper::createUrl($this->serverPublic, $tag['url']); |
|
391 | - switch ($tag['type']) { |
|
392 | - case 'import': |
|
393 | - $view->registerLinkTag( |
|
394 | - [ |
|
395 | - 'crossorigin' => $tag['crossorigin'], |
|
396 | - 'href' => $url, |
|
397 | - 'rel' => 'modulepreload', |
|
398 | - ], |
|
399 | - md5($url) |
|
400 | - ); |
|
401 | - $modulepreloadPolyfillRequired = true; |
|
402 | - break; |
|
403 | - default: |
|
404 | - break; |
|
405 | - } |
|
406 | - } |
|
407 | - } |
|
408 | - if($modulepreloadPolyfillRequired && ! $this->modulepreloadPolyfillIncluded) { |
|
409 | - $this->modulepreloadPolyfillIncluded = true; |
|
410 | - $view->registerScript( |
|
411 | - FileHelper::fetchScript('modulepreload-polyfill.min.js', $this->cacheKeySuffix), |
|
412 | - $view::POS_HEAD, |
|
413 | - ['type' => 'module'], |
|
414 | - 'MODULEPRELOAD_POLYFILL' |
|
415 | - ); |
|
416 | - } |
|
386 | + // modulepreload any imports from modern tags |
|
387 | + $modulepreloadPolyfillRequired = false; |
|
388 | + foreach($tags as $tag) { |
|
389 | + if (!empty($tag)) { |
|
390 | + $url = FileHelper::createUrl($this->serverPublic, $tag['url']); |
|
391 | + switch ($tag['type']) { |
|
392 | + case 'import': |
|
393 | + $view->registerLinkTag( |
|
394 | + [ |
|
395 | + 'crossorigin' => $tag['crossorigin'], |
|
396 | + 'href' => $url, |
|
397 | + 'rel' => 'modulepreload', |
|
398 | + ], |
|
399 | + md5($url) |
|
400 | + ); |
|
401 | + $modulepreloadPolyfillRequired = true; |
|
402 | + break; |
|
403 | + default: |
|
404 | + break; |
|
405 | + } |
|
406 | + } |
|
407 | + } |
|
408 | + if($modulepreloadPolyfillRequired && ! $this->modulepreloadPolyfillIncluded) { |
|
409 | + $this->modulepreloadPolyfillIncluded = true; |
|
410 | + $view->registerScript( |
|
411 | + FileHelper::fetchScript('modulepreload-polyfill.min.js', $this->cacheKeySuffix), |
|
412 | + $view::POS_HEAD, |
|
413 | + ['type' => 'module'], |
|
414 | + 'MODULEPRELOAD_POLYFILL' |
|
415 | + ); |
|
416 | + } |
|
417 | 417 | } |
418 | 418 | |
419 | 419 | /** |