[{"data":1,"prerenderedAt":220},["ShallowReactive",2],{"docs:\u002Fdocs\u002Fplugins\u002Foverview":3},{"id":4,"title":5,"body":6,"description":210,"extension":211,"meta":212,"navigation":215,"path":216,"seo":217,"stem":218,"__hash__":219},"docs\u002Fdocs\u002Fplugins\u002Foverview.md","Подключение плагинов",{"type":7,"value":8,"toc":205},"minimark",[9,14,18,166,173,177,180,183,187,190,201],[10,11,13],"h2",{"id":12},"условия-подключения","Условия подключения",[15,16,17],"p",{},"Плагины доступны в pro при features.plugins=true. Передача plugins или usePlugin с выключенной возможностью вызывает ошибку. Это доверенный JavaScript приложения: фасад не является sandbox.",[19,20,25],"pre",{"className":21,"code":22,"language":23,"meta":24,"style":24},"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","",[26,27,28,51,80,104,110,134,157],"code",{"__ignoreMap":24},[29,30,33,37,41,44,48],"span",{"class":31,"line":32},"line",1,[29,34,36],{"class":35},"snl16","import",[29,38,40],{"class":39},"s95oV"," { ViText, createWordCountPlugin, createTypographyPlugin, createTextCasePlugin } ",[29,42,43],{"class":35},"from",[29,45,47],{"class":46},"sU2Wk"," '@vitext-ru\u002Feditor'",[29,49,50],{"class":39},";\n",[29,52,54,57,61,64,67,71,74,77],{"class":31,"line":53},2,[29,55,56],{"class":35},"const",[29,58,60],{"class":59},"sDLfK"," editor",[29,62,63],{"class":35}," =",[29,65,66],{"class":35}," new",[29,68,70],{"class":69},"svObZ"," ViText",[29,72,73],{"class":39},"(",[29,75,76],{"class":46},"'#editor'",[29,78,79],{"class":39},", {\n",[29,81,83,86,89,92,95,98,101],{"class":31,"line":82},3,[29,84,85],{"class":39},"  preset: ",[29,87,88],{"class":46},"'pro'",[29,90,91],{"class":39},", plugins: [",[29,93,94],{"class":69},"createWordCountPlugin",[29,96,97],{"class":39},"(), ",[29,99,100],{"class":69},"createTypographyPlugin",[29,102,103],{"class":39},"()]\n",[29,105,107],{"class":31,"line":106},4,[29,108,109],{"class":39},"});\n",[29,111,113,115,118,120,123,126,128,131],{"class":31,"line":112},5,[29,114,56],{"class":35},[29,116,117],{"class":59}," remove",[29,119,63],{"class":35},[29,121,122],{"class":39}," editor.",[29,124,125],{"class":69},"usePlugin",[29,127,73],{"class":39},[29,129,130],{"class":69},"createTextCasePlugin",[29,132,133],{"class":39},"());\n",[29,135,137,140,143,145,148,151,154],{"class":31,"line":136},6,[29,138,139],{"class":39},"editor.",[29,141,142],{"class":69},"executePluginCommand",[29,144,73],{"class":39},[29,146,147],{"class":46},"'text-case'",[29,149,150],{"class":39},", ",[29,152,153],{"class":46},"'upper'",[29,155,156],{"class":39},");\n",[29,158,160,163],{"class":31,"line":159},7,[29,161,162],{"class":69},"remove",[29,164,165],{"class":39},"();\n",[15,167,168,169,172],{},"IIFE экспортирует те же фабрики как ",[26,170,171],{},"ViText.create…",".",[10,174,176],{"id":175},"контракт","Контракт",[15,178,179],{},"Плагин имеет id, version, apiVersion: 1 и синхронный setup(context). Setup возвращает cleanup или ничего. Async setup не поддерживается; асинхронную работу запускайте из команды с context.signal. Повторный id\u002Fкоманда и несовместимый apiVersion отклоняются.",[15,181,182],{},"Контекст предоставляет методы документа, события, registerCommand, registerStatusItem, registerToolbarMenu, registerDialog и registerSpellcheck. DOM оболочки, destroy и приватное ядро не передаются. После remove фасад отзывается, signal отменяется, подписки\u002Fкоманды\u002FUI автоматически удаляются. Cleanup освобождает собственные таймеры и ресурсы.",[10,184,186],{"id":185},"готовые-расширения","Готовые расширения",[15,188,189],{},"Счётчик слов, индикатор изменений, регистр, типограф, поиск\u002Fзамена, браузерная орфография и лимит знаков описаны на отдельных страницах. Команды изменения работают в visual; source-режим отключает меню. Удаление расширения не удаляет содержимое документа.",[15,191,192,150,197,172],{},[193,194,196],"a",{"href":195},"\u002Fdocs\u002Fguides\u002Fcustom-plugin","Собственный плагин",[193,198,200],{"href":199},"\u002Fdocs\u002Freference\u002Fmethods","справочник методов",[202,203,204],"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":24,"searchDepth":53,"depth":53,"links":206},[207,208,209],{"id":12,"depth":53,"text":13},{"id":175,"depth":53,"text":176},{"id":185,"depth":53,"text":186},"API 1, управляемые команды, статусы, формы и очистка.","md",{"group":213,"order":214},"Плагины",30,true,"\u002Fdocs\u002Fplugins\u002Foverview",{"title":5,"description":210},"docs\u002Fplugins\u002Foverview","695dzcZ1tEY1YQFMb7yhj4P55CxYJ4k5BgM66FTdDB8",1792670389431]