CDN का उपयोग ​

ऐसे स्थिर पेज पर जहाँ पैकेज इंस्टॉल करना कठिन हो, आप CDN से NABI NOTE का ब्राउज़र बंडल और CSS लोड कर सकते हैं। नीचे का उदाहरण बिल्ड के समय पैकेज संस्करण को अपने-आप पढ़कर पते बनाता है और ग्लोबल ऑब्जेक्ट NabiNote से एडिटर तैयार करता है।

नीचे दिए कोड को के नाम से सहेजें और ब्राउज़र में खोलें — तुरंत काम करता दिखेगा।

<!doctype html>
<html lang="hi">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>NABI NOTE</title>
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/nabi-note@1.6.1/dist/nabi.css">
  <style>
    html, body { height: 100%; margin: 0; }
    /* इस उदाहरण में एडिटर ब्राउज़र की पूरी ऊँचाई भरता है। अपनी साइट के लेआउट के अनुसार ऊँचाई बदलें। */
    #app { height: 100vh; }
    #editor { flex: 1; min-height: 0; overflow-y: auto; }
  </style>
</head>
<body>

<div id="app" class="nabi">
  <div id="chrome" class="nabi-toolbar">
    <div class="nabi-toolbar-row">
      <span id="tools"></span>
      <div id="toolbar"></div>
    </div>
    <div id="context"></div>
  </div>
  <div id="editor" class="nabi-content"></div>
</div>

<script src="https://cdn.jsdelivr.net/npm/nabi-note@1.6.1/dist/browser/nabi-note.min.js"></script>
<script>
  var N = NabiNote
  var app = document.querySelector('#app')
  var surface = document.querySelector('#editor')

  // इस उदाहरण में इस्तेमाल होने वाले संपादन और फ़ाइल wing चुनें।
  // यह उदाहरण केवल सैन्स सेरिफ़ और सेरिफ़ फ़ॉन्ट लोड करता है।
  // मोनोस्पेस या हस्तलिपि का उपयोग करने के लिए संबंधित फ़ॉन्ट फ़ाइलें भी पेज पर लोड करें।
  // विस्तृत जानकारी के लिए “टाइपफ़ेस” दस्तावेज़ देखें।
  var wings = N.wings().allBasic().use('save').use('open').use('tf', { values: ['sans', 'serif'] })

  var made = N.createNabiWith(wings, {
    locale: 'hi',
    ask: {
      message: function (text) { window.alert(text) },
      confirm: function (text) { return window.confirm(text) }
    }
  })
  var nabi = made.nabi
  var registry = made.registry

  N.mountSurface({ nabi: nabi, registry: registry, root: surface, locale: 'hi' })
  N.mountPickedMark({ nabi: nabi, surface: surface })

  var settle = N.watchSettle(document, { surface: surface })
  var shared = { nabi: nabi, registry: registry, surface: surface, settle: settle, locale: 'hi' }

  var history = N.mountLocalHistory({ nabi: nabi, storage: N.browserHistoryStorage(window) })
  var file = N.mountFile({
    nabi: nabi, registry: registry, store: N.browserFileStore(document),
    name: function () { return 'note' }, locale: 'hi'
  })

  var toolbar = N.mountToolbar(Object.assign({}, shared, {
    root: document.querySelector('#toolbar'),
    file: file,
    onHost: function (w) {
      if (w !== 'localHistory') return
      N.openHistoryPanel({
        history: history, surface: surface, locale: 'hi', sessionId: history.sessionId,
        render: function (record) {
          return N.renderStoredHtml(JSON.parse(record.body), registry) || ''
        }
      })
    }
  }))
  var context = N.mountContextToolbar(Object.assign({}, shared, { root: document.querySelector('#context') }))

  N.mountHints({ toolbar: toolbar, context: context, root: document.querySelector('#chrome'), surface: surface })
  N.mountViewTools({ nabi: nabi, surface: surface, root: app, container: document.querySelector('#tools'), locale: 'hi' })

  nabi.setHtml('')

  // इस उदाहरण में दस्तावेज़ बदलने पर उसे सहेजने का काम निर्धारित किया जाता है।
  // nabi.onChange(function () { user_callback(nabi.getJson()) })
</script>

</body>
</html>

NABI NOTE में ध्यान देने योग्य बातें ​

  • डिप्लॉयमेंट कोड में CSS और ब्राउज़र JavaScript के लिए एक ही निश्चित संस्करण का उपयोग करें। latest जैसे बिना संस्करण वाले पते पर नया संस्करण आने के दिन व्यवहार बदल सकता है।
  • ब्राउज़र बंडल रूट API को window.NabiNote के रूप में देता है। nabi-note/ssr, nabi-note/viewer, और nabi-note/diff के लिए अलग ग्लोबल बंडल उपलब्ध नहीं हैं।
  • उदाहरण में फ़ाइल सहेजना और स्थानीय इतिहास उपयोगकर्ता के ब्राउज़र में काम करते हैं। सर्वर पर सहेजने या खाता सिंक की ज़रूरत हो तो getJson() का परिणाम अपने एप्लिकेशन API को भेजें।
  • अपलोड जोड़ते समय केवल upload wing नहीं, वास्तविक भेजने वाला फ़ंक्शन और आवश्यक image या link wings भी जोड़ें। फ़ाइल जाँच अपलोड सर्वर की ज़िम्मेदारी है।
  • ब्राउज़र बंडल में HTML parser पहले से जुड़ा होता है। इसलिए setHtml(), HTML फ़ाइल खोलने या HTML पेस्ट करने के लिए अलग parser विकल्प या निजी API की आवश्यकता नहीं है।

CDN केवल लोड करने के तरीके में अलग है। सेव करने का फ़ॉर्मैट और इनपुट जाँच npm इंस्टॉल के समान हैं, इसलिए बुनियादी उपयोग भी देखें।