প্রকল্প সম্পর্কে

Monaco Editor হলো VS Code-এর একটি পূর্ণাঙ্গ কোড এডিটর, যা ব্রাউজারে চালানোর জন্য একটি লাইব্রেরি হিসেবে প্যাকেজ করা হয়েছে। এটি npm-এ `monaco-editor` নামে প্রকাশিত হয় এবং একটি ESM বিল্ড (webpack-এর মতো বান্ডলারের সাথে সামঞ্জস্যপূর্ণ) এবং ব্যাকওয়ার্ড কম্প্যাটিবিলিটির জন্য রাখা একটি অবচিত AMD বিল্ড সরবরাহ করে। সংস্করণভিত্তিক পাবলিক সারফেস `monaco.d.ts`-তে বর্ণনা করা হয়েছে; বাকি সবকিছু ব্যক্তিগত হিসেবে গণ্য করা হয় এবং রিলিজের মধ্যে পরিবর্তন হতে পারে। মূল ধারণাসমূহ: - মডেলগুলো খোলা কনটেন্টকে প্রতিনিধিত্ব করে: এগুলো টেক্সট ধারণ করে, ভাষা নির্ধারণ করে এবং সম্পাদনার ইতিহাস ট্র্যাক করে। একটি মডেলকে অবশ্যই একটি বাস্তব ফাইলের সাথে মিলতে হবে এমন নয়। - URI-গুলো মডেলকে চিহ্নিত করে, তাই দুটি মডেল একই URI শেয়ার করতে পারে না। URI ছাড়া তৈরি করা মডেলগুলো স্বয়ংক্রিয়ভাবে `inmemory://model/N` URI পায়। অর্থবহ URI বেছে নেওয়া গুরুত্বপূর্ণ কারণ কিছু স্মার্ট ফিচার (যেমন TypeScript ইমপোর্ট রেজোলিউশন বা JSON স্কিমা নির্বাচন) ফাইল URI-এর উপর নির্ভরশীল। - এডিটরগুলো হলো DOM-এ সংযুক্ত ব্যবহারকারী-মুখী ভিউ; এগুলো একটি মডেল প্রদর্শন করে, ভিউ স্টেট পরিচালনা করে এবং অ্যাকশন বা কমান্ড কার্যকর করে। - প্রোভাইডারগুলো কমপ্লিশন এবং হোভার ইনফরমেশনের মতো স্মার্ট এডিটর ফিচার সরবরাহ করে, যা প্রায়শই ল্যাঙ্গুয়েজ সার্ভার প্রোটোকল ক্ষমতার সাথে ম্যাপ করা হয়। - অনেক অবজেক্ট ক্লিনআপের জন্য `.dispose()` এক্সপোজ করে; একটি মডেল ডিসপোজ করলে তার URI মুক্ত হয়, এবং রিসোর্স ও লিসেনার রিলিজ করার জন্য এডিটরগুলো ডিসপোজ করা উচিত। লোকালাইজেশন মূল এডিটর স্ক্রিপ্টের আগে মিলানো nls স্ক্রিপ্ট (যেমন `esm/nls.messages.de.js`) লোড করে পরিচালনা করা হয়। README-তে ফিচারগুলো চেষ্টা করার, সংস্করণ পরীক্ষা করার এবং ন্যূনতম পুনরুত্পাদন তৈরি করার জন্য একটি ইন্টারঅ্যাক্টিভ প্লেগ্রাউন্ড, পাশাপাশি সম্পূর্ণ ইন্টিগ্রেশন নমুনা, API ডকুমেন্টেশন, ইন্টিগ্রেটরদের জন্য একটি অ্যাক্সেসিবিলিটি গাইড এবং নতুন ভাষার জন্য টোকেনাইজার তৈরি করার জন্য একটি Monarch প্লেগ্রাউন্ডের দিকে নির্দেশ করা হয়েছে। FAQ-টি স্পষ্ট করে যে Monaco হলো VS Code সোর্স থেকে শিমসহ জেনারেট করা হয়েছে যাতে এটি ব্রাউজারে চলতে পারে, এর সংস্করণ VS Code-এর সংস্করণ অনুসরণ করে না, এবং সাধারণত VS Code এক্সটেনশনগুলো এতে কাজ করে না যদি না তারা সম্পূর্ণ LSP-ভিত্তিক হয় এবং একটি JavaScript ল্যাঙ্গুয়েজ সার্ভার থাকে। ল্যাঙ্গুয়েজ সার্ভিসগুলো ওয়েব ওয়ার্কার ব্যবহার করে; `file://`-এর মাধ্যমে লোড করা পেজগুলো ওয়ার্কার তৈরি করতে পারে না, তাই এডিটরটিকে http বা https-এর মাধ্যমে সার্ভ করা উচিত। মোবাইল ব্রাউজার এবং মোবাইল ওয়েব অ্যাপ ফ্রেমওয়ার্কগুলো সমর্থিত নয়, এবং TextMate গ্রামারগুলো বিল্ট-ইন নয় (একটি পৃথক কমিউনিটি প্রজেক্ট monaco-editor-কে vscode-oniguruma এবং vscode-textmate-এর সাথে একত্রিত করে)। প্রজেক্টটি MIT লাইসেন্সপ্রাপ্ত এবং কমিউনিটি অবদানকে স্বাগত জানায়।