NABI NOTE
ఓపెన్ సోర్స్ WYSIWYG ఎడిటర్
NABI NOTE అనేది ఓపెన్ సోర్స్ WYSIWYG ఎడిటర్. ఆకృతీకరణ, సమలేఖనం, పట్టికలు, అప్లోడ్ వంటి ఫీచర్లు కోర్ నుంచి వేరుగా వింగ్స్ అనే స్వతంత్ర మాడ్యూల్లుగా ఉంటాయి. కావలసిన వింగ్స్ను ఎంచుకుని ఎడిటర్ను రూపొందించవచ్చు; మీ స్వంత వింగ్ను కూడా కలపవచ్చు. సాధారణ JavaScriptలో వ్రాసినందున React, Vue వంటి ఫ్రేమ్వర్క్లలో వాడవచ్చు. బిల్డ్ అమరిక లేని పేజీల్లో CDN లైబ్రరీతో ప్రారంభించవచ్చు. NABI TREE పత్ర రూపాన్ని బ్రౌజర్ DOM లేని Node.jsలో కూడా HTMLగా మార్చవచ్చు. నమోదైన నియమాలు ఇన్పుట్ పత్రాన్ని సరిదిద్దుతాయి; HTML సృష్టించేటప్పుడు వచనం, లక్షణాలు ఎస్కేప్ అవుతాయి, లింక్ చిరునామాలు తనిఖీ అవుతాయి. అయితే అనుకూల వింగ్స్, సర్వర్ డేటాను అప్లికేషన్ భద్రతా విధానం ప్రకారం విడిగా సమీక్షించాలి. CSS వేరియబుల్స్, rem అమరికతో థీమ్, పరిమాణాన్ని మార్చవచ్చు; డార్క్ మోడ్, బహుభాష అక్షరరూపాలూ ఉన్నాయి. పట్టిక క్రమబద్ధీకరణ, స్థానిక చరిత్ర, AI సహాయ పత్రపని అన్నీ ఒకే పత్ర నమూనాపై నడుస్తాయి.
అక్షరరూపం
శాన్స్ సెరిఫ్, సెరిఫ్, మోనోస్పేస్, చేతిరాత — ప్రతి కుటుంబం లిపికి సరిపడే ఫాంట్లను వాడుతుంది. డిఫాల్ట్ అక్షరరూపాన్ని హోస్ట్ నిర్ణయిస్తుంది.
ప్రతి కుటుంబాన్ని అనేక భాషల్లో చూడండి.
శాన్స్ సెరిఫ్ · Mara seref · Sans serif · Bila serif · சான்ஸ் செரிஃப் · ไร้เชิง · Senza grazie · 산세리프 · ゴシック体 · 无衬线 · Serifenlos · Sans empattement · Sin serifa · Sem serifa · Без засечек · بلا زخارف · सैन्स सेरिफ़ · স্যান্স সেরিফ · سانس سیرف · Tanpa serif · بدون سریف · सॅन्स सेरिफ · Không chân
సెరిఫ్ · Mai seref · Serif · Yenye serif · செரிஃப் · มีเชิง · Con grazie · 세리프 · 明朝体 · 衬线 · Avec empattement · Con serifa · Com serifa · С засечками · بزخارف · सेरिफ़ · সেরিফ · سیرف · Berserif · سریف · सेरिफ · Có chân
మోనోస్పేస్ · Tazara ɗaya · Eş aralıklı · Nafasi moja · ஒற்றையகலம் · ความกว้างคงที่ · Monospaziato · Monospace · 고정폭 · 等幅 · 等宽 · Dicktengleich · Chasse fixe · Monoespaciada · Monoespaçada · Моноширинный · ثابت العرض · मोनोस्पेस · মনোস্পেস · یکساں چوڑائی · Lebar tetap · تکفاصله · Đơn cách
చేతిరాత · Rubutun hannu · El yazısı · Mwandiko · கையெழுத்து · ลายมือ · Corsivo · Cursive · 필기체 · 筆記体 · 手写体 · Schreibschrift · Cursiva · Рукописный · خط اليد · हस्तलिपि · হস্তলিপি · رواں خط · Tulisan tangan · دستنویس · हस्ताक्षर · Chữ viết tay
వచన పరిమాణం
అతి చిన్నది
చిన్నది
పెద్దది
అతి పెద్దది
శీర్షిక
ఖాళీ పంక్తిలో # రాసి స్పేస్ నొక్కండి — అదే చోట శీర్షిక అవుతుంది.
H1
H2
H3
H4
H5
H6
బోల్డ్ · ఇటాలిక్ · అండర్లైన్ · స్ట్రైక్త్రూ
బోల్డ్ ఇటాలిక్ అండర్లైన్ స్ట్రైక్త్రూ — ఉదాహరణ.
వాటిని ఒకదానిపై ఒకటి కూడా వేయవచ్చు.
సూపర్స్క్రిప్ట్ మరియు సబ్స్క్రిప్ట్
విస్తీర్ణం 3.5m2; ఫుట్నోట్ ఇలా జోడిస్తారు.1
నీరు H2O.
వచన రంగు · హైలైట్
లేత, ముదురు మోడ్లలోనూ స్పష్టంగా కనిపించేలా రంగులను ఎంచుకున్నాం.
వచన రంగు ఆకుపచ్చ · పగడపు · ఊదా · కాషాయం · నీలం
హైలైట్ పసుపు · ఆకుపచ్చ · సియాన్ · గులాబీ · ఊదా · నారింజ
లింక్
చిరునామా పెడితే అది లింక్ అవుతుంది.
http://, https:// URLలతో పాటు . లేదా /తో మొదలయ్యే ఇదే సైట్ మార్గాలను వాడవచ్చు; javascript: వంటి చిరునామాలు అనుమతించబడవు.
ఉదాహరణకు https://nabi.saro.me రాసి స్పేస్ లేదా ఎంటర్ నొక్కండి — దానంతట అదే మారుతుంది.
లింక్ తెరవడం
పత్రం చిరునామానే నిల్వ చేస్తుంది; దానిని చూపే పేజీ ఎలా తెరవాలో నిర్ణయిస్తుంది.
జోడింపు లింక్
చిత్రం కాని ఫైల్ అప్లోడ్ చేస్తే కింది వంటి జోడింపు లింక్గా మిగులుతుంది.
జోడింపు లింక్ పత్రంలో నిల్వ ఉంటుంది.
సమలేఖనం
ఎడమకు సమలేఖనం
మధ్యకు సమలేఖనం
కుడికి సమలేఖనం
శీర్షికలనూ సమలేఖనం చేయవచ్చు.
జాబితాలు
బుల్లెట్ జాబితా
ఖాళీ పంక్తిలో - రాసి స్పేస్ నొక్కండి.
ఒక బుల్లెట్ అంశం
Tab / Shift+Tab లోపలికి, బయటికి జరుపుతాయి.
సంఖ్యా జాబితా
ఖాళీ పంక్తిలో 1. రాసి స్పేస్ నొక్కండి.
మొదటిది
రెండవది
మూడవది
చెక్లిస్ట్
ఖాళీ పంక్తిలో [ ] లేదా [x] రాసి స్పేస్ నొక్కండి.
ఈ అంశం పూర్తయింది.
ఇది ఇంకా పూర్తికాలేదు.
పట్టిక
టూల్బార్లోని పట్టిక బటన్ నొక్కి సృష్టించి, అడ్డు వరుసలు, నిలువు వరుసలను జోడించండి, తొలగించండి, కలపండి.
నిలువు వరుస క్రమబద్ధీకరణ
ప్రివ్యూ తెరుచుకున్న తర్వాత నిల్వ, ధర శీర్షికలను నొక్కండి.
మోడల్ | నిల్వ | ధర | బరువు |
|---|---|---|---|
NB-7 | 1,200 | 349 | 1.2 kg |
NB-9 | 20,000 | 99 | 0.9 kg |
NB-12 | 3,500 | 1,299 | 1.4 kg |
NB-80 | 900 | 8,900 | 2.1 kg |
NB-100 | తెలియాల్సి ఉంది | 12,999 | 2.4 kg |
ధర కాలమ్లో అన్ని విలువలు సంఖ్యలు కాబట్టి సంఖ్యల ప్రకారం క్రమబద్ధీకరిస్తుంది.
నిల్వ కాలమ్లో చివరి కణంలో అక్షరాలు ఉండటంతో వచనంగా క్రమబద్ధీకరిస్తుంది.
విభాజకం
--- రాసి ఎంటర్ నొక్కితే విభాజకం అవుతుంది.
చిత్రం
వెడల్పు 30% నుంచి 100%; ఎడమ, మధ్య లేదా కుడివైపు పెట్టవచ్చు.
YouTube
అప్లోడ్
చిత్రం లేదా ఫైల్ను ఎడిటర్పైకి లాగి చూడండి.
ఈ నమూనాలోని అప్లోడ్ నిజమైనది కాదు; ఒక సెట్టింగ్ దానిని మీ సర్వర్కు కలుపుతుంది.
అప్లోడ్ విఫలమైతే చిత్రం లేదా ఫైల్ ఎడిటర్ నుంచి తొలగిపోతుంది.
ఉల్లేఖనం
ఖాళీ పంక్తిలో > రాసి స్పేస్ నొక్కితే ఉల్లేఖన పెట్టె వస్తుంది.
ఇది అనేక పంక్తులకు విస్తరించవచ్చు.
కోడ్
ఖాళీ పంక్తిలో ``` రాసి స్పేస్ లేదా ఎంటర్ నొక్కండి.
```javaలా భాషను రాసి స్పేస్ లేదా ఎంటర్ నొక్కితే అదే భాష వర్తించిన కోడ్ పెట్టె వస్తుంది.
import { createNabiWith, defaultWings } from 'nabi-note'
const { nabi } = createNabiWith(defaultWings)
const html = nabi.getHtml()వివరాలు
వివరాలు సారాంశం, శరీరంతో రూపొందుతాయి.
మడతపెట్టిన లేదా తెరిచిన స్థితిలో సేవ్ చేయాలా ఎంచుకోవచ్చు.
సత్వర మార్గాలు
Shiftను త్వరగా రెండుసార్లు నొక్కండి; టూల్బార్లో ప్రతి ఫీచర్ సత్వర మార్గం కనిపిస్తుంది.
స్వయంచాలక ఆకృతీకరణ
ఉదాహరణ | చర్య కీ | ఫలితం |
|---|---|---|
# | స్పేస్ | శీర్షిక |
- | స్పేస్ | బుల్లెట్ జాబితా |
1. | స్పేస్ | సంఖ్యా జాబితా |
[ ] · [x] | స్పేస్ | చెక్లిస్ట్ |
> | స్పేస్ | ఉల్లేఖనం |
``` · ```ts | స్పేస్ · ఎంటర్ | కోడ్ పెట్టె |
--- | ఎంటర్ | విభాజకం |
https://… | స్పేస్ · ఎంటర్ | లింక్ |
అవుట్పుట్ ఫంక్షన్లు
ఫంక్షన్ | ఫలితం |
|---|---|
getHtml() | HTML |
getJson() | JSON |
DOM లేకుండానే పనిచేస్తుంది
JSON నుంచి HTMLకు మార్చడానికి DOM అవసరం లేదు.
సర్వర్ (Node.js) నిల్వ చేసిన NABI TREEని చదివి అదే నియమాలతో HTMLను సృష్టిస్తుంది.
మొబైల్కు అనుకూలం
మొబైల్ UI — ప్రతిస్పందించే అమరిక.
మొబైల్ కీబోర్డ్ ఇన్సెట్ — కీబోర్డ్ ఎత్తును లెక్కలోకి తీసుకుంటుంది.
ద్రవ పరిమాణం — ప్రతి పరిమాణం remలో ఉంటుంది.
అనేక భాషలు — అనేక భాషలకు మద్దతు ఉంది.
అనుకూలీకరణ
మీ సొంత వింగ్ — అవసరమైన ఫీచర్ను తయారు చేసి నమోదు చేయండి.
మీ సొంత CSS — రంగులు, మూలలు, ఖాళీలు --nabi-*లో నిర్వచించబడ్డాయి.
ఓపెన్ సోర్స్ — ఇది GitHubలో ఓపెన్ సోర్స్.
పత్రాలు చదవండి → nabi.saro.me
npm install nabi-noteimport {
createNabiWith, mountSurface, mountToolbar, mountContextToolbar,
mountHints, watchSettle, defaultWings, mountUpload, mountUploadView,
browserFileStore, mountFile, parseNodes, mountViewTools,
browserHistoryStorage, mountLocalHistory, openHistoryPanel,
} from 'nabi-note'
import { mountDiffWing } from 'nabi-note/diff'
// The box that asks — without it the core answers "no" to everything (plug in your own)
const ask = { message: (t: string) => alert(t), confirm: (t: string) => confirm(t) }
const selected = [
...defaultWings,
]
const { nabi, registry } = createNabiWith(selected, { ask })
// Bring your own highlighter (Prism, highlight.js, Shiki, …) — the wing stays as it is
// and only the attach is swapped (`makeCodeAttach` ships from the same door)
// { ...codeWing, attach: makeCodeAttach({ highlight: (source, lang) => [{ text: source }] }) }
const root = document.querySelector('.nabi')!
const content = document.querySelector('.nabi-content')!
const view = mountUploadView({ nabi, surface: content })
const upload = mountUpload({
nabi, root: content,
// your upload goes here — report progress with task.onProgress(0–100)
uploader: async (task) => ({ uri: 'https://cdn.example/uploaded' }),
extensions: ['png', 'jpg', 'pdf'], maxFileSize: 10 * 1024 * 1024,
onStart: (tasks) => view.start(tasks),
onProgress: (id, percent) => view.progress(id, percent),
onSettle: () => view.settle(),
onDone: () => view.done(),
})
const file = mountFile({ nabi, registry, store: browserFileStore(document), parse: parseNodes, locale: 'te', name: () => 'note' })
const history = mountLocalHistory({ nabi, storage: browserHistoryStorage(window) })
const diff = mountDiffWing({ nabi, registry, surface: content, locale: 'te' })
// The locale also sets the direction — Arabic and Urdu run right to left
mountSurface({ nabi, registry, root: content, locale: 'te', fileSink: upload.take })
const settle = watchSettle(document, { surface: content })
const shared = { nabi, registry, surface: content, settle, locale: 'te' }
// A tool that needs a panel comes back to the host — without this the button is dead
const toolbar = mountToolbar({
...shared, root: document.querySelector('#toolbar')!,
file,
onFiles: upload.take,
onHost: (w) => {
if (w === 'diff') { diff.open(); return }
if (w !== 'localHistory') return
openHistoryPanel({
history, surface: content, locale: 'te', sessionId: history.sessionId,
render: (record) => createNabiWith(selected, { doc: JSON.parse(record.body) }).nabi.getHtml(),
})
},
})
const context = mountContextToolbar({ ...shared, root: document.querySelector('#context')! })
mountHints({ toolbar, context, root, surface: content })
// The preview and fullscreen buttons — they stand their own box at the end of the row
mountViewTools({ ...shared, root, container: document.querySelector('#toolbar')! })
// on every change — hook up your own code here
// nabi.onChange(() => user_callback(nabi.getHtml()))