[{"data":1,"prerenderedAt":10617},["ShallowReactive",2],{"docs-sidebar-en":3,"docs-en-installation\u002F":10348},[4,3490,8735,10034],{"id":5,"title":6,"body":7,"description":17,"extension":3484,"meta":3485,"navigation":223,"path":3486,"seo":3487,"stem":3488,"__hash__":3489},"docs_en\u002Fdocs\u002F4.framework-guides\u002Findex.md","Framework Guides",{"type":8,"value":9,"toc":3434},"minimark",[10,14,18,33,38,45,51,56,84,88,91,115,119,318,322,328,362,365,415,419,426,508,515,595,606,610,621,626,629,645,648,666,669,861,864,876,920,923,927,1017,1022,1113,1117,1124,1129,1132,1148,1151,1169,1172,1364,1367,1376,1419,1431,1434,1438,1514,1521,1721,1725,1728,1733,1736,1752,1755,1758,1791,1795,1874,1877,1943,2073,2076,2086,2119,2122,2127,2173,2179,2318,2322,2325,2330,2333,2349,2352,2370,2373,2446,2449,2456,2477,2480,2484,2510,2515,2687,2691,2698,2703,2706,2722,2725,2736,2739,2918,2922,2928,3062,3066,3209,3213,3216,3248,3270,3277,3291,3295,3298,3382,3395,3399,3406,3410,3430],[11,12,6],"h1",{"id":13},"framework-guides",[15,16,17],"p",{},"CyteEditor provides dedicated adapter packages for popular frameworks. This guide covers the complete integration steps for each framework, from installation to a working editor.",[19,20,21],"blockquote",{},[15,22,23,27,28,32],{},[24,25,26],"strong",{},"Quick start (Vue 3 only):"," If you use Vue 3 and want everything in one package, install ",[29,30,31],"code",{},"cyte-editor"," instead. It bundles the core engine, Vue 3 adapter, License SDK, and all Pro plugins. For other frameworks or fine-grained control, follow the modular setup below.",[34,35,37],"h2",{"id":36},"vue-3","Vue 3",[15,39,40,41,44],{},"The official Vue 3 adapter with Composition API support and ",[29,42,43],{},"v-model:html"," two-way binding.",[15,46,47,50],{},[24,48,49],{},"Requirements:"," Vue ^3.3.0",[52,53,55],"h3",{"id":54},"installation","Installation",[57,58,63],"pre",{"className":59,"code":60,"language":61,"meta":62,"style":62},"language-bash shiki shiki-themes github-dark","npm install @cyte-editor\u002Fcore @cyte-editor\u002Fvue3\n","bash","",[29,64,65],{"__ignoreMap":62},[66,67,70,74,78,81],"span",{"class":68,"line":69},"line",1,[66,71,73],{"class":72},"svObZ","npm",[66,75,77],{"class":76},"sU2Wk"," install",[66,79,80],{"class":76}," @cyte-editor\u002Fcore",[66,82,83],{"class":76}," @cyte-editor\u002Fvue3\n",[52,85,87],{"id":86},"import-styles","Import Styles",[15,89,90],{},"Import both the core styles and the adapter styles in your entry file:",[57,92,96],{"className":93,"code":94,"language":95,"meta":62,"style":62},"language-javascript shiki shiki-themes github-dark","import '@cyte-editor\u002Fcore\u002Fstyle.css'\nimport '@cyte-editor\u002Fvue3\u002Fstyle.css'\n","javascript",[29,97,98,107],{"__ignoreMap":62},[66,99,100,104],{"class":68,"line":69},[66,101,103],{"class":102},"snl16","import",[66,105,106],{"class":76}," '@cyte-editor\u002Fcore\u002Fstyle.css'\n",[66,108,110,112],{"class":68,"line":109},2,[66,111,103],{"class":102},[66,113,114],{"class":76}," '@cyte-editor\u002Fvue3\u002Fstyle.css'\n",[52,116,118],{"id":117},"basic-usage","Basic Usage",[57,120,124],{"className":121,"code":122,"language":123,"meta":62,"style":62},"language-vue shiki shiki-themes github-dark","\u003Ctemplate>\n  \u003Cdiv>\n    \u003CCyteEditor\n      v-model:html=\"content\"\n      placeholder=\"Start writing…\"\n      locale=\"en-US\"\n    \u002F>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n\n\u003Cscript setup>\nimport { ref } from 'vue'\nimport { CyteEditor } from '@cyte-editor\u002Fvue3'\nimport '@cyte-editor\u002Fcore\u002Fstyle.css'\nimport '@cyte-editor\u002Fvue3\u002Fstyle.css'\n\nconst content = ref('\u003Cp>Hello, CyteEditor!\u003C\u002Fp>')\n\u003C\u002Fscript>\n","vue",[29,125,126,139,149,158,170,181,192,198,208,218,225,238,252,265,272,279,284,309],{"__ignoreMap":62},[66,127,128,132,136],{"class":68,"line":69},[66,129,131],{"class":130},"s95oV","\u003C",[66,133,135],{"class":134},"s4JwU","template",[66,137,138],{"class":130},">\n",[66,140,141,144,147],{"class":68,"line":109},[66,142,143],{"class":130},"  \u003C",[66,145,146],{"class":134},"div",[66,148,138],{"class":130},[66,150,152,155],{"class":68,"line":151},3,[66,153,154],{"class":130},"    \u003C",[66,156,157],{"class":134},"CyteEditor\n",[66,159,161,164,167],{"class":68,"line":160},4,[66,162,163],{"class":72},"      v-model:html",[66,165,166],{"class":130},"=",[66,168,169],{"class":76},"\"content\"\n",[66,171,173,176,178],{"class":68,"line":172},5,[66,174,175],{"class":72},"      placeholder",[66,177,166],{"class":130},[66,179,180],{"class":76},"\"Start writing…\"\n",[66,182,184,187,189],{"class":68,"line":183},6,[66,185,186],{"class":72},"      locale",[66,188,166],{"class":130},[66,190,191],{"class":76},"\"en-US\"\n",[66,193,195],{"class":68,"line":194},7,[66,196,197],{"class":130},"    \u002F>\n",[66,199,201,204,206],{"class":68,"line":200},8,[66,202,203],{"class":130},"  \u003C\u002F",[66,205,146],{"class":134},[66,207,138],{"class":130},[66,209,211,214,216],{"class":68,"line":210},9,[66,212,213],{"class":130},"\u003C\u002F",[66,215,135],{"class":134},[66,217,138],{"class":130},[66,219,221],{"class":68,"line":220},10,[66,222,224],{"emptyLinePlaceholder":223},true,"\n",[66,226,228,230,233,236],{"class":68,"line":227},11,[66,229,131],{"class":130},[66,231,232],{"class":134},"script",[66,234,235],{"class":72}," setup",[66,237,138],{"class":130},[66,239,241,243,246,249],{"class":68,"line":240},12,[66,242,103],{"class":102},[66,244,245],{"class":130}," { ref } ",[66,247,248],{"class":102},"from",[66,250,251],{"class":76}," 'vue'\n",[66,253,255,257,260,262],{"class":68,"line":254},13,[66,256,103],{"class":102},[66,258,259],{"class":130}," { CyteEditor } ",[66,261,248],{"class":102},[66,263,264],{"class":76}," '@cyte-editor\u002Fvue3'\n",[66,266,268,270],{"class":68,"line":267},14,[66,269,103],{"class":102},[66,271,106],{"class":76},[66,273,275,277],{"class":68,"line":274},15,[66,276,103],{"class":102},[66,278,114],{"class":76},[66,280,282],{"class":68,"line":281},16,[66,283,224],{"emptyLinePlaceholder":223},[66,285,287,290,294,297,300,303,306],{"class":68,"line":286},17,[66,288,289],{"class":102},"const",[66,291,293],{"class":292},"sDLfK"," content",[66,295,296],{"class":102}," =",[66,298,299],{"class":72}," ref",[66,301,302],{"class":130},"(",[66,304,305],{"class":76},"'\u003Cp>Hello, CyteEditor!\u003C\u002Fp>'",[66,307,308],{"class":130},")\n",[66,310,312,314,316],{"class":68,"line":311},18,[66,313,213],{"class":130},[66,315,232],{"class":134},[66,317,138],{"class":130},[52,319,321],{"id":320},"content-binding","Content Binding",[15,323,324,325,327],{},"Vue 3 uses ",[29,326,43],{}," for two-way binding:",[57,329,331],{"className":121,"code":330,"language":123,"meta":62,"style":62},"\u003CCyteEditor v-model:html=\"content\" \u002F>\n",[29,332,333],{"__ignoreMap":62},[66,334,335,337,340,343,346,349,351,354,357,359],{"class":68,"line":69},[66,336,131],{"class":130},[66,338,339],{"class":134},"CyteEditor",[66,341,342],{"class":72}," v-model",[66,344,345],{"class":130},":",[66,347,348],{"class":72},"html",[66,350,166],{"class":130},[66,352,353],{"class":76},"\"",[66,355,356],{"class":130},"content",[66,358,353],{"class":76},[66,360,361],{"class":130}," \u002F>\n",[15,363,364],{},"You can also use the explicit form:",[57,366,368],{"className":121,"code":367,"language":123,"meta":62,"style":62},"\u003CCyteEditor :html=\"content\" @update:html=\"content = $event\" \u002F>\n",[29,369,370],{"__ignoreMap":62},[66,371,372,374,376,379,381,383,385,387,389,392,395,397,399,401,403,406,408,411,413],{"class":68,"line":69},[66,373,131],{"class":130},[66,375,339],{"class":134},[66,377,378],{"class":130}," :",[66,380,348],{"class":72},[66,382,166],{"class":130},[66,384,353],{"class":76},[66,386,356],{"class":130},[66,388,353],{"class":76},[66,390,391],{"class":130}," @",[66,393,394],{"class":72},"update",[66,396,345],{"class":130},[66,398,348],{"class":72},[66,400,166],{"class":130},[66,402,353],{"class":76},[66,404,405],{"class":130},"content ",[66,407,166],{"class":102},[66,409,410],{"class":130}," $event",[66,412,353],{"class":76},[66,414,361],{"class":130},[52,416,418],{"id":417},"toolbar-customization","Toolbar Customization",[15,420,421,422,425],{},"Configure which toolbar items to display via the ",[29,423,424],{},"toolbar"," prop:",[57,427,429],{"className":121,"code":428,"language":123,"meta":62,"style":62},"\u003CCyteEditor\n  v-model:html=\"content\"\n  :toolbar=\"['bold', 'italic', 'underline', '|', 'heading', 'align']\"\n\u002F>\n",[29,430,431,437,455,503],{"__ignoreMap":62},[66,432,433,435],{"class":68,"line":69},[66,434,131],{"class":130},[66,436,157],{"class":134},[66,438,439,442,444,446,448,450,452],{"class":68,"line":109},[66,440,441],{"class":72},"  v-model",[66,443,345],{"class":130},[66,445,348],{"class":72},[66,447,166],{"class":130},[66,449,353],{"class":76},[66,451,356],{"class":130},[66,453,454],{"class":76},"\"\n",[66,456,457,460,462,464,466,469,472,475,478,480,483,485,488,490,493,495,498,501],{"class":68,"line":151},[66,458,459],{"class":130},"  :",[66,461,424],{"class":72},[66,463,166],{"class":130},[66,465,353],{"class":76},[66,467,468],{"class":130},"[",[66,470,471],{"class":76},"'bold'",[66,473,474],{"class":130},", ",[66,476,477],{"class":76},"'italic'",[66,479,474],{"class":130},[66,481,482],{"class":76},"'underline'",[66,484,474],{"class":130},[66,486,487],{"class":76},"'|'",[66,489,474],{"class":130},[66,491,492],{"class":76},"'heading'",[66,494,474],{"class":130},[66,496,497],{"class":76},"'align'",[66,499,500],{"class":130},"]",[66,502,454],{"class":76},[66,504,505],{"class":68,"line":160},[66,506,507],{"class":130},"\u002F>\n",[15,509,510,511,514],{},"For full control, replace the toolbar entirely using the ",[29,512,513],{},"#toolbar"," scoped slot:",[57,516,518],{"className":121,"code":517,"language":123,"meta":62,"style":62},"\u003CCyteEditor v-model:html=\"content\">\n  \u003Ctemplate #toolbar=\"{ manager, activeStates, disabledStates }\">\n    \u003Cdiv class=\"my-toolbar\">\n      \u003Cbutton\n        :class=\"{ active: activeStates.bold }\"\n        :disabled=\"disabledStates.bold\"\n        @click=\"manager?.getEditor().chain().focus().toggleBold().run()\"\n      >Bold\u003C\u002Fbutton>\n    \u003C\u002Fdiv>\n  \u003C\u002Ftemplate>\n\u003C\u002FCyteEditor>\n",[29,519,520,542,547,552,557,562,567,572,577,582,587],{"__ignoreMap":62},[66,521,522,524,526,528,530,532,534,536,538,540],{"class":68,"line":69},[66,523,131],{"class":130},[66,525,339],{"class":134},[66,527,342],{"class":72},[66,529,345],{"class":130},[66,531,348],{"class":72},[66,533,166],{"class":130},[66,535,353],{"class":76},[66,537,356],{"class":130},[66,539,353],{"class":76},[66,541,138],{"class":130},[66,543,544],{"class":68,"line":109},[66,545,546],{"class":130},"  \u003Ctemplate #toolbar=\"{ manager, activeStates, disabledStates }\">\n",[66,548,549],{"class":68,"line":151},[66,550,551],{"class":130},"    \u003Cdiv class=\"my-toolbar\">\n",[66,553,554],{"class":68,"line":160},[66,555,556],{"class":130},"      \u003Cbutton\n",[66,558,559],{"class":68,"line":172},[66,560,561],{"class":130},"        :class=\"{ active: activeStates.bold }\"\n",[66,563,564],{"class":68,"line":183},[66,565,566],{"class":130},"        :disabled=\"disabledStates.bold\"\n",[66,568,569],{"class":68,"line":194},[66,570,571],{"class":130},"        @click=\"manager?.getEditor().chain().focus().toggleBold().run()\"\n",[66,573,574],{"class":68,"line":200},[66,575,576],{"class":130},"      >Bold\u003C\u002Fbutton>\n",[66,578,579],{"class":68,"line":210},[66,580,581],{"class":130},"    \u003C\u002Fdiv>\n",[66,583,584],{"class":68,"line":220},[66,585,586],{"class":130},"  \u003C\u002Ftemplate>\n",[66,588,589,591,593],{"class":68,"line":227},[66,590,213],{"class":130},[66,592,339],{"class":134},[66,594,138],{"class":130},[15,596,597,598,601,602,605],{},"You can also extend the default toolbar with the ",[29,599,600],{},"#toolbar-prepend"," and ",[29,603,604],{},"#toolbar-append"," slots.",[34,607,609],{"id":608},"vue-2","Vue 2",[15,611,612,613,616,617,620],{},"The Vue 2 adapter using Options API and ",[29,614,615],{},":html"," prop with ",[29,618,619],{},"@update:html"," event.",[15,622,623,625],{},[24,624,49],{}," Vue ^2.7.0",[52,627,55],{"id":628},"installation-1",[57,630,632],{"className":59,"code":631,"language":61,"meta":62,"style":62},"npm install @cyte-editor\u002Fcore @cyte-editor\u002Fvue2\n",[29,633,634],{"__ignoreMap":62},[66,635,636,638,640,642],{"class":68,"line":69},[66,637,73],{"class":72},[66,639,77],{"class":76},[66,641,80],{"class":76},[66,643,644],{"class":76}," @cyte-editor\u002Fvue2\n",[52,646,87],{"id":647},"import-styles-1",[57,649,651],{"className":93,"code":650,"language":95,"meta":62,"style":62},"import '@cyte-editor\u002Fcore\u002Fstyle.css'\nimport '@cyte-editor\u002Fvue2\u002Fstyle.css'\n",[29,652,653,659],{"__ignoreMap":62},[66,654,655,657],{"class":68,"line":69},[66,656,103],{"class":102},[66,658,106],{"class":76},[66,660,661,663],{"class":68,"line":109},[66,662,103],{"class":102},[66,664,665],{"class":76}," '@cyte-editor\u002Fvue2\u002Fstyle.css'\n",[52,667,118],{"id":668},"basic-usage-1",[57,670,672],{"className":121,"code":671,"language":123,"meta":62,"style":62},"\u003Ctemplate>\n  \u003Cdiv>\n    \u003CCyteEditor\n      :html=\"content\"\n      placeholder=\"Start writing…\"\n      locale=\"en-US\"\n      @update:html=\"content = $event\"\n    \u002F>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n\n\u003Cscript>\nimport { CyteEditor } from '@cyte-editor\u002Fvue2'\nimport '@cyte-editor\u002Fcore\u002Fstyle.css'\nimport '@cyte-editor\u002Fvue2\u002Fstyle.css'\n\nexport default {\n  components: { CyteEditor },\n  data() {\n    return {\n      content: '\u003Cp>Hello, CyteEditor!\u003C\u002Fp>',\n    }\n  },\n}\n\u003C\u002Fscript>\n",[29,673,674,682,690,696,705,713,721,731,735,743,751,755,763,774,780,786,790,801,806,815,823,834,840,846,852],{"__ignoreMap":62},[66,675,676,678,680],{"class":68,"line":69},[66,677,131],{"class":130},[66,679,135],{"class":134},[66,681,138],{"class":130},[66,683,684,686,688],{"class":68,"line":109},[66,685,143],{"class":130},[66,687,146],{"class":134},[66,689,138],{"class":130},[66,691,692,694],{"class":68,"line":151},[66,693,154],{"class":130},[66,695,157],{"class":134},[66,697,698,701,703],{"class":68,"line":160},[66,699,700],{"class":72},"      :html",[66,702,166],{"class":130},[66,704,169],{"class":76},[66,706,707,709,711],{"class":68,"line":172},[66,708,175],{"class":72},[66,710,166],{"class":130},[66,712,180],{"class":76},[66,714,715,717,719],{"class":68,"line":183},[66,716,186],{"class":72},[66,718,166],{"class":130},[66,720,191],{"class":76},[66,722,723,726,728],{"class":68,"line":194},[66,724,725],{"class":72},"      @update:html",[66,727,166],{"class":130},[66,729,730],{"class":76},"\"content = $event\"\n",[66,732,733],{"class":68,"line":200},[66,734,197],{"class":130},[66,736,737,739,741],{"class":68,"line":210},[66,738,203],{"class":130},[66,740,146],{"class":134},[66,742,138],{"class":130},[66,744,745,747,749],{"class":68,"line":220},[66,746,213],{"class":130},[66,748,135],{"class":134},[66,750,138],{"class":130},[66,752,753],{"class":68,"line":227},[66,754,224],{"emptyLinePlaceholder":223},[66,756,757,759,761],{"class":68,"line":240},[66,758,131],{"class":130},[66,760,232],{"class":134},[66,762,138],{"class":130},[66,764,765,767,769,771],{"class":68,"line":254},[66,766,103],{"class":102},[66,768,259],{"class":130},[66,770,248],{"class":102},[66,772,773],{"class":76}," '@cyte-editor\u002Fvue2'\n",[66,775,776,778],{"class":68,"line":267},[66,777,103],{"class":102},[66,779,106],{"class":76},[66,781,782,784],{"class":68,"line":274},[66,783,103],{"class":102},[66,785,665],{"class":76},[66,787,788],{"class":68,"line":281},[66,789,224],{"emptyLinePlaceholder":223},[66,791,792,795,798],{"class":68,"line":286},[66,793,794],{"class":102},"export",[66,796,797],{"class":102}," default",[66,799,800],{"class":130}," {\n",[66,802,803],{"class":68,"line":311},[66,804,805],{"class":130},"  components: { CyteEditor },\n",[66,807,809,812],{"class":68,"line":808},19,[66,810,811],{"class":72},"  data",[66,813,814],{"class":130},"() {\n",[66,816,818,821],{"class":68,"line":817},20,[66,819,820],{"class":102},"    return",[66,822,800],{"class":130},[66,824,826,829,831],{"class":68,"line":825},21,[66,827,828],{"class":130},"      content: ",[66,830,305],{"class":76},[66,832,833],{"class":130},",\n",[66,835,837],{"class":68,"line":836},22,[66,838,839],{"class":130},"    }\n",[66,841,843],{"class":68,"line":842},23,[66,844,845],{"class":130},"  },\n",[66,847,849],{"class":68,"line":848},24,[66,850,851],{"class":130},"}\n",[66,853,855,857,859],{"class":68,"line":854},25,[66,856,213],{"class":130},[66,858,232],{"class":134},[66,860,138],{"class":130},[52,862,321],{"id":863},"content-binding-1",[15,865,866,867,869,870,872,873,875],{},"Vue 2 does not support ",[29,868,43],{},". Use the ",[29,871,615],{}," prop with the ",[29,874,619],{}," event:",[57,877,878],{"className":121,"code":367,"language":123,"meta":62,"style":62},[29,879,880],{"__ignoreMap":62},[66,881,882,884,886,888,890,892,894,896,898,900,902,904,906,908,910,912,914,916,918],{"class":68,"line":69},[66,883,131],{"class":130},[66,885,339],{"class":134},[66,887,378],{"class":130},[66,889,348],{"class":72},[66,891,166],{"class":130},[66,893,353],{"class":76},[66,895,356],{"class":130},[66,897,353],{"class":76},[66,899,391],{"class":130},[66,901,394],{"class":72},[66,903,345],{"class":130},[66,905,348],{"class":72},[66,907,166],{"class":130},[66,909,353],{"class":76},[66,911,405],{"class":130},[66,913,166],{"class":102},[66,915,410],{"class":130},[66,917,353],{"class":76},[66,919,361],{"class":130},[52,921,418],{"id":922},"toolbar-customization-1",[15,924,421,925,425],{},[29,926,424],{},[57,928,930],{"className":121,"code":929,"language":123,"meta":62,"style":62},"\u003CCyteEditor\n  :html=\"content\"\n  :toolbar=\"['bold', 'italic', 'underline', '|', 'heading', 'align']\"\n  @update:html=\"content = $event\"\n\u002F>\n",[29,931,932,938,952,990,1013],{"__ignoreMap":62},[66,933,934,936],{"class":68,"line":69},[66,935,131],{"class":130},[66,937,157],{"class":134},[66,939,940,942,944,946,948,950],{"class":68,"line":109},[66,941,459],{"class":130},[66,943,348],{"class":72},[66,945,166],{"class":130},[66,947,353],{"class":76},[66,949,356],{"class":130},[66,951,454],{"class":76},[66,953,954,956,958,960,962,964,966,968,970,972,974,976,978,980,982,984,986,988],{"class":68,"line":151},[66,955,459],{"class":130},[66,957,424],{"class":72},[66,959,166],{"class":130},[66,961,353],{"class":76},[66,963,468],{"class":130},[66,965,471],{"class":76},[66,967,474],{"class":130},[66,969,477],{"class":76},[66,971,474],{"class":130},[66,973,482],{"class":76},[66,975,474],{"class":130},[66,977,487],{"class":76},[66,979,474],{"class":130},[66,981,492],{"class":76},[66,983,474],{"class":130},[66,985,497],{"class":76},[66,987,500],{"class":130},[66,989,454],{"class":76},[66,991,992,995,997,999,1001,1003,1005,1007,1009,1011],{"class":68,"line":160},[66,993,994],{"class":130},"  @",[66,996,394],{"class":72},[66,998,345],{"class":130},[66,1000,348],{"class":72},[66,1002,166],{"class":130},[66,1004,353],{"class":76},[66,1006,405],{"class":130},[66,1008,166],{"class":102},[66,1010,410],{"class":130},[66,1012,454],{"class":76},[66,1014,1015],{"class":68,"line":172},[66,1016,507],{"class":130},[15,1018,1019,1020,514],{},"For full control, replace the toolbar using the ",[29,1021,424],{},[57,1023,1025],{"className":121,"code":1024,"language":123,"meta":62,"style":62},"\u003CCyteEditor :html=\"content\" @update:html=\"content = $event\">\n  \u003Ctemplate slot=\"toolbar\" slot-scope=\"{ manager, activeStates, disabledStates }\">\n    \u003Cdiv class=\"my-toolbar\">\n      \u003Cbutton\n        :class=\"{ active: activeStates.bold }\"\n        :disabled=\"disabledStates.bold\"\n        @click=\"manager && manager.getEditor().chain().focus().toggleBold().run()\"\n      >Bold\u003C\u002Fbutton>\n    \u003C\u002Fdiv>\n  \u003C\u002Ftemplate>\n\u003C\u002FCyteEditor>\n",[29,1026,1027,1067,1072,1076,1080,1084,1088,1093,1097,1101,1105],{"__ignoreMap":62},[66,1028,1029,1031,1033,1035,1037,1039,1041,1043,1045,1047,1049,1051,1053,1055,1057,1059,1061,1063,1065],{"class":68,"line":69},[66,1030,131],{"class":130},[66,1032,339],{"class":134},[66,1034,378],{"class":130},[66,1036,348],{"class":72},[66,1038,166],{"class":130},[66,1040,353],{"class":76},[66,1042,356],{"class":130},[66,1044,353],{"class":76},[66,1046,391],{"class":130},[66,1048,394],{"class":72},[66,1050,345],{"class":130},[66,1052,348],{"class":72},[66,1054,166],{"class":130},[66,1056,353],{"class":76},[66,1058,405],{"class":130},[66,1060,166],{"class":102},[66,1062,410],{"class":130},[66,1064,353],{"class":76},[66,1066,138],{"class":130},[66,1068,1069],{"class":68,"line":109},[66,1070,1071],{"class":130},"  \u003Ctemplate slot=\"toolbar\" slot-scope=\"{ manager, activeStates, disabledStates }\">\n",[66,1073,1074],{"class":68,"line":151},[66,1075,551],{"class":130},[66,1077,1078],{"class":68,"line":160},[66,1079,556],{"class":130},[66,1081,1082],{"class":68,"line":172},[66,1083,561],{"class":130},[66,1085,1086],{"class":68,"line":183},[66,1087,566],{"class":130},[66,1089,1090],{"class":68,"line":194},[66,1091,1092],{"class":130},"        @click=\"manager && manager.getEditor().chain().focus().toggleBold().run()\"\n",[66,1094,1095],{"class":68,"line":200},[66,1096,576],{"class":130},[66,1098,1099],{"class":68,"line":210},[66,1100,581],{"class":130},[66,1102,1103],{"class":68,"line":220},[66,1104,586],{"class":130},[66,1106,1107,1109,1111],{"class":68,"line":227},[66,1108,213],{"class":130},[66,1110,339],{"class":134},[66,1112,138],{"class":130},[34,1114,1116],{"id":1115},"react","React",[15,1118,1119,1120,1123],{},"The React adapter with hooks-based API and ",[29,1121,1122],{},"onChange"," callback.",[15,1125,1126,1128],{},[24,1127,49],{}," React ^18 || ^19",[52,1130,55],{"id":1131},"installation-2",[57,1133,1135],{"className":59,"code":1134,"language":61,"meta":62,"style":62},"npm install @cyte-editor\u002Fcore @cyte-editor\u002Freact\n",[29,1136,1137],{"__ignoreMap":62},[66,1138,1139,1141,1143,1145],{"class":68,"line":69},[66,1140,73],{"class":72},[66,1142,77],{"class":76},[66,1144,80],{"class":76},[66,1146,1147],{"class":76}," @cyte-editor\u002Freact\n",[52,1149,87],{"id":1150},"import-styles-2",[57,1152,1154],{"className":93,"code":1153,"language":95,"meta":62,"style":62},"import '@cyte-editor\u002Fcore\u002Fstyle.css'\nimport '@cyte-editor\u002Freact\u002Fstyle.css'\n",[29,1155,1156,1162],{"__ignoreMap":62},[66,1157,1158,1160],{"class":68,"line":69},[66,1159,103],{"class":102},[66,1161,106],{"class":76},[66,1163,1164,1166],{"class":68,"line":109},[66,1165,103],{"class":102},[66,1167,1168],{"class":76}," '@cyte-editor\u002Freact\u002Fstyle.css'\n",[52,1170,118],{"id":1171},"basic-usage-2",[57,1173,1177],{"className":1174,"code":1175,"language":1176,"meta":62,"style":62},"language-jsx shiki shiki-themes github-dark","import { useState } from 'react'\nimport { CyteEditor } from '@cyte-editor\u002Freact'\nimport '@cyte-editor\u002Fcore\u002Fstyle.css'\nimport '@cyte-editor\u002Freact\u002Fstyle.css'\n\nexport default function MyEditor() {\n  const [content, setContent] = useState('\u003Cp>Hello, CyteEditor!\u003C\u002Fp>')\n\n  return (\n    \u003Cdiv>\n      \u003CCyteEditor\n        html={content}\n        placeholder=\"Start writing…\"\n        locale=\"en-US\"\n        onChange={({ html }) => setContent(html)}\n      \u002F>\n    \u003C\u002Fdiv>\n  )\n}\n","jsx",[29,1178,1179,1191,1202,1208,1214,1218,1232,1261,1265,1273,1281,1288,1298,1307,1316,1341,1346,1355,1360],{"__ignoreMap":62},[66,1180,1181,1183,1186,1188],{"class":68,"line":69},[66,1182,103],{"class":102},[66,1184,1185],{"class":130}," { useState } ",[66,1187,248],{"class":102},[66,1189,1190],{"class":76}," 'react'\n",[66,1192,1193,1195,1197,1199],{"class":68,"line":109},[66,1194,103],{"class":102},[66,1196,259],{"class":130},[66,1198,248],{"class":102},[66,1200,1201],{"class":76}," '@cyte-editor\u002Freact'\n",[66,1203,1204,1206],{"class":68,"line":151},[66,1205,103],{"class":102},[66,1207,106],{"class":76},[66,1209,1210,1212],{"class":68,"line":160},[66,1211,103],{"class":102},[66,1213,1168],{"class":76},[66,1215,1216],{"class":68,"line":172},[66,1217,224],{"emptyLinePlaceholder":223},[66,1219,1220,1222,1224,1227,1230],{"class":68,"line":183},[66,1221,794],{"class":102},[66,1223,797],{"class":102},[66,1225,1226],{"class":102}," function",[66,1228,1229],{"class":72}," MyEditor",[66,1231,814],{"class":130},[66,1233,1234,1237,1240,1242,1244,1247,1250,1252,1255,1257,1259],{"class":68,"line":194},[66,1235,1236],{"class":102},"  const",[66,1238,1239],{"class":130}," [",[66,1241,356],{"class":292},[66,1243,474],{"class":130},[66,1245,1246],{"class":292},"setContent",[66,1248,1249],{"class":130},"] ",[66,1251,166],{"class":102},[66,1253,1254],{"class":72}," useState",[66,1256,302],{"class":130},[66,1258,305],{"class":76},[66,1260,308],{"class":130},[66,1262,1263],{"class":68,"line":200},[66,1264,224],{"emptyLinePlaceholder":223},[66,1266,1267,1270],{"class":68,"line":210},[66,1268,1269],{"class":102},"  return",[66,1271,1272],{"class":130}," (\n",[66,1274,1275,1277,1279],{"class":68,"line":220},[66,1276,154],{"class":130},[66,1278,146],{"class":134},[66,1280,138],{"class":130},[66,1282,1283,1286],{"class":68,"line":227},[66,1284,1285],{"class":130},"      \u003C",[66,1287,157],{"class":292},[66,1289,1290,1293,1295],{"class":68,"line":240},[66,1291,1292],{"class":72},"        html",[66,1294,166],{"class":102},[66,1296,1297],{"class":130},"{content}\n",[66,1299,1300,1303,1305],{"class":68,"line":254},[66,1301,1302],{"class":72},"        placeholder",[66,1304,166],{"class":102},[66,1306,180],{"class":76},[66,1308,1309,1312,1314],{"class":68,"line":267},[66,1310,1311],{"class":72},"        locale",[66,1313,166],{"class":102},[66,1315,191],{"class":76},[66,1317,1318,1321,1323,1326,1329,1332,1335,1338],{"class":68,"line":274},[66,1319,1320],{"class":72},"        onChange",[66,1322,166],{"class":102},[66,1324,1325],{"class":130},"{({ ",[66,1327,348],{"class":1328},"s9osk",[66,1330,1331],{"class":130}," }) ",[66,1333,1334],{"class":102},"=>",[66,1336,1337],{"class":72}," setContent",[66,1339,1340],{"class":130},"(html)}\n",[66,1342,1343],{"class":68,"line":281},[66,1344,1345],{"class":130},"      \u002F>\n",[66,1347,1348,1351,1353],{"class":68,"line":286},[66,1349,1350],{"class":130},"    \u003C\u002F",[66,1352,146],{"class":134},[66,1354,138],{"class":130},[66,1356,1357],{"class":68,"line":311},[66,1358,1359],{"class":130},"  )\n",[66,1361,1362],{"class":68,"line":808},[66,1363,851],{"class":130},[52,1365,321],{"id":1366},"content-binding-2",[15,1368,1369,1370,1372,1373,1375],{},"React uses the ",[29,1371,348],{}," prop and ",[29,1374,1122],{}," callback:",[57,1377,1379],{"className":1174,"code":1378,"language":1176,"meta":62,"style":62},"\u003CCyteEditor\n  html={content}\n  onChange={({ html }) => setContent(html)}\n\u002F>\n",[29,1380,1381,1387,1396,1415],{"__ignoreMap":62},[66,1382,1383,1385],{"class":68,"line":69},[66,1384,131],{"class":130},[66,1386,157],{"class":292},[66,1388,1389,1392,1394],{"class":68,"line":109},[66,1390,1391],{"class":72},"  html",[66,1393,166],{"class":102},[66,1395,1297],{"class":130},[66,1397,1398,1401,1403,1405,1407,1409,1411,1413],{"class":68,"line":151},[66,1399,1400],{"class":72},"  onChange",[66,1402,166],{"class":102},[66,1404,1325],{"class":130},[66,1406,348],{"class":1328},[66,1408,1331],{"class":130},[66,1410,1334],{"class":102},[66,1412,1337],{"class":72},[66,1414,1340],{"class":130},[66,1416,1417],{"class":68,"line":160},[66,1418,507],{"class":130},[15,1420,1421,1422,1424,1425,601,1427,1430],{},"The ",[29,1423,1122],{}," callback receives an object with ",[29,1426,348],{},[29,1428,1429],{},"json"," properties.",[52,1432,418],{"id":1433},"toolbar-customization-2",[15,1435,421,1436,425],{},[29,1437,424],{},[57,1439,1441],{"className":1174,"code":1440,"language":1176,"meta":62,"style":62},"\u003CCyteEditor\n  html={content}\n  toolbar={['bold', 'italic', 'underline', '|', 'heading', 'align']}\n  onChange={({ html }) => setContent(html)}\n\u002F>\n",[29,1442,1443,1449,1457,1492,1510],{"__ignoreMap":62},[66,1444,1445,1447],{"class":68,"line":69},[66,1446,131],{"class":130},[66,1448,157],{"class":292},[66,1450,1451,1453,1455],{"class":68,"line":109},[66,1452,1391],{"class":72},[66,1454,166],{"class":102},[66,1456,1297],{"class":130},[66,1458,1459,1462,1464,1467,1469,1471,1473,1475,1477,1479,1481,1483,1485,1487,1489],{"class":68,"line":151},[66,1460,1461],{"class":72},"  toolbar",[66,1463,166],{"class":102},[66,1465,1466],{"class":130},"{[",[66,1468,471],{"class":76},[66,1470,474],{"class":130},[66,1472,477],{"class":76},[66,1474,474],{"class":130},[66,1476,482],{"class":76},[66,1478,474],{"class":130},[66,1480,487],{"class":76},[66,1482,474],{"class":130},[66,1484,492],{"class":76},[66,1486,474],{"class":130},[66,1488,497],{"class":76},[66,1490,1491],{"class":130},"]}\n",[66,1493,1494,1496,1498,1500,1502,1504,1506,1508],{"class":68,"line":160},[66,1495,1400],{"class":72},[66,1497,166],{"class":102},[66,1499,1325],{"class":130},[66,1501,348],{"class":1328},[66,1503,1331],{"class":130},[66,1505,1334],{"class":102},[66,1507,1337],{"class":72},[66,1509,1340],{"class":130},[66,1511,1512],{"class":68,"line":172},[66,1513,507],{"class":130},[15,1515,1516,1517,1520],{},"For full control, use the ",[29,1518,1519],{},"toolbarRender"," render prop:",[57,1522,1524],{"className":1174,"code":1523,"language":1176,"meta":62,"style":62},"\u003CCyteEditor\n  html={content}\n  onChange={({ html }) => setContent(html)}\n  toolbarRender={({ manager, activeStates, disabledStates }) => (\n    \u003Cdiv className=\"my-toolbar\">\n      \u003Cbutton\n        className={activeStates.bold ? 'active' : ''}\n        disabled={disabledStates.bold}\n        onClick={() => manager?.getEditor().chain().focus().toggleBold().run()}\n      >\n        Bold\n      \u003C\u002Fbutton>\n    \u003C\u002Fdiv>\n  )}\n\u002F>\n",[29,1525,1526,1532,1540,1558,1586,1602,1609,1632,1642,1684,1689,1694,1704,1712,1717],{"__ignoreMap":62},[66,1527,1528,1530],{"class":68,"line":69},[66,1529,131],{"class":130},[66,1531,157],{"class":292},[66,1533,1534,1536,1538],{"class":68,"line":109},[66,1535,1391],{"class":72},[66,1537,166],{"class":102},[66,1539,1297],{"class":130},[66,1541,1542,1544,1546,1548,1550,1552,1554,1556],{"class":68,"line":151},[66,1543,1400],{"class":72},[66,1545,166],{"class":102},[66,1547,1325],{"class":130},[66,1549,348],{"class":1328},[66,1551,1331],{"class":130},[66,1553,1334],{"class":102},[66,1555,1337],{"class":72},[66,1557,1340],{"class":130},[66,1559,1560,1563,1565,1567,1570,1572,1575,1577,1580,1582,1584],{"class":68,"line":160},[66,1561,1562],{"class":72},"  toolbarRender",[66,1564,166],{"class":102},[66,1566,1325],{"class":130},[66,1568,1569],{"class":1328},"manager",[66,1571,474],{"class":130},[66,1573,1574],{"class":1328},"activeStates",[66,1576,474],{"class":130},[66,1578,1579],{"class":1328},"disabledStates",[66,1581,1331],{"class":130},[66,1583,1334],{"class":102},[66,1585,1272],{"class":130},[66,1587,1588,1590,1592,1595,1597,1600],{"class":68,"line":172},[66,1589,154],{"class":130},[66,1591,146],{"class":134},[66,1593,1594],{"class":72}," className",[66,1596,166],{"class":102},[66,1598,1599],{"class":76},"\"my-toolbar\"",[66,1601,138],{"class":130},[66,1603,1604,1606],{"class":68,"line":183},[66,1605,1285],{"class":130},[66,1607,1608],{"class":134},"button\n",[66,1610,1611,1614,1616,1619,1622,1625,1627,1630],{"class":68,"line":194},[66,1612,1613],{"class":72},"        className",[66,1615,166],{"class":102},[66,1617,1618],{"class":130},"{activeStates.bold ",[66,1620,1621],{"class":102},"?",[66,1623,1624],{"class":76}," 'active'",[66,1626,378],{"class":102},[66,1628,1629],{"class":76}," ''",[66,1631,851],{"class":130},[66,1633,1634,1637,1639],{"class":68,"line":200},[66,1635,1636],{"class":72},"        disabled",[66,1638,166],{"class":102},[66,1640,1641],{"class":130},"{disabledStates.bold}\n",[66,1643,1644,1647,1649,1652,1654,1657,1660,1663,1666,1668,1671,1673,1676,1678,1681],{"class":68,"line":210},[66,1645,1646],{"class":72},"        onClick",[66,1648,166],{"class":102},[66,1650,1651],{"class":130},"{() ",[66,1653,1334],{"class":102},[66,1655,1656],{"class":130}," manager?.",[66,1658,1659],{"class":72},"getEditor",[66,1661,1662],{"class":130},"().",[66,1664,1665],{"class":72},"chain",[66,1667,1662],{"class":130},[66,1669,1670],{"class":72},"focus",[66,1672,1662],{"class":130},[66,1674,1675],{"class":72},"toggleBold",[66,1677,1662],{"class":130},[66,1679,1680],{"class":72},"run",[66,1682,1683],{"class":130},"()}\n",[66,1685,1686],{"class":68,"line":220},[66,1687,1688],{"class":130},"      >\n",[66,1690,1691],{"class":68,"line":227},[66,1692,1693],{"class":130},"        Bold\n",[66,1695,1696,1699,1702],{"class":68,"line":240},[66,1697,1698],{"class":130},"      \u003C\u002F",[66,1700,1701],{"class":134},"button",[66,1703,138],{"class":130},[66,1705,1706,1708,1710],{"class":68,"line":254},[66,1707,1350],{"class":130},[66,1709,146],{"class":134},[66,1711,138],{"class":130},[66,1713,1714],{"class":68,"line":267},[66,1715,1716],{"class":130},"  )}\n",[66,1718,1719],{"class":68,"line":274},[66,1720,507],{"class":130},[34,1722,1724],{"id":1723},"angular","Angular",[15,1726,1727],{},"The Angular adapter with standalone component support for Angular 17+.",[15,1729,1730,1732],{},[24,1731,49],{}," Angular ^17 || ^18 || ^19",[52,1734,55],{"id":1735},"installation-3",[57,1737,1739],{"className":59,"code":1738,"language":61,"meta":62,"style":62},"npm install @cyte-editor\u002Fcore @cyte-editor\u002Fangular\n",[29,1740,1741],{"__ignoreMap":62},[66,1742,1743,1745,1747,1749],{"class":68,"line":69},[66,1744,73],{"class":72},[66,1746,77],{"class":76},[66,1748,80],{"class":76},[66,1750,1751],{"class":76}," @cyte-editor\u002Fangular\n",[52,1753,87],{"id":1754},"import-styles-3",[15,1756,1757],{},"Add the styles to your global styles or component:",[57,1759,1763],{"className":1760,"code":1761,"language":1762,"meta":62,"style":62},"language-css shiki shiki-themes github-dark","\u002F* styles.css or angular.json styles array *\u002F\n@import '@cyte-editor\u002Fcore\u002Fstyle.css';\n@import '@cyte-editor\u002Fangular\u002Fstyle.css';\n","css",[29,1764,1765,1771,1782],{"__ignoreMap":62},[66,1766,1767],{"class":68,"line":69},[66,1768,1770],{"class":1769},"sAwPA","\u002F* styles.css or angular.json styles array *\u002F\n",[66,1772,1773,1776,1779],{"class":68,"line":109},[66,1774,1775],{"class":102},"@import",[66,1777,1778],{"class":76}," '@cyte-editor\u002Fcore\u002Fstyle.css'",[66,1780,1781],{"class":130},";\n",[66,1783,1784,1786,1789],{"class":68,"line":151},[66,1785,1775],{"class":102},[66,1787,1788],{"class":76}," '@cyte-editor\u002Fangular\u002Fstyle.css'",[66,1790,1781],{"class":130},[52,1792,1794],{"id":1793},"register-components","Register Components",[57,1796,1800],{"className":1797,"code":1798,"language":1799,"meta":62,"style":62},"language-typescript shiki shiki-themes github-dark","\u002F\u002F app.module.ts\nimport { NgModule } from '@angular\u002Fcore'\nimport { CyteEditorComponent } from '@cyte-editor\u002Fangular'\n\n@NgModule({\n  imports: [CyteEditorComponent],\n  \u002F\u002F ...\n})\nexport class AppModule {}\n","typescript",[29,1801,1802,1807,1819,1831,1835,1846,1851,1856,1861],{"__ignoreMap":62},[66,1803,1804],{"class":68,"line":69},[66,1805,1806],{"class":1769},"\u002F\u002F app.module.ts\n",[66,1808,1809,1811,1814,1816],{"class":68,"line":109},[66,1810,103],{"class":102},[66,1812,1813],{"class":130}," { NgModule } ",[66,1815,248],{"class":102},[66,1817,1818],{"class":76}," '@angular\u002Fcore'\n",[66,1820,1821,1823,1826,1828],{"class":68,"line":151},[66,1822,103],{"class":102},[66,1824,1825],{"class":130}," { CyteEditorComponent } ",[66,1827,248],{"class":102},[66,1829,1830],{"class":76}," '@cyte-editor\u002Fangular'\n",[66,1832,1833],{"class":68,"line":160},[66,1834,224],{"emptyLinePlaceholder":223},[66,1836,1837,1840,1843],{"class":68,"line":172},[66,1838,1839],{"class":130},"@",[66,1841,1842],{"class":72},"NgModule",[66,1844,1845],{"class":130},"({\n",[66,1847,1848],{"class":68,"line":183},[66,1849,1850],{"class":130},"  imports: [CyteEditorComponent],\n",[66,1852,1853],{"class":68,"line":194},[66,1854,1855],{"class":1769},"  \u002F\u002F ...\n",[66,1857,1858],{"class":68,"line":200},[66,1859,1860],{"class":130},"})\n",[66,1862,1863,1865,1868,1871],{"class":68,"line":210},[66,1864,794],{"class":102},[66,1866,1867],{"class":102}," class",[66,1869,1870],{"class":72}," AppModule",[66,1872,1873],{"class":130}," {}\n",[52,1875,118],{"id":1876},"basic-usage-3",[57,1878,1881],{"className":1879,"code":1880,"language":348,"meta":62,"style":62},"language-html shiki shiki-themes github-dark","\u003C!-- app.component.html -->\n\u003Ccyte-editor\n  [html]=\"content\"\n  [placeholder]=\"'Start writing…'\"\n  [locale]=\"'en-US'\"\n  (onChange)=\"onContentChange($event)\"\n>\u003C\u002Fcyte-editor>\n",[29,1882,1883,1888,1895,1904,1914,1924,1934],{"__ignoreMap":62},[66,1884,1885],{"class":68,"line":69},[66,1886,1887],{"class":1769},"\u003C!-- app.component.html -->\n",[66,1889,1890,1892],{"class":68,"line":109},[66,1891,131],{"class":130},[66,1893,1894],{"class":134},"cyte-editor\n",[66,1896,1897,1900,1902],{"class":68,"line":151},[66,1898,1899],{"class":72},"  [html]",[66,1901,166],{"class":130},[66,1903,169],{"class":76},[66,1905,1906,1909,1911],{"class":68,"line":160},[66,1907,1908],{"class":72},"  [placeholder]",[66,1910,166],{"class":130},[66,1912,1913],{"class":76},"\"'Start writing…'\"\n",[66,1915,1916,1919,1921],{"class":68,"line":172},[66,1917,1918],{"class":72},"  [locale]",[66,1920,166],{"class":130},[66,1922,1923],{"class":76},"\"'en-US'\"\n",[66,1925,1926,1929,1931],{"class":68,"line":183},[66,1927,1928],{"class":72},"  (onChange)",[66,1930,166],{"class":130},[66,1932,1933],{"class":76},"\"onContentChange($event)\"\n",[66,1935,1936,1939,1941],{"class":68,"line":194},[66,1937,1938],{"class":130},">\u003C\u002F",[66,1940,31],{"class":134},[66,1942,138],{"class":130},[57,1944,1946],{"className":1797,"code":1945,"language":1799,"meta":62,"style":62},"\u002F\u002F app.component.ts\nimport { Component } from '@angular\u002Fcore'\n\n@Component({\n  selector: 'app-root',\n  templateUrl: '.\u002Fapp.component.html',\n})\nexport class AppComponent {\n  content = '\u003Cp>Hello, CyteEditor!\u003C\u002Fp>'\n\n  onContentChange(event: { html: string }) {\n    this.content = event.html\n  }\n}\n",[29,1947,1948,1953,1964,1968,1977,1987,1997,2001,2012,2022,2026,2051,2064,2069],{"__ignoreMap":62},[66,1949,1950],{"class":68,"line":69},[66,1951,1952],{"class":1769},"\u002F\u002F app.component.ts\n",[66,1954,1955,1957,1960,1962],{"class":68,"line":109},[66,1956,103],{"class":102},[66,1958,1959],{"class":130}," { Component } ",[66,1961,248],{"class":102},[66,1963,1818],{"class":76},[66,1965,1966],{"class":68,"line":151},[66,1967,224],{"emptyLinePlaceholder":223},[66,1969,1970,1972,1975],{"class":68,"line":160},[66,1971,1839],{"class":130},[66,1973,1974],{"class":72},"Component",[66,1976,1845],{"class":130},[66,1978,1979,1982,1985],{"class":68,"line":172},[66,1980,1981],{"class":130},"  selector: ",[66,1983,1984],{"class":76},"'app-root'",[66,1986,833],{"class":130},[66,1988,1989,1992,1995],{"class":68,"line":183},[66,1990,1991],{"class":130},"  templateUrl: ",[66,1993,1994],{"class":76},"'.\u002Fapp.component.html'",[66,1996,833],{"class":130},[66,1998,1999],{"class":68,"line":194},[66,2000,1860],{"class":130},[66,2002,2003,2005,2007,2010],{"class":68,"line":200},[66,2004,794],{"class":102},[66,2006,1867],{"class":102},[66,2008,2009],{"class":72}," AppComponent",[66,2011,800],{"class":130},[66,2013,2014,2017,2019],{"class":68,"line":210},[66,2015,2016],{"class":1328},"  content",[66,2018,296],{"class":102},[66,2020,2021],{"class":76}," '\u003Cp>Hello, CyteEditor!\u003C\u002Fp>'\n",[66,2023,2024],{"class":68,"line":220},[66,2025,224],{"emptyLinePlaceholder":223},[66,2027,2028,2031,2033,2036,2038,2041,2043,2045,2048],{"class":68,"line":227},[66,2029,2030],{"class":72},"  onContentChange",[66,2032,302],{"class":130},[66,2034,2035],{"class":1328},"event",[66,2037,345],{"class":102},[66,2039,2040],{"class":130}," { ",[66,2042,348],{"class":1328},[66,2044,345],{"class":102},[66,2046,2047],{"class":292}," string",[66,2049,2050],{"class":130}," }) {\n",[66,2052,2053,2056,2059,2061],{"class":68,"line":240},[66,2054,2055],{"class":292},"    this",[66,2057,2058],{"class":130},".content ",[66,2060,166],{"class":102},[66,2062,2063],{"class":130}," event.html\n",[66,2065,2066],{"class":68,"line":254},[66,2067,2068],{"class":130},"  }\n",[66,2070,2071],{"class":68,"line":267},[66,2072,851],{"class":130},[52,2074,321],{"id":2075},"content-binding-3",[15,2077,2078,2079,2082,2083,345],{},"Angular uses property binding ",[29,2080,2081],{},"[html]"," and event binding ",[29,2084,2085],{},"(onChange)",[57,2087,2089],{"className":1879,"code":2088,"language":348,"meta":62,"style":62},"\u003Ccyte-editor [html]=\"content\" (onChange)=\"content = $event.html\">\u003C\u002Fcyte-editor>\n",[29,2090,2091],{"__ignoreMap":62},[66,2092,2093,2095,2097,2100,2102,2105,2108,2110,2113,2115,2117],{"class":68,"line":69},[66,2094,131],{"class":130},[66,2096,31],{"class":134},[66,2098,2099],{"class":72}," [html]",[66,2101,166],{"class":130},[66,2103,2104],{"class":76},"\"content\"",[66,2106,2107],{"class":72}," (onChange)",[66,2109,166],{"class":130},[66,2111,2112],{"class":76},"\"content = $event.html\"",[66,2114,1938],{"class":130},[66,2116,31],{"class":134},[66,2118,138],{"class":130},[52,2120,418],{"id":2121},"toolbar-customization-3",[15,2123,421,2124,2126],{},[29,2125,424],{}," input:",[57,2128,2130],{"className":1879,"code":2129,"language":348,"meta":62,"style":62},"\u003Ccyte-editor\n  [html]=\"content\"\n  [toolbar]=\"['bold', 'italic', 'underline', '|', 'heading', 'align']\"\n  (onChange)=\"content = $event.html\"\n>\u003C\u002Fcyte-editor>\n",[29,2131,2132,2138,2146,2156,2165],{"__ignoreMap":62},[66,2133,2134,2136],{"class":68,"line":69},[66,2135,131],{"class":130},[66,2137,1894],{"class":134},[66,2139,2140,2142,2144],{"class":68,"line":109},[66,2141,1899],{"class":72},[66,2143,166],{"class":130},[66,2145,169],{"class":76},[66,2147,2148,2151,2153],{"class":68,"line":151},[66,2149,2150],{"class":72},"  [toolbar]",[66,2152,166],{"class":130},[66,2154,2155],{"class":76},"\"['bold', 'italic', 'underline', '|', 'heading', 'align']\"\n",[66,2157,2158,2160,2162],{"class":68,"line":160},[66,2159,1928],{"class":72},[66,2161,166],{"class":130},[66,2163,2164],{"class":76},"\"content = $event.html\"\n",[66,2166,2167,2169,2171],{"class":68,"line":172},[66,2168,1938],{"class":130},[66,2170,31],{"class":134},[66,2172,138],{"class":130},[15,2174,2175,2176,345],{},"For full control, provide a custom template via ",[29,2177,2178],{},"toolbarTemplate",[57,2180,2182],{"className":1879,"code":2181,"language":348,"meta":62,"style":62},"\u003Ccyte-editor\n  [html]=\"content\"\n  [toolbarTemplate]=\"myToolbar\"\n  (onChange)=\"content = $event.html\"\n>\u003C\u002Fcyte-editor>\n\n\u003Cng-template #myToolbar let-props>\n  \u003Cdiv class=\"my-toolbar\">\n    \u003Cbutton\n      [class.active]=\"props.activeStates['bold']\"\n      [disabled]=\"props.disabledStates['bold']\"\n      (click)=\"props.manager?.getEditor().chain().focus().toggleBold().run()\"\n    >Bold\u003C\u002Fbutton>\n  \u003C\u002Fdiv>\n\u003C\u002Fng-template>\n",[29,2183,2184,2190,2198,2208,2216,2224,2228,2243,2257,2263,2273,2283,2293,2302,2310],{"__ignoreMap":62},[66,2185,2186,2188],{"class":68,"line":69},[66,2187,131],{"class":130},[66,2189,1894],{"class":134},[66,2191,2192,2194,2196],{"class":68,"line":109},[66,2193,1899],{"class":72},[66,2195,166],{"class":130},[66,2197,169],{"class":76},[66,2199,2200,2203,2205],{"class":68,"line":151},[66,2201,2202],{"class":72},"  [toolbarTemplate]",[66,2204,166],{"class":130},[66,2206,2207],{"class":76},"\"myToolbar\"\n",[66,2209,2210,2212,2214],{"class":68,"line":160},[66,2211,1928],{"class":72},[66,2213,166],{"class":130},[66,2215,2164],{"class":76},[66,2217,2218,2220,2222],{"class":68,"line":172},[66,2219,1938],{"class":130},[66,2221,31],{"class":134},[66,2223,138],{"class":130},[66,2225,2226],{"class":68,"line":183},[66,2227,224],{"emptyLinePlaceholder":223},[66,2229,2230,2232,2235,2238,2241],{"class":68,"line":194},[66,2231,131],{"class":130},[66,2233,2234],{"class":134},"ng-template",[66,2236,2237],{"class":72}," #myToolbar",[66,2239,2240],{"class":72}," let-props",[66,2242,138],{"class":130},[66,2244,2245,2247,2249,2251,2253,2255],{"class":68,"line":200},[66,2246,143],{"class":130},[66,2248,146],{"class":134},[66,2250,1867],{"class":72},[66,2252,166],{"class":130},[66,2254,1599],{"class":76},[66,2256,138],{"class":130},[66,2258,2259,2261],{"class":68,"line":210},[66,2260,154],{"class":130},[66,2262,1608],{"class":134},[66,2264,2265,2268,2270],{"class":68,"line":220},[66,2266,2267],{"class":72},"      [class.active]",[66,2269,166],{"class":130},[66,2271,2272],{"class":76},"\"props.activeStates['bold']\"\n",[66,2274,2275,2278,2280],{"class":68,"line":227},[66,2276,2277],{"class":72},"      [disabled]",[66,2279,166],{"class":130},[66,2281,2282],{"class":76},"\"props.disabledStates['bold']\"\n",[66,2284,2285,2288,2290],{"class":68,"line":240},[66,2286,2287],{"class":72},"      (click)",[66,2289,166],{"class":130},[66,2291,2292],{"class":76},"\"props.manager?.getEditor().chain().focus().toggleBold().run()\"\n",[66,2294,2295,2298,2300],{"class":68,"line":254},[66,2296,2297],{"class":130},"    >Bold\u003C\u002F",[66,2299,1701],{"class":134},[66,2301,138],{"class":130},[66,2303,2304,2306,2308],{"class":68,"line":267},[66,2305,203],{"class":130},[66,2307,146],{"class":134},[66,2309,138],{"class":130},[66,2311,2312,2314,2316],{"class":68,"line":274},[66,2313,213],{"class":130},[66,2315,2234],{"class":134},[66,2317,138],{"class":130},[34,2319,2321],{"id":2320},"svelte","Svelte",[15,2323,2324],{},"The Svelte adapter compatible with both Svelte 4 and Svelte 5.",[15,2326,2327,2329],{},[24,2328,49],{}," Svelte ^4 || ^5",[52,2331,55],{"id":2332},"installation-4",[57,2334,2336],{"className":59,"code":2335,"language":61,"meta":62,"style":62},"npm install @cyte-editor\u002Fcore @cyte-editor\u002Fsvelte\n",[29,2337,2338],{"__ignoreMap":62},[66,2339,2340,2342,2344,2346],{"class":68,"line":69},[66,2341,73],{"class":72},[66,2343,77],{"class":76},[66,2345,80],{"class":76},[66,2347,2348],{"class":76}," @cyte-editor\u002Fsvelte\n",[52,2350,87],{"id":2351},"import-styles-4",[57,2353,2355],{"className":93,"code":2354,"language":95,"meta":62,"style":62},"import '@cyte-editor\u002Fcore\u002Fstyle.css'\nimport '@cyte-editor\u002Fsvelte\u002Fstyle.css'\n",[29,2356,2357,2363],{"__ignoreMap":62},[66,2358,2359,2361],{"class":68,"line":69},[66,2360,103],{"class":102},[66,2362,106],{"class":76},[66,2364,2365,2367],{"class":68,"line":109},[66,2366,103],{"class":102},[66,2368,2369],{"class":76}," '@cyte-editor\u002Fsvelte\u002Fstyle.css'\n",[52,2371,118],{"id":2372},"basic-usage-4",[57,2374,2377],{"className":2375,"code":2376,"language":2320,"meta":62,"style":62},"language-svelte shiki shiki-themes github-dark","\u003Cscript>\n  import { CyteEditor } from '@cyte-editor\u002Fsvelte'\n  import '@cyte-editor\u002Fcore\u002Fstyle.css'\n  import '@cyte-editor\u002Fsvelte\u002Fstyle.css'\n\n  let content = '\u003Cp>Hello, CyteEditor!\u003C\u002Fp>'\n\u003C\u002Fscript>\n\n\u003CCyteEditor\n  html={content}\n  placeholder=\"Start writing…\"\n  locale=\"en-US\"\n  onChange={(e) => content = e.html}\n\u002F>\n",[29,2378,2379,2384,2389,2394,2399,2403,2408,2413,2417,2422,2427,2432,2437,2442],{"__ignoreMap":62},[66,2380,2381],{"class":68,"line":69},[66,2382,2383],{},"\u003Cscript>\n",[66,2385,2386],{"class":68,"line":109},[66,2387,2388],{},"  import { CyteEditor } from '@cyte-editor\u002Fsvelte'\n",[66,2390,2391],{"class":68,"line":151},[66,2392,2393],{},"  import '@cyte-editor\u002Fcore\u002Fstyle.css'\n",[66,2395,2396],{"class":68,"line":160},[66,2397,2398],{},"  import '@cyte-editor\u002Fsvelte\u002Fstyle.css'\n",[66,2400,2401],{"class":68,"line":172},[66,2402,224],{"emptyLinePlaceholder":223},[66,2404,2405],{"class":68,"line":183},[66,2406,2407],{},"  let content = '\u003Cp>Hello, CyteEditor!\u003C\u002Fp>'\n",[66,2409,2410],{"class":68,"line":194},[66,2411,2412],{},"\u003C\u002Fscript>\n",[66,2414,2415],{"class":68,"line":200},[66,2416,224],{"emptyLinePlaceholder":223},[66,2418,2419],{"class":68,"line":210},[66,2420,2421],{},"\u003CCyteEditor\n",[66,2423,2424],{"class":68,"line":220},[66,2425,2426],{},"  html={content}\n",[66,2428,2429],{"class":68,"line":227},[66,2430,2431],{},"  placeholder=\"Start writing…\"\n",[66,2433,2434],{"class":68,"line":240},[66,2435,2436],{},"  locale=\"en-US\"\n",[66,2438,2439],{"class":68,"line":254},[66,2440,2441],{},"  onChange={(e) => content = e.html}\n",[66,2443,2444],{"class":68,"line":267},[66,2445,507],{},[52,2447,321],{"id":2448},"content-binding-4",[15,2450,2451,2452,1372,2454,875],{},"Svelte uses the ",[29,2453,348],{},[29,2455,1122],{},[57,2457,2459],{"className":2375,"code":2458,"language":2320,"meta":62,"style":62},"\u003CCyteEditor\n  html={content}\n  onChange={(e) => content = e.html}\n\u002F>\n",[29,2460,2461,2465,2469,2473],{"__ignoreMap":62},[66,2462,2463],{"class":68,"line":69},[66,2464,2421],{},[66,2466,2467],{"class":68,"line":109},[66,2468,2426],{},[66,2470,2471],{"class":68,"line":151},[66,2472,2441],{},[66,2474,2475],{"class":68,"line":160},[66,2476,507],{},[52,2478,418],{"id":2479},"toolbar-customization-4",[15,2481,421,2482,425],{},[29,2483,424],{},[57,2485,2487],{"className":2375,"code":2486,"language":2320,"meta":62,"style":62},"\u003CCyteEditor\n  html={content}\n  toolbar={['bold', 'italic', 'underline', '|', 'heading', 'align']}\n  onChange={(e) => content = e.html}\n\u002F>\n",[29,2488,2489,2493,2497,2502,2506],{"__ignoreMap":62},[66,2490,2491],{"class":68,"line":69},[66,2492,2421],{},[66,2494,2495],{"class":68,"line":109},[66,2496,2426],{},[66,2498,2499],{"class":68,"line":151},[66,2500,2501],{},"  toolbar={['bold', 'italic', 'underline', '|', 'heading', 'align']}\n",[66,2503,2504],{"class":68,"line":160},[66,2505,2441],{},[66,2507,2508],{"class":68,"line":172},[66,2509,507],{},[15,2511,1516,2512,2514],{},[29,2513,1519],{}," callback with click delegation:",[57,2516,2518],{"className":2375,"code":2517,"language":2320,"meta":62,"style":62},"\u003Cscript>\n  let editorManager = null\n\n  function handleToolbarClick(e) {\n    const btn = e.target.closest('[data-cmd]')\n    if (!btn || !editorManager) return\n    const chain = editorManager.getEditor().chain().focus()\n    const commands = {\n      toggleBold: () => chain.toggleBold().run(),\n      toggleItalic: () => chain.toggleItalic().run(),\n    }\n    commands[btn.dataset.cmd]?.()\n  }\n\u003C\u002Fscript>\n\n\u003C!-- svelte-ignore a11y_click_events_have_key_events -->\n\u003C!-- svelte-ignore a11y_no_static_element_interactions -->\n\u003Cdiv onclick={handleToolbarClick}>\n  \u003CCyteEditor\n    html={content}\n    onChange={(e) => content = e.html}\n    onReady={(mgr) => editorManager = mgr}\n    toolbarRender={({ activeStates, disabledStates }) => `\n      \u003Cdiv class=\"my-toolbar\">\n        \u003Cbutton class=\"${activeStates.bold ? 'active' : ''}\"\n                ${disabledStates.bold ? 'disabled' : ''}\n                data-cmd=\"toggleBold\">\n          Bold\n        \u003C\u002Fbutton>\n      \u003C\u002Fdiv>\n    `}\n  \u002F>\n\u003C\u002Fdiv>\n",[29,2519,2520,2524,2529,2533,2538,2543,2548,2553,2558,2563,2568,2572,2577,2581,2585,2589,2594,2599,2604,2609,2614,2619,2624,2629,2634,2639,2645,2651,2657,2663,2669,2675,2681],{"__ignoreMap":62},[66,2521,2522],{"class":68,"line":69},[66,2523,2383],{},[66,2525,2526],{"class":68,"line":109},[66,2527,2528],{},"  let editorManager = null\n",[66,2530,2531],{"class":68,"line":151},[66,2532,224],{"emptyLinePlaceholder":223},[66,2534,2535],{"class":68,"line":160},[66,2536,2537],{},"  function handleToolbarClick(e) {\n",[66,2539,2540],{"class":68,"line":172},[66,2541,2542],{},"    const btn = e.target.closest('[data-cmd]')\n",[66,2544,2545],{"class":68,"line":183},[66,2546,2547],{},"    if (!btn || !editorManager) return\n",[66,2549,2550],{"class":68,"line":194},[66,2551,2552],{},"    const chain = editorManager.getEditor().chain().focus()\n",[66,2554,2555],{"class":68,"line":200},[66,2556,2557],{},"    const commands = {\n",[66,2559,2560],{"class":68,"line":210},[66,2561,2562],{},"      toggleBold: () => chain.toggleBold().run(),\n",[66,2564,2565],{"class":68,"line":220},[66,2566,2567],{},"      toggleItalic: () => chain.toggleItalic().run(),\n",[66,2569,2570],{"class":68,"line":227},[66,2571,839],{},[66,2573,2574],{"class":68,"line":240},[66,2575,2576],{},"    commands[btn.dataset.cmd]?.()\n",[66,2578,2579],{"class":68,"line":254},[66,2580,2068],{},[66,2582,2583],{"class":68,"line":267},[66,2584,2412],{},[66,2586,2587],{"class":68,"line":274},[66,2588,224],{"emptyLinePlaceholder":223},[66,2590,2591],{"class":68,"line":281},[66,2592,2593],{},"\u003C!-- svelte-ignore a11y_click_events_have_key_events -->\n",[66,2595,2596],{"class":68,"line":286},[66,2597,2598],{},"\u003C!-- svelte-ignore a11y_no_static_element_interactions -->\n",[66,2600,2601],{"class":68,"line":311},[66,2602,2603],{},"\u003Cdiv onclick={handleToolbarClick}>\n",[66,2605,2606],{"class":68,"line":808},[66,2607,2608],{},"  \u003CCyteEditor\n",[66,2610,2611],{"class":68,"line":817},[66,2612,2613],{},"    html={content}\n",[66,2615,2616],{"class":68,"line":825},[66,2617,2618],{},"    onChange={(e) => content = e.html}\n",[66,2620,2621],{"class":68,"line":836},[66,2622,2623],{},"    onReady={(mgr) => editorManager = mgr}\n",[66,2625,2626],{"class":68,"line":842},[66,2627,2628],{},"    toolbarRender={({ activeStates, disabledStates }) => `\n",[66,2630,2631],{"class":68,"line":848},[66,2632,2633],{},"      \u003Cdiv class=\"my-toolbar\">\n",[66,2635,2636],{"class":68,"line":854},[66,2637,2638],{},"        \u003Cbutton class=\"${activeStates.bold ? 'active' : ''}\"\n",[66,2640,2642],{"class":68,"line":2641},26,[66,2643,2644],{},"                ${disabledStates.bold ? 'disabled' : ''}\n",[66,2646,2648],{"class":68,"line":2647},27,[66,2649,2650],{},"                data-cmd=\"toggleBold\">\n",[66,2652,2654],{"class":68,"line":2653},28,[66,2655,2656],{},"          Bold\n",[66,2658,2660],{"class":68,"line":2659},29,[66,2661,2662],{},"        \u003C\u002Fbutton>\n",[66,2664,2666],{"class":68,"line":2665},30,[66,2667,2668],{},"      \u003C\u002Fdiv>\n",[66,2670,2672],{"class":68,"line":2671},31,[66,2673,2674],{},"    `}\n",[66,2676,2678],{"class":68,"line":2677},32,[66,2679,2680],{},"  \u002F>\n",[66,2682,2684],{"class":68,"line":2683},33,[66,2685,2686],{},"\u003C\u002Fdiv>\n",[34,2688,2690],{"id":2689},"vanilla-js","Vanilla JS",[15,2692,2693,2694,2697],{},"Direct integration using ",[29,2695,2696],{},"EditorManager"," — no framework required.",[15,2699,2700,2702],{},[24,2701,49],{}," None (framework-free, supports IIFE\u002FUMD)",[52,2704,55],{"id":2705},"installation-5",[57,2707,2709],{"className":59,"code":2708,"language":61,"meta":62,"style":62},"npm install @cyte-editor\u002Fcore @cyte-editor\u002Fvanilla\n",[29,2710,2711],{"__ignoreMap":62},[66,2712,2713,2715,2717,2719],{"class":68,"line":69},[66,2714,73],{"class":72},[66,2716,77],{"class":76},[66,2718,80],{"class":76},[66,2720,2721],{"class":76}," @cyte-editor\u002Fvanilla\n",[52,2723,87],{"id":2724},"import-styles-5",[57,2726,2728],{"className":93,"code":2727,"language":95,"meta":62,"style":62},"import '@cyte-editor\u002Fcore\u002Fstyle.css'\n",[29,2729,2730],{"__ignoreMap":62},[66,2731,2732,2734],{"class":68,"line":69},[66,2733,103],{"class":102},[66,2735,106],{"class":76},[52,2737,118],{"id":2738},"basic-usage-5",[57,2740,2742],{"className":93,"code":2741,"language":95,"meta":62,"style":62},"import { EditorManager } from '@cyte-editor\u002Fcore'\nimport '@cyte-editor\u002Fcore\u002Fstyle.css'\nimport { renderToolbar } from '@cyte-editor\u002Fvanilla'\n\nconst el = document.querySelector('#editor')\nconst manager = EditorManager.create(el, {\n  height: '400px',\n  locale: 'en-US',\n})\n\nmanager.setContent('\u003Cp>Hello, CyteEditor!\u003C\u002Fp>')\n\nconst toolbar = renderToolbar(document.querySelector('#toolbar'), {\n  isProMode: false,\n})\ntoolbar.attachEditor(manager.getEditor(), manager)\n",[29,2743,2744,2756,2762,2774,2778,2800,2818,2828,2838,2842,2846,2859,2863,2888,2898,2902],{"__ignoreMap":62},[66,2745,2746,2748,2751,2753],{"class":68,"line":69},[66,2747,103],{"class":102},[66,2749,2750],{"class":130}," { EditorManager } ",[66,2752,248],{"class":102},[66,2754,2755],{"class":76}," '@cyte-editor\u002Fcore'\n",[66,2757,2758,2760],{"class":68,"line":109},[66,2759,103],{"class":102},[66,2761,106],{"class":76},[66,2763,2764,2766,2769,2771],{"class":68,"line":151},[66,2765,103],{"class":102},[66,2767,2768],{"class":130}," { renderToolbar } ",[66,2770,248],{"class":102},[66,2772,2773],{"class":76}," '@cyte-editor\u002Fvanilla'\n",[66,2775,2776],{"class":68,"line":160},[66,2777,224],{"emptyLinePlaceholder":223},[66,2779,2780,2782,2785,2787,2790,2793,2795,2798],{"class":68,"line":172},[66,2781,289],{"class":102},[66,2783,2784],{"class":292}," el",[66,2786,296],{"class":102},[66,2788,2789],{"class":130}," document.",[66,2791,2792],{"class":72},"querySelector",[66,2794,302],{"class":130},[66,2796,2797],{"class":76},"'#editor'",[66,2799,308],{"class":130},[66,2801,2802,2804,2807,2809,2812,2815],{"class":68,"line":183},[66,2803,289],{"class":102},[66,2805,2806],{"class":292}," manager",[66,2808,296],{"class":102},[66,2810,2811],{"class":130}," EditorManager.",[66,2813,2814],{"class":72},"create",[66,2816,2817],{"class":130},"(el, {\n",[66,2819,2820,2823,2826],{"class":68,"line":194},[66,2821,2822],{"class":130},"  height: ",[66,2824,2825],{"class":76},"'400px'",[66,2827,833],{"class":130},[66,2829,2830,2833,2836],{"class":68,"line":200},[66,2831,2832],{"class":130},"  locale: ",[66,2834,2835],{"class":76},"'en-US'",[66,2837,833],{"class":130},[66,2839,2840],{"class":68,"line":210},[66,2841,1860],{"class":130},[66,2843,2844],{"class":68,"line":220},[66,2845,224],{"emptyLinePlaceholder":223},[66,2847,2848,2851,2853,2855,2857],{"class":68,"line":227},[66,2849,2850],{"class":130},"manager.",[66,2852,1246],{"class":72},[66,2854,302],{"class":130},[66,2856,305],{"class":76},[66,2858,308],{"class":130},[66,2860,2861],{"class":68,"line":240},[66,2862,224],{"emptyLinePlaceholder":223},[66,2864,2865,2867,2870,2872,2875,2878,2880,2882,2885],{"class":68,"line":254},[66,2866,289],{"class":102},[66,2868,2869],{"class":292}," toolbar",[66,2871,296],{"class":102},[66,2873,2874],{"class":72}," renderToolbar",[66,2876,2877],{"class":130},"(document.",[66,2879,2792],{"class":72},[66,2881,302],{"class":130},[66,2883,2884],{"class":76},"'#toolbar'",[66,2886,2887],{"class":130},"), {\n",[66,2889,2890,2893,2896],{"class":68,"line":267},[66,2891,2892],{"class":130},"  isProMode: ",[66,2894,2895],{"class":292},"false",[66,2897,833],{"class":130},[66,2899,2900],{"class":68,"line":274},[66,2901,1860],{"class":130},[66,2903,2904,2907,2910,2913,2915],{"class":68,"line":281},[66,2905,2906],{"class":130},"toolbar.",[66,2908,2909],{"class":72},"attachEditor",[66,2911,2912],{"class":130},"(manager.",[66,2914,1659],{"class":72},[66,2916,2917],{"class":130},"(), manager)\n",[52,2919,2921],{"id":2920},"content-api","Content API",[15,2923,2924,2925,2927],{},"Vanilla JS uses the ",[29,2926,2696],{}," API directly:",[57,2929,2931],{"className":93,"code":2930,"language":95,"meta":62,"style":62},"\u002F\u002F Set content\nmanager.setContent('\u003Cp>New content\u003C\u002Fp>')\n\n\u002F\u002F Get content\nconst html = manager.getHTML()\nconst json = manager.getJSON()\nconst text = manager.getText()\n\n\u002F\u002F Listen for changes\nmanager.on('update', ({ html }) => {\n  console.log('Content changed:', html)\n})\n",[29,2932,2933,2938,2951,2955,2960,2978,2994,3010,3014,3019,3042,3058],{"__ignoreMap":62},[66,2934,2935],{"class":68,"line":69},[66,2936,2937],{"class":1769},"\u002F\u002F Set content\n",[66,2939,2940,2942,2944,2946,2949],{"class":68,"line":109},[66,2941,2850],{"class":130},[66,2943,1246],{"class":72},[66,2945,302],{"class":130},[66,2947,2948],{"class":76},"'\u003Cp>New content\u003C\u002Fp>'",[66,2950,308],{"class":130},[66,2952,2953],{"class":68,"line":151},[66,2954,224],{"emptyLinePlaceholder":223},[66,2956,2957],{"class":68,"line":160},[66,2958,2959],{"class":1769},"\u002F\u002F Get content\n",[66,2961,2962,2964,2967,2969,2972,2975],{"class":68,"line":172},[66,2963,289],{"class":102},[66,2965,2966],{"class":292}," html",[66,2968,296],{"class":102},[66,2970,2971],{"class":130}," manager.",[66,2973,2974],{"class":72},"getHTML",[66,2976,2977],{"class":130},"()\n",[66,2979,2980,2982,2985,2987,2989,2992],{"class":68,"line":183},[66,2981,289],{"class":102},[66,2983,2984],{"class":292}," json",[66,2986,296],{"class":102},[66,2988,2971],{"class":130},[66,2990,2991],{"class":72},"getJSON",[66,2993,2977],{"class":130},[66,2995,2996,2998,3001,3003,3005,3008],{"class":68,"line":194},[66,2997,289],{"class":102},[66,2999,3000],{"class":292}," text",[66,3002,296],{"class":102},[66,3004,2971],{"class":130},[66,3006,3007],{"class":72},"getText",[66,3009,2977],{"class":130},[66,3011,3012],{"class":68,"line":200},[66,3013,224],{"emptyLinePlaceholder":223},[66,3015,3016],{"class":68,"line":210},[66,3017,3018],{"class":1769},"\u002F\u002F Listen for changes\n",[66,3020,3021,3023,3026,3028,3031,3034,3036,3038,3040],{"class":68,"line":220},[66,3022,2850],{"class":130},[66,3024,3025],{"class":72},"on",[66,3027,302],{"class":130},[66,3029,3030],{"class":76},"'update'",[66,3032,3033],{"class":130},", ({ ",[66,3035,348],{"class":1328},[66,3037,1331],{"class":130},[66,3039,1334],{"class":102},[66,3041,800],{"class":130},[66,3043,3044,3047,3050,3052,3055],{"class":68,"line":227},[66,3045,3046],{"class":130},"  console.",[66,3048,3049],{"class":72},"log",[66,3051,302],{"class":130},[66,3053,3054],{"class":76},"'Content changed:'",[66,3056,3057],{"class":130},", html)\n",[66,3059,3060],{"class":68,"line":240},[66,3061,1860],{"class":130},[34,3063,3065],{"id":3064},"framework-comparison","Framework Comparison",[3067,3068,3069,3086],"table",{},[3070,3071,3072],"thead",{},[3073,3074,3075,3079,3082,3084],"tr",{},[3076,3077,3078],"th",{},"Framework",[3076,3080,3081],{},"Package",[3076,3083,1974],{},[3076,3085,321],{},[3087,3088,3089,3108,3128,3147,3167,3186],"tbody",{},[3073,3090,3091,3094,3099,3104],{},[3092,3093,37],"td",{},[3092,3095,3096],{},[29,3097,3098],{},"@cyte-editor\u002Fvue3",[3092,3100,3101],{},[29,3102,3103],{},"\u003CCyteEditor>",[3092,3105,3106],{},[29,3107,43],{},[3073,3109,3110,3112,3117,3121],{},[3092,3111,609],{},[3092,3113,3114],{},[29,3115,3116],{},"@cyte-editor\u002Fvue2",[3092,3118,3119],{},[29,3120,3103],{},[3092,3122,3123,3125,3126],{},[29,3124,615],{}," + ",[29,3127,619],{},[3073,3129,3130,3132,3137,3141],{},[3092,3131,1116],{},[3092,3133,3134],{},[29,3135,3136],{},"@cyte-editor\u002Freact",[3092,3138,3139],{},[29,3140,3103],{},[3092,3142,3143,3125,3145],{},[29,3144,348],{},[29,3146,1122],{},[3073,3148,3149,3151,3156,3161],{},[3092,3150,1724],{},[3092,3152,3153],{},[29,3154,3155],{},"@cyte-editor\u002Fangular",[3092,3157,3158],{},[29,3159,3160],{},"\u003Ccyte-editor>",[3092,3162,3163,3125,3165],{},[29,3164,2081],{},[29,3166,2085],{},[3073,3168,3169,3171,3176,3180],{},[3092,3170,2321],{},[3092,3172,3173],{},[29,3174,3175],{},"@cyte-editor\u002Fsvelte",[3092,3177,3178],{},[29,3179,3103],{},[3092,3181,3182,3125,3184],{},[29,3183,348],{},[29,3185,1122],{},[3073,3187,3188,3191,3196,3200],{},[3092,3189,3190],{},"Vanilla",[3092,3192,3193],{},[29,3194,3195],{},"@cyte-editor\u002Fvanilla",[3092,3197,3198],{},[29,3199,2696],{},[3092,3201,3202,3205,3206],{},[29,3203,3204],{},"setContent()"," \u002F ",[29,3207,3208],{},"getHTML()",[34,3210,3212],{"id":3211},"pro-plugins-optional","Pro Plugins (Optional)",[15,3214,3215],{},"Pro plugins extend CyteEditor with advanced capabilities. Each plugin is a separate package:",[57,3217,3219],{"className":59,"code":3218,"language":61,"meta":62,"style":62},"npm install @cyte-editor\u002Fpro-export\nnpm install @cyte-editor\u002Fpro-paste\nnpm install @cyte-editor\u002Fpro-revision\n",[29,3220,3221,3230,3239],{"__ignoreMap":62},[66,3222,3223,3225,3227],{"class":68,"line":69},[66,3224,73],{"class":72},[66,3226,77],{"class":76},[66,3228,3229],{"class":76}," @cyte-editor\u002Fpro-export\n",[66,3231,3232,3234,3236],{"class":68,"line":109},[66,3233,73],{"class":72},[66,3235,77],{"class":76},[66,3237,3238],{"class":76}," @cyte-editor\u002Fpro-paste\n",[66,3240,3241,3243,3245],{"class":68,"line":151},[66,3242,73],{"class":72},[66,3244,77],{"class":76},[66,3246,3247],{"class":76}," @cyte-editor\u002Fpro-revision\n",[3249,3250,3251,3258,3264],"ul",{},[3252,3253,3254,3257],"li",{},[24,3255,3256],{},"pro-export"," — Import\u002Fexport Markdown, Word (.docx), and HTML.",[3252,3259,3260,3263],{},[24,3261,3262],{},"pro-paste"," — Smart clipboard handling for Word, Excel, WPS, and HTML.",[3252,3265,3266,3269],{},[24,3267,3268],{},"pro-revision"," — Version snapshots, rich-text diff, and side-by-side comparison.",[15,3271,3272,3273,3276],{},"Pro plugins require ",[29,3274,3275],{},"@cyte-editor\u002Flicense"," and a valid license key:",[57,3278,3280],{"className":59,"code":3279,"language":61,"meta":62,"style":62},"npm install @cyte-editor\u002Flicense\n",[29,3281,3282],{"__ignoreMap":62},[66,3283,3284,3286,3288],{"class":68,"line":69},[66,3285,73],{"class":72},[66,3287,77],{"class":76},[66,3289,3290],{"class":76}," @cyte-editor\u002Flicense\n",[52,3292,3294],{"id":3293},"registering-plugins","Registering Plugins",[15,3296,3297],{},"Plugins can be registered at creation time or dynamically:",[57,3299,3301],{"className":93,"code":3300,"language":95,"meta":62,"style":62},"\u002F\u002F At creation\nconst manager = EditorManager.create(el, {\n  plugins: [ProPaste(), ProExport(), ProRevision()],\n  license: { key: 'your-license-key' },\n})\n\n\u002F\u002F Dynamically\nmanager.use(ProPaste())\n",[29,3302,3303,3308,3322,3344,3355,3359,3363,3368],{"__ignoreMap":62},[66,3304,3305],{"class":68,"line":69},[66,3306,3307],{"class":1769},"\u002F\u002F At creation\n",[66,3309,3310,3312,3314,3316,3318,3320],{"class":68,"line":109},[66,3311,289],{"class":102},[66,3313,2806],{"class":292},[66,3315,296],{"class":102},[66,3317,2811],{"class":130},[66,3319,2814],{"class":72},[66,3321,2817],{"class":130},[66,3323,3324,3327,3330,3333,3336,3338,3341],{"class":68,"line":151},[66,3325,3326],{"class":130},"  plugins: [",[66,3328,3329],{"class":72},"ProPaste",[66,3331,3332],{"class":130},"(), ",[66,3334,3335],{"class":72},"ProExport",[66,3337,3332],{"class":130},[66,3339,3340],{"class":72},"ProRevision",[66,3342,3343],{"class":130},"()],\n",[66,3345,3346,3349,3352],{"class":68,"line":160},[66,3347,3348],{"class":130},"  license: { key: ",[66,3350,3351],{"class":76},"'your-license-key'",[66,3353,3354],{"class":130}," },\n",[66,3356,3357],{"class":68,"line":172},[66,3358,1860],{"class":130},[66,3360,3361],{"class":68,"line":183},[66,3362,224],{"emptyLinePlaceholder":223},[66,3364,3365],{"class":68,"line":194},[66,3366,3367],{"class":1769},"\u002F\u002F Dynamically\n",[66,3369,3370,3372,3375,3377,3379],{"class":68,"line":200},[66,3371,2850],{"class":130},[66,3373,3374],{"class":72},"use",[66,3376,302],{"class":130},[66,3378,3329],{"class":72},[66,3380,3381],{"class":130},"())\n",[15,3383,3384,3385,3388,3389,3394],{},"For framework adapters, pass plugins through the same ",[29,3386,3387],{},"plugins"," config option. See the ",[3390,3391,3393],"a",{"href":3392},"\u002Fdocs\u002Fapi-reference","API Reference"," for full configuration details.",[34,3396,3398],{"id":3397},"typescript-support","TypeScript Support",[15,3400,3401,3402,3405],{},"CyteEditor is written in TypeScript and ships complete type definitions out of the box. No additional ",[29,3403,3404],{},"@types"," packages are required.",[34,3407,3409],{"id":3408},"next-steps","Next Steps",[3249,3411,3412,3418,3425],{},[3252,3413,3414,3417],{},[3390,3415,55],{"href":3416},"\u002Fdocs\u002Finstallation"," — Package overview and environment requirements.",[3252,3419,3420,3424],{},[3390,3421,3423],{"href":3422},"\u002Fdocs\u002Fgetting-started","Getting Started"," — Quick-start guide with minimal setup.",[3252,3426,3427,3429],{},[3390,3428,3393],{"href":3392}," — Full EditorManager API, config options, and events.",[3431,3432,3433],"style",{},"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 .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);}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 .s4JwU, html code.shiki .s4JwU{--shiki-default:#85E89D}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html pre.shiki code .s9osk, html code.shiki .s9osk{--shiki-default:#FFAB70}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}",{"title":62,"searchDepth":109,"depth":109,"links":3435},[3436,3443,3450,3457,3465,3472,3478,3479,3482,3483],{"id":36,"depth":109,"text":37,"children":3437},[3438,3439,3440,3441,3442],{"id":54,"depth":151,"text":55},{"id":86,"depth":151,"text":87},{"id":117,"depth":151,"text":118},{"id":320,"depth":151,"text":321},{"id":417,"depth":151,"text":418},{"id":608,"depth":109,"text":609,"children":3444},[3445,3446,3447,3448,3449],{"id":628,"depth":151,"text":55},{"id":647,"depth":151,"text":87},{"id":668,"depth":151,"text":118},{"id":863,"depth":151,"text":321},{"id":922,"depth":151,"text":418},{"id":1115,"depth":109,"text":1116,"children":3451},[3452,3453,3454,3455,3456],{"id":1131,"depth":151,"text":55},{"id":1150,"depth":151,"text":87},{"id":1171,"depth":151,"text":118},{"id":1366,"depth":151,"text":321},{"id":1433,"depth":151,"text":418},{"id":1723,"depth":109,"text":1724,"children":3458},[3459,3460,3461,3462,3463,3464],{"id":1735,"depth":151,"text":55},{"id":1754,"depth":151,"text":87},{"id":1793,"depth":151,"text":1794},{"id":1876,"depth":151,"text":118},{"id":2075,"depth":151,"text":321},{"id":2121,"depth":151,"text":418},{"id":2320,"depth":109,"text":2321,"children":3466},[3467,3468,3469,3470,3471],{"id":2332,"depth":151,"text":55},{"id":2351,"depth":151,"text":87},{"id":2372,"depth":151,"text":118},{"id":2448,"depth":151,"text":321},{"id":2479,"depth":151,"text":418},{"id":2689,"depth":109,"text":2690,"children":3473},[3474,3475,3476,3477],{"id":2705,"depth":151,"text":55},{"id":2724,"depth":151,"text":87},{"id":2738,"depth":151,"text":118},{"id":2920,"depth":151,"text":2921},{"id":3064,"depth":109,"text":3065},{"id":3211,"depth":109,"text":3212,"children":3480},[3481],{"id":3293,"depth":151,"text":3294},{"id":3397,"depth":109,"text":3398},{"id":3408,"depth":109,"text":3409},"md",{},"\u002Fdocs\u002Fframework-guides",{"title":6,"description":17},"docs\u002F4.framework-guides\u002Findex","0L6L1Ac-XfGeMd3Zxa51kXb0FIdW2zMHPb-J7r_JLvY",{"id":3491,"title":3393,"body":3492,"description":62,"extension":3484,"meta":8731,"navigation":223,"path":3392,"seo":8732,"stem":8733,"__hash__":8734},"docs_en\u002Fdocs\u002Fapi-reference.md",{"type":8,"value":3493,"toc":8704},[3494,3497,3500,3503,3507,3512,3518,3546,4346,4350,4353,4736,4765,4769,4882,4886,4891,5094,5097,5102,5120,5143,5620,5623,5795,5798,5836,5841,5844,5891,5896,5945,5948,6089,6092,6259,6263,6267,6273,6298,6302,6331,6335,6519,6523,6621,6625,6813,6817,6946,6950,7021,7038,7042,7187,7235,7239,7396,7430,7434,7476,7491,7495,7617,7670,7674,7925,7954,7958,8000,8015,8019,8202,8264,8268,8428,8471,8475,8517,8546,8550,8560,8701],[11,3495,3393],{"id":3496},"api-reference",[34,3498,2696],{"id":3499},"editormanager",[15,3501,3502],{},"The core class for creating and managing editor instances.",[52,3504,3506],{"id":3505},"editormanagercreateelement-config","EditorManager.create(element, config?)",[15,3508,1421,3509,3511],{},[29,3510,1621],{}," in the signature means the parameter is optional.",[15,3513,3514,3515,3517],{},"Creates an ",[29,3516,2696],{}," instance and initializes the editor inside the given DOM container.",[3249,3519,3520,3530,3536],{},[3252,3521,3522,3525,3526,3529],{},[29,3523,3524],{},"element",": the HTML element (",[29,3527,3528],{},"HTMLElement",") to mount the editor on.",[3252,3531,3532,3535],{},[29,3533,3534],{},"config",": optional editor configuration object; all fields are optional.",[3252,3537,3538,3539,3541,3542,3545],{},"Returns: an ",[29,3540,2696],{}," instance. Access the underlying editor via ",[29,3543,3544],{},"manager.getEditor()",".",[57,3547,3549],{"className":1797,"code":3548,"language":1799,"meta":62,"style":62},"const manager = EditorManager.create(\n  document.querySelector('#editor'),\n  {\n    \u002F\u002F ——— Dimensions ———\n    height: '400px',\n    minHeight: '200px',\n    maxHeight: '800px',\n    autoHeight: false,\n    \u002F\u002F ——— Basics ———\n    placeholder: 'Start writing...',\n    readonly: false,\n    disabled: false,\n    autofocus: false,\n    locale: 'en-US',\n    \u002F\u002F ——— Toolbar (insert '|' in the array for a visual separator) ———\n    toolbar: [\n      'undo', 'redo', 'formatPainter', '|',\n      'bold', 'italic', 'underline', 'strikethrough',\n      'superscript', 'subscript', '|',\n      'fontFamily', 'fontSize', 'color', 'bgColor', '|',\n      'heading', 'align', 'lineHeight',\n      'bulletList', 'orderedList', 'outdent', 'indent', '|',\n      'link', 'insertTable', 'imageUpload', 'video', '|',\n      'blockquote', 'codeBlock', '|',\n      'import', 'export', 'getHTML', 'getJSON', '|',\n      'fullscreen', 'snapshot', 'compare',\n    ],\n    \u002F\u002F ——— Paste ———\n    paste: {\n      mode: 'rich',           \u002F\u002F 'rich' | 'html' | 'text'\n      retainStyle: true,\n      filterTags: ['script', 'style'],\n      imageUpload: true,\n      maxImageSize: 5 * 1024 * 1024,\n      \u002F\u002F onBeforePaste: (event, html) => html,  \u002F\u002F Return modified HTML \u002F false to cancel\n      \u002F\u002F onAfterPaste: (html) => {},             \u002F\u002F Paste complete callback\n    },\n    \u002F\u002F ——— Image upload (only url is required) ———\n    upload: {\n      url: '\u002Fapi\u002Fupload',\n      headers: { Authorization: 'Bearer ...' },\n      fieldName: 'file',\n      maxSize: 10 * 1024 * 1024,\n      accept: 'image\u002F*',\n      multiple: true,\n      \u002F\u002F onUpload: (file) => Promise.resolve(url),  \u002F\u002F Custom upload, overrides url\n    },\n    \u002F\u002F ——— Version compare \u002F snapshots (requires ProRevision plugin) ———\n    compare: {\n      autoBaseline: true,\n      baselineLabel: 'Session baseline',\n      maxVersions: 50,\n      changeThreshold: 10,\n      maxIntervalMs: 300000,\n      triggers: { blur: true, paste: true, import: true, interval: true },\n    },\n    \u002F\u002F ——— License (activates Pro features) ———\n    license: {\n      key: 'your-license-jwt',\n      appId: 'my-app-id',\n      online: 'lazy',         \u002F\u002F false | 'lazy' | 'strict'\n      offlineGraceDays: 14,\n      fallback: 'watermark',  \u002F\u002F 'watermark' | 'readonly' | 'block'\n      \u002F\u002F apiBase: 'https:\u002F\u002Fapi.cyteeditor.com',\n      \u002F\u002F jwksUrl: 'https:\u002F\u002Fapi.cyteeditor.com\u002F.well-known\u002Fjwks.json',\n    },\n    \u002F\u002F ——— Pro plugins (registered before creation) ———\n    plugins: [\n      ProPaste(),\n      ProExport(),\n      ProRevision(),\n    ],\n  }\n)\n",[29,3550,3551,3566,3580,3585,3590,3599,3609,3619,3628,3633,3643,3652,3661,3670,3679,3684,3689,3710,3730,3746,3772,3788,3814,3840,3856,3882,3899,3904,3909,3914,3928,3938,3954,3963,3984,3993,4002,4008,4014,4020,4031,4042,4053,4072,4083,4093,4102,4107,4113,4119,4129,4140,4151,4161,4172,4197,4202,4208,4214,4225,4236,4251,4262,4277,4283,4289,4294,4300,4306,4315,4323,4331,4336,4341],{"__ignoreMap":62},[66,3552,3553,3555,3557,3559,3561,3563],{"class":68,"line":69},[66,3554,289],{"class":102},[66,3556,2806],{"class":292},[66,3558,296],{"class":102},[66,3560,2811],{"class":130},[66,3562,2814],{"class":72},[66,3564,3565],{"class":130},"(\n",[66,3567,3568,3571,3573,3575,3577],{"class":68,"line":109},[66,3569,3570],{"class":130},"  document.",[66,3572,2792],{"class":72},[66,3574,302],{"class":130},[66,3576,2797],{"class":76},[66,3578,3579],{"class":130},"),\n",[66,3581,3582],{"class":68,"line":151},[66,3583,3584],{"class":130},"  {\n",[66,3586,3587],{"class":68,"line":160},[66,3588,3589],{"class":1769},"    \u002F\u002F ——— Dimensions ———\n",[66,3591,3592,3595,3597],{"class":68,"line":172},[66,3593,3594],{"class":130},"    height: ",[66,3596,2825],{"class":76},[66,3598,833],{"class":130},[66,3600,3601,3604,3607],{"class":68,"line":183},[66,3602,3603],{"class":130},"    minHeight: ",[66,3605,3606],{"class":76},"'200px'",[66,3608,833],{"class":130},[66,3610,3611,3614,3617],{"class":68,"line":194},[66,3612,3613],{"class":130},"    maxHeight: ",[66,3615,3616],{"class":76},"'800px'",[66,3618,833],{"class":130},[66,3620,3621,3624,3626],{"class":68,"line":200},[66,3622,3623],{"class":130},"    autoHeight: ",[66,3625,2895],{"class":292},[66,3627,833],{"class":130},[66,3629,3630],{"class":68,"line":210},[66,3631,3632],{"class":1769},"    \u002F\u002F ——— Basics ———\n",[66,3634,3635,3638,3641],{"class":68,"line":220},[66,3636,3637],{"class":130},"    placeholder: ",[66,3639,3640],{"class":76},"'Start writing...'",[66,3642,833],{"class":130},[66,3644,3645,3648,3650],{"class":68,"line":227},[66,3646,3647],{"class":130},"    readonly: ",[66,3649,2895],{"class":292},[66,3651,833],{"class":130},[66,3653,3654,3657,3659],{"class":68,"line":240},[66,3655,3656],{"class":130},"    disabled: ",[66,3658,2895],{"class":292},[66,3660,833],{"class":130},[66,3662,3663,3666,3668],{"class":68,"line":254},[66,3664,3665],{"class":130},"    autofocus: ",[66,3667,2895],{"class":292},[66,3669,833],{"class":130},[66,3671,3672,3675,3677],{"class":68,"line":267},[66,3673,3674],{"class":130},"    locale: ",[66,3676,2835],{"class":76},[66,3678,833],{"class":130},[66,3680,3681],{"class":68,"line":274},[66,3682,3683],{"class":1769},"    \u002F\u002F ——— Toolbar (insert '|' in the array for a visual separator) ———\n",[66,3685,3686],{"class":68,"line":281},[66,3687,3688],{"class":130},"    toolbar: [\n",[66,3690,3691,3694,3696,3699,3701,3704,3706,3708],{"class":68,"line":286},[66,3692,3693],{"class":76},"      'undo'",[66,3695,474],{"class":130},[66,3697,3698],{"class":76},"'redo'",[66,3700,474],{"class":130},[66,3702,3703],{"class":76},"'formatPainter'",[66,3705,474],{"class":130},[66,3707,487],{"class":76},[66,3709,833],{"class":130},[66,3711,3712,3715,3717,3719,3721,3723,3725,3728],{"class":68,"line":311},[66,3713,3714],{"class":76},"      'bold'",[66,3716,474],{"class":130},[66,3718,477],{"class":76},[66,3720,474],{"class":130},[66,3722,482],{"class":76},[66,3724,474],{"class":130},[66,3726,3727],{"class":76},"'strikethrough'",[66,3729,833],{"class":130},[66,3731,3732,3735,3737,3740,3742,3744],{"class":68,"line":808},[66,3733,3734],{"class":76},"      'superscript'",[66,3736,474],{"class":130},[66,3738,3739],{"class":76},"'subscript'",[66,3741,474],{"class":130},[66,3743,487],{"class":76},[66,3745,833],{"class":130},[66,3747,3748,3751,3753,3756,3758,3761,3763,3766,3768,3770],{"class":68,"line":817},[66,3749,3750],{"class":76},"      'fontFamily'",[66,3752,474],{"class":130},[66,3754,3755],{"class":76},"'fontSize'",[66,3757,474],{"class":130},[66,3759,3760],{"class":76},"'color'",[66,3762,474],{"class":130},[66,3764,3765],{"class":76},"'bgColor'",[66,3767,474],{"class":130},[66,3769,487],{"class":76},[66,3771,833],{"class":130},[66,3773,3774,3777,3779,3781,3783,3786],{"class":68,"line":825},[66,3775,3776],{"class":76},"      'heading'",[66,3778,474],{"class":130},[66,3780,497],{"class":76},[66,3782,474],{"class":130},[66,3784,3785],{"class":76},"'lineHeight'",[66,3787,833],{"class":130},[66,3789,3790,3793,3795,3798,3800,3803,3805,3808,3810,3812],{"class":68,"line":836},[66,3791,3792],{"class":76},"      'bulletList'",[66,3794,474],{"class":130},[66,3796,3797],{"class":76},"'orderedList'",[66,3799,474],{"class":130},[66,3801,3802],{"class":76},"'outdent'",[66,3804,474],{"class":130},[66,3806,3807],{"class":76},"'indent'",[66,3809,474],{"class":130},[66,3811,487],{"class":76},[66,3813,833],{"class":130},[66,3815,3816,3819,3821,3824,3826,3829,3831,3834,3836,3838],{"class":68,"line":842},[66,3817,3818],{"class":76},"      'link'",[66,3820,474],{"class":130},[66,3822,3823],{"class":76},"'insertTable'",[66,3825,474],{"class":130},[66,3827,3828],{"class":76},"'imageUpload'",[66,3830,474],{"class":130},[66,3832,3833],{"class":76},"'video'",[66,3835,474],{"class":130},[66,3837,487],{"class":76},[66,3839,833],{"class":130},[66,3841,3842,3845,3847,3850,3852,3854],{"class":68,"line":848},[66,3843,3844],{"class":76},"      'blockquote'",[66,3846,474],{"class":130},[66,3848,3849],{"class":76},"'codeBlock'",[66,3851,474],{"class":130},[66,3853,487],{"class":76},[66,3855,833],{"class":130},[66,3857,3858,3861,3863,3866,3868,3871,3873,3876,3878,3880],{"class":68,"line":854},[66,3859,3860],{"class":76},"      'import'",[66,3862,474],{"class":130},[66,3864,3865],{"class":76},"'export'",[66,3867,474],{"class":130},[66,3869,3870],{"class":76},"'getHTML'",[66,3872,474],{"class":130},[66,3874,3875],{"class":76},"'getJSON'",[66,3877,474],{"class":130},[66,3879,487],{"class":76},[66,3881,833],{"class":130},[66,3883,3884,3887,3889,3892,3894,3897],{"class":68,"line":2641},[66,3885,3886],{"class":76},"      'fullscreen'",[66,3888,474],{"class":130},[66,3890,3891],{"class":76},"'snapshot'",[66,3893,474],{"class":130},[66,3895,3896],{"class":76},"'compare'",[66,3898,833],{"class":130},[66,3900,3901],{"class":68,"line":2647},[66,3902,3903],{"class":130},"    ],\n",[66,3905,3906],{"class":68,"line":2653},[66,3907,3908],{"class":1769},"    \u002F\u002F ——— Paste ———\n",[66,3910,3911],{"class":68,"line":2659},[66,3912,3913],{"class":130},"    paste: {\n",[66,3915,3916,3919,3922,3925],{"class":68,"line":2665},[66,3917,3918],{"class":130},"      mode: ",[66,3920,3921],{"class":76},"'rich'",[66,3923,3924],{"class":130},",           ",[66,3926,3927],{"class":1769},"\u002F\u002F 'rich' | 'html' | 'text'\n",[66,3929,3930,3933,3936],{"class":68,"line":2671},[66,3931,3932],{"class":130},"      retainStyle: ",[66,3934,3935],{"class":292},"true",[66,3937,833],{"class":130},[66,3939,3940,3943,3946,3948,3951],{"class":68,"line":2677},[66,3941,3942],{"class":130},"      filterTags: [",[66,3944,3945],{"class":76},"'script'",[66,3947,474],{"class":130},[66,3949,3950],{"class":76},"'style'",[66,3952,3953],{"class":130},"],\n",[66,3955,3956,3959,3961],{"class":68,"line":2683},[66,3957,3958],{"class":130},"      imageUpload: ",[66,3960,3935],{"class":292},[66,3962,833],{"class":130},[66,3964,3966,3969,3972,3975,3978,3980,3982],{"class":68,"line":3965},34,[66,3967,3968],{"class":130},"      maxImageSize: ",[66,3970,3971],{"class":292},"5",[66,3973,3974],{"class":102}," *",[66,3976,3977],{"class":292}," 1024",[66,3979,3974],{"class":102},[66,3981,3977],{"class":292},[66,3983,833],{"class":130},[66,3985,3987,3990],{"class":68,"line":3986},35,[66,3988,3989],{"class":1769},"      \u002F\u002F onBeforePaste: (event, html) => html,",[66,3991,3992],{"class":1769},"  \u002F\u002F Return modified HTML \u002F false to cancel\n",[66,3994,3996,3999],{"class":68,"line":3995},36,[66,3997,3998],{"class":1769},"      \u002F\u002F onAfterPaste: (html) => {},",[66,4000,4001],{"class":1769},"             \u002F\u002F Paste complete callback\n",[66,4003,4005],{"class":68,"line":4004},37,[66,4006,4007],{"class":130},"    },\n",[66,4009,4011],{"class":68,"line":4010},38,[66,4012,4013],{"class":1769},"    \u002F\u002F ——— Image upload (only url is required) ———\n",[66,4015,4017],{"class":68,"line":4016},39,[66,4018,4019],{"class":130},"    upload: {\n",[66,4021,4023,4026,4029],{"class":68,"line":4022},40,[66,4024,4025],{"class":130},"      url: ",[66,4027,4028],{"class":76},"'\u002Fapi\u002Fupload'",[66,4030,833],{"class":130},[66,4032,4034,4037,4040],{"class":68,"line":4033},41,[66,4035,4036],{"class":130},"      headers: { Authorization: ",[66,4038,4039],{"class":76},"'Bearer ...'",[66,4041,3354],{"class":130},[66,4043,4045,4048,4051],{"class":68,"line":4044},42,[66,4046,4047],{"class":130},"      fieldName: ",[66,4049,4050],{"class":76},"'file'",[66,4052,833],{"class":130},[66,4054,4056,4059,4062,4064,4066,4068,4070],{"class":68,"line":4055},43,[66,4057,4058],{"class":130},"      maxSize: ",[66,4060,4061],{"class":292},"10",[66,4063,3974],{"class":102},[66,4065,3977],{"class":292},[66,4067,3974],{"class":102},[66,4069,3977],{"class":292},[66,4071,833],{"class":130},[66,4073,4075,4078,4081],{"class":68,"line":4074},44,[66,4076,4077],{"class":130},"      accept: ",[66,4079,4080],{"class":76},"'image\u002F*'",[66,4082,833],{"class":130},[66,4084,4086,4089,4091],{"class":68,"line":4085},45,[66,4087,4088],{"class":130},"      multiple: ",[66,4090,3935],{"class":292},[66,4092,833],{"class":130},[66,4094,4096,4099],{"class":68,"line":4095},46,[66,4097,4098],{"class":1769},"      \u002F\u002F onUpload: (file) => Promise.resolve(url),",[66,4100,4101],{"class":1769},"  \u002F\u002F Custom upload, overrides url\n",[66,4103,4105],{"class":68,"line":4104},47,[66,4106,4007],{"class":130},[66,4108,4110],{"class":68,"line":4109},48,[66,4111,4112],{"class":1769},"    \u002F\u002F ——— Version compare \u002F snapshots (requires ProRevision plugin) ———\n",[66,4114,4116],{"class":68,"line":4115},49,[66,4117,4118],{"class":130},"    compare: {\n",[66,4120,4122,4125,4127],{"class":68,"line":4121},50,[66,4123,4124],{"class":130},"      autoBaseline: ",[66,4126,3935],{"class":292},[66,4128,833],{"class":130},[66,4130,4132,4135,4138],{"class":68,"line":4131},51,[66,4133,4134],{"class":130},"      baselineLabel: ",[66,4136,4137],{"class":76},"'Session baseline'",[66,4139,833],{"class":130},[66,4141,4143,4146,4149],{"class":68,"line":4142},52,[66,4144,4145],{"class":130},"      maxVersions: ",[66,4147,4148],{"class":292},"50",[66,4150,833],{"class":130},[66,4152,4154,4157,4159],{"class":68,"line":4153},53,[66,4155,4156],{"class":130},"      changeThreshold: ",[66,4158,4061],{"class":292},[66,4160,833],{"class":130},[66,4162,4164,4167,4170],{"class":68,"line":4163},54,[66,4165,4166],{"class":130},"      maxIntervalMs: ",[66,4168,4169],{"class":292},"300000",[66,4171,833],{"class":130},[66,4173,4175,4178,4180,4183,4185,4188,4190,4193,4195],{"class":68,"line":4174},55,[66,4176,4177],{"class":130},"      triggers: { blur: ",[66,4179,3935],{"class":292},[66,4181,4182],{"class":130},", paste: ",[66,4184,3935],{"class":292},[66,4186,4187],{"class":130},", import: ",[66,4189,3935],{"class":292},[66,4191,4192],{"class":130},", interval: ",[66,4194,3935],{"class":292},[66,4196,3354],{"class":130},[66,4198,4200],{"class":68,"line":4199},56,[66,4201,4007],{"class":130},[66,4203,4205],{"class":68,"line":4204},57,[66,4206,4207],{"class":1769},"    \u002F\u002F ——— License (activates Pro features) ———\n",[66,4209,4211],{"class":68,"line":4210},58,[66,4212,4213],{"class":130},"    license: {\n",[66,4215,4217,4220,4223],{"class":68,"line":4216},59,[66,4218,4219],{"class":130},"      key: ",[66,4221,4222],{"class":76},"'your-license-jwt'",[66,4224,833],{"class":130},[66,4226,4228,4231,4234],{"class":68,"line":4227},60,[66,4229,4230],{"class":130},"      appId: ",[66,4232,4233],{"class":76},"'my-app-id'",[66,4235,833],{"class":130},[66,4237,4239,4242,4245,4248],{"class":68,"line":4238},61,[66,4240,4241],{"class":130},"      online: ",[66,4243,4244],{"class":76},"'lazy'",[66,4246,4247],{"class":130},",         ",[66,4249,4250],{"class":1769},"\u002F\u002F false | 'lazy' | 'strict'\n",[66,4252,4254,4257,4260],{"class":68,"line":4253},62,[66,4255,4256],{"class":130},"      offlineGraceDays: ",[66,4258,4259],{"class":292},"14",[66,4261,833],{"class":130},[66,4263,4265,4268,4271,4274],{"class":68,"line":4264},63,[66,4266,4267],{"class":130},"      fallback: ",[66,4269,4270],{"class":76},"'watermark'",[66,4272,4273],{"class":130},",  ",[66,4275,4276],{"class":1769},"\u002F\u002F 'watermark' | 'readonly' | 'block'\n",[66,4278,4280],{"class":68,"line":4279},64,[66,4281,4282],{"class":1769},"      \u002F\u002F apiBase: 'https:\u002F\u002Fapi.cyteeditor.com',\n",[66,4284,4286],{"class":68,"line":4285},65,[66,4287,4288],{"class":1769},"      \u002F\u002F jwksUrl: 'https:\u002F\u002Fapi.cyteeditor.com\u002F.well-known\u002Fjwks.json',\n",[66,4290,4292],{"class":68,"line":4291},66,[66,4293,4007],{"class":130},[66,4295,4297],{"class":68,"line":4296},67,[66,4298,4299],{"class":1769},"    \u002F\u002F ——— Pro plugins (registered before creation) ———\n",[66,4301,4303],{"class":68,"line":4302},68,[66,4304,4305],{"class":130},"    plugins: [\n",[66,4307,4309,4312],{"class":68,"line":4308},69,[66,4310,4311],{"class":72},"      ProPaste",[66,4313,4314],{"class":130},"(),\n",[66,4316,4318,4321],{"class":68,"line":4317},70,[66,4319,4320],{"class":72},"      ProExport",[66,4322,4314],{"class":130},[66,4324,4326,4329],{"class":68,"line":4325},71,[66,4327,4328],{"class":72},"      ProRevision",[66,4330,4314],{"class":130},[66,4332,4334],{"class":68,"line":4333},72,[66,4335,3903],{"class":130},[66,4337,4339],{"class":68,"line":4338},73,[66,4340,2068],{"class":130},[66,4342,4344],{"class":68,"line":4343},74,[66,4345,308],{"class":130},[34,4347,4349],{"id":4348},"editorconfig","EditorConfig",[15,4351,4352],{},"All options are optional unless otherwise noted.",[3067,4354,4355,4371],{},[3070,4356,4357],{},[3073,4358,4359,4362,4365,4368],{},[3076,4360,4361],{},"Option",[3076,4363,4364],{},"Type",[3076,4366,4367],{},"Default",[3076,4369,4370],{},"Description",[3087,4372,4373,4404,4425,4442,4466,4484,4504,4524,4544,4570,4599,4619,4644,4675,4704],{},[3073,4374,4375,4380,4385,4390],{},[3092,4376,4377],{},[29,4378,4379],{},"height",[3092,4381,4382],{},[29,4383,4384],{},"string | number",[3092,4386,4387],{},[29,4388,4389],{},"300px",[3092,4391,4392,4393,474,4396,4399,4400,4403],{},"Editor height. Accepts CSS values (e.g. ",[29,4394,4395],{},"400px",[29,4397,4398],{},"50vh",") or a number (treated as ",[29,4401,4402],{},"px",").",[3073,4405,4406,4411,4415,4420],{},[3092,4407,4408],{},[29,4409,4410],{},"minHeight",[3092,4412,4413],{},[29,4414,4384],{},[3092,4416,4417],{},[29,4418,4419],{},"150px",[3092,4421,4422,4423,3545],{},"Minimum editor height. Same format as ",[29,4424,4379],{},[3073,4426,4427,4432,4436,4439],{},[3092,4428,4429],{},[29,4430,4431],{},"maxHeight",[3092,4433,4434],{},[29,4435,4384],{},[3092,4437,4438],{},"—",[3092,4440,4441],{},"Maximum editor height. When set, the editor shows a scrollbar if content exceeds this value.",[3073,4443,4444,4449,4454,4458],{},[3092,4445,4446],{},[29,4447,4448],{},"autoHeight",[3092,4450,4451],{},[29,4452,4453],{},"boolean",[3092,4455,4456],{},[29,4457,2895],{},[3092,4459,4460,4461,4463,4464,3545],{},"When ",[29,4462,3935],{},", the editor automatically resizes to fit its content, up to ",[29,4465,4431],{},[3073,4467,4468,4473,4478,4481],{},[3092,4469,4470],{},[29,4471,4472],{},"placeholder",[3092,4474,4475],{},[29,4476,4477],{},"string",[3092,4479,4480],{},"``",[3092,4482,4483],{},"Placeholder text displayed when the editor is empty.",[3073,4485,4486,4491,4495,4499],{},[3092,4487,4488],{},[29,4489,4490],{},"readonly",[3092,4492,4493],{},[29,4494,4453],{},[3092,4496,4497],{},[29,4498,2895],{},[3092,4500,4460,4501,4503],{},[29,4502,3935],{},", the editor enters read-only mode — content is visible but not editable.",[3073,4505,4506,4511,4515,4519],{},[3092,4507,4508],{},[29,4509,4510],{},"disabled",[3092,4512,4513],{},[29,4514,4453],{},[3092,4516,4517],{},[29,4518,2895],{},[3092,4520,4460,4521,4523],{},[29,4522,3935],{},", the editor is fully disabled — toolbar and editing are inactive.",[3073,4525,4526,4531,4535,4539],{},[3092,4527,4528],{},[29,4529,4530],{},"autofocus",[3092,4532,4533],{},[29,4534,4453],{},[3092,4536,4537],{},[29,4538,2895],{},[3092,4540,4460,4541,4543],{},[29,4542,3935],{},", the editor automatically receives focus after mounting.",[3073,4545,4546,4551,4555,4560],{},[3092,4547,4548],{},[29,4549,4550],{},"locale",[3092,4552,4553],{},[29,4554,4477],{},[3092,4556,4557],{},[29,4558,4559],{},"zh-CN",[3092,4561,4562,4563,4565,4566,4569],{},"UI language locale code. If an unrecognized code is passed, the current locale is kept unchanged; the initial locale is ",[29,4564,4559],{},". Custom locales can be registered at runtime via ",[29,4567,4568],{},"I18nManager.getInstance().registerLocale(code, messages)",". See the locale mapping table below.",[3073,4571,4572,4576,4581,4584],{},[3092,4573,4574],{},[29,4575,424],{},[3092,4577,4578],{},[29,4579,4580],{},"ToolbarItem[]",[3092,4582,4583],{},"default set",[3092,4585,4586,4587,4591,4592,4594,4595,3545],{},"Array of toolbar item names. When not set, the ",[3390,4588,4590],{"href":4589},"#default-toolbar","default toolbar"," is used; available items and the ",[29,4593,487],{}," separator syntax are described in ",[3390,4596,4598],{"href":4597},"#toolbaritem","ToolbarItem",[3073,4600,4601,4606,4611,4613],{},[3092,4602,4603],{},[29,4604,4605],{},"paste",[3092,4607,4608],{},[29,4609,4610],{},"PasteConfig",[3092,4612,4438],{},[3092,4614,4615,4616,3545],{},"Paste behavior configuration. Controls paste mode (rich text \u002F raw HTML \u002F plain text), inline style retention, automatic upload of pasted images, etc. See ",[3390,4617,4610],{"href":4618},"#pasteconfig",[3073,4620,4621,4626,4631,4633],{},[3092,4622,4623],{},[29,4624,4625],{},"upload",[3092,4627,4628],{},[29,4629,4630],{},"UploadConfig",[3092,4632,4438],{},[3092,4634,4635,4636,4639,4640,4643],{},"Image upload configuration. Set ",[29,4637,4638],{},"url"," to enable server-side uploads; when not set, images are embedded as Base64. See ",[3390,4641,4630],{"href":4642},"#uploadconfig"," for the server response format.",[3073,4645,4646,4651,4656,4658],{},[3092,4647,4648],{},[29,4649,4650],{},"compare",[3092,4652,4653],{},[29,4654,4655],{},"CompareConfig",[3092,4657,4438],{},[3092,4659,4660,4661,4671,4672,3545],{},"Version compare and snapshot configuration for content versioning and diffing. ",[24,4662,4663,4664,4667,4668,4670],{},"Requires ",[29,4665,4666],{},"ProRevision()"," to be registered via ",[29,4669,3387],{},", and a valid Pro license to take effect",". See ",[3390,4673,4655],{"href":4674},"#compareconfig",[3073,4676,4677,4682,4687,4689],{},[3092,4678,4679],{},[29,4680,4681],{},"license",[3092,4683,4684],{},[29,4685,4686],{},"LicenseConfig",[3092,4688,4438],{},[3092,4690,4691,4692,4695,4696,4700,4701,3545],{},"License key configuration for activating Pro features (e.g. Word import\u002Fexport, version snapshots, advanced paste). ",[24,4693,4694],{},"A license key is obtained after purchasing a Pro subscription"," — see the ",[3390,4697,4699],{"href":4698},"\u002Fpricing","pricing"," page. See ",[3390,4702,4686],{"href":4703},"#licenseconfig",[3073,4705,4706,4710,4715,4717],{},[3092,4707,4708],{},[29,4709,3387],{},[3092,4711,4712],{},[29,4713,4714],{},"ProPlugin[]",[3092,4716,4438],{},[3092,4718,4719,4720,4723,4724,474,4727,474,4730,4732,4733,3545],{},"Array of Pro plugins to register before editor creation; ",[24,4721,4722],{},"a valid Pro license is required to activate them",". Available plugins: ",[29,4725,4726],{},"ProPaste()",[29,4728,4729],{},"ProExport()",[29,4731,4666],{},". Can also be registered dynamically after creation via ",[29,4734,4735],{},"manager.use(plugin)",[19,4737,4738],{},[15,4739,4740,4743,4744,474,4746,4748,4749,4751,4752,474,4754,474,4756,4748,4759,4761,4762,4764],{},[24,4741,4742],{},"Pro features:"," The ",[29,4745,4650],{},[29,4747,4681],{},", and ",[29,4750,3387],{}," parameters, as well as the ",[29,4753,103],{},[29,4755,794],{},[29,4757,4758],{},"snapshot",[29,4760,4650],{}," toolbar buttons, require a valid Pro license — see the ",[3390,4763,4699],{"href":4698}," page.",[52,4766,4768],{"id":4767},"locale-mapping","Locale Mapping",[3067,4770,4771,4781],{},[3070,4772,4773],{},[3073,4774,4775,4778],{},[3076,4776,4777],{},"Code",[3076,4779,4780],{},"Language",[3087,4782,4783,4792,4802,4812,4822,4832,4842,4852,4862,4872],{},[3073,4784,4785,4789],{},[3092,4786,4787],{},[29,4788,4559],{},[3092,4790,4791],{},"Simplified Chinese",[3073,4793,4794,4799],{},[3092,4795,4796],{},[29,4797,4798],{},"zh-TW",[3092,4800,4801],{},"Traditional Chinese",[3073,4803,4804,4809],{},[3092,4805,4806],{},[29,4807,4808],{},"en-US",[3092,4810,4811],{},"English",[3073,4813,4814,4819],{},[3092,4815,4816],{},[29,4817,4818],{},"ja",[3092,4820,4821],{},"Japanese",[3073,4823,4824,4829],{},[3092,4825,4826],{},[29,4827,4828],{},"ko-KR",[3092,4830,4831],{},"Korean",[3073,4833,4834,4839],{},[3092,4835,4836],{},[29,4837,4838],{},"fr-FR",[3092,4840,4841],{},"French",[3073,4843,4844,4849],{},[3092,4845,4846],{},[29,4847,4848],{},"de",[3092,4850,4851],{},"German",[3073,4853,4854,4859],{},[3092,4855,4856],{},[29,4857,4858],{},"es",[3092,4860,4861],{},"Spanish",[3073,4863,4864,4869],{},[3092,4865,4866],{},[29,4867,4868],{},"pt-BR",[3092,4870,4871],{},"Portuguese (Brazil)",[3073,4873,4874,4879],{},[3092,4875,4876],{},[29,4877,4878],{},"ru",[3092,4880,4881],{},"Russian",[52,4883,4885],{"id":4884},"default-toolbar","Default Toolbar",[15,4887,4460,4888,4890],{},[29,4889,424],{}," is not provided, the editor uses the following default set. Free and Pro versions use the same array; Pro-only items are disabled when no valid license is present.",[57,4892,4896],{"className":4893,"code":4894,"language":4895,"meta":62,"style":62},"language-js shiki shiki-themes github-dark","[\n  'undo', 'redo', 'formatPainter', '|',\n  'bold', 'italic', 'underline', 'strikethrough', 'superscript', 'subscript', '|',\n  'fontFamily', 'fontSize', 'color', 'bgColor', '|',\n  'heading', 'align', 'lineHeight', 'bulletList', 'orderedList', 'outdent', 'indent', '|',\n  'link', 'insertTable', 'imageUpload', 'video', '|',\n  'blockquote', 'codeBlock', '|',\n  'import', 'export', 'getHTML', 'getJSON', '|',\n  'fullscreen', 'snapshot', 'compare',\n]\n","js",[29,4897,4898,4903,4922,4954,4977,5013,5036,5051,5074,5089],{"__ignoreMap":62},[66,4899,4900],{"class":68,"line":69},[66,4901,4902],{"class":130},"[\n",[66,4904,4905,4908,4910,4912,4914,4916,4918,4920],{"class":68,"line":109},[66,4906,4907],{"class":76},"  'undo'",[66,4909,474],{"class":130},[66,4911,3698],{"class":76},[66,4913,474],{"class":130},[66,4915,3703],{"class":76},[66,4917,474],{"class":130},[66,4919,487],{"class":76},[66,4921,833],{"class":130},[66,4923,4924,4927,4929,4931,4933,4935,4937,4939,4941,4944,4946,4948,4950,4952],{"class":68,"line":151},[66,4925,4926],{"class":76},"  'bold'",[66,4928,474],{"class":130},[66,4930,477],{"class":76},[66,4932,474],{"class":130},[66,4934,482],{"class":76},[66,4936,474],{"class":130},[66,4938,3727],{"class":76},[66,4940,474],{"class":130},[66,4942,4943],{"class":76},"'superscript'",[66,4945,474],{"class":130},[66,4947,3739],{"class":76},[66,4949,474],{"class":130},[66,4951,487],{"class":76},[66,4953,833],{"class":130},[66,4955,4956,4959,4961,4963,4965,4967,4969,4971,4973,4975],{"class":68,"line":160},[66,4957,4958],{"class":76},"  'fontFamily'",[66,4960,474],{"class":130},[66,4962,3755],{"class":76},[66,4964,474],{"class":130},[66,4966,3760],{"class":76},[66,4968,474],{"class":130},[66,4970,3765],{"class":76},[66,4972,474],{"class":130},[66,4974,487],{"class":76},[66,4976,833],{"class":130},[66,4978,4979,4982,4984,4986,4988,4990,4992,4995,4997,4999,5001,5003,5005,5007,5009,5011],{"class":68,"line":172},[66,4980,4981],{"class":76},"  'heading'",[66,4983,474],{"class":130},[66,4985,497],{"class":76},[66,4987,474],{"class":130},[66,4989,3785],{"class":76},[66,4991,474],{"class":130},[66,4993,4994],{"class":76},"'bulletList'",[66,4996,474],{"class":130},[66,4998,3797],{"class":76},[66,5000,474],{"class":130},[66,5002,3802],{"class":76},[66,5004,474],{"class":130},[66,5006,3807],{"class":76},[66,5008,474],{"class":130},[66,5010,487],{"class":76},[66,5012,833],{"class":130},[66,5014,5015,5018,5020,5022,5024,5026,5028,5030,5032,5034],{"class":68,"line":183},[66,5016,5017],{"class":76},"  'link'",[66,5019,474],{"class":130},[66,5021,3823],{"class":76},[66,5023,474],{"class":130},[66,5025,3828],{"class":76},[66,5027,474],{"class":130},[66,5029,3833],{"class":76},[66,5031,474],{"class":130},[66,5033,487],{"class":76},[66,5035,833],{"class":130},[66,5037,5038,5041,5043,5045,5047,5049],{"class":68,"line":194},[66,5039,5040],{"class":76},"  'blockquote'",[66,5042,474],{"class":130},[66,5044,3849],{"class":76},[66,5046,474],{"class":130},[66,5048,487],{"class":76},[66,5050,833],{"class":130},[66,5052,5053,5056,5058,5060,5062,5064,5066,5068,5070,5072],{"class":68,"line":200},[66,5054,5055],{"class":76},"  'import'",[66,5057,474],{"class":130},[66,5059,3865],{"class":76},[66,5061,474],{"class":130},[66,5063,3870],{"class":76},[66,5065,474],{"class":130},[66,5067,3875],{"class":76},[66,5069,474],{"class":130},[66,5071,487],{"class":76},[66,5073,833],{"class":130},[66,5075,5076,5079,5081,5083,5085,5087],{"class":68,"line":210},[66,5077,5078],{"class":76},"  'fullscreen'",[66,5080,474],{"class":130},[66,5082,3891],{"class":76},[66,5084,474],{"class":130},[66,5086,3896],{"class":76},[66,5088,833],{"class":130},[66,5090,5091],{"class":68,"line":220},[66,5092,5093],{"class":130},"]\n",[52,5095,4598],{"id":5096},"toolbaritem",[15,5098,5099,5101],{},[29,5100,424],{}," is an array of strings, each representing a toolbar button or control.",[19,5103,5104],{},[15,5105,5106,5109,5110,5112,5113,5116,5117,5119],{},[24,5107,5108],{},"Visual separator:"," Insert the string ",[29,5111,487],{}," in the array to display a vertical divider between adjacent button groups. For example, ",[29,5114,5115],{},"['bold', 'italic', '|', 'undo']"," places a separator between \"Bold \u002F Italic\" and \"Undo\". ",[29,5118,487],{}," is not a button — it is used solely for visual grouping.",[15,5121,5122,601,5124,5126,5127,474,5130,474,5133,4748,5136,5139,5140,5142],{},[29,5123,103],{},[29,5125,794],{}," are dropdown groups. Their children ",[29,5128,5129],{},"importWord",[29,5131,5132],{},"importMarkdown",[29,5134,5135],{},"exportWord",[29,5137,5138],{},"exportMarkdown"," are not top-level ",[29,5141,4598],{}," values.",[3067,5144,5145,5159],{},[3070,5146,5147],{},[3073,5148,5149,5152,5154,5157],{},[3076,5150,5151],{},"Value",[3076,5153,4364],{},[3076,5155,5156],{},"License",[3076,5158,4370],{},[3087,5160,5161,5176,5190,5204,5218,5232,5246,5260,5274,5288,5303,5317,5332,5346,5360,5374,5388,5402,5416,5430,5444,5458,5472,5486,5500,5513,5527,5541,5554,5567,5580,5594,5607],{},[3073,5162,5163,5168,5170,5173],{},[3092,5164,5165],{},[29,5166,5167],{},"undo",[3092,5169,1701],{},[3092,5171,5172],{},"Free",[3092,5174,5175],{},"Undo",[3073,5177,5178,5183,5185,5187],{},[3092,5179,5180],{},[29,5181,5182],{},"redo",[3092,5184,1701],{},[3092,5186,5172],{},[3092,5188,5189],{},"Redo",[3073,5191,5192,5197,5199,5201],{},[3092,5193,5194],{},[29,5195,5196],{},"formatPainter",[3092,5198,1701],{},[3092,5200,5172],{},[3092,5202,5203],{},"Format painter",[3073,5205,5206,5211,5213,5215],{},[3092,5207,5208],{},[29,5209,5210],{},"bold",[3092,5212,1701],{},[3092,5214,5172],{},[3092,5216,5217],{},"Bold text",[3073,5219,5220,5225,5227,5229],{},[3092,5221,5222],{},[29,5223,5224],{},"italic",[3092,5226,1701],{},[3092,5228,5172],{},[3092,5230,5231],{},"Italic text",[3073,5233,5234,5239,5241,5243],{},[3092,5235,5236],{},[29,5237,5238],{},"underline",[3092,5240,1701],{},[3092,5242,5172],{},[3092,5244,5245],{},"Underline text",[3073,5247,5248,5253,5255,5257],{},[3092,5249,5250],{},[29,5251,5252],{},"strikethrough",[3092,5254,1701],{},[3092,5256,5172],{},[3092,5258,5259],{},"Strikethrough text",[3073,5261,5262,5267,5269,5271],{},[3092,5263,5264],{},[29,5265,5266],{},"superscript",[3092,5268,1701],{},[3092,5270,5172],{},[3092,5272,5273],{},"Superscript",[3073,5275,5276,5281,5283,5285],{},[3092,5277,5278],{},[29,5279,5280],{},"subscript",[3092,5282,1701],{},[3092,5284,5172],{},[3092,5286,5287],{},"Subscript",[3073,5289,5290,5295,5298,5300],{},[3092,5291,5292],{},[29,5293,5294],{},"fontFamily",[3092,5296,5297],{},"dropdown",[3092,5299,5172],{},[3092,5301,5302],{},"Font family selector",[3073,5304,5305,5310,5312,5314],{},[3092,5306,5307],{},[29,5308,5309],{},"fontSize",[3092,5311,5297],{},[3092,5313,5172],{},[3092,5315,5316],{},"Font size selector",[3073,5318,5319,5324,5327,5329],{},[3092,5320,5321],{},[29,5322,5323],{},"color",[3092,5325,5326],{},"color-picker",[3092,5328,5172],{},[3092,5330,5331],{},"Text color picker",[3073,5333,5334,5339,5341,5343],{},[3092,5335,5336],{},[29,5337,5338],{},"bgColor",[3092,5340,5326],{},[3092,5342,5172],{},[3092,5344,5345],{},"Background\u002Fhighlight color picker",[3073,5347,5348,5353,5355,5357],{},[3092,5349,5350],{},[29,5351,5352],{},"heading",[3092,5354,5297],{},[3092,5356,5172],{},[3092,5358,5359],{},"Heading level selector",[3073,5361,5362,5367,5369,5371],{},[3092,5363,5364],{},[29,5365,5366],{},"align",[3092,5368,5297],{},[3092,5370,5172],{},[3092,5372,5373],{},"Text alignment",[3073,5375,5376,5381,5383,5385],{},[3092,5377,5378],{},[29,5379,5380],{},"lineHeight",[3092,5382,5297],{},[3092,5384,5172],{},[3092,5386,5387],{},"Line height",[3073,5389,5390,5395,5397,5399],{},[3092,5391,5392],{},[29,5393,5394],{},"bulletList",[3092,5396,1701],{},[3092,5398,5172],{},[3092,5400,5401],{},"Bullet list",[3073,5403,5404,5409,5411,5413],{},[3092,5405,5406],{},[29,5407,5408],{},"orderedList",[3092,5410,1701],{},[3092,5412,5172],{},[3092,5414,5415],{},"Ordered list",[3073,5417,5418,5423,5425,5427],{},[3092,5419,5420],{},[29,5421,5422],{},"outdent",[3092,5424,1701],{},[3092,5426,5172],{},[3092,5428,5429],{},"Decrease indent",[3073,5431,5432,5437,5439,5441],{},[3092,5433,5434],{},[29,5435,5436],{},"indent",[3092,5438,1701],{},[3092,5440,5172],{},[3092,5442,5443],{},"Increase indent",[3073,5445,5446,5451,5453,5455],{},[3092,5447,5448],{},[29,5449,5450],{},"link",[3092,5452,1701],{},[3092,5454,5172],{},[3092,5456,5457],{},"Insert\u002Fedit link",[3073,5459,5460,5465,5467,5469],{},[3092,5461,5462],{},[29,5463,5464],{},"insertTable",[3092,5466,1701],{},[3092,5468,5172],{},[3092,5470,5471],{},"Insert table",[3073,5473,5474,5479,5481,5483],{},[3092,5475,5476],{},[29,5477,5478],{},"imageUpload",[3092,5480,5297],{},[3092,5482,5172],{},[3092,5484,5485],{},"Insert image",[3073,5487,5488,5493,5495,5497],{},[3092,5489,5490],{},[29,5491,5492],{},"video",[3092,5494,1701],{},[3092,5496,5172],{},[3092,5498,5499],{},"Insert video",[3073,5501,5502,5506,5508,5510],{},[3092,5503,5504],{},[29,5505,19],{},[3092,5507,1701],{},[3092,5509,5172],{},[3092,5511,5512],{},"Blockquote",[3073,5514,5515,5520,5522,5524],{},[3092,5516,5517],{},[29,5518,5519],{},"codeBlock",[3092,5521,1701],{},[3092,5523,5172],{},[3092,5525,5526],{},"Code block",[3073,5528,5529,5533,5535,5538],{},[3092,5530,5531],{},[29,5532,103],{},[3092,5534,5297],{},[3092,5536,5537],{},"Pro",[3092,5539,5540],{},"Import (Word \u002F Markdown)",[3073,5542,5543,5547,5549,5551],{},[3092,5544,5545],{},[29,5546,794],{},[3092,5548,5297],{},[3092,5550,5537],{},[3092,5552,5553],{},"Export (Word \u002F Markdown)",[3073,5555,5556,5560,5562,5564],{},[3092,5557,5558],{},[29,5559,2974],{},[3092,5561,1701],{},[3092,5563,5172],{},[3092,5565,5566],{},"View HTML source",[3073,5568,5569,5573,5575,5577],{},[3092,5570,5571],{},[29,5572,2991],{},[3092,5574,1701],{},[3092,5576,5172],{},[3092,5578,5579],{},"View JSON structure",[3073,5581,5582,5587,5589,5591],{},[3092,5583,5584],{},[29,5585,5586],{},"fullscreen",[3092,5588,1701],{},[3092,5590,5172],{},[3092,5592,5593],{},"Toggle fullscreen",[3073,5595,5596,5600,5602,5604],{},[3092,5597,5598],{},[29,5599,4758],{},[3092,5601,1701],{},[3092,5603,5537],{},[3092,5605,5606],{},"Create version snapshot",[3073,5608,5609,5613,5615,5617],{},[3092,5610,5611],{},[29,5612,4650],{},[3092,5614,1701],{},[3092,5616,5537],{},[3092,5618,5619],{},"Version compare",[52,5621,4610],{"id":5622},"pasteconfig",[3067,5624,5625,5637],{},[3070,5626,5627],{},[3073,5628,5629,5631,5633,5635],{},[3076,5630,4361],{},[3076,5632,4364],{},[3076,5634,4367],{},[3076,5636,4370],{},[3087,5638,5639,5669,5687,5707,5729,5749,5776],{},[3073,5640,5641,5646,5651,5656],{},[3092,5642,5643],{},[29,5644,5645],{},"mode",[3092,5647,5648],{},[29,5649,5650],{},"'rich' | 'html' | 'text'",[3092,5652,5653],{},[29,5654,5655],{},"rich",[3092,5657,5658,5659,5661,5662,5664,5665,5668],{},"Paste mode. ",[29,5660,5655],{}," retains rich-text formatting; ",[29,5663,348],{}," keeps raw HTML; ",[29,5666,5667],{},"text"," strips all formatting.",[3073,5670,5671,5676,5680,5684],{},[3092,5672,5673],{},[29,5674,5675],{},"retainStyle",[3092,5677,5678],{},[29,5679,4453],{},[3092,5681,5682],{},[29,5683,3935],{},[3092,5685,5686],{},"Whether to retain inline styles from pasted content.",[3073,5688,5689,5694,5699,5704],{},[3092,5690,5691],{},[29,5692,5693],{},"filterTags",[3092,5695,5696],{},[29,5697,5698],{},"string[]",[3092,5700,5701],{},[29,5702,5703],{},"['script', 'style']",[3092,5705,5706],{},"List of HTML tag names to strip from pasted content.",[3073,5708,5709,5713,5717,5721],{},[3092,5710,5711],{},[29,5712,5478],{},[3092,5714,5715],{},[29,5716,4453],{},[3092,5718,5719],{},[29,5720,3935],{},[3092,5722,4460,5723,5725,5726,5728],{},[29,5724,3935],{},", pasted images are automatically uploaded using the ",[29,5727,4625],{}," config.",[3073,5730,5731,5736,5741,5746],{},[3092,5732,5733],{},[29,5734,5735],{},"maxImageSize",[3092,5737,5738],{},[29,5739,5740],{},"number",[3092,5742,5743],{},[29,5744,5745],{},"5242880",[3092,5747,5748],{},"Maximum image file size in bytes (default: 5 MB). Images exceeding this limit are rejected.",[3073,5750,5751,5756,5761,5763],{},[3092,5752,5753],{},[29,5754,5755],{},"onBeforePaste",[3092,5757,5758],{},[29,5759,5760],{},"Function",[3092,5762,4438],{},[3092,5764,5765,5768,5769,5771,5772,5775],{},[29,5766,5767],{},"(event: ClipboardEvent, html: string) => string | false | void"," Callback invoked before paste. Return modified HTML to transform, ",[29,5770,2895],{}," to cancel, or ",[29,5773,5774],{},"void"," to proceed.",[3073,5777,5778,5783,5787,5789],{},[3092,5779,5780],{},[29,5781,5782],{},"onAfterPaste",[3092,5784,5785],{},[29,5786,5760],{},[3092,5788,4438],{},[3092,5790,5791,5794],{},[29,5792,5793],{},"(html: string) => void"," Callback invoked after paste with the final inserted HTML.",[52,5796,4630],{"id":5797},"uploadconfig",[3067,5799,5800,5812],{},[3070,5801,5802],{},[3073,5803,5804,5806,5808,5810],{},[3076,5805,4361],{},[3076,5807,4364],{},[3076,5809,4367],{},[3076,5811,4370],{},[3087,5813,5814],{},[3073,5815,5816,5820,5824,5829],{},[3092,5817,5818],{},[29,5819,4638],{},[3092,5821,5822],{},[29,5823,4477],{},[3092,5825,5826],{},[29,5827,5828],{},"''",[3092,5830,5831,5832,5835],{},"Your own image upload service endpoint URL. The editor sends images to this address via HTTP POST ",[29,5833,5834],{},"multipart\u002Fform-data",". When not set, images are embedded as Base64 — no upload service required.",[15,5837,5838],{},[24,5839,5840],{},"Server response format",[15,5842,5843],{},"After a successful upload (HTTP 2xx), the server should return the following JSON format:",[3067,5845,5846,5857],{},[3070,5847,5848],{},[3073,5849,5850,5853,5855],{},[3076,5851,5852],{},"Field",[3076,5854,4364],{},[3076,5856,4370],{},[3087,5858,5859,5877],{},[3073,5860,5861,5866,5870],{},[3092,5862,5863],{},[29,5864,5865],{},"status",[3092,5867,5868],{},[29,5869,5740],{},[3092,5871,5872,5873,5876],{},"Business status code, ",[29,5874,5875],{},"200"," for success",[3073,5878,5879,5884,5888],{},[3092,5880,5881],{},[29,5882,5883],{},"data.url",[3092,5885,5886],{},[29,5887,4477],{},[3092,5889,5890],{},"Image URL after successful upload",[15,5892,5893],{},[24,5894,5895],{},"Response example",[57,5897,5900],{"className":5898,"code":5899,"language":1429,"meta":62,"style":62},"language-json shiki shiki-themes github-dark","{\n  \"status\": 200,\n  \"data\": {\n    \"url\": \"https:\u002F\u002Fcdn.example.com\u002Fimg\u002Fabc.png\"\n  }\n}\n",[29,5901,5902,5907,5919,5927,5937,5941],{"__ignoreMap":62},[66,5903,5904],{"class":68,"line":69},[66,5905,5906],{"class":130},"{\n",[66,5908,5909,5912,5915,5917],{"class":68,"line":109},[66,5910,5911],{"class":292},"  \"status\"",[66,5913,5914],{"class":130},": ",[66,5916,5875],{"class":292},[66,5918,833],{"class":130},[66,5920,5921,5924],{"class":68,"line":151},[66,5922,5923],{"class":292},"  \"data\"",[66,5925,5926],{"class":130},": {\n",[66,5928,5929,5932,5934],{"class":68,"line":160},[66,5930,5931],{"class":292},"    \"url\"",[66,5933,5914],{"class":130},[66,5935,5936],{"class":76},"\"https:\u002F\u002Fcdn.example.com\u002Fimg\u002Fabc.png\"\n",[66,5938,5939],{"class":68,"line":172},[66,5940,2068],{"class":130},[66,5942,5943],{"class":68,"line":183},[66,5944,851],{"class":130},[52,5946,4655],{"id":5947},"compareconfig",[3067,5949,5950,5962],{},[3070,5951,5952],{},[3073,5953,5954,5956,5958,5960],{},[3076,5955,4361],{},[3076,5957,4364],{},[3076,5959,4367],{},[3076,5961,4370],{},[3087,5963,5964,5982,6001,6019,6037,6055],{},[3073,5965,5966,5971,5975,5979],{},[3092,5967,5968],{},[29,5969,5970],{},"autoBaseline",[3092,5972,5973],{},[29,5974,4453],{},[3092,5976,5977],{},[29,5978,3935],{},[3092,5980,5981],{},"Automatically create a baseline snapshot when content is present.",[3073,5983,5984,5989,5993,5998],{},[3092,5985,5986],{},[29,5987,5988],{},"baselineLabel",[3092,5990,5991],{},[29,5992,4477],{},[3092,5994,5995],{},[29,5996,5997],{},"会话基线",[3092,5999,6000],{},"Label for the auto-created baseline snapshot.",[3073,6002,6003,6008,6012,6016],{},[3092,6004,6005],{},[29,6006,6007],{},"maxVersions",[3092,6009,6010],{},[29,6011,5740],{},[3092,6013,6014],{},[29,6015,4148],{},[3092,6017,6018],{},"Maximum number of snapshots to keep.",[3073,6020,6021,6026,6030,6034],{},[3092,6022,6023],{},[29,6024,6025],{},"changeThreshold",[3092,6027,6028],{},[29,6029,5740],{},[3092,6031,6032],{},[29,6033,4061],{},[3092,6035,6036],{},"Minimum character difference to trigger a new snapshot.",[3073,6038,6039,6044,6048,6052],{},[3092,6040,6041],{},[29,6042,6043],{},"maxIntervalMs",[3092,6045,6046],{},[29,6047,5740],{},[3092,6049,6050],{},[29,6051,4169],{},[3092,6053,6054],{},"Maximum time in ms between automatic snapshots (default: 5 minutes).",[3073,6056,6057,6062,6067,6070],{},[3092,6058,6059],{},[29,6060,6061],{},"triggers",[3092,6063,6064],{},[29,6065,6066],{},"object",[3092,6068,6069],{},"All enabled",[3092,6071,6072,6073,474,6076,474,6078,474,6080,6083,6084,6086,6087,4403],{},"Enable\u002Fdisable specific snapshot triggers: ",[29,6074,6075],{},"blur",[29,6077,4605],{},[29,6079,103],{},[29,6081,6082],{},"interval"," (all ",[29,6085,4453],{},", default ",[29,6088,3935],{},[52,6090,4686],{"id":6091},"licenseconfig",[3067,6093,6094,6106],{},[3070,6095,6096],{},[3073,6097,6098,6100,6102,6104],{},[3076,6099,4361],{},[3076,6101,4364],{},[3076,6103,4367],{},[3076,6105,4370],{},[3087,6107,6108,6124,6140,6169,6190,6219,6235],{},[3073,6109,6110,6115,6119,6121],{},[3092,6111,6112],{},[29,6113,6114],{},"key",[3092,6116,6117],{},[29,6118,4477],{},[3092,6120,4438],{},[3092,6122,6123],{},"License JWT key, issued after purchase. Required to activate Pro features.",[3073,6125,6126,6131,6135,6137],{},[3092,6127,6128],{},[29,6129,6130],{},"appId",[3092,6132,6133],{},[29,6134,4477],{},[3092,6136,4438],{},[3092,6138,6139],{},"Application ID for multi-app licensing scenarios.",[3073,6141,6142,6147,6151,6156],{},[3092,6143,6144],{},[29,6145,6146],{},"online",[3092,6148,6149],{},[29,6150,4477],{},[3092,6152,6153],{},[29,6154,6155],{},"lazy",[3092,6157,6158,6159,6161,6162,6164,6165,6168],{},"Online verification strategy. ",[29,6160,2895],{}," = offline only; ",[29,6163,6155],{}," = verify when possible; ",[29,6166,6167],{},"strict"," = must verify online.",[3073,6170,6171,6176,6180,6184],{},[3092,6172,6173],{},[29,6174,6175],{},"offlineGraceDays",[3092,6177,6178],{},[29,6179,5740],{},[3092,6181,6182],{},[29,6183,4259],{},[3092,6185,6186,6187,6189],{},"Grace period in days for offline use under ",[29,6188,6167],{}," mode.",[3073,6191,6192,6197,6201,6206],{},[3092,6193,6194],{},[29,6195,6196],{},"fallback",[3092,6198,6199],{},[29,6200,4477],{},[3092,6202,6203],{},[29,6204,6205],{},"watermark",[3092,6207,6208,6209,6211,6212,6214,6215,6218],{},"Degradation behavior when license verification fails. ",[29,6210,6205],{}," = editable with watermark overlay; ",[29,6213,4490],{}," = read-only mode; ",[29,6216,6217],{},"block"," = block all editing.",[3073,6220,6221,6226,6230,6232],{},[3092,6222,6223],{},[29,6224,6225],{},"apiBase",[3092,6227,6228],{},[29,6229,4477],{},[3092,6231,4438],{},[3092,6233,6234],{},"Custom Worker API base URL for OEM \u002F private deployments.",[3073,6236,6237,6242,6246,6248],{},[3092,6238,6239],{},[29,6240,6241],{},"jwksUrl",[3092,6243,6244],{},[29,6245,4477],{},[3092,6247,4438],{},[3092,6249,6250,6251,6254,6255,6258],{},"JWKS endpoint URL. Must use ",[29,6252,6253],{},"https:\u002F\u002F"," and domain must be in ",[29,6256,6257],{},"*.cyteeditor.com"," whitelist.",[34,6260,6262],{"id":6261},"instance-methods","Instance Methods",[52,6264,6266],{"id":6265},"getting-the-editor-instance","Getting the editor instance",[15,6268,6269,6270,6272],{},"The following methods are all defined on the ",[29,6271,2696],{}," instance. Each adapter obtains this instance differently:",[3249,6274,6275,6286],{},[3252,6276,6277,5914,6279,6282,6283,6285],{},[24,6278,3190],{},[29,6280,6281],{},"EditorManager.create()"," returns the ",[29,6284,2696],{}," instance directly; all methods can be called directly.",[3252,6287,6288,6291,6292,6294,6295,3545],{},[24,6289,6290],{},"Vue3 \u002F Vue2 \u002F React \u002F Angular \u002F Svelte",": the component ref exposes a subset of common methods directly; to call the full method set, first obtain the ",[29,6293,2696],{}," instance via the ref's ",[29,6296,6297],{},"getEditorManager()",[15,6299,6300],{},[24,6301,3190],{},[57,6303,6305],{"className":93,"code":6304,"language":95,"meta":62,"style":62},"import { EditorManager } from '@cyte-editor\u002Fcore'\n\nconst manager = EditorManager.create(document.querySelector('#editor'), { \u002F* config *\u002F })\nmanager.getHTML()          \u002F\u002F direct call\nmanager.insertTable(2, 3)  \u002F\u002F direct call\n",[29,6306,6307,6312,6316,6321,6326],{"__ignoreMap":62},[66,6308,6309],{"class":68,"line":69},[66,6310,6311],{},"import { EditorManager } from '@cyte-editor\u002Fcore'\n",[66,6313,6314],{"class":68,"line":109},[66,6315,224],{"emptyLinePlaceholder":223},[66,6317,6318],{"class":68,"line":151},[66,6319,6320],{},"const manager = EditorManager.create(document.querySelector('#editor'), { \u002F* config *\u002F })\n",[66,6322,6323],{"class":68,"line":160},[66,6324,6325],{},"manager.getHTML()          \u002F\u002F direct call\n",[66,6327,6328],{"class":68,"line":172},[66,6329,6330],{},"manager.insertTable(2, 3)  \u002F\u002F direct call\n",[15,6332,6333],{},[24,6334,37],{},[57,6336,6338],{"className":121,"code":6337,"language":123,"meta":62,"style":62},"\u003Cscript setup>\nimport { ref } from 'vue'\nimport { CyteEditor } from '@cyte-editor\u002Fvue3'\nimport type { CyteEditorExpose } from '@cyte-editor\u002Fvue3'\n\nconst editorRef = ref\u003CCyteEditorExpose>()\n\n\u002F\u002F Common methods can be called directly via ref\neditorRef.value?.getHTML()\n\n\u002F\u002F Full method set requires getting the instance via getEditorManager()\nconst manager = editorRef.value?.getEditorManager()\nmanager?.insertTable(2, 3)\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003CCyteEditor ref=\"editorRef\" v-model:html=\"content\" \u002F>\n\u003C\u002Ftemplate>\n",[29,6339,6340,6350,6360,6370,6384,6388,6407,6411,6416,6425,6429,6434,6450,6469,6477,6481,6489,6511],{"__ignoreMap":62},[66,6341,6342,6344,6346,6348],{"class":68,"line":69},[66,6343,131],{"class":130},[66,6345,232],{"class":134},[66,6347,235],{"class":72},[66,6349,138],{"class":130},[66,6351,6352,6354,6356,6358],{"class":68,"line":109},[66,6353,103],{"class":102},[66,6355,245],{"class":130},[66,6357,248],{"class":102},[66,6359,251],{"class":76},[66,6361,6362,6364,6366,6368],{"class":68,"line":151},[66,6363,103],{"class":102},[66,6365,259],{"class":130},[66,6367,248],{"class":102},[66,6369,264],{"class":76},[66,6371,6372,6374,6377,6380,6382],{"class":68,"line":160},[66,6373,103],{"class":102},[66,6375,6376],{"class":102}," type",[66,6378,6379],{"class":130}," { CyteEditorExpose } ",[66,6381,248],{"class":102},[66,6383,264],{"class":76},[66,6385,6386],{"class":68,"line":172},[66,6387,224],{"emptyLinePlaceholder":223},[66,6389,6390,6392,6395,6397,6399,6401,6404],{"class":68,"line":183},[66,6391,289],{"class":102},[66,6393,6394],{"class":292}," editorRef",[66,6396,296],{"class":102},[66,6398,299],{"class":72},[66,6400,131],{"class":130},[66,6402,6403],{"class":72},"CyteEditorExpose",[66,6405,6406],{"class":130},">()\n",[66,6408,6409],{"class":68,"line":194},[66,6410,224],{"emptyLinePlaceholder":223},[66,6412,6413],{"class":68,"line":200},[66,6414,6415],{"class":1769},"\u002F\u002F Common methods can be called directly via ref\n",[66,6417,6418,6421,6423],{"class":68,"line":210},[66,6419,6420],{"class":130},"editorRef.value?.",[66,6422,2974],{"class":72},[66,6424,2977],{"class":130},[66,6426,6427],{"class":68,"line":220},[66,6428,224],{"emptyLinePlaceholder":223},[66,6430,6431],{"class":68,"line":227},[66,6432,6433],{"class":1769},"\u002F\u002F Full method set requires getting the instance via getEditorManager()\n",[66,6435,6436,6438,6440,6442,6445,6448],{"class":68,"line":240},[66,6437,289],{"class":102},[66,6439,2806],{"class":292},[66,6441,296],{"class":102},[66,6443,6444],{"class":130}," editorRef.value?.",[66,6446,6447],{"class":72},"getEditorManager",[66,6449,2977],{"class":130},[66,6451,6452,6455,6457,6459,6462,6464,6467],{"class":68,"line":254},[66,6453,6454],{"class":130},"manager?.",[66,6456,5464],{"class":72},[66,6458,302],{"class":130},[66,6460,6461],{"class":292},"2",[66,6463,474],{"class":130},[66,6465,6466],{"class":292},"3",[66,6468,308],{"class":130},[66,6470,6471,6473,6475],{"class":68,"line":267},[66,6472,213],{"class":130},[66,6474,232],{"class":134},[66,6476,138],{"class":130},[66,6478,6479],{"class":68,"line":274},[66,6480,224],{"emptyLinePlaceholder":223},[66,6482,6483,6485,6487],{"class":68,"line":281},[66,6484,131],{"class":130},[66,6486,135],{"class":134},[66,6488,138],{"class":130},[66,6490,6491,6493,6495,6497,6499,6502,6505,6507,6509],{"class":68,"line":286},[66,6492,143],{"class":130},[66,6494,339],{"class":134},[66,6496,299],{"class":72},[66,6498,166],{"class":130},[66,6500,6501],{"class":76},"\"editorRef\"",[66,6503,6504],{"class":72}," v-model:html",[66,6506,166],{"class":130},[66,6508,2104],{"class":76},[66,6510,361],{"class":130},[66,6512,6513,6515,6517],{"class":68,"line":311},[66,6514,213],{"class":130},[66,6516,135],{"class":134},[66,6518,138],{"class":130},[15,6520,6521],{},[24,6522,609],{},[57,6524,6526],{"className":121,"code":6525,"language":123,"meta":62,"style":62},"\u003Cscript>\nexport default {\n  methods: {\n    doSomething() {\n      \u002F\u002F Common methods\n      this.$refs.editor.getHTML()\n      \u002F\u002F Full method set\n      this.$refs.editor.getEditorManager()?.insertTable(2, 3)\n    },\n  },\n}\n\u003C\u002Fscript>\n",[29,6527,6528,6536,6544,6549,6556,6561,6573,6578,6601,6605,6609,6613],{"__ignoreMap":62},[66,6529,6530,6532,6534],{"class":68,"line":69},[66,6531,131],{"class":130},[66,6533,232],{"class":134},[66,6535,138],{"class":130},[66,6537,6538,6540,6542],{"class":68,"line":109},[66,6539,794],{"class":102},[66,6541,797],{"class":102},[66,6543,800],{"class":130},[66,6545,6546],{"class":68,"line":151},[66,6547,6548],{"class":130},"  methods: {\n",[66,6550,6551,6554],{"class":68,"line":160},[66,6552,6553],{"class":72},"    doSomething",[66,6555,814],{"class":130},[66,6557,6558],{"class":68,"line":172},[66,6559,6560],{"class":1769},"      \u002F\u002F Common methods\n",[66,6562,6563,6566,6569,6571],{"class":68,"line":183},[66,6564,6565],{"class":292},"      this",[66,6567,6568],{"class":130},".$refs.editor.",[66,6570,2974],{"class":72},[66,6572,2977],{"class":130},[66,6574,6575],{"class":68,"line":194},[66,6576,6577],{"class":1769},"      \u002F\u002F Full method set\n",[66,6579,6580,6582,6584,6586,6589,6591,6593,6595,6597,6599],{"class":68,"line":200},[66,6581,6565],{"class":292},[66,6583,6568],{"class":130},[66,6585,6447],{"class":72},[66,6587,6588],{"class":130},"()?.",[66,6590,5464],{"class":72},[66,6592,302],{"class":130},[66,6594,6461],{"class":292},[66,6596,474],{"class":130},[66,6598,6466],{"class":292},[66,6600,308],{"class":130},[66,6602,6603],{"class":68,"line":210},[66,6604,4007],{"class":130},[66,6606,6607],{"class":68,"line":220},[66,6608,845],{"class":130},[66,6610,6611],{"class":68,"line":227},[66,6612,851],{"class":130},[66,6614,6615,6617,6619],{"class":68,"line":240},[66,6616,213],{"class":130},[66,6618,232],{"class":134},[66,6620,138],{"class":130},[15,6622,6623],{},[24,6624,1116],{},[57,6626,6628],{"className":1174,"code":6627,"language":1176,"meta":62,"style":62},"import { useRef } from 'react'\nimport { CyteEditor } from '@cyte-editor\u002Freact'\nimport type { CyteEditorHandle } from '@cyte-editor\u002Freact'\n\nfunction App() {\n  const editorRef = useRef\u003CCyteEditorHandle>(null)\n\n  const doSomething = () => {\n    \u002F\u002F Common methods\n    editorRef.current?.getHTML()\n    \u002F\u002F Full method set\n    editorRef.current?.getEditorManager()?.insertTable(2, 3)\n  }\n\n  return \u003CCyteEditor ref={editorRef} html={content} onChange={({ html }) => setContent(html)} \u002F>\n}\n",[29,6629,6630,6641,6651,6664,6668,6678,6702,6706,6722,6727,6736,6741,6761,6765,6769,6809],{"__ignoreMap":62},[66,6631,6632,6634,6637,6639],{"class":68,"line":69},[66,6633,103],{"class":102},[66,6635,6636],{"class":130}," { useRef } ",[66,6638,248],{"class":102},[66,6640,1190],{"class":76},[66,6642,6643,6645,6647,6649],{"class":68,"line":109},[66,6644,103],{"class":102},[66,6646,259],{"class":130},[66,6648,248],{"class":102},[66,6650,1201],{"class":76},[66,6652,6653,6655,6657,6660,6662],{"class":68,"line":151},[66,6654,103],{"class":102},[66,6656,6376],{"class":102},[66,6658,6659],{"class":130}," { CyteEditorHandle } ",[66,6661,248],{"class":102},[66,6663,1201],{"class":76},[66,6665,6666],{"class":68,"line":160},[66,6667,224],{"emptyLinePlaceholder":223},[66,6669,6670,6673,6676],{"class":68,"line":172},[66,6671,6672],{"class":102},"function",[66,6674,6675],{"class":72}," App",[66,6677,814],{"class":130},[66,6679,6680,6682,6684,6686,6689,6691,6694,6697,6700],{"class":68,"line":183},[66,6681,1236],{"class":102},[66,6683,6394],{"class":292},[66,6685,296],{"class":102},[66,6687,6688],{"class":72}," useRef",[66,6690,131],{"class":130},[66,6692,6693],{"class":72},"CyteEditorHandle",[66,6695,6696],{"class":130},">(",[66,6698,6699],{"class":292},"null",[66,6701,308],{"class":130},[66,6703,6704],{"class":68,"line":194},[66,6705,224],{"emptyLinePlaceholder":223},[66,6707,6708,6710,6713,6715,6718,6720],{"class":68,"line":200},[66,6709,1236],{"class":102},[66,6711,6712],{"class":72}," doSomething",[66,6714,296],{"class":102},[66,6716,6717],{"class":130}," () ",[66,6719,1334],{"class":102},[66,6721,800],{"class":130},[66,6723,6724],{"class":68,"line":210},[66,6725,6726],{"class":1769},"    \u002F\u002F Common methods\n",[66,6728,6729,6732,6734],{"class":68,"line":220},[66,6730,6731],{"class":130},"    editorRef.current?.",[66,6733,2974],{"class":72},[66,6735,2977],{"class":130},[66,6737,6738],{"class":68,"line":227},[66,6739,6740],{"class":1769},"    \u002F\u002F Full method set\n",[66,6742,6743,6745,6747,6749,6751,6753,6755,6757,6759],{"class":68,"line":240},[66,6744,6731],{"class":130},[66,6746,6447],{"class":72},[66,6748,6588],{"class":130},[66,6750,5464],{"class":72},[66,6752,302],{"class":130},[66,6754,6461],{"class":292},[66,6756,474],{"class":130},[66,6758,6466],{"class":292},[66,6760,308],{"class":130},[66,6762,6763],{"class":68,"line":254},[66,6764,2068],{"class":130},[66,6766,6767],{"class":68,"line":267},[66,6768,224],{"emptyLinePlaceholder":223},[66,6770,6771,6773,6776,6778,6780,6782,6785,6787,6789,6792,6794,6796,6798,6800,6802,6804,6806],{"class":68,"line":274},[66,6772,1269],{"class":102},[66,6774,6775],{"class":130}," \u003C",[66,6777,339],{"class":292},[66,6779,299],{"class":72},[66,6781,166],{"class":102},[66,6783,6784],{"class":130},"{editorRef} ",[66,6786,348],{"class":72},[66,6788,166],{"class":102},[66,6790,6791],{"class":130},"{content} ",[66,6793,1122],{"class":72},[66,6795,166],{"class":102},[66,6797,1325],{"class":130},[66,6799,348],{"class":1328},[66,6801,1331],{"class":130},[66,6803,1334],{"class":102},[66,6805,1337],{"class":72},[66,6807,6808],{"class":130},"(html)} \u002F>\n",[66,6810,6811],{"class":68,"line":281},[66,6812,851],{"class":130},[15,6814,6815],{},[24,6816,1724],{},[57,6818,6820],{"className":1797,"code":6819,"language":1799,"meta":62,"style":62},"import { ViewChild } from '@angular\u002Fcore'\nimport { CyteEditorComponent } from '@cyte-editor\u002Fangular'\n\nexport class AppComponent {\n  @ViewChild('editor') editor!: CyteEditorComponent\n\n  doSomething() {\n    \u002F\u002F Common methods\n    this.editor.getHTML()\n    \u002F\u002F Full method set\n    this.editor.getEditorManager()?.insertTable(2, 3)\n  }\n}\n\u002F\u002F Template: \u003Ccyte-editor #editor [html]=\"content\" (onChange)=\"content = $event.html\">\u003C\u002Fcyte-editor>\n",[29,6821,6822,6833,6843,6847,6857,6881,6885,6892,6896,6907,6911,6933,6937,6941],{"__ignoreMap":62},[66,6823,6824,6826,6829,6831],{"class":68,"line":69},[66,6825,103],{"class":102},[66,6827,6828],{"class":130}," { ViewChild } ",[66,6830,248],{"class":102},[66,6832,1818],{"class":76},[66,6834,6835,6837,6839,6841],{"class":68,"line":109},[66,6836,103],{"class":102},[66,6838,1825],{"class":130},[66,6840,248],{"class":102},[66,6842,1830],{"class":76},[66,6844,6845],{"class":68,"line":151},[66,6846,224],{"emptyLinePlaceholder":223},[66,6848,6849,6851,6853,6855],{"class":68,"line":160},[66,6850,794],{"class":102},[66,6852,1867],{"class":102},[66,6854,2009],{"class":72},[66,6856,800],{"class":130},[66,6858,6859,6861,6864,6866,6869,6872,6875,6878],{"class":68,"line":172},[66,6860,994],{"class":130},[66,6862,6863],{"class":72},"ViewChild",[66,6865,302],{"class":130},[66,6867,6868],{"class":76},"'editor'",[66,6870,6871],{"class":130},") ",[66,6873,6874],{"class":1328},"editor",[66,6876,6877],{"class":102},"!:",[66,6879,6880],{"class":72}," CyteEditorComponent\n",[66,6882,6883],{"class":68,"line":183},[66,6884,224],{"emptyLinePlaceholder":223},[66,6886,6887,6890],{"class":68,"line":194},[66,6888,6889],{"class":72},"  doSomething",[66,6891,814],{"class":130},[66,6893,6894],{"class":68,"line":200},[66,6895,6726],{"class":1769},[66,6897,6898,6900,6903,6905],{"class":68,"line":210},[66,6899,2055],{"class":292},[66,6901,6902],{"class":130},".editor.",[66,6904,2974],{"class":72},[66,6906,2977],{"class":130},[66,6908,6909],{"class":68,"line":220},[66,6910,6740],{"class":1769},[66,6912,6913,6915,6917,6919,6921,6923,6925,6927,6929,6931],{"class":68,"line":227},[66,6914,2055],{"class":292},[66,6916,6902],{"class":130},[66,6918,6447],{"class":72},[66,6920,6588],{"class":130},[66,6922,5464],{"class":72},[66,6924,302],{"class":130},[66,6926,6461],{"class":292},[66,6928,474],{"class":130},[66,6930,6466],{"class":292},[66,6932,308],{"class":130},[66,6934,6935],{"class":68,"line":240},[66,6936,2068],{"class":130},[66,6938,6939],{"class":68,"line":254},[66,6940,851],{"class":130},[66,6942,6943],{"class":68,"line":267},[66,6944,6945],{"class":1769},"\u002F\u002F Template: \u003Ccyte-editor #editor [html]=\"content\" (onChange)=\"content = $event.html\">\u003C\u002Fcyte-editor>\n",[15,6947,6948],{},[24,6949,2321],{},[57,6951,6953],{"className":2375,"code":6952,"language":2320,"meta":62,"style":62},"\u003Cscript>\n  import { CyteEditor } from '@cyte-editor\u002Fsvelte'\n  import type { CyteEditorApi } from '@cyte-editor\u002Fsvelte'\n\n  let editor: CyteEditorApi\n\n  function doSomething() {\n    \u002F\u002F Common methods\n    editor.getHTML()\n    \u002F\u002F Full method set\n    editor.getEditorManager()?.insertTable(2, 3)\n  }\n\u003C\u002Fscript>\n\n\u003CCyteEditor bind:this={editor} html={content} onChange={(e) => (content = e.html)} \u002F>\n",[29,6954,6955,6959,6963,6968,6972,6977,6981,6986,6990,6995,6999,7004,7008,7012,7016],{"__ignoreMap":62},[66,6956,6957],{"class":68,"line":69},[66,6958,2383],{},[66,6960,6961],{"class":68,"line":109},[66,6962,2388],{},[66,6964,6965],{"class":68,"line":151},[66,6966,6967],{},"  import type { CyteEditorApi } from '@cyte-editor\u002Fsvelte'\n",[66,6969,6970],{"class":68,"line":160},[66,6971,224],{"emptyLinePlaceholder":223},[66,6973,6974],{"class":68,"line":172},[66,6975,6976],{},"  let editor: CyteEditorApi\n",[66,6978,6979],{"class":68,"line":183},[66,6980,224],{"emptyLinePlaceholder":223},[66,6982,6983],{"class":68,"line":194},[66,6984,6985],{},"  function doSomething() {\n",[66,6987,6988],{"class":68,"line":200},[66,6989,6726],{},[66,6991,6992],{"class":68,"line":210},[66,6993,6994],{},"    editor.getHTML()\n",[66,6996,6997],{"class":68,"line":220},[66,6998,6740],{},[66,7000,7001],{"class":68,"line":227},[66,7002,7003],{},"    editor.getEditorManager()?.insertTable(2, 3)\n",[66,7005,7006],{"class":68,"line":240},[66,7007,2068],{},[66,7009,7010],{"class":68,"line":254},[66,7011,2412],{},[66,7013,7014],{"class":68,"line":267},[66,7015,224],{"emptyLinePlaceholder":223},[66,7017,7018],{"class":68,"line":274},[66,7019,7020],{},"\u003CCyteEditor bind:this={editor} html={content} onChange={(e) => (content = e.html)} \u002F>\n",[19,7022,7023],{},[15,7024,7025,7026,7028,7029,7031,7032,7034,7035,7037],{},"In the examples below, ",[29,7027,1569],{}," refers to the ",[29,7030,2696],{}," instance obtained in the previous step (the return value of ",[29,7033,6281],{}," for Vanilla, or ",[29,7036,6297],{}," for other frameworks).",[52,7039,7041],{"id":7040},"content-operations","Content operations",[3067,7043,7044,7056],{},[3070,7045,7046],{},[3073,7047,7048,7051,7054],{},[3076,7049,7050],{},"Method",[3076,7052,7053],{},"Returns",[3076,7055,4370],{},[3087,7057,7058,7071,7086,7100,7114,7131,7145,7159,7173],{},[3073,7059,7060,7064,7068],{},[3092,7061,7062],{},[29,7063,3208],{},[3092,7065,7066],{},[29,7067,4477],{},[3092,7069,7070],{},"Get the editor content as an HTML string. Useful for saving content to a backend, rendering to a page, or copying to the clipboard.",[3073,7072,7073,7078,7083],{},[3092,7074,7075],{},[29,7076,7077],{},"getJSON()",[3092,7079,7080],{},[29,7081,7082],{},"JSONContent",[3092,7084,7085],{},"Get the editor content as JSON data. Useful for serializing content for storage or transferring between editor instances, preserving all formatting and marks.",[3073,7087,7088,7093,7097],{},[3092,7089,7090],{},[29,7091,7092],{},"getText()",[3092,7094,7095],{},[29,7096,4477],{},[3092,7098,7099],{},"Get the editor content as plain text, without any HTML tags or formatting marks. Useful for word counting, search indexing, or plain-text export.",[3073,7101,7102,7107,7111],{},[3092,7103,7104],{},[29,7105,7106],{},"setContent(html)",[3092,7108,7109],{},[29,7110,5774],{},[3092,7112,7113],{},"Replace the entire editor content with an HTML string. Useful for initializing the editor, resetting content, or loading data from a backend. The cursor moves to the beginning of the document after calling.",[3073,7115,7116,7121,7125],{},[3092,7117,7118],{},[29,7119,7120],{},"setJSON(json)",[3092,7122,7123],{},[29,7124,5774],{},[3092,7126,7127,7128,7130],{},"Replace the entire editor content with JSON data. Useful for restoring content previously serialized via ",[29,7129,7077],{},", preserving all formatting and marks.",[3073,7132,7133,7138,7142],{},[3092,7134,7135],{},[29,7136,7137],{},"insertHTML(html)",[3092,7139,7140],{},[29,7141,5774],{},[3092,7143,7144],{},"Insert an HTML fragment at the current cursor position without replacing existing content. Useful for template insertion, drag-and-drop content, or appending HTML from an external source.",[3073,7146,7147,7152,7156],{},[3092,7148,7149],{},[29,7150,7151],{},"insertText(text)",[3092,7153,7154],{},[29,7155,5774],{},[3092,7157,7158],{},"Insert plain text at the current cursor position. The inserted content carries no formatting, useful for pasting unformatted text or programmatic input.",[3073,7160,7161,7166,7170],{},[3092,7162,7163],{},[29,7164,7165],{},"isEmpty()",[3092,7167,7168],{},[29,7169,4453],{},[3092,7171,7172],{},"Check whether the editor has no content at all. Useful for validating required fields before form submission, or controlling the disabled state of a submit button.",[3073,7174,7175,7180,7184],{},[3092,7176,7177],{},[29,7178,7179],{},"clear()",[3092,7181,7182],{},[29,7183,5774],{},[3092,7185,7186],{},"Remove all content from the editor. Useful for form reset or content initialization scenarios.",[57,7188,7190],{"className":93,"code":7189,"language":95,"meta":62,"style":62},"\u002F\u002F Read content\nconst html = manager.getHTML()\nconst json = manager.getJSON()\n\n\u002F\u002F Replace content\nmanager.setContent('\u003Cp>New content\u003C\u002Fp>')\n\n\u002F\u002F Clear\nmanager.clear()\n",[29,7191,7192,7197,7202,7207,7211,7216,7221,7225,7230],{"__ignoreMap":62},[66,7193,7194],{"class":68,"line":69},[66,7195,7196],{},"\u002F\u002F Read content\n",[66,7198,7199],{"class":68,"line":109},[66,7200,7201],{},"const html = manager.getHTML()\n",[66,7203,7204],{"class":68,"line":151},[66,7205,7206],{},"const json = manager.getJSON()\n",[66,7208,7209],{"class":68,"line":160},[66,7210,224],{"emptyLinePlaceholder":223},[66,7212,7213],{"class":68,"line":172},[66,7214,7215],{},"\u002F\u002F Replace content\n",[66,7217,7218],{"class":68,"line":183},[66,7219,7220],{},"manager.setContent('\u003Cp>New content\u003C\u002Fp>')\n",[66,7222,7223],{"class":68,"line":194},[66,7224,224],{"emptyLinePlaceholder":223},[66,7226,7227],{"class":68,"line":200},[66,7228,7229],{},"\u002F\u002F Clear\n",[66,7231,7232],{"class":68,"line":210},[66,7233,7234],{},"manager.clear()\n",[52,7236,7238],{"id":7237},"state-and-focus","State and focus",[3067,7240,7241,7251],{},[3070,7242,7243],{},[3073,7244,7245,7247,7249],{},[3076,7246,7050],{},[3076,7248,7053],{},[3076,7250,4370],{},[3087,7252,7253,7267,7281,7301],{},[3073,7254,7255,7260,7264],{},[3092,7256,7257],{},[29,7258,7259],{},"focus()",[3092,7261,7262],{},[29,7263,5774],{},[3092,7265,7266],{},"Set focus to the editor. Useful for auto-focusing after page load, guiding input after opening a modal, or switching focus back from other UI elements.",[3073,7268,7269,7274,7278],{},[3092,7270,7271],{},[29,7272,7273],{},"blur()",[3092,7275,7276],{},[29,7277,5774],{},[3092,7279,7280],{},"Remove focus from the editor. Useful for triggering auto-save on blur, or actively removing focus when switching to another input area.",[3073,7282,7283,7288,7292],{},[3092,7284,7285],{},[29,7286,7287],{},"setReadonly(value)",[3092,7289,7290],{},[29,7291,5774],{},[3092,7293,7294,7295,7297,7298,7300],{},"Toggle the editor's read-only mode. Pass ",[29,7296,3935],{}," to enter read-only (content is visible but not editable), ",[29,7299,2895],{}," to restore editing. Useful for document preview, review mode, or permission-based access control.",[3073,7302,7303,7308,7312],{},[3092,7304,7305],{},[29,7306,7307],{},"isActive(name, attributes?)",[3092,7309,7310],{},[29,7311,4453],{},[3092,7313,7314,7315,7318,7319,5914,7322,474,7324,474,7326,474,7328,474,7331,474,7334,474,7337,474,7340,474,7342,7344,7345,5914,7348,474,7351,474,7353,474,7355,474,7357,474,7360,474,7363,474,7365,474,7368,474,7371,474,7374,474,7377,474,7380,474,7382,474,7385,474,7388,7391,7392,7395],{},"Check whether the current selection is in a specific format or block element, returning a boolean. ",[29,7316,7317],{},"name"," is a registered format or element name. ",[24,7320,7321],{},"Marks",[29,7323,471],{},[29,7325,477],{},[29,7327,482],{},[29,7329,7330],{},"'strike'",[29,7332,7333],{},"'code'",[29,7335,7336],{},"'link'",[29,7338,7339],{},"'highlight'",[29,7341,4943],{},[29,7343,3739],{},". ",[24,7346,7347],{},"Nodes",[29,7349,7350],{},"'paragraph'",[29,7352,492],{},[29,7354,4994],{},[29,7356,3797],{},[29,7358,7359],{},"'listItem'",[29,7361,7362],{},"'blockquote'",[29,7364,3849],{},[29,7366,7367],{},"'table'",[29,7369,7370],{},"'tableRow'",[29,7372,7373],{},"'tableCell'",[29,7375,7376],{},"'tableHeader'",[29,7378,7379],{},"'image'",[29,7381,3833],{},[29,7383,7384],{},"'horizontalRule'",[29,7386,7387],{},"'taskList'",[29,7389,7390],{},"'taskItem'",". Optional ",[29,7393,7394],{},"attributes"," for precise matching (e.g. specify heading level). Commonly used to sync toolbar button active states.",[57,7397,7399],{"className":93,"code":7398,"language":95,"meta":62,"style":62},"manager.focus()\nmanager.setReadonly(true)   \u002F\u002F Enter readonly\nmanager.setReadonly(false)  \u002F\u002F Exit readonly\n\n\u002F\u002F Check whether the current selection is bold\nmanager.isActive('bold')\n",[29,7400,7401,7406,7411,7416,7420,7425],{"__ignoreMap":62},[66,7402,7403],{"class":68,"line":69},[66,7404,7405],{},"manager.focus()\n",[66,7407,7408],{"class":68,"line":109},[66,7409,7410],{},"manager.setReadonly(true)   \u002F\u002F Enter readonly\n",[66,7412,7413],{"class":68,"line":151},[66,7414,7415],{},"manager.setReadonly(false)  \u002F\u002F Exit readonly\n",[66,7417,7418],{"class":68,"line":160},[66,7419,224],{"emptyLinePlaceholder":223},[66,7421,7422],{"class":68,"line":172},[66,7423,7424],{},"\u002F\u002F Check whether the current selection is bold\n",[66,7426,7427],{"class":68,"line":183},[66,7428,7429],{},"manager.isActive('bold')\n",[52,7431,7433],{"id":7432},"history","History",[3067,7435,7436,7446],{},[3070,7437,7438],{},[3073,7439,7440,7442,7444],{},[3076,7441,7050],{},[3076,7443,7053],{},[3076,7445,4370],{},[3087,7447,7448,7462],{},[3073,7449,7450,7455,7459],{},[3092,7451,7452],{},[29,7453,7454],{},"undo()",[3092,7456,7457],{},[29,7458,5774],{},[3092,7460,7461],{},"Undo the last editing operation. Useful for custom undo button binding or keyboard shortcut handling.",[3073,7463,7464,7469,7473],{},[3092,7465,7466],{},[29,7467,7468],{},"redo()",[3092,7470,7471],{},[29,7472,5774],{},[3092,7474,7475],{},"Redo the last undone operation. Useful for custom redo button binding or keyboard shortcut handling.",[57,7477,7479],{"className":93,"code":7478,"language":95,"meta":62,"style":62},"manager.undo()  \u002F\u002F Undo\nmanager.redo()  \u002F\u002F Redo\n",[29,7480,7481,7486],{"__ignoreMap":62},[66,7482,7483],{"class":68,"line":69},[66,7484,7485],{},"manager.undo()  \u002F\u002F Undo\n",[66,7487,7488],{"class":68,"line":109},[66,7489,7490],{},"manager.redo()  \u002F\u002F Redo\n",[52,7492,7494],{"id":7493},"plugins-commands-and-internal-access","Plugins, commands and internal access",[3067,7496,7497,7507],{},[3070,7498,7499],{},[3073,7500,7501,7503,7505],{},[3076,7502,7050],{},[3076,7504,7053],{},[3076,7506,4370],{},[3087,7508,7509,7524,7538,7573,7587,7602],{},[3073,7510,7511,7516,7521],{},[3092,7512,7513],{},[29,7514,7515],{},"use(plugin)",[3092,7517,7518],{},[29,7519,7520],{},"this",[3092,7522,7523],{},"Register a Pro plugin (e.g. ProExport, ProPaste, ProRevision), returning the instance itself for chaining. The corresponding plugin package must be imported before calling.",[3073,7525,7526,7531,7535],{},[3092,7527,7528],{},[29,7529,7530],{},"registerExtension(ext)",[3092,7532,7533],{},[29,7534,5774],{},[3092,7536,7537],{},"Register an editor extension. Usually called internally by Pro plugins; manual use is only needed when developing custom extensions.",[3073,7539,7540,7545,7549],{},[3092,7541,7542],{},[29,7543,7544],{},"executeCommand(command, ...args)",[3092,7546,7547],{},[29,7548,4453],{},[3092,7550,7551,7552,7555,7556,474,7559,474,7562,7565,7566,474,7569,7572],{},"Execute a registered editor command. ",[29,7553,7554],{},"command"," is the command name in camelCase (e.g. ",[29,7557,7558],{},"'toggleBold'",[29,7560,7561],{},"'toggleItalic'",[29,7563,7564],{},"'toggleHeading'","). Useful for custom toolbar button binding, keyboard shortcut handling, or programmatically triggering edit operations. When a dedicated instance method exists (e.g. ",[29,7567,7568],{},"insertTable()",[29,7570,7571],{},"setTableBorder()","), prefer using it instead.",[3073,7574,7575,7580,7584],{},[3092,7576,7577],{},[29,7578,7579],{},"getConfig()",[3092,7581,7582],{},[29,7583,4349],{},[3092,7585,7586],{},"Get the current editor configuration object. Useful for reading effective config values at runtime, such as locale or height constraints.",[3073,7588,7589,7594,7599],{},[3092,7590,7591],{},[29,7592,7593],{},"getI18n()",[3092,7595,7596],{},[29,7597,7598],{},"I18nManager",[3092,7600,7601],{},"Get the i18n manager instance. Useful for dynamically switching languages or reading the current locale at runtime.",[3073,7603,7604,7609,7614],{},[3092,7605,7606],{},[29,7607,7608],{},"getEditor()",[3092,7610,7611],{},[29,7612,7613],{},"Editor",[3092,7615,7616],{},"Get the underlying editor instance. Useful for advanced scenarios that require direct access to the internal API; not typically needed in normal development.",[57,7618,7620],{"className":93,"code":7619,"language":95,"meta":62,"style":62},"\u002F\u002F Register a Pro plugin at runtime (equivalent to config.plugins at creation)\n\u002F\u002F import { ProExport } from '@cyte-editor\u002Fpro-export'\nmanager.use(ProExport())  \u002F\u002F Import the plugin first\n\n\u002F\u002F Execute an editor command\nmanager.executeCommand('toggleBold')\n\n\u002F\u002F Get the underlying editor instance and current config\nconst editor = manager.getEditor()\nconst config = manager.getConfig()\n",[29,7621,7622,7627,7632,7637,7641,7646,7651,7655,7660,7665],{"__ignoreMap":62},[66,7623,7624],{"class":68,"line":69},[66,7625,7626],{},"\u002F\u002F Register a Pro plugin at runtime (equivalent to config.plugins at creation)\n",[66,7628,7629],{"class":68,"line":109},[66,7630,7631],{},"\u002F\u002F import { ProExport } from '@cyte-editor\u002Fpro-export'\n",[66,7633,7634],{"class":68,"line":151},[66,7635,7636],{},"manager.use(ProExport())  \u002F\u002F Import the plugin first\n",[66,7638,7639],{"class":68,"line":160},[66,7640,224],{"emptyLinePlaceholder":223},[66,7642,7643],{"class":68,"line":172},[66,7644,7645],{},"\u002F\u002F Execute an editor command\n",[66,7647,7648],{"class":68,"line":183},[66,7649,7650],{},"manager.executeCommand('toggleBold')\n",[66,7652,7653],{"class":68,"line":194},[66,7654,224],{"emptyLinePlaceholder":223},[66,7656,7657],{"class":68,"line":200},[66,7658,7659],{},"\u002F\u002F Get the underlying editor instance and current config\n",[66,7661,7662],{"class":68,"line":210},[66,7663,7664],{},"const editor = manager.getEditor()\n",[66,7666,7667],{"class":68,"line":220},[66,7668,7669],{},"const config = manager.getConfig()\n",[52,7671,7673],{"id":7672},"tables","Tables",[3067,7675,7676,7686],{},[3070,7677,7678],{},[3073,7679,7680,7682,7684],{},[3076,7681,7050],{},[3076,7683,7053],{},[3076,7685,4370],{},[3087,7687,7688,7702,7716,7730,7744,7758,7772,7786,7800,7814,7828,7898],{},[3073,7689,7690,7695,7699],{},[3092,7691,7692],{},[29,7693,7694],{},"insertTable(rows?, cols?, withHeaderRow?)",[3092,7696,7697],{},[29,7698,5774],{},[3092,7700,7701],{},"Insert a table at the cursor position. Optional parameters specify the number of rows, columns, and whether to include a header row; defaults to a 3×3 table with a header row.",[3073,7703,7704,7709,7713],{},[3092,7705,7706],{},[29,7707,7708],{},"addTableRowBefore()",[3092,7710,7711],{},[29,7712,5774],{},[3092,7714,7715],{},"Insert a new row above the current cursor row.",[3073,7717,7718,7723,7727],{},[3092,7719,7720],{},[29,7721,7722],{},"addTableRowAfter()",[3092,7724,7725],{},[29,7726,5774],{},[3092,7728,7729],{},"Insert a new row below the current cursor row.",[3073,7731,7732,7737,7741],{},[3092,7733,7734],{},[29,7735,7736],{},"addTableColumnBefore()",[3092,7738,7739],{},[29,7740,5774],{},[3092,7742,7743],{},"Insert a new column to the left of the current cursor column.",[3073,7745,7746,7751,7755],{},[3092,7747,7748],{},[29,7749,7750],{},"addTableColumnAfter()",[3092,7752,7753],{},[29,7754,5774],{},[3092,7756,7757],{},"Insert a new column to the right of the current cursor column.",[3073,7759,7760,7765,7769],{},[3092,7761,7762],{},[29,7763,7764],{},"deleteTableRow()",[3092,7766,7767],{},[29,7768,5774],{},[3092,7770,7771],{},"Delete the entire row where the cursor is located.",[3073,7773,7774,7779,7783],{},[3092,7775,7776],{},[29,7777,7778],{},"deleteTableColumn()",[3092,7780,7781],{},[29,7782,5774],{},[3092,7784,7785],{},"Delete the entire column where the cursor is located.",[3073,7787,7788,7793,7797],{},[3092,7789,7790],{},[29,7791,7792],{},"deleteTable()",[3092,7794,7795],{},[29,7796,5774],{},[3092,7798,7799],{},"Delete the entire table where the cursor is located, including all rows, columns, and cell content.",[3073,7801,7802,7807,7811],{},[3092,7803,7804],{},[29,7805,7806],{},"mergeCells()",[3092,7808,7809],{},[29,7810,5774],{},[3092,7812,7813],{},"Merge the currently selected cells into one. Requires selecting two or more adjacent cells before calling.",[3073,7815,7816,7821,7825],{},[3092,7817,7818],{},[29,7819,7820],{},"splitCell()",[3092,7822,7823],{},[29,7824,5774],{},[3092,7826,7827],{},"Split a previously merged cell back into its original individual cells.",[3073,7829,7830,7835,7839],{},[3092,7831,7832],{},[29,7833,7834],{},"setTableBorder({ color?, width?, style? })",[3092,7836,7837],{},[29,7838,5774],{},[3092,7840,7841,7842,7844,7845,7848,7849,7852,7853,7856,7857,7848,7860,7852,7862,7864,7865,474,7868,474,7871,474,7874,474,7877,474,7880,474,7883,474,7886,474,7889,474,7892,7895,7896,3545],{},"Set the border style for all tables in the document. ",[29,7843,5323],{}," is a CSS color value (e.g. ",[29,7846,7847],{},"'#ccc'","), defaulting to ",[29,7850,7851],{},"'#d9d9d9'","; ",[29,7854,7855],{},"width"," is a CSS width string (e.g. ",[29,7858,7859],{},"'1px'",[29,7861,7859],{},[29,7863,3431],{}," is the border line style, supporting ",[29,7866,7867],{},"'solid'",[29,7869,7870],{},"'dashed'",[29,7872,7873],{},"'dotted'",[29,7875,7876],{},"'double'",[29,7878,7879],{},"'groove'",[29,7881,7882],{},"'ridge'",[29,7884,7885],{},"'inset'",[29,7887,7888],{},"'outset'",[29,7890,7891],{},"'none'",[29,7893,7894],{},"'hidden'",", defaulting to ",[29,7897,7867],{},[3073,7899,7900,7905,7909],{},[3092,7901,7902],{},[29,7903,7904],{},"setCellTextAlign(align)",[3092,7906,7907],{},[29,7908,5774],{},[3092,7910,7911,7912,474,7915,474,7918,7921,7922,3545],{},"Set the text alignment of the selected cells. Accepts ",[29,7913,7914],{},"'left'",[29,7916,7917],{},"'center'",[29,7919,7920],{},"'right'",", or ",[29,7923,7924],{},"'justify'",[57,7926,7928],{"className":93,"code":7927,"language":95,"meta":62,"style":62},"\u002F\u002F Insert a 3×4 table with header row at cursor\nmanager.insertTable(3, 4, true)\n\n\u002F\u002F Set table border\nmanager.setTableBorder({ color: '#ccc', width: 1 })\n",[29,7929,7930,7935,7940,7944,7949],{"__ignoreMap":62},[66,7931,7932],{"class":68,"line":69},[66,7933,7934],{},"\u002F\u002F Insert a 3×4 table with header row at cursor\n",[66,7936,7937],{"class":68,"line":109},[66,7938,7939],{},"manager.insertTable(3, 4, true)\n",[66,7941,7942],{"class":68,"line":151},[66,7943,224],{"emptyLinePlaceholder":223},[66,7945,7946],{"class":68,"line":160},[66,7947,7948],{},"\u002F\u002F Set table border\n",[66,7950,7951],{"class":68,"line":172},[66,7952,7953],{},"manager.setTableBorder({ color: '#ccc', width: 1 })\n",[52,7955,7957],{"id":7956},"media-insertion","Media insertion",[3067,7959,7960,7970],{},[3070,7961,7962],{},[3073,7963,7964,7966,7968],{},[3076,7965,7050],{},[3076,7967,7053],{},[3076,7969,4370],{},[3087,7971,7972,7986],{},[3073,7973,7974,7979,7983],{},[3092,7975,7976],{},[29,7977,7978],{},"insertImage(src, alt?, title?)",[3092,7980,7981],{},[29,7982,5774],{},[3092,7984,7985],{},"Insert an image at the cursor position. The first parameter is the image URL (required); the next two are alt text and hover tooltip (optional).",[3073,7987,7988,7993,7997],{},[3092,7989,7990],{},[29,7991,7992],{},"insertVideo(src, width?, height?)",[3092,7994,7995],{},[29,7996,5774],{},[3092,7998,7999],{},"Insert a video at the cursor position. The first parameter is the video URL (required); the next two are width and height in pixels (optional).",[57,8001,8003],{"className":93,"code":8002,"language":95,"meta":62,"style":62},"manager.insertImage('\u002Fassets\u002Flogo.png', 'Logo', 'Company logo')\nmanager.insertVideo('\u002Fassets\u002Fdemo.mp4', 640, 360)\n",[29,8004,8005,8010],{"__ignoreMap":62},[66,8006,8007],{"class":68,"line":69},[66,8008,8009],{},"manager.insertImage('\u002Fassets\u002Flogo.png', 'Logo', 'Company logo')\n",[66,8011,8012],{"class":68,"line":109},[66,8013,8014],{},"manager.insertVideo('\u002Fassets\u002Fdemo.mp4', 640, 360)\n",[52,8016,8018],{"id":8017},"import-and-export","Import and export",[3067,8020,8021,8031],{},[3070,8022,8023],{},[3073,8024,8025,8027,8029],{},[3076,8026,7050],{},[3076,8028,7053],{},[3076,8030,4370],{},[3087,8032,8033,8047,8066,8083,8097,8116,8130,8154,8171,8188],{},[3073,8034,8035,8040,8044],{},[3092,8036,8037],{},[29,8038,8039],{},"parseHTML(html)",[3092,8041,8042],{},[29,8043,7082],{},[3092,8045,8046],{},"Parse an HTML string into JSON data without modifying the editor content. Useful for preprocessing, content validation, or programmatic analysis of external HTML.",[3073,8048,8049,8054,8059],{},[3092,8050,8051],{},[29,8052,8053],{},"importHTMLFile(file)",[3092,8055,8056],{},[29,8057,8058],{},"Promise\u003Cvoid>",[3092,8060,8061,8062,8065],{},"Import an HTML file (File object), asynchronous. Useful when users upload ",[29,8063,8064],{},".html"," files via a file picker.",[3073,8067,8068,8073,8077],{},[3092,8069,8070],{},[29,8071,8072],{},"importMarkdownFile(file)",[3092,8074,8075],{},[29,8076,8058],{},[3092,8078,8079,8080,8065],{},"Import a Markdown file (File object), asynchronous. Useful when users upload ",[29,8081,8082],{},".md",[3073,8084,8085,8090,8094],{},[3092,8086,8087],{},[29,8088,8089],{},"importMarkdown(markdown)",[3092,8091,8092],{},[29,8093,5774],{},[3092,8095,8096],{},"Import a Markdown string, synchronous. Useful for loading Markdown content directly from an API or local variable.",[3073,8098,8099,8104,8109],{},[3092,8100,8101],{},[29,8102,8103],{},"importWordFile(file)",[3092,8105,8106],{},[29,8107,8108],{},"Promise\u003C{ messages: string[] }>",[3092,8110,8111,8112,8115],{},"Import a Word (.docx) file (File object), asynchronous. Returns a ",[29,8113,8114],{},"{ messages }"," object containing warnings or hints from the import process (e.g. unsupported formatting). Commonly used for document migration.",[3073,8117,8118,8123,8127],{},[3092,8119,8120],{},[29,8121,8122],{},"exportMarkdown()",[3092,8124,8125],{},[29,8126,4477],{},[3092,8128,8129],{},"Export the editor content as a Markdown string. Useful for sending content via API, storing in a database, or using in another Markdown system.",[3073,8131,8132,8137,8141],{},[3092,8133,8134],{},[29,8135,8136],{},"exportHTMLDocument(title?)",[3092,8138,8139],{},[29,8140,4477],{},[3092,8142,8143,8144,474,8147,474,8150,8153],{},"Export as a full HTML document string (including ",[29,8145,8146],{},"\u003Chtml>",[29,8148,8149],{},"\u003Chead>",[29,8151,8152],{},"\u003Cbody>"," tags). The optional parameter specifies the document title. Useful for print preview or saving as an HTML file.",[3073,8155,8156,8161,8165],{},[3092,8157,8158],{},[29,8159,8160],{},"exportWordFile(filename?)",[3092,8162,8163],{},[29,8164,8058],{},[3092,8166,8167,8168,3545],{},"Export the editor content as a Word (.docx) file and trigger a browser download. The optional parameter specifies the filename, defaulting to ",[29,8169,8170],{},"document.docx",[3073,8172,8173,8178,8182],{},[3092,8174,8175],{},[29,8176,8177],{},"exportMarkdownFile(filename?)",[3092,8179,8180],{},[29,8181,8058],{},[3092,8183,8184,8185,3545],{},"Export the editor content as a Markdown file and trigger a browser download. The optional parameter specifies the filename, defaulting to ",[29,8186,8187],{},"document.md",[3073,8189,8190,8195,8199],{},[3092,8191,8192],{},[29,8193,8194],{},"getDocumentTitle()",[3092,8196,8197],{},[29,8198,4477],{},[3092,8200,8201],{},"Automatically extract the document title from the current editor content (typically the text of the first heading node). Useful for auto-generating filenames or page titles.",[57,8203,8205],{"className":93,"code":8204,"language":95,"meta":62,"style":62},"\u002F\u002F Export as Word file (async, requires ProExport plugin)\nawait manager.exportWordFile('document.docx')\n\n\u002F\u002F Export as Markdown string (sync)\nconst md = manager.exportMarkdown()\n\n\u002F\u002F Extract document title\nconst title = manager.getDocumentTitle()\n\n\u002F\u002F Import a Markdown file (async)\nconst file = new File(['# Title\\nBody'], 'note.md', { type: 'text\u002Fmarkdown' })\nawait manager.importMarkdownFile(file)\n",[29,8206,8207,8212,8217,8221,8226,8231,8235,8240,8245,8249,8254,8259],{"__ignoreMap":62},[66,8208,8209],{"class":68,"line":69},[66,8210,8211],{},"\u002F\u002F Export as Word file (async, requires ProExport plugin)\n",[66,8213,8214],{"class":68,"line":109},[66,8215,8216],{},"await manager.exportWordFile('document.docx')\n",[66,8218,8219],{"class":68,"line":151},[66,8220,224],{"emptyLinePlaceholder":223},[66,8222,8223],{"class":68,"line":160},[66,8224,8225],{},"\u002F\u002F Export as Markdown string (sync)\n",[66,8227,8228],{"class":68,"line":172},[66,8229,8230],{},"const md = manager.exportMarkdown()\n",[66,8232,8233],{"class":68,"line":183},[66,8234,224],{"emptyLinePlaceholder":223},[66,8236,8237],{"class":68,"line":194},[66,8238,8239],{},"\u002F\u002F Extract document title\n",[66,8241,8242],{"class":68,"line":200},[66,8243,8244],{},"const title = manager.getDocumentTitle()\n",[66,8246,8247],{"class":68,"line":210},[66,8248,224],{"emptyLinePlaceholder":223},[66,8250,8251],{"class":68,"line":220},[66,8252,8253],{},"\u002F\u002F Import a Markdown file (async)\n",[66,8255,8256],{"class":68,"line":227},[66,8257,8258],{},"const file = new File(['# Title\\nBody'], 'note.md', { type: 'text\u002Fmarkdown' })\n",[66,8260,8261],{"class":68,"line":240},[66,8262,8263],{},"await manager.importMarkdownFile(file)\n",[52,8265,8267],{"id":8266},"version-snapshots-pro","Version snapshots (Pro)",[3067,8269,8270,8280],{},[3070,8271,8272],{},[3073,8273,8274,8276,8278],{},[3076,8275,7050],{},[3076,8277,7053],{},[3076,8279,4370],{},[3087,8281,8282,8296,8311,8333,8347,8361,8377,8392,8411],{},[3073,8283,8284,8289,8293],{},[3092,8285,8286],{},[29,8287,8288],{},"enableVersionSnapshot(config?)",[3092,8290,8291],{},[29,8292,5774],{},[3092,8294,8295],{},"Enable version snapshot management (requires ProRevision plugin). Must be called once before first use; optional parameters configure max snapshot count and other options.",[3073,8297,8298,8303,8308],{},[3092,8299,8300],{},[29,8301,8302],{},"listVersions()",[3092,8304,8305],{},[29,8306,8307],{},"Promise\u003CVersionSnapshot[]>",[3092,8309,8310],{},"Get all snapshots, ordered newest first. Useful for rendering a version history panel.",[3073,8312,8313,8318,8323],{},[3092,8314,8315],{},[29,8316,8317],{},"getVersion(id)",[3092,8319,8320],{},[29,8321,8322],{},"Promise\u003CVersionSnapshot | null>",[3092,8324,8325,8326,8329,8330,8332],{},"Get a specific snapshot by ID, returning a ",[29,8327,8328],{},"VersionSnapshot"," object or ",[29,8331,6699],{}," if not found. Useful for previewing historical version content.",[3073,8334,8335,8340,8344],{},[3092,8336,8337],{},[29,8338,8339],{},"deleteVersion(id)",[3092,8341,8342],{},[29,8343,8058],{},[3092,8345,8346],{},"Delete a snapshot by ID. Useful when users want to clean up no longer needed historical versions.",[3073,8348,8349,8354,8358],{},[3092,8350,8351],{},[29,8352,8353],{},"addSnapshot(content, label?)",[3092,8355,8356],{},[29,8357,8322],{},[3092,8359,8360],{},"Import an external snapshot (JSON data). Useful for injecting a previously saved version on page load, enabling cross-session version recovery.",[3073,8362,8363,8368,8372],{},[3092,8364,8365],{},[29,8366,8367],{},"createSnapshot(label?)",[3092,8369,8370],{},[29,8371,8322],{},[3092,8373,8374,8375,3545],{},"Create a snapshot based on the current editor content. Useful when users click a \"Save Version\" button. Asynchronous, returns the created snapshot or ",[29,8376,6699],{},[3073,8378,8379,8384,8389],{},[3092,8380,8381],{},[29,8382,8383],{},"hasSnapshots()",[3092,8385,8386],{},[29,8387,8388],{},"Promise\u003Cboolean>",[3092,8390,8391],{},"Check whether any snapshots exist. Useful for deciding whether to display a \"Version History\" entry in the UI.",[3073,8393,8394,8399,8404],{},[3092,8395,8396],{},[29,8397,8398],{},"compareWithVersion(versionId)",[3092,8400,8401],{},[29,8402,8403],{},"Promise\u003CDiffResult | null>",[3092,8405,8406,8407,8410],{},"Compare the current editor content with a specific snapshot, returning a ",[29,8408,8409],{},"DiffResult"," object. Useful for showing \"changes since last save\".",[3073,8412,8413,8418,8422],{},[3092,8414,8415],{},[29,8416,8417],{},"compareVersions(oldVersionId, newVersionId)",[3092,8419,8420],{},[29,8421,8403],{},[3092,8423,8424,8425,8427],{},"Compare two snapshots against each other, returning a ",[29,8426,8409],{}," object. Useful for browsing version history and viewing changes between any two versions.",[57,8429,8431],{"className":93,"code":8430,"language":95,"meta":62,"style":62},"\u002F\u002F Create a snapshot manually (async)\nconst snap = await manager.createSnapshot('v1.0')\n\n\u002F\u002F Compare current content with a snapshot (async)\nconst diff = await manager.compareWithVersion(snap.id)\n\n\u002F\u002F Compare two snapshots (async)\nconst diff2 = await manager.compareVersions(oldId, newId)\n",[29,8432,8433,8438,8443,8447,8452,8457,8461,8466],{"__ignoreMap":62},[66,8434,8435],{"class":68,"line":69},[66,8436,8437],{},"\u002F\u002F Create a snapshot manually (async)\n",[66,8439,8440],{"class":68,"line":109},[66,8441,8442],{},"const snap = await manager.createSnapshot('v1.0')\n",[66,8444,8445],{"class":68,"line":151},[66,8446,224],{"emptyLinePlaceholder":223},[66,8448,8449],{"class":68,"line":160},[66,8450,8451],{},"\u002F\u002F Compare current content with a snapshot (async)\n",[66,8453,8454],{"class":68,"line":172},[66,8455,8456],{},"const diff = await manager.compareWithVersion(snap.id)\n",[66,8458,8459],{"class":68,"line":183},[66,8460,224],{"emptyLinePlaceholder":223},[66,8462,8463],{"class":68,"line":194},[66,8464,8465],{},"\u002F\u002F Compare two snapshots (async)\n",[66,8467,8468],{"class":68,"line":200},[66,8469,8470],{},"const diff2 = await manager.compareVersions(oldId, newId)\n",[52,8472,8474],{"id":8473},"license-and-lifecycle","License and lifecycle",[3067,8476,8477,8487],{},[3070,8478,8479],{},[3073,8480,8481,8483,8485],{},[3076,8482,7050],{},[3076,8484,7053],{},[3076,8486,4370],{},[3087,8488,8489,8503],{},[3073,8490,8491,8496,8500],{},[3092,8492,8493],{},[29,8494,8495],{},"updateLicense(opts)",[3092,8497,8498],{},[29,8499,5774],{},[3092,8501,8502],{},"Update the license configuration at runtime and re-verify. Useful when users upgrade their plan (e.g. Free to Pro) within the app, enabling new features without a page refresh.",[3073,8504,8505,8510,8514],{},[3092,8506,8507],{},[29,8508,8509],{},"destroy()",[3092,8511,8512],{},[29,8513,5774],{},[3092,8515,8516],{},"Clean up editor resources and destroy the instance. Should be called during component unmounting in single-page applications to prevent memory leaks and lingering event listeners.",[57,8518,8520],{"className":93,"code":8519,"language":95,"meta":62,"style":62},"\u002F\u002F Update license at runtime and re-verify\nmanager.updateLicense({ key: 'new-jwt', appId: 'my-app' })\n\n\u002F\u002F Destroy the instance and release resources\nmanager.destroy()\n",[29,8521,8522,8527,8532,8536,8541],{"__ignoreMap":62},[66,8523,8524],{"class":68,"line":69},[66,8525,8526],{},"\u002F\u002F Update license at runtime and re-verify\n",[66,8528,8529],{"class":68,"line":109},[66,8530,8531],{},"manager.updateLicense({ key: 'new-jwt', appId: 'my-app' })\n",[66,8533,8534],{"class":68,"line":151},[66,8535,224],{"emptyLinePlaceholder":223},[66,8537,8538],{"class":68,"line":160},[66,8539,8540],{},"\u002F\u002F Destroy the instance and release resources\n",[66,8542,8543],{"class":68,"line":172},[66,8544,8545],{},"manager.destroy()\n",[34,8547,8549],{"id":8548},"events","Events",[15,8551,8552,8553,8556,8557,3545],{},"Subscribe with ",[29,8554,8555],{},"manager.on(event, handler)",", unsubscribe with ",[29,8558,8559],{},"manager.off(event, handler)",[3067,8561,8562,8574],{},[3070,8563,8564],{},[3073,8565,8566,8569,8572],{},[3076,8567,8568],{},"Event",[3076,8570,8571],{},"Payload",[3076,8573,4370],{},[3087,8575,8576,8590,8604,8618,8632,8646,8659,8671,8686],{},[3073,8577,8578,8582,8587],{},[3092,8579,8580],{},[29,8581,2814],{},[3092,8583,8584],{},[29,8585,8586],{},"{ editor }",[3092,8588,8589],{},"Editor created.",[3073,8591,8592,8596,8601],{},[3092,8593,8594],{},[29,8595,394],{},[3092,8597,8598],{},[29,8599,8600],{},"{ editor, html }",[3092,8602,8603],{},"Content changed.",[3073,8605,8606,8611,8615],{},[3092,8607,8608],{},[29,8609,8610],{},"selectionUpdate",[3092,8612,8613],{},[29,8614,8586],{},[3092,8616,8617],{},"Selection changed.",[3073,8619,8620,8625,8629],{},[3092,8621,8622],{},[29,8623,8624],{},"transaction",[3092,8626,8627],{},[29,8628,8586],{},[3092,8630,8631],{},"Any transaction applied.",[3073,8633,8634,8638,8643],{},[3092,8635,8636],{},[29,8637,1670],{},[3092,8639,8640],{},[29,8641,8642],{},"{ editor, event }",[3092,8644,8645],{},"Editor focused.",[3073,8647,8648,8652,8656],{},[3092,8649,8650],{},[29,8651,6075],{},[3092,8653,8654],{},[29,8655,8642],{},[3092,8657,8658],{},"Editor blurred.",[3073,8660,8661,8666,8668],{},[3092,8662,8663],{},[29,8664,8665],{},"destroy",[3092,8667,4438],{},[3092,8669,8670],{},"Editor destroyed.",[3073,8672,8673,8678,8683],{},[3092,8674,8675],{},[29,8676,8677],{},"license:verified",[3092,8679,8680],{},[29,8681,8682],{},"LicenseVerifyEvent",[3092,8684,8685],{},"License check complete.",[3073,8687,8688,8693,8698],{},[3092,8689,8690],{},[29,8691,8692],{},"license:error",[3092,8694,8695],{},[29,8696,8697],{},"{ error }",[3092,8699,8700],{},"License check failed.",[3431,8702,8703],{},"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);}html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}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 .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .s4JwU, html code.shiki .s4JwU{--shiki-default:#85E89D}html pre.shiki code .s9osk, html code.shiki .s9osk{--shiki-default:#FFAB70}",{"title":62,"searchDepth":109,"depth":109,"links":8705},[8706,8709,8718,8730],{"id":3499,"depth":109,"text":2696,"children":8707},[8708],{"id":3505,"depth":151,"text":3506},{"id":4348,"depth":109,"text":4349,"children":8710},[8711,8712,8713,8714,8715,8716,8717],{"id":4767,"depth":151,"text":4768},{"id":4884,"depth":151,"text":4885},{"id":5096,"depth":151,"text":4598},{"id":5622,"depth":151,"text":4610},{"id":5797,"depth":151,"text":4630},{"id":5947,"depth":151,"text":4655},{"id":6091,"depth":151,"text":4686},{"id":6261,"depth":109,"text":6262,"children":8719},[8720,8721,8722,8723,8724,8725,8726,8727,8728,8729],{"id":6265,"depth":151,"text":6266},{"id":7040,"depth":151,"text":7041},{"id":7237,"depth":151,"text":7238},{"id":7432,"depth":151,"text":7433},{"id":7493,"depth":151,"text":7494},{"id":7672,"depth":151,"text":7673},{"id":7956,"depth":151,"text":7957},{"id":8017,"depth":151,"text":8018},{"id":8266,"depth":151,"text":8267},{"id":8473,"depth":151,"text":8474},{"id":8548,"depth":109,"text":8549},{},{"title":3393,"description":62},"docs\u002Fapi-reference","55LB1TnLBgLaw3b5JYlBwhwJtS3AFEELsT90eqxtOL0",{"id":8736,"title":3423,"body":8737,"description":8744,"extension":3484,"meta":10030,"navigation":223,"path":3422,"seo":10031,"stem":10032,"__hash__":10033},"docs_en\u002Fdocs\u002Fgetting-started.md",{"type":8,"value":8738,"toc":10016},[8739,8742,8745,8747,8750,8865,8868,8871,8941,8944,8948,8950,9097,9099,9268,9270,9433,9435,9511,9567,9641,9643,9706,9708,9866,9870,9993,9995,10013],[11,8740,3423],{"id":8741},"getting-started",[15,8743,8744],{},"CyteEditor is a modern rich-text editor with enterprise-grade extensibility. This guide helps you integrate it into your project in minutes.",[34,8746,55],{"id":54},[15,8748,8749],{},"Install the core package and the adapter for your framework:",[57,8751,8753],{"className":59,"code":8752,"language":61,"meta":62,"style":62},"# Vue 3\nnpm install @cyte-editor\u002Fcore @cyte-editor\u002Fvue3\n\n# Vue 2\nnpm install @cyte-editor\u002Fcore @cyte-editor\u002Fvue2\n\n# React\nnpm install @cyte-editor\u002Fcore @cyte-editor\u002Freact\n\n# Angular\nnpm install @cyte-editor\u002Fcore @cyte-editor\u002Fangular\n\n# Svelte\nnpm install @cyte-editor\u002Fcore @cyte-editor\u002Fsvelte\n\n# Vanilla JS (no framework)\nnpm install @cyte-editor\u002Fcore @cyte-editor\u002Fvanilla\n",[29,8754,8755,8760,8770,8774,8779,8789,8793,8798,8808,8812,8817,8827,8831,8836,8846,8850,8855],{"__ignoreMap":62},[66,8756,8757],{"class":68,"line":69},[66,8758,8759],{"class":1769},"# Vue 3\n",[66,8761,8762,8764,8766,8768],{"class":68,"line":109},[66,8763,73],{"class":72},[66,8765,77],{"class":76},[66,8767,80],{"class":76},[66,8769,83],{"class":76},[66,8771,8772],{"class":68,"line":151},[66,8773,224],{"emptyLinePlaceholder":223},[66,8775,8776],{"class":68,"line":160},[66,8777,8778],{"class":1769},"# Vue 2\n",[66,8780,8781,8783,8785,8787],{"class":68,"line":172},[66,8782,73],{"class":72},[66,8784,77],{"class":76},[66,8786,80],{"class":76},[66,8788,644],{"class":76},[66,8790,8791],{"class":68,"line":183},[66,8792,224],{"emptyLinePlaceholder":223},[66,8794,8795],{"class":68,"line":194},[66,8796,8797],{"class":1769},"# React\n",[66,8799,8800,8802,8804,8806],{"class":68,"line":200},[66,8801,73],{"class":72},[66,8803,77],{"class":76},[66,8805,80],{"class":76},[66,8807,1147],{"class":76},[66,8809,8810],{"class":68,"line":210},[66,8811,224],{"emptyLinePlaceholder":223},[66,8813,8814],{"class":68,"line":220},[66,8815,8816],{"class":1769},"# Angular\n",[66,8818,8819,8821,8823,8825],{"class":68,"line":227},[66,8820,73],{"class":72},[66,8822,77],{"class":76},[66,8824,80],{"class":76},[66,8826,1751],{"class":76},[66,8828,8829],{"class":68,"line":240},[66,8830,224],{"emptyLinePlaceholder":223},[66,8832,8833],{"class":68,"line":254},[66,8834,8835],{"class":1769},"# Svelte\n",[66,8837,8838,8840,8842,8844],{"class":68,"line":267},[66,8839,73],{"class":72},[66,8841,77],{"class":76},[66,8843,80],{"class":76},[66,8845,2348],{"class":76},[66,8847,8848],{"class":68,"line":274},[66,8849,224],{"emptyLinePlaceholder":223},[66,8851,8852],{"class":68,"line":281},[66,8853,8854],{"class":1769},"# Vanilla JS (no framework)\n",[66,8856,8857,8859,8861,8863],{"class":68,"line":286},[66,8858,73],{"class":72},[66,8860,77],{"class":76},[66,8862,80],{"class":76},[66,8864,2721],{"class":76},[34,8866,8867],{"id":1762},"CSS",[15,8869,8870],{},"Import both the core stylesheet and the stylesheet for your framework adapter in your entry file:",[57,8872,8874],{"className":93,"code":8873,"language":95,"meta":62,"style":62},"import '@cyte-editor\u002Fcore\u002Fstyle.css'\n\n\u002F\u002F Choose the adapter stylesheet for your framework:\nimport '@cyte-editor\u002Fvue3\u002Fstyle.css'    \u002F\u002F Vue 3\n\u002F\u002F import '@cyte-editor\u002Fvue2\u002Fstyle.css'    \u002F\u002F Vue 2\n\u002F\u002F import '@cyte-editor\u002Freact\u002Fstyle.css'   \u002F\u002F React\n\u002F\u002F import '@cyte-editor\u002Fangular\u002Fstyle.css' \u002F\u002F Angular\n\u002F\u002F import '@cyte-editor\u002Fsvelte\u002Fstyle.css'  \u002F\u002F Svelte\n\u002F\u002F import '@cyte-editor\u002Fvanilla\u002Fstyle.css' \u002F\u002F Vanilla JS\n",[29,8875,8876,8882,8886,8891,8901,8909,8917,8925,8933],{"__ignoreMap":62},[66,8877,8878,8880],{"class":68,"line":69},[66,8879,103],{"class":102},[66,8881,106],{"class":76},[66,8883,8884],{"class":68,"line":109},[66,8885,224],{"emptyLinePlaceholder":223},[66,8887,8888],{"class":68,"line":151},[66,8889,8890],{"class":1769},"\u002F\u002F Choose the adapter stylesheet for your framework:\n",[66,8892,8893,8895,8898],{"class":68,"line":160},[66,8894,103],{"class":102},[66,8896,8897],{"class":76}," '@cyte-editor\u002Fvue3\u002Fstyle.css'",[66,8899,8900],{"class":1769},"    \u002F\u002F Vue 3\n",[66,8902,8903,8906],{"class":68,"line":172},[66,8904,8905],{"class":1769},"\u002F\u002F import '@cyte-editor\u002Fvue2\u002Fstyle.css'",[66,8907,8908],{"class":1769},"    \u002F\u002F Vue 2\n",[66,8910,8911,8914],{"class":68,"line":183},[66,8912,8913],{"class":1769},"\u002F\u002F import '@cyte-editor\u002Freact\u002Fstyle.css'",[66,8915,8916],{"class":1769},"   \u002F\u002F React\n",[66,8918,8919,8922],{"class":68,"line":194},[66,8920,8921],{"class":1769},"\u002F\u002F import '@cyte-editor\u002Fangular\u002Fstyle.css'",[66,8923,8924],{"class":1769}," \u002F\u002F Angular\n",[66,8926,8927,8930],{"class":68,"line":200},[66,8928,8929],{"class":1769},"\u002F\u002F import '@cyte-editor\u002Fsvelte\u002Fstyle.css'",[66,8931,8932],{"class":1769},"  \u002F\u002F Svelte\n",[66,8934,8935,8938],{"class":68,"line":210},[66,8936,8937],{"class":1769},"\u002F\u002F import '@cyte-editor\u002Fvanilla\u002Fstyle.css'",[66,8939,8940],{"class":1769}," \u002F\u002F Vanilla JS\n",[15,8942,8943],{},"Each framework adapter ships its own stylesheet that must be imported manually alongside the core stylesheet. After copying, keep the line for your framework and comment out or remove the others.",[34,8945,8947],{"id":8946},"quick-start","Quick Start",[52,8949,37],{"id":36},[57,8951,8953],{"className":121,"code":8952,"language":123,"meta":62,"style":62},"\u003Ctemplate>\n  \u003Cdiv>\n    \u003CCyteEditor\n      v-model:html=\"content\"\n      placeholder=\"Start writing...\"\n      locale=\"en-US\"\n    \u002F>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n\n\u003Cscript setup>\nimport { ref } from 'vue'\nimport { CyteEditor } from '@cyte-editor\u002Fvue3'\nimport '@cyte-editor\u002Fcore\u002Fstyle.css'\nimport '@cyte-editor\u002Fvue3\u002Fstyle.css'\n\nconst content = ref('\u003Cp>Hello CyteEditor!\u003C\u002Fp>')\n\u003C\u002Fscript>\n",[29,8954,8955,8963,8971,8977,8985,8994,9002,9006,9014,9022,9026,9036,9046,9056,9062,9068,9072,9089],{"__ignoreMap":62},[66,8956,8957,8959,8961],{"class":68,"line":69},[66,8958,131],{"class":130},[66,8960,135],{"class":134},[66,8962,138],{"class":130},[66,8964,8965,8967,8969],{"class":68,"line":109},[66,8966,143],{"class":130},[66,8968,146],{"class":134},[66,8970,138],{"class":130},[66,8972,8973,8975],{"class":68,"line":151},[66,8974,154],{"class":130},[66,8976,157],{"class":134},[66,8978,8979,8981,8983],{"class":68,"line":160},[66,8980,163],{"class":72},[66,8982,166],{"class":130},[66,8984,169],{"class":76},[66,8986,8987,8989,8991],{"class":68,"line":172},[66,8988,175],{"class":72},[66,8990,166],{"class":130},[66,8992,8993],{"class":76},"\"Start writing...\"\n",[66,8995,8996,8998,9000],{"class":68,"line":183},[66,8997,186],{"class":72},[66,8999,166],{"class":130},[66,9001,191],{"class":76},[66,9003,9004],{"class":68,"line":194},[66,9005,197],{"class":130},[66,9007,9008,9010,9012],{"class":68,"line":200},[66,9009,203],{"class":130},[66,9011,146],{"class":134},[66,9013,138],{"class":130},[66,9015,9016,9018,9020],{"class":68,"line":210},[66,9017,213],{"class":130},[66,9019,135],{"class":134},[66,9021,138],{"class":130},[66,9023,9024],{"class":68,"line":220},[66,9025,224],{"emptyLinePlaceholder":223},[66,9027,9028,9030,9032,9034],{"class":68,"line":227},[66,9029,131],{"class":130},[66,9031,232],{"class":134},[66,9033,235],{"class":72},[66,9035,138],{"class":130},[66,9037,9038,9040,9042,9044],{"class":68,"line":240},[66,9039,103],{"class":102},[66,9041,245],{"class":130},[66,9043,248],{"class":102},[66,9045,251],{"class":76},[66,9047,9048,9050,9052,9054],{"class":68,"line":254},[66,9049,103],{"class":102},[66,9051,259],{"class":130},[66,9053,248],{"class":102},[66,9055,264],{"class":76},[66,9057,9058,9060],{"class":68,"line":267},[66,9059,103],{"class":102},[66,9061,106],{"class":76},[66,9063,9064,9066],{"class":68,"line":274},[66,9065,103],{"class":102},[66,9067,114],{"class":76},[66,9069,9070],{"class":68,"line":281},[66,9071,224],{"emptyLinePlaceholder":223},[66,9073,9074,9076,9078,9080,9082,9084,9087],{"class":68,"line":286},[66,9075,289],{"class":102},[66,9077,293],{"class":292},[66,9079,296],{"class":102},[66,9081,299],{"class":72},[66,9083,302],{"class":130},[66,9085,9086],{"class":76},"'\u003Cp>Hello CyteEditor!\u003C\u002Fp>'",[66,9088,308],{"class":130},[66,9090,9091,9093,9095],{"class":68,"line":311},[66,9092,213],{"class":130},[66,9094,232],{"class":134},[66,9096,138],{"class":130},[52,9098,609],{"id":608},[57,9100,9102],{"className":121,"code":9101,"language":123,"meta":62,"style":62},"\u003Ctemplate>\n  \u003Cdiv>\n    \u003CCyteEditor\n      :html=\"content\"\n      placeholder=\"Start writing...\"\n      locale=\"en-US\"\n      @update:html=\"content = $event\"\n    \u002F>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n\n\u003Cscript>\nimport { CyteEditor } from '@cyte-editor\u002Fvue2'\nimport '@cyte-editor\u002Fcore\u002Fstyle.css'\nimport '@cyte-editor\u002Fvue2\u002Fstyle.css'\n\nexport default {\n  components: { CyteEditor },\n  data() {\n    return {\n      content: '\u003Cp>Hello CyteEditor!\u003C\u002Fp>',\n    }\n  },\n}\n\u003C\u002Fscript>\n",[29,9103,9104,9112,9120,9126,9134,9142,9150,9158,9162,9170,9178,9182,9190,9200,9206,9212,9216,9224,9228,9234,9240,9248,9252,9256,9260],{"__ignoreMap":62},[66,9105,9106,9108,9110],{"class":68,"line":69},[66,9107,131],{"class":130},[66,9109,135],{"class":134},[66,9111,138],{"class":130},[66,9113,9114,9116,9118],{"class":68,"line":109},[66,9115,143],{"class":130},[66,9117,146],{"class":134},[66,9119,138],{"class":130},[66,9121,9122,9124],{"class":68,"line":151},[66,9123,154],{"class":130},[66,9125,157],{"class":134},[66,9127,9128,9130,9132],{"class":68,"line":160},[66,9129,700],{"class":72},[66,9131,166],{"class":130},[66,9133,169],{"class":76},[66,9135,9136,9138,9140],{"class":68,"line":172},[66,9137,175],{"class":72},[66,9139,166],{"class":130},[66,9141,8993],{"class":76},[66,9143,9144,9146,9148],{"class":68,"line":183},[66,9145,186],{"class":72},[66,9147,166],{"class":130},[66,9149,191],{"class":76},[66,9151,9152,9154,9156],{"class":68,"line":194},[66,9153,725],{"class":72},[66,9155,166],{"class":130},[66,9157,730],{"class":76},[66,9159,9160],{"class":68,"line":200},[66,9161,197],{"class":130},[66,9163,9164,9166,9168],{"class":68,"line":210},[66,9165,203],{"class":130},[66,9167,146],{"class":134},[66,9169,138],{"class":130},[66,9171,9172,9174,9176],{"class":68,"line":220},[66,9173,213],{"class":130},[66,9175,135],{"class":134},[66,9177,138],{"class":130},[66,9179,9180],{"class":68,"line":227},[66,9181,224],{"emptyLinePlaceholder":223},[66,9183,9184,9186,9188],{"class":68,"line":240},[66,9185,131],{"class":130},[66,9187,232],{"class":134},[66,9189,138],{"class":130},[66,9191,9192,9194,9196,9198],{"class":68,"line":254},[66,9193,103],{"class":102},[66,9195,259],{"class":130},[66,9197,248],{"class":102},[66,9199,773],{"class":76},[66,9201,9202,9204],{"class":68,"line":267},[66,9203,103],{"class":102},[66,9205,106],{"class":76},[66,9207,9208,9210],{"class":68,"line":274},[66,9209,103],{"class":102},[66,9211,665],{"class":76},[66,9213,9214],{"class":68,"line":281},[66,9215,224],{"emptyLinePlaceholder":223},[66,9217,9218,9220,9222],{"class":68,"line":286},[66,9219,794],{"class":102},[66,9221,797],{"class":102},[66,9223,800],{"class":130},[66,9225,9226],{"class":68,"line":311},[66,9227,805],{"class":130},[66,9229,9230,9232],{"class":68,"line":808},[66,9231,811],{"class":72},[66,9233,814],{"class":130},[66,9235,9236,9238],{"class":68,"line":817},[66,9237,820],{"class":102},[66,9239,800],{"class":130},[66,9241,9242,9244,9246],{"class":68,"line":825},[66,9243,828],{"class":130},[66,9245,9086],{"class":76},[66,9247,833],{"class":130},[66,9249,9250],{"class":68,"line":836},[66,9251,839],{"class":130},[66,9253,9254],{"class":68,"line":842},[66,9255,845],{"class":130},[66,9257,9258],{"class":68,"line":848},[66,9259,851],{"class":130},[66,9261,9262,9264,9266],{"class":68,"line":854},[66,9263,213],{"class":130},[66,9265,232],{"class":134},[66,9267,138],{"class":130},[52,9269,1116],{"id":1115},[57,9271,9273],{"className":1174,"code":9272,"language":1176,"meta":62,"style":62},"import { useState } from 'react'\nimport { CyteEditor } from '@cyte-editor\u002Freact'\nimport '@cyte-editor\u002Fcore\u002Fstyle.css'\nimport '@cyte-editor\u002Freact\u002Fstyle.css'\n\nexport default function MyEditor() {\n  const [content, setContent] = useState('\u003Cp>Hello CyteEditor!\u003C\u002Fp>')\n\n  return (\n    \u003Cdiv>\n      \u003CCyteEditor\n        html={content}\n        placeholder=\"Start writing...\"\n        locale=\"en-US\"\n        onChange={({ html }) => setContent(html)}\n      \u002F>\n    \u003C\u002Fdiv>\n  )\n}\n",[29,9274,9275,9285,9295,9301,9307,9311,9323,9347,9351,9357,9365,9371,9379,9387,9395,9413,9417,9425,9429],{"__ignoreMap":62},[66,9276,9277,9279,9281,9283],{"class":68,"line":69},[66,9278,103],{"class":102},[66,9280,1185],{"class":130},[66,9282,248],{"class":102},[66,9284,1190],{"class":76},[66,9286,9287,9289,9291,9293],{"class":68,"line":109},[66,9288,103],{"class":102},[66,9290,259],{"class":130},[66,9292,248],{"class":102},[66,9294,1201],{"class":76},[66,9296,9297,9299],{"class":68,"line":151},[66,9298,103],{"class":102},[66,9300,106],{"class":76},[66,9302,9303,9305],{"class":68,"line":160},[66,9304,103],{"class":102},[66,9306,1168],{"class":76},[66,9308,9309],{"class":68,"line":172},[66,9310,224],{"emptyLinePlaceholder":223},[66,9312,9313,9315,9317,9319,9321],{"class":68,"line":183},[66,9314,794],{"class":102},[66,9316,797],{"class":102},[66,9318,1226],{"class":102},[66,9320,1229],{"class":72},[66,9322,814],{"class":130},[66,9324,9325,9327,9329,9331,9333,9335,9337,9339,9341,9343,9345],{"class":68,"line":194},[66,9326,1236],{"class":102},[66,9328,1239],{"class":130},[66,9330,356],{"class":292},[66,9332,474],{"class":130},[66,9334,1246],{"class":292},[66,9336,1249],{"class":130},[66,9338,166],{"class":102},[66,9340,1254],{"class":72},[66,9342,302],{"class":130},[66,9344,9086],{"class":76},[66,9346,308],{"class":130},[66,9348,9349],{"class":68,"line":200},[66,9350,224],{"emptyLinePlaceholder":223},[66,9352,9353,9355],{"class":68,"line":210},[66,9354,1269],{"class":102},[66,9356,1272],{"class":130},[66,9358,9359,9361,9363],{"class":68,"line":220},[66,9360,154],{"class":130},[66,9362,146],{"class":134},[66,9364,138],{"class":130},[66,9366,9367,9369],{"class":68,"line":227},[66,9368,1285],{"class":130},[66,9370,157],{"class":292},[66,9372,9373,9375,9377],{"class":68,"line":240},[66,9374,1292],{"class":72},[66,9376,166],{"class":102},[66,9378,1297],{"class":130},[66,9380,9381,9383,9385],{"class":68,"line":254},[66,9382,1302],{"class":72},[66,9384,166],{"class":102},[66,9386,8993],{"class":76},[66,9388,9389,9391,9393],{"class":68,"line":267},[66,9390,1311],{"class":72},[66,9392,166],{"class":102},[66,9394,191],{"class":76},[66,9396,9397,9399,9401,9403,9405,9407,9409,9411],{"class":68,"line":274},[66,9398,1320],{"class":72},[66,9400,166],{"class":102},[66,9402,1325],{"class":130},[66,9404,348],{"class":1328},[66,9406,1331],{"class":130},[66,9408,1334],{"class":102},[66,9410,1337],{"class":72},[66,9412,1340],{"class":130},[66,9414,9415],{"class":68,"line":281},[66,9416,1345],{"class":130},[66,9418,9419,9421,9423],{"class":68,"line":286},[66,9420,1350],{"class":130},[66,9422,146],{"class":134},[66,9424,138],{"class":130},[66,9426,9427],{"class":68,"line":311},[66,9428,1359],{"class":130},[66,9430,9431],{"class":68,"line":808},[66,9432,851],{"class":130},[52,9434,1724],{"id":1723},[57,9436,9438],{"className":1797,"code":9437,"language":1799,"meta":62,"style":62},"\u002F\u002F app.module.ts\nimport { NgModule } from '@angular\u002Fcore'\nimport { CyteEditorComponent } from '@cyte-editor\u002Fangular'\nimport '@cyte-editor\u002Fcore\u002Fstyle.css'\nimport '@cyte-editor\u002Fangular\u002Fstyle.css'\n\n@NgModule({\n  imports: [CyteEditorComponent],\n  \u002F\u002F ...\n})\nexport class AppModule {}\n",[29,9439,9440,9444,9454,9464,9470,9477,9481,9489,9493,9497,9501],{"__ignoreMap":62},[66,9441,9442],{"class":68,"line":69},[66,9443,1806],{"class":1769},[66,9445,9446,9448,9450,9452],{"class":68,"line":109},[66,9447,103],{"class":102},[66,9449,1813],{"class":130},[66,9451,248],{"class":102},[66,9453,1818],{"class":76},[66,9455,9456,9458,9460,9462],{"class":68,"line":151},[66,9457,103],{"class":102},[66,9459,1825],{"class":130},[66,9461,248],{"class":102},[66,9463,1830],{"class":76},[66,9465,9466,9468],{"class":68,"line":160},[66,9467,103],{"class":102},[66,9469,106],{"class":76},[66,9471,9472,9474],{"class":68,"line":172},[66,9473,103],{"class":102},[66,9475,9476],{"class":76}," '@cyte-editor\u002Fangular\u002Fstyle.css'\n",[66,9478,9479],{"class":68,"line":183},[66,9480,224],{"emptyLinePlaceholder":223},[66,9482,9483,9485,9487],{"class":68,"line":194},[66,9484,1839],{"class":130},[66,9486,1842],{"class":72},[66,9488,1845],{"class":130},[66,9490,9491],{"class":68,"line":200},[66,9492,1850],{"class":130},[66,9494,9495],{"class":68,"line":210},[66,9496,1855],{"class":1769},[66,9498,9499],{"class":68,"line":220},[66,9500,1860],{"class":130},[66,9502,9503,9505,9507,9509],{"class":68,"line":227},[66,9504,794],{"class":102},[66,9506,1867],{"class":102},[66,9508,1870],{"class":72},[66,9510,1873],{"class":130},[57,9512,9514],{"className":1879,"code":9513,"language":348,"meta":62,"style":62},"\u003C!-- app.component.html -->\n\u003Ccyte-editor\n  [html]=\"content\"\n  [placeholder]=\"'Start writing...'\"\n  [locale]=\"'en-US'\"\n  (onChange)=\"content = $event.html\"\n>\u003C\u002Fcyte-editor>\n",[29,9515,9516,9520,9526,9534,9543,9551,9559],{"__ignoreMap":62},[66,9517,9518],{"class":68,"line":69},[66,9519,1887],{"class":1769},[66,9521,9522,9524],{"class":68,"line":109},[66,9523,131],{"class":130},[66,9525,1894],{"class":134},[66,9527,9528,9530,9532],{"class":68,"line":151},[66,9529,1899],{"class":72},[66,9531,166],{"class":130},[66,9533,169],{"class":76},[66,9535,9536,9538,9540],{"class":68,"line":160},[66,9537,1908],{"class":72},[66,9539,166],{"class":130},[66,9541,9542],{"class":76},"\"'Start writing...'\"\n",[66,9544,9545,9547,9549],{"class":68,"line":172},[66,9546,1918],{"class":72},[66,9548,166],{"class":130},[66,9550,1923],{"class":76},[66,9552,9553,9555,9557],{"class":68,"line":183},[66,9554,1928],{"class":72},[66,9556,166],{"class":130},[66,9558,2164],{"class":76},[66,9560,9561,9563,9565],{"class":68,"line":194},[66,9562,1938],{"class":130},[66,9564,31],{"class":134},[66,9566,138],{"class":130},[57,9568,9570],{"className":1797,"code":9569,"language":1799,"meta":62,"style":62},"\u002F\u002F app.component.ts\nimport { Component } from '@angular\u002Fcore'\n\n@Component({\n  selector: 'app-root',\n  templateUrl: '.\u002Fapp.component.html',\n})\nexport class AppComponent {\n  content = '\u003Cp>Hello CyteEditor!\u003C\u002Fp>'\n}\n",[29,9571,9572,9576,9586,9590,9598,9606,9614,9618,9628,9637],{"__ignoreMap":62},[66,9573,9574],{"class":68,"line":69},[66,9575,1952],{"class":1769},[66,9577,9578,9580,9582,9584],{"class":68,"line":109},[66,9579,103],{"class":102},[66,9581,1959],{"class":130},[66,9583,248],{"class":102},[66,9585,1818],{"class":76},[66,9587,9588],{"class":68,"line":151},[66,9589,224],{"emptyLinePlaceholder":223},[66,9591,9592,9594,9596],{"class":68,"line":160},[66,9593,1839],{"class":130},[66,9595,1974],{"class":72},[66,9597,1845],{"class":130},[66,9599,9600,9602,9604],{"class":68,"line":172},[66,9601,1981],{"class":130},[66,9603,1984],{"class":76},[66,9605,833],{"class":130},[66,9607,9608,9610,9612],{"class":68,"line":183},[66,9609,1991],{"class":130},[66,9611,1994],{"class":76},[66,9613,833],{"class":130},[66,9615,9616],{"class":68,"line":194},[66,9617,1860],{"class":130},[66,9619,9620,9622,9624,9626],{"class":68,"line":200},[66,9621,794],{"class":102},[66,9623,1867],{"class":102},[66,9625,2009],{"class":72},[66,9627,800],{"class":130},[66,9629,9630,9632,9634],{"class":68,"line":210},[66,9631,2016],{"class":1328},[66,9633,296],{"class":102},[66,9635,9636],{"class":76}," '\u003Cp>Hello CyteEditor!\u003C\u002Fp>'\n",[66,9638,9639],{"class":68,"line":220},[66,9640,851],{"class":130},[52,9642,2321],{"id":2320},[57,9644,9646],{"className":2375,"code":9645,"language":2320,"meta":62,"style":62},"\u003Cscript>\n  import { CyteEditor } from '@cyte-editor\u002Fsvelte'\n  import '@cyte-editor\u002Fcore\u002Fstyle.css'\n  import '@cyte-editor\u002Fsvelte\u002Fstyle.css'\n\n  let content = '\u003Cp>Hello CyteEditor!\u003C\u002Fp>'\n\u003C\u002Fscript>\n\n\u003CCyteEditor\n  html={content}\n  placeholder=\"Start writing...\"\n  locale=\"en-US\"\n  onChange={(e) => content = e.html}\n\u002F>\n",[29,9647,9648,9652,9656,9660,9664,9668,9673,9677,9681,9685,9689,9694,9698,9702],{"__ignoreMap":62},[66,9649,9650],{"class":68,"line":69},[66,9651,2383],{},[66,9653,9654],{"class":68,"line":109},[66,9655,2388],{},[66,9657,9658],{"class":68,"line":151},[66,9659,2393],{},[66,9661,9662],{"class":68,"line":160},[66,9663,2398],{},[66,9665,9666],{"class":68,"line":172},[66,9667,224],{"emptyLinePlaceholder":223},[66,9669,9670],{"class":68,"line":183},[66,9671,9672],{},"  let content = '\u003Cp>Hello CyteEditor!\u003C\u002Fp>'\n",[66,9674,9675],{"class":68,"line":194},[66,9676,2412],{},[66,9678,9679],{"class":68,"line":200},[66,9680,224],{"emptyLinePlaceholder":223},[66,9682,9683],{"class":68,"line":210},[66,9684,2421],{},[66,9686,9687],{"class":68,"line":220},[66,9688,2426],{},[66,9690,9691],{"class":68,"line":227},[66,9692,9693],{},"  placeholder=\"Start writing...\"\n",[66,9695,9696],{"class":68,"line":240},[66,9697,2436],{},[66,9699,9700],{"class":68,"line":254},[66,9701,2441],{},[66,9703,9704],{"class":68,"line":267},[66,9705,507],{},[52,9707,2690],{"id":2689},[57,9709,9711],{"className":93,"code":9710,"language":95,"meta":62,"style":62},"import { EditorManager } from '@cyte-editor\u002Fcore'\nimport '@cyte-editor\u002Fcore\u002Fstyle.css'\nimport '@cyte-editor\u002Fvanilla\u002Fstyle.css'\nimport { renderToolbar } from '@cyte-editor\u002Fvanilla'\n\nconst el = document.querySelector('#editor')\nconst manager = EditorManager.create(el, {\n  height: '400px',\n  locale: 'en-US',\n})\n\nmanager.setContent('\u003Cp>Hello CyteEditor!\u003C\u002Fp>')\n\nconst toolbar = renderToolbar(document.querySelector('#toolbar'), {\n  isProMode: false,\n})\ntoolbar.attachEditor(manager.getEditor(), manager)\n",[29,9712,9713,9723,9729,9736,9746,9750,9768,9782,9790,9798,9802,9806,9818,9822,9842,9850,9854],{"__ignoreMap":62},[66,9714,9715,9717,9719,9721],{"class":68,"line":69},[66,9716,103],{"class":102},[66,9718,2750],{"class":130},[66,9720,248],{"class":102},[66,9722,2755],{"class":76},[66,9724,9725,9727],{"class":68,"line":109},[66,9726,103],{"class":102},[66,9728,106],{"class":76},[66,9730,9731,9733],{"class":68,"line":151},[66,9732,103],{"class":102},[66,9734,9735],{"class":76}," '@cyte-editor\u002Fvanilla\u002Fstyle.css'\n",[66,9737,9738,9740,9742,9744],{"class":68,"line":160},[66,9739,103],{"class":102},[66,9741,2768],{"class":130},[66,9743,248],{"class":102},[66,9745,2773],{"class":76},[66,9747,9748],{"class":68,"line":172},[66,9749,224],{"emptyLinePlaceholder":223},[66,9751,9752,9754,9756,9758,9760,9762,9764,9766],{"class":68,"line":183},[66,9753,289],{"class":102},[66,9755,2784],{"class":292},[66,9757,296],{"class":102},[66,9759,2789],{"class":130},[66,9761,2792],{"class":72},[66,9763,302],{"class":130},[66,9765,2797],{"class":76},[66,9767,308],{"class":130},[66,9769,9770,9772,9774,9776,9778,9780],{"class":68,"line":194},[66,9771,289],{"class":102},[66,9773,2806],{"class":292},[66,9775,296],{"class":102},[66,9777,2811],{"class":130},[66,9779,2814],{"class":72},[66,9781,2817],{"class":130},[66,9783,9784,9786,9788],{"class":68,"line":200},[66,9785,2822],{"class":130},[66,9787,2825],{"class":76},[66,9789,833],{"class":130},[66,9791,9792,9794,9796],{"class":68,"line":210},[66,9793,2832],{"class":130},[66,9795,2835],{"class":76},[66,9797,833],{"class":130},[66,9799,9800],{"class":68,"line":220},[66,9801,1860],{"class":130},[66,9803,9804],{"class":68,"line":227},[66,9805,224],{"emptyLinePlaceholder":223},[66,9807,9808,9810,9812,9814,9816],{"class":68,"line":240},[66,9809,2850],{"class":130},[66,9811,1246],{"class":72},[66,9813,302],{"class":130},[66,9815,9086],{"class":76},[66,9817,308],{"class":130},[66,9819,9820],{"class":68,"line":254},[66,9821,224],{"emptyLinePlaceholder":223},[66,9823,9824,9826,9828,9830,9832,9834,9836,9838,9840],{"class":68,"line":267},[66,9825,289],{"class":102},[66,9827,2869],{"class":292},[66,9829,296],{"class":102},[66,9831,2874],{"class":72},[66,9833,2877],{"class":130},[66,9835,2792],{"class":72},[66,9837,302],{"class":130},[66,9839,2884],{"class":76},[66,9841,2887],{"class":130},[66,9843,9844,9846,9848],{"class":68,"line":274},[66,9845,2892],{"class":130},[66,9847,2895],{"class":292},[66,9849,833],{"class":130},[66,9851,9852],{"class":68,"line":281},[66,9853,1860],{"class":130},[66,9855,9856,9858,9860,9862,9864],{"class":68,"line":286},[66,9857,2906],{"class":130},[66,9859,2909],{"class":72},[66,9861,2912],{"class":130},[66,9863,1659],{"class":72},[66,9865,2917],{"class":130},[34,9867,9869],{"id":9868},"framework-integration-summary","Framework Integration Summary",[3067,9871,9872,9885],{},[3070,9873,9874],{},[3073,9875,9876,9878,9880,9882],{},[3076,9877,3078],{},[3076,9879,3081],{},[3076,9881,1974],{},[3076,9883,9884],{},"Bind Content",[3087,9886,9887,9903,9921,9939,9957,9975],{},[3073,9888,9889,9891,9895,9899],{},[3092,9890,37],{},[3092,9892,9893],{},[29,9894,3098],{},[3092,9896,9897],{},[29,9898,3103],{},[3092,9900,9901],{},[29,9902,43],{},[3073,9904,9905,9907,9911,9915],{},[3092,9906,609],{},[3092,9908,9909],{},[29,9910,3116],{},[3092,9912,9913],{},[29,9914,3103],{},[3092,9916,9917,3125,9919],{},[29,9918,615],{},[29,9920,619],{},[3073,9922,9923,9925,9929,9933],{},[3092,9924,1116],{},[3092,9926,9927],{},[29,9928,3136],{},[3092,9930,9931],{},[29,9932,3103],{},[3092,9934,9935,3125,9937],{},[29,9936,348],{},[29,9938,1122],{},[3073,9940,9941,9943,9947,9951],{},[3092,9942,1724],{},[3092,9944,9945],{},[29,9946,3155],{},[3092,9948,9949],{},[29,9950,3160],{},[3092,9952,9953,3125,9955],{},[29,9954,2081],{},[29,9956,2085],{},[3073,9958,9959,9961,9965,9969],{},[3092,9960,2321],{},[3092,9962,9963],{},[29,9964,3175],{},[3092,9966,9967],{},[29,9968,3103],{},[3092,9970,9971,3125,9973],{},[29,9972,348],{},[29,9974,1122],{},[3073,9976,9977,9979,9983,9987],{},[3092,9978,3190],{},[3092,9980,9981],{},[29,9982,3195],{},[3092,9984,9985],{},[29,9986,2696],{},[3092,9988,9989,3205,9991],{},[29,9990,3204],{},[29,9992,3208],{},[34,9994,3409],{"id":3408},[3249,9996,9997,10003,10008],{},[3252,9998,9999,10002],{},[3390,10000,10001],{"href":3416},"Installation Guide"," — advanced configuration and Pro plugins",[3252,10004,10005,10007],{},[3390,10006,3393],{"href":3392}," — full EditorManager API and events",[3252,10009,10010,10012],{},[3390,10011,6],{"href":3486}," — detailed integration for each framework",[3431,10014,10015],{},"html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}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);}html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html pre.shiki code .s4JwU, html code.shiki .s4JwU{--shiki-default:#85E89D}html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html pre.shiki code .s9osk, html code.shiki .s9osk{--shiki-default:#FFAB70}",{"title":62,"searchDepth":109,"depth":109,"links":10017},[10018,10019,10020,10028,10029],{"id":54,"depth":109,"text":55},{"id":1762,"depth":109,"text":8867},{"id":8946,"depth":109,"text":8947,"children":10021},[10022,10023,10024,10025,10026,10027],{"id":36,"depth":151,"text":37},{"id":608,"depth":151,"text":609},{"id":1115,"depth":151,"text":1116},{"id":1723,"depth":151,"text":1724},{"id":2320,"depth":151,"text":2321},{"id":2689,"depth":151,"text":2690},{"id":9868,"depth":109,"text":9869},{"id":3408,"depth":109,"text":3409},{},{"title":3423,"description":8744},"docs\u002Fgetting-started","uACpGuguIHOuGF5h34oDEszJeO3o_wRhG7xHSDzupiQ",{"id":10035,"title":55,"body":10036,"description":62,"extension":3484,"meta":10344,"navigation":223,"path":3416,"seo":10345,"stem":10346,"__hash__":10347},"docs_en\u002Fdocs\u002Finstallation.md",{"type":8,"value":10037,"toc":10334},[10038,10040,10044,10052,10056,10059,10073,10077,10080,10094,10099,10103,10106,10209,10211,10214,10234,10237,10239,10267,10284,10290,10302,10309,10311,10317,10319,10331],[11,10039,55],{"id":54},[34,10041,10043],{"id":10042},"prerequisites","Prerequisites",[3249,10045,10046,10049],{},[3252,10047,10048],{},"Node.js 18+",[3252,10050,10051],{},"npm, yarn, or pnpm",[34,10053,10055],{"id":10054},"core-package","Core Package",[15,10057,10058],{},"The core package is required for all usage:",[57,10060,10062],{"className":59,"code":10061,"language":61,"meta":62,"style":62},"npm install @cyte-editor\u002Fcore\n",[29,10063,10064],{"__ignoreMap":62},[66,10065,10066,10068,10070],{"class":68,"line":69},[66,10067,73],{"class":72},[66,10069,77],{"class":76},[66,10071,10072],{"class":76}," @cyte-editor\u002Fcore\n",[34,10074,10076],{"id":10075},"quick-start-bundle","Quick Start (Bundle)",[15,10078,10079],{},"For Vue 3 projects that want all features in a single package:",[57,10081,10083],{"className":59,"code":10082,"language":61,"meta":62,"style":62},"npm install cyte-editor\n",[29,10084,10085],{"__ignoreMap":62},[66,10086,10087,10089,10091],{"class":68,"line":69},[66,10088,73],{"class":72},[66,10090,77],{"class":76},[66,10092,10093],{"class":76}," cyte-editor\n",[15,10095,1421,10096,10098],{},[29,10097,31],{}," bundle includes the core engine, Vue 3 adapter, license SDK, and all Pro plugins. For other frameworks or fine-grained control, use the modular packages below.",[34,10100,10102],{"id":10101},"framework-adapter","Framework Adapter",[15,10104,10105],{},"Install the adapter that matches your framework:",[57,10107,10109],{"className":59,"code":10108,"language":61,"meta":62,"style":62},"# Vue 3 (requires Vue ^3.3.0)\nnpm install @cyte-editor\u002Fvue3\n\n# Vue 2 (requires Vue ^2.7.0)\nnpm install @cyte-editor\u002Fvue2\n\n# React (requires React ^18 || ^19)\nnpm install @cyte-editor\u002Freact\n\n# Angular (requires Angular ^17 || ^18 || ^19)\nnpm install @cyte-editor\u002Fangular\n\n# Svelte (requires Svelte ^4 || ^5)\nnpm install @cyte-editor\u002Fsvelte\n\n# Vanilla JS (no framework, supports IIFE\u002FUMD)\nnpm install @cyte-editor\u002Fvanilla\n",[29,10110,10111,10116,10124,10128,10133,10141,10145,10150,10158,10162,10167,10175,10179,10184,10192,10196,10201],{"__ignoreMap":62},[66,10112,10113],{"class":68,"line":69},[66,10114,10115],{"class":1769},"# Vue 3 (requires Vue ^3.3.0)\n",[66,10117,10118,10120,10122],{"class":68,"line":109},[66,10119,73],{"class":72},[66,10121,77],{"class":76},[66,10123,83],{"class":76},[66,10125,10126],{"class":68,"line":151},[66,10127,224],{"emptyLinePlaceholder":223},[66,10129,10130],{"class":68,"line":160},[66,10131,10132],{"class":1769},"# Vue 2 (requires Vue ^2.7.0)\n",[66,10134,10135,10137,10139],{"class":68,"line":172},[66,10136,73],{"class":72},[66,10138,77],{"class":76},[66,10140,644],{"class":76},[66,10142,10143],{"class":68,"line":183},[66,10144,224],{"emptyLinePlaceholder":223},[66,10146,10147],{"class":68,"line":194},[66,10148,10149],{"class":1769},"# React (requires React ^18 || ^19)\n",[66,10151,10152,10154,10156],{"class":68,"line":200},[66,10153,73],{"class":72},[66,10155,77],{"class":76},[66,10157,1147],{"class":76},[66,10159,10160],{"class":68,"line":210},[66,10161,224],{"emptyLinePlaceholder":223},[66,10163,10164],{"class":68,"line":220},[66,10165,10166],{"class":1769},"# Angular (requires Angular ^17 || ^18 || ^19)\n",[66,10168,10169,10171,10173],{"class":68,"line":227},[66,10170,73],{"class":72},[66,10172,77],{"class":76},[66,10174,1751],{"class":76},[66,10176,10177],{"class":68,"line":240},[66,10178,224],{"emptyLinePlaceholder":223},[66,10180,10181],{"class":68,"line":254},[66,10182,10183],{"class":1769},"# Svelte (requires Svelte ^4 || ^5)\n",[66,10185,10186,10188,10190],{"class":68,"line":267},[66,10187,73],{"class":72},[66,10189,77],{"class":76},[66,10191,2348],{"class":76},[66,10193,10194],{"class":68,"line":274},[66,10195,224],{"emptyLinePlaceholder":223},[66,10197,10198],{"class":68,"line":281},[66,10199,10200],{"class":1769},"# Vanilla JS (no framework, supports IIFE\u002FUMD)\n",[66,10202,10203,10205,10207],{"class":68,"line":286},[66,10204,73],{"class":72},[66,10206,77],{"class":76},[66,10208,2721],{"class":76},[34,10210,8867],{"id":1762},[15,10212,10213],{},"Import both the core stylesheet and your adapter's stylesheet in your entry file:",[57,10215,10217],{"className":93,"code":10216,"language":95,"meta":62,"style":62},"import '@cyte-editor\u002Fcore\u002Fstyle.css'\nimport '@cyte-editor\u002Fvue3\u002Fstyle.css'  \u002F\u002F replace with your adapter package\n",[29,10218,10219,10225],{"__ignoreMap":62},[66,10220,10221,10223],{"class":68,"line":69},[66,10222,103],{"class":102},[66,10224,106],{"class":76},[66,10226,10227,10229,10231],{"class":68,"line":109},[66,10228,103],{"class":102},[66,10230,8897],{"class":76},[66,10232,10233],{"class":1769},"  \u002F\u002F replace with your adapter package\n",[15,10235,10236],{},"Each framework adapter ships its own stylesheet that must be imported manually alongside the core stylesheet.",[34,10238,3212],{"id":3211},[57,10240,10241],{"className":59,"code":3218,"language":61,"meta":62,"style":62},[29,10242,10243,10251,10259],{"__ignoreMap":62},[66,10244,10245,10247,10249],{"class":68,"line":69},[66,10246,73],{"class":72},[66,10248,77],{"class":76},[66,10250,3229],{"class":76},[66,10252,10253,10255,10257],{"class":68,"line":109},[66,10254,73],{"class":72},[66,10256,77],{"class":76},[66,10258,3238],{"class":76},[66,10260,10261,10263,10265],{"class":68,"line":151},[66,10262,73],{"class":72},[66,10264,77],{"class":76},[66,10266,3247],{"class":76},[3249,10268,10269,10274,10279],{},[3252,10270,10271,10273],{},[24,10272,3256],{}," — import\u002Fexport for Markdown, Word (.docx) & HTML",[3252,10275,10276,10278],{},[24,10277,3262],{}," — intelligent clipboard handling for Word, Excel, WPS & HTML",[3252,10280,10281,10283],{},[24,10282,3268],{}," — version snapshots, rich-text diff & scroll-sync compare",[15,10285,10286,10287,10289],{},"Pro plugins require the ",[29,10288,3275],{}," package and a valid license key:",[57,10291,10292],{"className":59,"code":3279,"language":61,"meta":62,"style":62},[29,10293,10294],{"__ignoreMap":62},[66,10295,10296,10298,10300],{"class":68,"line":69},[66,10297,73],{"class":72},[66,10299,77],{"class":76},[66,10301,3290],{"class":76},[15,10303,10304,10305,10308],{},"See ",[3390,10306,10307],{"href":4698},"Pricing"," for license details.",[34,10310,3398],{"id":3397},[15,10312,10313,10314,10316],{},"CyteEditor is written in TypeScript and provides full type definitions out of the box. No additional ",[29,10315,3404],{}," packages needed.",[34,10318,3409],{"id":3408},[3249,10320,10321,10326],{},[3252,10322,10323,10325],{},[3390,10324,3423],{"href":3422}," — complete setup guide with code examples",[3252,10327,10328,10330],{},[3390,10329,3393],{"href":3392}," — full API documentation",[3431,10332,10333],{},"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 .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);}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}",{"title":62,"searchDepth":109,"depth":109,"links":10335},[10336,10337,10338,10339,10340,10341,10342,10343],{"id":10042,"depth":109,"text":10043},{"id":10054,"depth":109,"text":10055},{"id":10075,"depth":109,"text":10076},{"id":10101,"depth":109,"text":10102},{"id":1762,"depth":109,"text":8867},{"id":3211,"depth":109,"text":3212},{"id":3397,"depth":109,"text":3398},{"id":3408,"depth":109,"text":3409},{},{"title":55,"description":62},"docs\u002Finstallation","7Ez_5XkHPhNTEjQww7LyfIhUM34To0EwBufjNDFRxSI",{"id":10035,"title":55,"body":10349,"description":62,"extension":3484,"meta":10615,"navigation":223,"path":3416,"seo":10616,"stem":10346,"__hash__":10347},{"type":8,"value":10350,"toc":10605},[10351,10353,10355,10361,10363,10365,10377,10379,10381,10393,10397,10399,10401,10497,10499,10501,10519,10521,10523,10551,10565,10569,10581,10585,10587,10591,10593,10603],[11,10352,55],{"id":54},[34,10354,10043],{"id":10042},[3249,10356,10357,10359],{},[3252,10358,10048],{},[3252,10360,10051],{},[34,10362,10055],{"id":10054},[15,10364,10058],{},[57,10366,10367],{"className":59,"code":10061,"language":61,"meta":62,"style":62},[29,10368,10369],{"__ignoreMap":62},[66,10370,10371,10373,10375],{"class":68,"line":69},[66,10372,73],{"class":72},[66,10374,77],{"class":76},[66,10376,10072],{"class":76},[34,10378,10076],{"id":10075},[15,10380,10079],{},[57,10382,10383],{"className":59,"code":10082,"language":61,"meta":62,"style":62},[29,10384,10385],{"__ignoreMap":62},[66,10386,10387,10389,10391],{"class":68,"line":69},[66,10388,73],{"class":72},[66,10390,77],{"class":76},[66,10392,10093],{"class":76},[15,10394,1421,10395,10098],{},[29,10396,31],{},[34,10398,10102],{"id":10101},[15,10400,10105],{},[57,10402,10403],{"className":59,"code":10108,"language":61,"meta":62,"style":62},[29,10404,10405,10409,10417,10421,10425,10433,10437,10441,10449,10453,10457,10465,10469,10473,10481,10485,10489],{"__ignoreMap":62},[66,10406,10407],{"class":68,"line":69},[66,10408,10115],{"class":1769},[66,10410,10411,10413,10415],{"class":68,"line":109},[66,10412,73],{"class":72},[66,10414,77],{"class":76},[66,10416,83],{"class":76},[66,10418,10419],{"class":68,"line":151},[66,10420,224],{"emptyLinePlaceholder":223},[66,10422,10423],{"class":68,"line":160},[66,10424,10132],{"class":1769},[66,10426,10427,10429,10431],{"class":68,"line":172},[66,10428,73],{"class":72},[66,10430,77],{"class":76},[66,10432,644],{"class":76},[66,10434,10435],{"class":68,"line":183},[66,10436,224],{"emptyLinePlaceholder":223},[66,10438,10439],{"class":68,"line":194},[66,10440,10149],{"class":1769},[66,10442,10443,10445,10447],{"class":68,"line":200},[66,10444,73],{"class":72},[66,10446,77],{"class":76},[66,10448,1147],{"class":76},[66,10450,10451],{"class":68,"line":210},[66,10452,224],{"emptyLinePlaceholder":223},[66,10454,10455],{"class":68,"line":220},[66,10456,10166],{"class":1769},[66,10458,10459,10461,10463],{"class":68,"line":227},[66,10460,73],{"class":72},[66,10462,77],{"class":76},[66,10464,1751],{"class":76},[66,10466,10467],{"class":68,"line":240},[66,10468,224],{"emptyLinePlaceholder":223},[66,10470,10471],{"class":68,"line":254},[66,10472,10183],{"class":1769},[66,10474,10475,10477,10479],{"class":68,"line":267},[66,10476,73],{"class":72},[66,10478,77],{"class":76},[66,10480,2348],{"class":76},[66,10482,10483],{"class":68,"line":274},[66,10484,224],{"emptyLinePlaceholder":223},[66,10486,10487],{"class":68,"line":281},[66,10488,10200],{"class":1769},[66,10490,10491,10493,10495],{"class":68,"line":286},[66,10492,73],{"class":72},[66,10494,77],{"class":76},[66,10496,2721],{"class":76},[34,10498,8867],{"id":1762},[15,10500,10213],{},[57,10502,10503],{"className":93,"code":10216,"language":95,"meta":62,"style":62},[29,10504,10505,10511],{"__ignoreMap":62},[66,10506,10507,10509],{"class":68,"line":69},[66,10508,103],{"class":102},[66,10510,106],{"class":76},[66,10512,10513,10515,10517],{"class":68,"line":109},[66,10514,103],{"class":102},[66,10516,8897],{"class":76},[66,10518,10233],{"class":1769},[15,10520,10236],{},[34,10522,3212],{"id":3211},[57,10524,10525],{"className":59,"code":3218,"language":61,"meta":62,"style":62},[29,10526,10527,10535,10543],{"__ignoreMap":62},[66,10528,10529,10531,10533],{"class":68,"line":69},[66,10530,73],{"class":72},[66,10532,77],{"class":76},[66,10534,3229],{"class":76},[66,10536,10537,10539,10541],{"class":68,"line":109},[66,10538,73],{"class":72},[66,10540,77],{"class":76},[66,10542,3238],{"class":76},[66,10544,10545,10547,10549],{"class":68,"line":151},[66,10546,73],{"class":72},[66,10548,77],{"class":76},[66,10550,3247],{"class":76},[3249,10552,10553,10557,10561],{},[3252,10554,10555,10273],{},[24,10556,3256],{},[3252,10558,10559,10278],{},[24,10560,3262],{},[3252,10562,10563,10283],{},[24,10564,3268],{},[15,10566,10286,10567,10289],{},[29,10568,3275],{},[57,10570,10571],{"className":59,"code":3279,"language":61,"meta":62,"style":62},[29,10572,10573],{"__ignoreMap":62},[66,10574,10575,10577,10579],{"class":68,"line":69},[66,10576,73],{"class":72},[66,10578,77],{"class":76},[66,10580,3290],{"class":76},[15,10582,10304,10583,10308],{},[3390,10584,10307],{"href":4698},[34,10586,3398],{"id":3397},[15,10588,10313,10589,10316],{},[29,10590,3404],{},[34,10592,3409],{"id":3408},[3249,10594,10595,10599],{},[3252,10596,10597,10325],{},[3390,10598,3423],{"href":3422},[3252,10600,10601,10330],{},[3390,10602,3393],{"href":3392},[3431,10604,10333],{},{"title":62,"searchDepth":109,"depth":109,"links":10606},[10607,10608,10609,10610,10611,10612,10613,10614],{"id":10042,"depth":109,"text":10043},{"id":10054,"depth":109,"text":10055},{"id":10075,"depth":109,"text":10076},{"id":10101,"depth":109,"text":10102},{"id":1762,"depth":109,"text":8867},{"id":3211,"depth":109,"text":3212},{"id":3397,"depth":109,"text":3398},{"id":3408,"depth":109,"text":3409},{},{"title":55,"description":62},1786957514918]