index.php 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <?php
  2. declare(strict_types=1);
  3. $renderers = [
  4. 'pdf' => 'pdfjs-dist',
  5. 'ofd' => 'DLTech21/ofd.js',
  6. 'dxf' => '@flyfish-dev/cad-viewer',
  7. 'dwg' => '@flyfish-dev/cad-viewer',
  8. 'dwf' => '@flyfish-dev/cad-viewer',
  9. 'dwfx' => '@flyfish-dev/cad-viewer',
  10. 'xps' => '@flyfish-dev/cad-viewer',
  11. 'json' => 'highlight.js',
  12. 'php' => 'highlight.js',
  13. ];
  14. function extensionOf(string $filename): string
  15. {
  16. return strtolower(pathinfo($filename, PATHINFO_EXTENSION));
  17. }
  18. function buildPreviewPlan(array $files, array $renderers): array
  19. {
  20. return array_map(static function (string $filename) use ($renderers): array {
  21. $extension = extensionOf($filename);
  22. $renderer = $renderers[$extension] ?? 'fallback';
  23. return [
  24. 'filename' => $filename,
  25. 'extension' => $extension,
  26. 'renderer' => $renderer,
  27. 'async' => $renderer !== 'fallback',
  28. ];
  29. }, $files);
  30. }
  31. $plans = buildPreviewPlan([
  32. 'invoice.ofd',
  33. 'house.dwfx',
  34. 'controller.php',
  35. ], $renderers);
  36. header('Content-Type: application/json; charset=utf-8');
  37. echo json_encode($plans, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);