Kirby\Patterns\Lab::preview PHP Method

preview() public method

public preview ( $pattern, $file )
    public function preview($pattern, $file)
    {
        $data = ['pattern' => $pattern, 'file' => $file];
        if (get('raw') == 'true') {
            $this->raw($pattern, $file);
        }
        if ($file->filename() == $pattern->name() . '.html.php') {
            $views = ['preview', 'html', 'php'];
            $snippet = 'html';
            // pass the mode to the template
            $data['view'] = in_array(get('view'), $views) ? get('view') : $this->kirby->option('patterns.preview.mode', 'preview');
            switch ($data['view']) {
                case 'preview':
                    try {
                        lab::$mode = 'preview';
                        $pattern->render();
                        $data['content'] = '<iframe src="' . $pattern->url() . '/preview"></iframe>';
                    } catch (Exception $e) {
                        $data['content'] = $this->error($e);
                    }
                    break;
                case 'php':
                    $data['content'] = $this->codeblock($file);
                    break;
                case 'html':
                    $data['content'] = $this->codeblock($pattern);
                    break;
            }
        } else {
            if (in_array(strtolower($file->extension()), ['gif', 'jpg', 'jpeg', 'svg', 'png'])) {
                $snippet = 'image';
            } else {
                if (in_array(strtolower($file->extension()), ['md', 'mdown'])) {
                    $snippet = 'markdown';
                    $data['content'] = kirbytext($file->read());
                } else {
                    $ext = $file->extension();
                    $code = ['php', 'html', 'js', 'css', 'scss', 'less', 'json', 'txt'];
                    if (in_array($ext, $code)) {
                        $snippet = 'code';
                        $data['content'] = $this->codeblock($file);
                    } else {
                        $snippet = 'empty';
                    }
                }
            }
        }
        return $this->view('previews/' . $snippet, $data);
    }