# code-block-pro/1.6.0/src/front/front.js

Code Block Pro – Beautiful Syntax Highlighting, version 1.6.0. 44 lines.

- Page: https://pluginprobe.com/plugins/code-block-pro/1.6.0/code/src/front/front.js
- Raw: https://pluginprobe.com/plugins/code-block-pro/1.6.0/raw/src/front/front.js
- Modified: 2022-09-08T15:09:52+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/code-block-pro/1.6.0/code/src/front/front.js#L10-L20`.

```javascript
import copy from 'copy-to-clipboard';

// Handle copy button
addEventListener('DOMContentLoaded', () => {
    const buttons = Array.from(
        document.querySelectorAll('.code-block-pro-copy-button'),
    );
    buttons.forEach((button) => {
        // Setting it to block here lets users deactivate the plugin safely
        button.style.display = 'block';
        button.addEventListener('click', (event) => {
            const b = event.target?.closest('span');
            copy(b?.dataset?.code ?? '', {
                format: 'text/plain',
            });
            b.classList.add('copying');
            setTimeout(() => {
                b.classList.remove('copying');
            }, 2000);
        });
    });
});

// Handle font loading
addEventListener('DOMContentLoaded', () => {
    if (!window.codeBlockPro?.pluginUrl) return;
    const fontsToLoad = new Set(
        Array.from(
            document.querySelectorAll('[data-code-block-pro-font-family]') ??
                [],
        )
            .map((f) => f.dataset.codeBlockProFontFamily)
            .filter(Boolean),
    );
    [...fontsToLoad].forEach(async (fontName) => {
        const font = new FontFace(
            fontName,
            `url(${window.codeBlockPro.pluginUrl}/build/fonts/${fontName}.woff2)`,
        );
        await font.load();
        document.fonts.add(font);
    });
});

```
