[{"data":1,"prerenderedAt":217},["ShallowReactive",2],{"docs:\u002Fen\u002Fdocs\u002Fplugins\u002Foverview":3},{"id":4,"title":5,"body":6,"description":207,"extension":208,"meta":209,"navigation":212,"path":213,"seo":214,"stem":215,"__hash__":216},"docs_en\u002Fen\u002Fdocs\u002Fplugins\u002Foverview.md","Connecting plugins",{"type":7,"value":8,"toc":201},"minimark",[9,14,18,22,25,29,32,36,50,197],[10,11,13],"h2",{"id":12},"availability","Availability",[15,16,17],"p",{},"Plugins require the pro preset and enabled features.plugins. Include factories in constructor plugins or call usePlugin on an existing instance. Duplicate IDs and unsupported API versions are rejected. A disposer or removePlugin removes a plugin without deleting the document.",[10,19,21],{"id":20},"seven-included-plugins","Seven included plugins",[15,23,24],{},"Word count, dirty-state indicator, text case, typography, search\u002Freplace, browser spellcheck and character limit are Community extensions. They need no required application server. Browser spellcheck is not a bundled dictionary service.",[10,26,28],{"id":27},"resource-ownership","Resource ownership",[15,30,31],{},"API 1 exposes managed commands, limited UI\u002Fstatus\u002Fforms, document operations, events and AbortSignal. It does not expose private engine\u002FDOM internals. Cleanup runs on removal, destroy and failed installation. Registered commands and subscriptions are revoked.",[10,33,35],{"id":34},"safety-and-limits","Safety and limits",[15,37,38,39,44,45,49],{},"Delayed changes must use revisions; transformations should preserve history and formatting. Plugins do not bypass HTML\u002FCSS validation. Real AI\u002FMCP and a commercial edition are future work. ",[40,41,43],"a",{"href":42},"\u002Fen\u002Fdocs\u002Fguides\u002Fcustom-plugin","Custom plugin",", ",[40,46,48],{"href":47},"\u002Fen\u002Fexamples\u002Fplugins","plugin example",".",[51,52,57],"pre",{"className":53,"code":54,"language":55,"meta":56,"style":56},"language-ts shiki shiki-themes github-dark","import { ViText, createWordCountPlugin, createTypographyPlugin, createTextCasePlugin } from '@vitext-ru\u002Feditor';\nconst editor = new ViText('#editor', {\n  preset: 'pro', plugins: [createWordCountPlugin(), createTypographyPlugin()]\n});\nconst remove = editor.usePlugin(createTextCasePlugin());\neditor.executePluginCommand('text-case', 'upper');\nremove();\n","ts","",[58,59,60,83,112,136,142,166,188],"code",{"__ignoreMap":56},[61,62,65,69,73,76,80],"span",{"class":63,"line":64},"line",1,[61,66,68],{"class":67},"snl16","import",[61,70,72],{"class":71},"s95oV"," { ViText, createWordCountPlugin, createTypographyPlugin, createTextCasePlugin } ",[61,74,75],{"class":67},"from",[61,77,79],{"class":78},"sU2Wk"," '@vitext-ru\u002Feditor'",[61,81,82],{"class":71},";\n",[61,84,86,89,93,96,99,103,106,109],{"class":63,"line":85},2,[61,87,88],{"class":67},"const",[61,90,92],{"class":91},"sDLfK"," editor",[61,94,95],{"class":67}," =",[61,97,98],{"class":67}," new",[61,100,102],{"class":101},"svObZ"," ViText",[61,104,105],{"class":71},"(",[61,107,108],{"class":78},"'#editor'",[61,110,111],{"class":71},", {\n",[61,113,115,118,121,124,127,130,133],{"class":63,"line":114},3,[61,116,117],{"class":71},"  preset: ",[61,119,120],{"class":78},"'pro'",[61,122,123],{"class":71},", plugins: [",[61,125,126],{"class":101},"createWordCountPlugin",[61,128,129],{"class":71},"(), ",[61,131,132],{"class":101},"createTypographyPlugin",[61,134,135],{"class":71},"()]\n",[61,137,139],{"class":63,"line":138},4,[61,140,141],{"class":71},"});\n",[61,143,145,147,150,152,155,158,160,163],{"class":63,"line":144},5,[61,146,88],{"class":67},[61,148,149],{"class":91}," remove",[61,151,95],{"class":67},[61,153,154],{"class":71}," editor.",[61,156,157],{"class":101},"usePlugin",[61,159,105],{"class":71},[61,161,162],{"class":101},"createTextCasePlugin",[61,164,165],{"class":71},"());\n",[61,167,169,172,175,177,180,182,185],{"class":63,"line":168},6,[61,170,171],{"class":71},"editor.",[61,173,174],{"class":101},"executePluginCommand",[61,176,105],{"class":71},[61,178,179],{"class":78},"'text-case'",[61,181,44],{"class":71},[61,183,184],{"class":78},"'upper'",[61,186,187],{"class":71},");\n",[61,189,191,194],{"class":63,"line":190},7,[61,192,193],{"class":101},"remove",[61,195,196],{"class":71},"();\n",[198,199,200],"style",{},"html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":56,"searchDepth":85,"depth":85,"links":202},[203,204,205,206],{"id":12,"depth":85,"text":13},{"id":20,"depth":85,"text":21},{"id":27,"depth":85,"text":28},{"id":34,"depth":85,"text":35},"API 1, managed commands, menus, forms, status and cleanup.","md",{"group":210,"order":211},"Plugins",30,true,"\u002Fen\u002Fdocs\u002Fplugins\u002Foverview",{"title":5,"description":207},"en\u002Fdocs\u002Fplugins\u002Foverview","qofWkkjbNMSzGnL0ypWnmPlcLTKcDq3UDeq25GCeFV8",1792670389544]