kopia lustrzana https://github.com/Tldraw/Tldraw
61 wiersze
2.1 KiB
TypeScript
61 wiersze
2.1 KiB
TypeScript
import * as React from 'react'
|
|
|
|
const styles = new Map<string, HTMLStyleElement>()
|
|
|
|
const UID = `tldraw-fonts`
|
|
|
|
const CSS = `
|
|
@import url('https://fonts.googleapis.com/css2?family=Caveat+Brush&family=Source+Code+Pro&family=Source+Sans+Pro&family=Crimson+Pro&display=block');
|
|
|
|
@font-face {
|
|
font-family: 'Recursive';
|
|
font-style: normal;
|
|
font-weight: 500;
|
|
font-display: swap;
|
|
src: url(https://fonts.gstatic.com/s/recursive/v23/8vI-7wMr0mhh-RQChyHEH06TlXhq_gukbYrFMk1QuAIcyEwG_X-dpEfaE5YaERmK-CImKsvxvU-MXGX2fSqasNfUlTGZnI14ZeY.woff2)
|
|
format('woff2');
|
|
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
|
|
U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
|
}
|
|
|
|
@font-face {
|
|
font-family: 'Recursive';
|
|
font-style: normal;
|
|
font-weight: 700;
|
|
font-display: swap;
|
|
src: url(https://fonts.gstatic.com/s/recursive/v23/8vI-7wMr0mhh-RQChyHEH06TlXhq_gukbYrFMk1QuAIcyEwG_X-dpEfaE5YaERmK-CImKsvxvU-MXGX2fSqasNfUlTGZnI14ZeY.woff2)
|
|
format('woff2');
|
|
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
|
|
U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
|
}
|
|
|
|
@font-face {
|
|
font-family: 'Recursive Mono';
|
|
font-style: normal;
|
|
font-weight: 420;
|
|
font-display: swap;
|
|
src: url(https://fonts.gstatic.com/s/recursive/v23/8vI-7wMr0mhh-RQChyHEH06TlXhq_gukbYrFMk1QuAIcyEwG_X-dpEfaE5YaERmK-CImqvTxvU-MXGX2fSqasNfUlTGZnI14ZeY.woff2)
|
|
format('woff2');
|
|
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
|
|
U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
|
}
|
|
`
|
|
|
|
export function useStylesheet() {
|
|
React.useLayoutEffect(() => {
|
|
if (styles.get(UID)) return
|
|
const style = document.createElement('style')
|
|
style.innerHTML = CSS
|
|
style.setAttribute('id', UID)
|
|
document.head.appendChild(style)
|
|
styles.set(UID, style)
|
|
|
|
return () => {
|
|
if (style && document.head.contains(style)) {
|
|
document.head.removeChild(style)
|
|
styles.delete(UID)
|
|
}
|
|
}
|
|
}, [])
|
|
}
|