Вход Регистрация
Файл: vendor/laravel/framework/src/Illuminate/Foundation/resources/exceptions/renderer/scripts.js
Строк: 103
<?php
import Alpine from 
'alpinejs';
import tippy from 'tippy.js';
import { createHighlighterCoreSync } from 'shiki/core';
import { createJavaScriptRegexEngine } from 'shiki/engine/javascript';
import json from '@shikijs/langs/json';
import php from '@shikijs/langs/php';
import sql from '@shikijs/langs/sql';
import darkPlus from '@shikijs/themes/dark-plus';
import lightPlus from '@shikijs/themes/light-plus';

tippy('[data-tippy-content]', {
    
arrow: false,
    
allowHTML: true,
    
animation: 'shift-away',
    
delay: [300, 0],
    
duration: 200,
    
theme: 'laravel',
});

window.copyToClipboard = async function (text) {
    if (
navigator.clipboard) {
        
await navigator.clipboard.writeText(text);
    } else {
        const 
textarea = document.createElement('textarea');
        
textarea.value = text;
        
textarea.style.position = 'fixed';
        
textarea.style.opacity = '0';
        
textarea.style.pointerEvents = 'none';
        
document.body.appendChild(textarea);
        
textarea.select();

        const 
result = document.execCommand('copy');
        
document.body.removeChild(textarea);

        if (!
result) {
            throw new 
Error('Failed to copy text to clipboard');
        }
    }
};

const 
highlighter = createHighlighterCoreSync({
    
themes: [lightPlus, darkPlus],
    
langs: [php, sql, json],
    
engine: createJavaScriptRegexEngine(),
});

window.highlight = function (
    
code,
    
language,
    
truncate = false,
    
editor = false,
    
startingLine = 1,
    
highlightedLine = null
) {
    return 
highlighter.codeToHtml(code, {
        
lang: language,
        
themes: {
            
light: 'light-plus',
            
dark: 'dark-plus',
        },
        
transformers: [
            {
                
pre(node) {
                    
this.addClassToHast(node, ['bg-transparent!', truncate ? 'truncate' : 'w-fit min-w-full']);
                },
                
line(node, line) {
                    if (!
editor) {
                        return;
                    }

                    const 
lineNumber = startingLine + line - 1;
                    const 
highlight = highlightedLine === line - 1;

                    const 
lineNumberSpan = {
                        
type: 'element',
                        
tagName: 'span',
                        
properties: {
                            
className: [
                                
'mr-6 text-neutral-500! dark:text-neutral-600!',
                                
highlight ? 'dark:text-white!' : '',
                            ],
                        },
                        
children: [{ type: 'text', value: lineNumber.toString() }],
                    };

                    
node.children.unshift(lineNumberSpan);

                    
this.addClassToHast(node, [
                        
'inline-block w-full px-4 py-1 h-7 even:bg-white odd:bg-white/2 even:dark:bg-white/2 odd:dark:bg-white/4',
                        
highlight ? 'bg-rose-200! dark:bg-rose-900!' : '',
                    ]);
                },
            },
        ],
    });
};

window.Alpine = Alpine;

Alpine.start();
?>
Онлайн: 2
Реклама