유튜브
YouTube 영상 주소나 영상 ID를 받아 임베드 블록으로 만듭니다. 문서에는 전체 주소가 아니라 11글자 영상 ID와 폭만 저장되고, 새 영상은 가운데 정렬과 70% 폭으로 시작합니다.
폭은 정해진 단계에서 고르며 정렬은 영상을 감싼 문단에 저장됩니다. 편집기에서는 첫 클릭으로 영상을 선택하고, 선택한 뒤 다시 클릭하면 재생할 수 있습니다. 주소를 바꾸는 대신 영상을 지우고 새로 넣습니다.
wing
기본 서체높이
HTML에디터를 불러오는 중…
JSON나비트리에디터를 불러오는 중…
설치
npm install nabi-note코드
import {
createNabiWith, mountSurface, mountToolbar, mountContextToolbar,
mountHints, watchSettle, codeWing, imageWing, youtubeWing,
mountViewTools,
} from 'nabi-note'
const selected = [
codeWing,
imageWing,
youtubeWing,
]
const { nabi, registry } = createNabiWith(selected)
// 색칠은 호스트의 하이라이터가 한다 (Prism·highlight.js·Shiki…) — wing 은 그대로 두고
// 붙는 일(attach)만 갈아 낀다 — `makeCodeAttach` 도 같은 문에서 나온다
// { ...codeWing, attach: makeCodeAttach({ highlight: (source, lang) => [{ text: source }] }) }
const root = document.querySelector('.nabi')!
const content = document.querySelector('.nabi-content')!
// locale 이 글의 방향도 정한다 — 아랍어·우르두면 오른쪽에서 왼쪽으로 선다
mountSurface({ nabi, registry, root: content, locale: 'ko' })
const settle = watchSettle(document, { surface: content })
const shared = { nabi, registry, surface: content, settle, locale: 'ko' }
const toolbar = mountToolbar({ ...shared, root: document.querySelector('#toolbar')! })
const context = mountContextToolbar({ ...shared, root: document.querySelector('#context')! })
mountHints({ toolbar, context, root, surface: content })
// 미리보기·전체화면 두 단추 — 툴바 줄의 끝에 제 상자를 세워 앉는다
mountViewTools({ ...shared, root, container: document.querySelector('#toolbar')! })
// 값이 바뀔 때마다 — 여기에 당신의 코드를 건다
// nabi.onChange(() => user_callback(nabi.getHtml()))ts
const selected = wings().use('youtube').build()CSS 스타일
영상은 .nabi-content iframe으로 테두리와 모서리를 바꿀 수 있습니다. 저장된 폭과 정렬은 바꾸지 마세요.
css
.article-body iframe {
border-radius: 14px;
box-shadow: 0 10px 28px rgb(0 0 0 / 16%);
}aspect-ratio, 폭, 정렬 margin은 패키지가 영상 크기를 유지하는 데 사용하므로 덮어쓰지 않습니다.