پیوند
متن را انتخاب کنید و نشانی را به آن پیوست کنید. اگر بدون انتخاب متن نشانی وارد کنید، خود نشانی بهعنوان متن پیوند وارد میشود. نوشتن نشانی http:// یا https:// و سپس زدن Space یا Enter نیز آن را به پیوند تبدیل میکند.
پیوندها فقط http:، https: و مسیرهای همان سایت را که با . یا / آغاز میشوند ذخیره میکنند. نشانیهایی با مبدأ نامشخص، مانند javascript: یا //example.com، پذیرفته نمیشوند. پیوندهای پیوست که بارگذاری میسازد نیز اطلاعات پرونده را نگه میدارند و مانند پیوندهای عادی دستی ساخته نمیشوند.
npm install nabi-noteimport {
createLocale, createNabiWith, mountSurface, mountToolbar,
mountContextToolbar, mountHints, watchSettle, subscriptWing, linkWing,
footnoteWing, mountViewTools,
} from 'nabi-note'
const selected = [
subscriptWing,
linkWing,
footnoteWing,
]
const locale = createLocale('fa')
const { nabi, registry } = createNabiWith(selected, { locale })
const root = document.querySelector('.nabi')!
const content = document.querySelector('.nabi-content')!
// The locale also sets the direction — Arabic and Urdu run right to left
mountSurface({ nabi, registry, root: content, locale })
const settle = watchSettle(document, { surface: content })
const shared = { nabi, registry, surface: content, settle, locale }
const toolbar = mountToolbar({ ...shared, root: document.querySelector('#toolbar')! })
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()))
// Call from your language selector. Content and editing history stay intact.
// locale.setLocale('ko')const selected = wings().use('a').build()چسباندن URL
اگر تمام محتوای چسباندهشده، پس از حذف فاصلههای ابتدا و انتها، یک URL معتبر با http:// یا https:// باشد، فوراً بهصورت پیوند درج میشود. URLهای داخل جمله، متن دارای چند URL و مسیرهای نسبی با همان رفتار قبلی چسباندن پردازش میشوند. در بلوکهای کد و ویرایشگرهای بدون wing پیوند، محتوا بهصورت متن باقی میماند. دادههای داخلی معتبر کلیپبورد که از ویرایشگر کپی شدهاند، برای حفظ قالببندی اصلی خود اولویت دارند.
با تابع فراخوان onPasteUrl در mountSurface() میتوانید متن نمایشی پیوند را تعیین کنید.
| آرگومان | مقدار |
|---|---|
url | URL کامل پس از حذف فاصلههای ابتدا و انتها |
isSameOrigin | آیا پروتکل، میزبان و درگاه URL با مبدأ سندی که ویرایشگر در آن قرار دارد یکسان است |
path | مسیر شروعشده با /، شامل بخش پرسوجو و قطعهٔ پس از علامت هش. نمونه: /posts/1?a=2#top |
const surface = mountSurface({
nabi,
registry,
root: document.querySelector<HTMLElement>('#editor')!,
onPasteUrl(url, isSameOrigin, path) {
if (isSameOrigin && path === '/guide') return 'NABI NOTE'
return url
},
})اگر رشتهٔ برگرداندهشده دارای نویسهای غیر از فاصله باشد، همان رشته متن نمایشی میشود. اگر تابع فراخوان وجود نداشته باشد، مقدار خالی یا غیررشتهای برگرداند یا با خطا روبهرو شود، URL چسباندهشده بهعنوان متن نمایشی باقی میماند. رشتههای برگرداندهشده هرگز بهصورت HTML تفسیر نمیشوند و نشانی پیوند را تغییر نمیدهند.
تابع فراخوان از توابع async و Promise نیز پشتیبانی میکند. هنگام انتظار برای پاسخ، پیوند URL فوراً درج میشود؛ نتیجهٔ معتبرِ بعدی فقط متن نمایشی همان پیوند را تغییر میدهد. اگر در این فاصله پیوند ویرایش یا حذف شده باشد، سند جدیدی بارگذاری شده باشد یا surface از حالت نصب خارج شده باشد، نتیجهٔ دیررس نادیده گرفته میشود.
استایلهای CSS
پیوندهای عادی را با .nabi-content a و پیوندهای پیوست را جداگانه با .nabi-content a[data-nabi-file] سبکدهی کنید.
.article-body a:not([data-nabi-file]) {
color: var(--nabi-accent);
text-decoration-thickness: .08em;
text-underline-offset: .16em;
}
.article-body a[data-nabi-file] {
display: inline-flex;
gap: .35em;
padding: .25em .55em;
background: var(--nabi-soft);
}بخشهای ::before و ::after در پیوندهای پیوست برای نمایش نماد و پسوند پرونده بهکار میروند؛ بنابراین معمولاً بهتر است content آنها را جایگزین یا حذف نکنید.