[{"data":1,"prerenderedAt":236},["ShallowReactive",2],{"example:\u002Fexamples\u002Fstorage":3},{"id":4,"title":5,"body":6,"description":227,"extension":228,"meta":229,"navigation":231,"path":232,"seo":233,"stem":234,"__hash__":235},"examples\u002Fexamples\u002Fstorage.md","Сохранить и восстановить",{"type":7,"value":8,"toc":222},"minimark",[9,14,38,46,50,194,198,201,218],[10,11,13],"h2",{"id":12},"как-попробовать","Как попробовать",[15,16,17,21,29,32],"ol",{},[18,19,20],"li",{},"Напишите свой текст в демонстрации.",[18,22,23,24,28],{},"Нажмите ",[25,26,27],"strong",{},"Сохранить снимок"," — JSON и CSS записываются в localStorage этого браузера.",[18,30,31],{},"Измените текст. Сохранённая копия не меняется автоматически.",[18,33,23,34,37],{},[25,35,36],{},"Восстановить снимок"," — редактор вернётся к версии из шага 2.",[39,40,41,42,45],"p",{},"Под кнопками видно время сохранения. Перезагрузка страницы сохраняет снимок; другие браузеры\u002Fустройства его не получают. ",[25,43,44],{},"Удалить снимок"," очищает локальную копию, оставляя текущий документ в редакторе. В исходнике сначала вернитесь к визуальному редактированию: кнопки не сохраняют непроверенный черновик.",[10,47,49],{"id":48},"код","Код",[51,52,57],"pre",{"className":53,"code":54,"language":55,"meta":56,"style":56},"language-ts shiki shiki-themes github-dark","localStorage.setItem('vitext-example-snapshot', JSON.stringify({\n  version: 1, json: editor.getJSON(), css: editor.getCSS(), savedAt: Date.now()\n}));\n\u002F\u002F Восстановление — отдельное действие, после изменений:\nconst saved = JSON.parse(localStorage.getItem('vitext-example-snapshot')!);\nawait editor.setContent(saved.json, { css: saved.css });\n","ts","",[58,59,60,96,126,132,139,179],"code",{"__ignoreMap":56},[61,62,65,69,73,76,80,83,87,90,93],"span",{"class":63,"line":64},"line",1,[61,66,68],{"class":67},"s95oV","localStorage.",[61,70,72],{"class":71},"svObZ","setItem",[61,74,75],{"class":67},"(",[61,77,79],{"class":78},"sU2Wk","'vitext-example-snapshot'",[61,81,82],{"class":67},", ",[61,84,86],{"class":85},"sDLfK","JSON",[61,88,89],{"class":67},".",[61,91,92],{"class":71},"stringify",[61,94,95],{"class":67},"({\n",[61,97,99,102,105,108,111,114,117,120,123],{"class":63,"line":98},2,[61,100,101],{"class":67},"  version: ",[61,103,104],{"class":85},"1",[61,106,107],{"class":67},", json: editor.",[61,109,110],{"class":71},"getJSON",[61,112,113],{"class":67},"(), css: editor.",[61,115,116],{"class":71},"getCSS",[61,118,119],{"class":67},"(), savedAt: Date.",[61,121,122],{"class":71},"now",[61,124,125],{"class":67},"()\n",[61,127,129],{"class":63,"line":128},3,[61,130,131],{"class":67},"}));\n",[61,133,135],{"class":63,"line":134},4,[61,136,138],{"class":137},"sAwPA","\u002F\u002F Восстановление — отдельное действие, после изменений:\n",[61,140,142,146,149,152,155,157,160,163,166,168,170,173,176],{"class":63,"line":141},5,[61,143,145],{"class":144},"snl16","const",[61,147,148],{"class":85}," saved",[61,150,151],{"class":144}," =",[61,153,154],{"class":85}," JSON",[61,156,89],{"class":67},[61,158,159],{"class":71},"parse",[61,161,162],{"class":67},"(localStorage.",[61,164,165],{"class":71},"getItem",[61,167,75],{"class":67},[61,169,79],{"class":78},[61,171,172],{"class":67},")",[61,174,175],{"class":144},"!",[61,177,178],{"class":67},");\n",[61,180,182,185,188,191],{"class":63,"line":181},6,[61,183,184],{"class":144},"await",[61,186,187],{"class":67}," editor.",[61,189,190],{"class":71},"setContent",[61,192,193],{"class":67},"(saved.json, { css: saved.css });\n",[10,195,197],{"id":196},"ограничения","Ограничения",[39,199,200],{},"Это демонстрация браузерного хранения, а не сервера. Если браузер запрещает localStorage или данные повреждены, отображается сообщение; текущий документ остаётся доступен. Не храните здесь единственную копию важного текста. Сохраняется последняя применённая версия документа вместе со стилями; JSON отдельно не содержит CSS.",[39,202,203,204,207,208,213,214,89],{},"Установите ",[58,205,206],{},"@vitext-ru\u002Feditor@beta"," из npm или используйте браузерный архив. ",[209,210,212],"a",{"href":211},"\u002Fdocs\u002Fguides\u002Fstorage","Подробное руководство",". ",[209,215,217],{"href":216},"\u002Fexamples-live\u002Fstorage\u002Findex.html","Открыть отдельно",[219,220,221],"style",{},"html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}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 .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}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":98,"depth":98,"links":223},[224,225,226],{"id":12,"depth":98,"text":13},{"id":48,"depth":98,"text":49},{"id":196,"depth":98,"text":197},"Снимок JSON + CSS в этом браузере и две отдельные кнопки.","md",{"group":230,"order":141},"Документ",true,"\u002Fexamples\u002Fstorage",{"title":5,"description":227},"examples\u002Fstorage","mZG0hio-UnfKGigkLwnym0hpVeUZrXu-kn-pDX4FJEg",1792670389645]