[{"data":1,"prerenderedAt":1681},["ShallowReactive",2],{"msfe-doc:\u002Fguide\u002Fcollaboration":3,"msfe-source:collaboration\u002Fsession.ts":914,"mdc--w6zcm2-key":915},{"id":4,"title":5,"body":6,"description":898,"extension":899,"keywords":900,"locale":907,"meta":908,"navigation":111,"order":495,"path":909,"section":910,"seo":911,"stem":912,"__hash__":913},"docs\u002Fguide\u002Fcollaboration.zh-CN.md","可选源码协同",{"type":7,"value":8,"toc":886},"minimark",[9,13,17,21,35,38,46,51,54,71,74,78,81,186,200,204,211,252,267,270,274,285,327,357,360,367,499,529,548,552,562,642,688,694,825,828,831,879,882],[10,11,12],"h2",{"id":12},"交互体验",[14,15,16],"p",{},"在任意一侧输入或拖选，观察另一侧的变化。也可以试试独立撤销、只读和断线重连。",[18,19],"msfe-demo",{"name":20},"collaboration\u002Feditor",[14,22,23,24,29,30,34],{},"示例使用真实 Yjs，通过同页内存通道同步。刷新或离开页面会清空内容；“已同步”不表示已保存。完整示例可在“接入代码”中查看。\n下方“协作记录”由同页中继运行的服务端扩展确认后写入：作者取自连接身份，连续输入合并成一条，撤销等操作单独记一条；\n记录只保留最近 200 条、改动片段保留 1 天。“历史版本”由服务端存档时生成，每 20 秒最多一个，也可以保存命名版本；\n以参与者 A 的身份恢复后，B 的文档同步变化，协作记录写入“恢复了版本”。接入方式见\n",[25,26,28],"a",{"href":27},"\u002Fguide\u002Fmd-editor#%E5%A4%9A%E4%BA%BA%E5%8D%8F%E5%90%8C%E6%97%B6","MD Editor 协作记录","与",[25,31,33],{"href":32},"\u002Fguide\u002Fmd-editor#%E5%8E%86%E5%8F%B2%E7%89%88%E6%9C%AC","历史版本","。",[10,36,37],{"id":37},"接入方式",[14,39,40,41,45],{},"协同目前是",[42,43,44],"strong",{},"实验能力","，需要时再安装。默认的 Core、StarterKit、Vue、React 和 MD Editor 不包含协同依赖。",[47,48,50],"h3",{"id":49},"_1-安装依赖","1. 安装依赖",[14,52,53],{},"使用 Hocuspocus 时安装两个包；自建传输只需要第一个。",[55,56,61],"pre",{"className":57,"code":58,"language":59,"meta":60,"style":60},"language-sh shiki shiki-themes github-light github-light github-dark","pnpm add @quirekit\u002Fmsfe-collaboration @quirekit\u002Fmsfe-collaboration-hocuspocus\n","sh","",[62,63,64],"code",{"__ignoreMap":60},[65,66,69],"span",{"class":67,"line":68},"line",1,[65,70,58],{},[14,72,73],{},"共享内容是 Markdown 源码。模式、主题和滚动各自独立；图片上传由应用提供稳定地址。",[47,75,77],{"id":76},"_2-创建会话","2. 创建会话",[14,79,80],{},"用文档 ID、服务地址和应用凭证创建 session：",[55,82,87],{"className":83,"code":84,"filename":85,"language":86,"meta":60,"style":60},"language-ts shiki shiki-themes github-light github-light github-dark","import { sharedSource, mountSharedSource } from '.\u002Fcollaboration\u002Fsession'\n\nconst session = sharedSource('document-123', {\n  url: 'wss:\u002F\u002Fyour-service.example\u002Fcollaboration',\n  sessionEndpoint: 'https:\u002F\u002Fyour-service.example\u002Fapi\u002Fcollaboration\u002Fopen',\n  token: () => applicationAccessToken(),\n})\n","collaboration.ts","ts",[62,88,89,106,113,139,151,162,180],{"__ignoreMap":60},[65,90,91,95,99,102],{"class":67,"line":68},[65,92,94],{"class":93},"sDD9d","import",[65,96,98],{"class":97},"sVPnS"," { sharedSource, mountSharedSource } ",[65,100,101],{"class":93},"from",[65,103,105],{"class":104},"s-HEn"," '.\u002Fcollaboration\u002Fsession'\n",[65,107,109],{"class":67,"line":108},2,[65,110,112],{"emptyLinePlaceholder":111},true,"\n",[65,114,116,119,123,126,130,133,136],{"class":67,"line":115},3,[65,117,118],{"class":93},"const",[65,120,122],{"class":121},"sUNQB"," session",[65,124,125],{"class":93}," =",[65,127,129],{"class":128},"sgQzM"," sharedSource",[65,131,132],{"class":97},"(",[65,134,135],{"class":104},"'document-123'",[65,137,138],{"class":97},", {\n",[65,140,142,145,148],{"class":67,"line":141},4,[65,143,144],{"class":97},"  url: ",[65,146,147],{"class":104},"'wss:\u002F\u002Fyour-service.example\u002Fcollaboration'",[65,149,150],{"class":97},",\n",[65,152,154,157,160],{"class":67,"line":153},5,[65,155,156],{"class":97},"  sessionEndpoint: ",[65,158,159],{"class":104},"'https:\u002F\u002Fyour-service.example\u002Fapi\u002Fcollaboration\u002Fopen'",[65,161,150],{"class":97},[65,163,165,168,171,174,177],{"class":67,"line":164},6,[65,166,167],{"class":128},"  token",[65,169,170],{"class":97},": () ",[65,172,173],{"class":93},"=>",[65,175,176],{"class":128}," applicationAccessToken",[65,178,179],{"class":97},"(),\n",[65,181,183],{"class":67,"line":182},7,[65,184,185],{"class":97},"})\n",[14,187,188,191,192,195,196,199],{},[62,189,190],{},"url"," 用于 WebSocket 同步，",[62,193,194],{},"sessionEndpoint"," 是应用的会话接口，返回文档身份、epoch、格式和权限。",[42,197,198],{},"只提供 WebSocket 地址还不能接入","；请替换示例地址和凭证函数。",[47,201,203],{"id":202},"_3-准备并挂载","3. 准备并挂载",[14,205,206,207,210],{},"继续在同一文件中挂载编辑器，",[62,208,209],{},"parent"," 是挂载元素。辅助函数会先准备会话；路由离开时可通过取消信号中止准备。",[55,212,214],{"className":83,"code":213,"filename":85,"language":86,"meta":60,"style":60},"const controller = new AbortController()\nconst editor = await mountSharedSource(parent, session, controller.signal)\n",[62,215,216,234],{"__ignoreMap":60},[65,217,218,220,223,225,228,231],{"class":67,"line":68},[65,219,118],{"class":93},[65,221,222],{"class":121}," controller",[65,224,125],{"class":93},[65,226,227],{"class":93}," new",[65,229,230],{"class":128}," AbortController",[65,232,233],{"class":97},"()\n",[65,235,236,238,241,243,246,249],{"class":67,"line":108},[65,237,118],{"class":93},[65,239,240],{"class":121}," editor",[65,242,125],{"class":93},[65,244,245],{"class":93}," await",[65,247,248],{"class":128}," mountSharedSource",[65,250,251],{"class":97},"(parent, session, controller.signal)\n",[253,254,256,263],"msfe-details",{"title":255},"查看完整接入模块",[14,257,258,259,262],{},"将下面的文件放在 ",[62,260,261],{},"collaboration\u002Fsession.ts","，与上面的调用代码配合使用。",[264,265],"msfe-recipe",{"name":266},"collaboration\u002Fsession",[14,268,269],{},"新文档的创建和初始内容由服务负责。不要在每次连接时重新插入初始 Markdown，现存空文档也应保持为空。",[10,271,273],{"id":272},"通过原有-extensions-装配","通过原有 extensions 装配",[14,275,276,277,280,281,284],{},"已有编辑器添加 ",[62,278,279],{},"Collaboration.configure({ session })","，省略初始 ",[62,282,283],{},"markdown","。MD Editor、Vue 和 React 均使用原有扩展入口：",[55,286,290],{"className":287,"code":288,"language":289,"meta":60,"style":60},"language-vue shiki shiki-themes github-light github-light github-dark","\u003CMdEditor :extensions=\"[Collaboration.configure({ session })]\" \u002F>\n","vue",[62,291,292],{"__ignoreMap":60},[65,293,294,297,301,304,307,310,313,316,319,322,324],{"class":67,"line":68},[65,295,296],{"class":97},"\u003C",[65,298,300],{"class":299},"su0ou","MdEditor",[65,302,303],{"class":97}," :",[65,305,306],{"class":128},"extensions",[65,308,309],{"class":97},"=",[65,311,312],{"class":104},"\"",[65,314,315],{"class":97},"[Collaboration.",[65,317,318],{"class":128},"configure",[65,320,321],{"class":97},"({ session })]",[65,323,312],{"class":104},[65,325,326],{"class":97}," \u002F>\n",[328,329,330,337,343],"ul",{},[331,332,333,336],"li",{},[42,334,335],{},"准备后挂载","：session 准备完成后再渲染组件；同一 session 同时只绑定一个编辑器。",[331,338,339,342],{},[42,340,341],{},"保留会话","：组件卸载只解除绑定；再次挂载可继续使用正文和本地撤销历史。",[331,344,345,348,349,352,353,356],{},[42,346,347],{},"避免深响应式","：Vue 中用普通变量、",[62,350,351],{},"shallowRef"," 或 ",[62,354,355],{},"markRaw"," 保存 session。",[10,358,359],{"id":359},"可选光标与协作者",[14,361,362,363,366],{},"需要姓名光标、选区和在线成员时，再添加 ",[62,364,365],{},"CollaborationPresence","。两个扩展使用同一个 session：",[55,368,371],{"className":83,"code":369,"filename":370,"language":86,"meta":60,"style":60},"import { Collaboration } from '@quirekit\u002Fmsfe-collaboration'\nimport { CollaborationPresence } from '@quirekit\u002Fmsfe-collaboration\u002Fpresence'\n\nconst extensions = [\n  Collaboration.configure({ session }),\n  CollaborationPresence.configure({\n    session,\n    user: { id: 'alice', name: 'Alice', color: '#2563eb' },\n    onParticipants: peers => { \u002F* 更新宿主的成员列表 *\u002F },\n  }),\n]\n","presence.ts",[62,372,373,385,397,401,413,423,433,438,462,487,493],{"__ignoreMap":60},[65,374,375,377,380,382],{"class":67,"line":68},[65,376,94],{"class":93},[65,378,379],{"class":97}," { Collaboration } ",[65,381,101],{"class":93},[65,383,384],{"class":104}," '@quirekit\u002Fmsfe-collaboration'\n",[65,386,387,389,392,394],{"class":67,"line":108},[65,388,94],{"class":93},[65,390,391],{"class":97}," { CollaborationPresence } ",[65,393,101],{"class":93},[65,395,396],{"class":104}," '@quirekit\u002Fmsfe-collaboration\u002Fpresence'\n",[65,398,399],{"class":67,"line":115},[65,400,112],{"emptyLinePlaceholder":111},[65,402,403,405,408,410],{"class":67,"line":141},[65,404,118],{"class":93},[65,406,407],{"class":121}," extensions",[65,409,125],{"class":93},[65,411,412],{"class":97}," [\n",[65,414,415,418,420],{"class":67,"line":153},[65,416,417],{"class":97},"  Collaboration.",[65,419,318],{"class":128},[65,421,422],{"class":97},"({ session }),\n",[65,424,425,428,430],{"class":67,"line":164},[65,426,427],{"class":97},"  CollaborationPresence.",[65,429,318],{"class":128},[65,431,432],{"class":97},"({\n",[65,434,435],{"class":67,"line":182},[65,436,437],{"class":97},"    session,\n",[65,439,441,444,447,450,453,456,459],{"class":67,"line":440},8,[65,442,443],{"class":97},"    user: { id: ",[65,445,446],{"class":104},"'alice'",[65,448,449],{"class":97},", name: ",[65,451,452],{"class":104},"'Alice'",[65,454,455],{"class":97},", color: ",[65,457,458],{"class":104},"'#2563eb'",[65,460,461],{"class":97}," },\n",[65,463,465,468,471,475,478,481,485],{"class":67,"line":464},9,[65,466,467],{"class":128},"    onParticipants",[65,469,470],{"class":97},": ",[65,472,474],{"class":473},"sde8i","peers",[65,476,477],{"class":93}," =>",[65,479,480],{"class":97}," { ",[65,482,484],{"class":483},"sqmzS","\u002F* 更新宿主的成员列表 *\u002F",[65,486,461],{"class":97},[65,488,490],{"class":67,"line":489},10,[65,491,492],{"class":97},"  }),\n",[65,494,496],{"class":67,"line":495},11,[65,497,498],{"class":97},"]\n",[14,500,501,504,505,508,509,512,513,516,517,520,521,524,525,528],{},[62,502,503],{},"onParticipants"," 返回远端连接的 ",[62,506,507],{},"id","、",[62,510,511],{},"user"," 和 ",[62,514,515],{},"activity","（",[62,518,519],{},"editing"," \u002F ",[62,522,523],{},"viewing","）。可以使用示例中的 ",[62,526,527],{},"QuireAvatar"," 或自己的成员 UI；光标移动不会刷新成员列表，同一用户的多个连接分别显示。",[328,530,531,542,545],{},[331,532,533,534,537,538,541],{},"当前广播",[42,535,536],{},"主选区","。隐藏源码或组件内部的位置显示为带 ",[62,539,540],{},"◇"," 的虚线边界光标。",[331,543,544],{},"失焦后保留在线成员；断线时清理，重连后重新加入。远端更新不会移动本机焦点、选区或滚动，也不展开源码。",[331,546,547],{},"presence 不进入正文、撤销或保存记录。只安装正文协同时，不分配 Awareness 或挂载光标层。",[10,549,551],{"id":550},"同步保存与恢复","同步、保存与恢复",[14,553,554,557,558,561],{},[42,555,556],{},"同步成功与保存成功是两个状态。"," 服务支持 checkpoint 时，调用 ",[62,559,560],{},"await session.save()","，收到持久化回执后再显示“已保存”。",[563,564,565,578],"table",{},[566,567,568],"thead",{},[569,570,571,575],"tr",{},[572,573,574],"th",{},"要做什么",[572,576,577],{},"使用方式",[579,580,581,598,610,622,634],"tbody",{},[569,582,583,587],{},[584,585,586],"td",{},"显示连接与保存状态",[584,588,589,590,593,594,597],{},"读取 ",[62,591,592],{},"session.state","，通过 ",[62,595,596],{},"session.subscribe()"," 更新 UI。",[569,599,600,603],{},[584,601,602],{},"断线重连",[584,604,605,606,609],{},"调用 ",[62,607,608],{},"session.prepare()","，重新取得身份与权限。",[569,611,612,615],{},[584,613,614],{},"禁止离线编辑",[584,616,617,618,621],{},"设置 ",[62,619,620],{},"offlineEditing: 'readonly'","；默认允许在内存中编辑。",[569,623,624,627],{},[584,625,626],{},"撤销自己的改动",[584,628,629,630,633],{},"使用 ",[62,631,632],{},"editor.history","；远端修改不进入本地撤销栈。",[569,635,636,639],{},[584,637,638],{},"离开文档",[584,640,641],{},"取消未完成的准备，再销毁编辑器并关闭会话。",[55,643,646],{"className":83,"code":644,"filename":645,"language":86,"meta":60,"style":60},"controller.abort()\neditor.destroy()\nawait session.close({ mode: 'persist' })\n","cleanup.ts",[62,647,648,658,668],{"__ignoreMap":60},[65,649,650,653,656],{"class":67,"line":68},[65,651,652],{"class":97},"controller.",[65,654,655],{"class":128},"abort",[65,657,233],{"class":97},[65,659,660,663,666],{"class":67,"line":108},[65,661,662],{"class":97},"editor.",[65,664,665],{"class":128},"destroy",[65,667,233],{"class":97},[65,669,670,673,676,679,682,685],{"class":67,"line":115},[65,671,672],{"class":93},"await",[65,674,675],{"class":97}," session.",[65,677,678],{"class":128},"close",[65,680,681],{"class":97},"({ mode: ",[65,683,684],{"class":104},"'persist'",[65,686,687],{"class":97}," })\n",[14,689,690,691,34],{},"关闭或保存失败时保留 session，提供重试或恢复副本入口。没有持久化服务时，使用 checkpoint 关闭方式；只有用户明确放弃内容才使用 ",[62,692,693],{},"discard",[253,695,697,764],{"title":696},"状态字段与恢复处理",[563,698,699,709],{},[566,700,701],{},[569,702,703,706],{},[572,704,705],{},"字段",[572,707,708],{},"含义",[579,710,711,721,731,741,751],{},[569,712,713,718],{},[584,714,715],{},[62,716,717],{},"lifecycle",[584,719,720],{},"准备、可用、故障、待恢复或已关闭。",[569,722,723,728],{},[584,724,725],{},[62,726,727],{},"connection",[584,729,730],{},"连接中、已连接或断开。",[569,732,733,738],{},[584,734,735],{},[62,736,737],{},"permission",[584,739,740],{},"服务授予的读写权限。",[569,742,743,748],{},[584,744,745],{},[62,746,747],{},"synced",[584,749,750],{},"传输已确认当前待同步更新。",[569,752,753,758],{},[584,754,755],{},[62,756,757],{},"durability",[584,759,760,761,34],{},"本地修改的持久化状态；无保存能力时为 ",[62,762,763],{},"unsupported",[328,765,766,769,776,782,796,811],{},[331,767,768],{},"保存期间继续输入会保留 dirty 状态，删除文本也需要保存。不要用同步事件或延时器代替持久化回执。",[331,770,771,772,775],{},"epoch 改变，或未保存分支被撤销写权限时，会话进入 recovery。保留 ",[62,773,774],{},"session.checkpoint()","，再决定如何对比或导入；当前没有浏览器持久离线缓存。",[331,777,778,781],{},[62,779,780],{},"close({ mode: 'checkpoint', persistRecovery })"," 等待应用保存包含二进制身份与源码的恢复副本。组件卸载不会自动放弃内容。",[331,783,784,785,508,788,791,792,795],{},"工具栏可读取 ",[62,786,787],{},"editor.history.canUndo",[62,789,790],{},"canRedo","，用 ",[62,793,794],{},"subscribe()"," 订阅变化；命令、快捷键和浏览器撤销使用同一历史。",[331,797,798,799,802,803,806,807,810],{},"换文档时重新装配实例；显式 ",[62,800,801],{},"documentId"," 必须与会话一致。",[62,804,805],{},"replaceDocument()"," 返回 ",[62,808,809],{},"source-provider-locked","，追加内容继续使用正常命令。",[331,812,813,816,817,820,821,824],{},[62,814,815],{},"defineState().invert"," 目前不能与协同历史组合，会报告 ",[62,818,819],{},"unsupported-history-effect","。不要把 ",[62,822,823],{},"onChange"," 再接到全文覆盖或另一套 Yjs 绑定。",[10,826,827],{"id":827},"自建传输与当前边界",[14,829,830],{},"服务负责鉴权、写权限、房间限制和持久化。示例中的只读开关、成员姓名与颜色只用于客户端交互，不能代替服务端校验。",[253,832,834,845,873],{"title":833},"自建 provider 与已有 Y.Doc",[14,835,836,837,840,841,844],{},"自建传输实现 ",[62,838,839],{},"CollaborationProviderFactory","：打开权威 manifest、同步 session 的 Y.Doc、报告连接与权限状态，并在断开时移除监听。保存能力 ",[62,842,843],{},"saveCheckpoint"," 可选。",[14,846,847,848,806,851,854,855,508,858,508,861,508,864,512,866,869,870,872],{},"光标通道另通过 ",[62,849,850],{},"acquirePresence()",[62,852,853],{},"CollaborationPresenceTransport","：",[62,856,857],{},"clientId",[62,859,860],{},"getStates()",[62,862,863],{},"publish()",[62,865,794],{},[62,867,868],{},"release()","。未实现该能力时不要安装 presence；示例的 ",[62,871,370],{}," 提供完整内存通道。Hocuspocus 会按挂载和销毁租用、撤回通道并清理定时器。",[14,874,875,878],{},[62,876,877],{},"adoptCollaborationSession()"," 可借用已准备的 Y.Doc 与静态 manifest。宿主负责初始化、连接、权限及释放，session 不销毁借用的文档；动态连接报告和保存回执应通过 provider 工厂接入。",[14,880,881],{},"当前已验证 Chromium 下的双人编辑与远端呈现。系统输入法、Safari\u002FFirefox、多参与者规模和生产数据库故障恢复仍待发布验收。",[883,884,885],"style",{},"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 .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sDD9d, html code.shiki .sDD9d{--shiki-default:#D73A49;--shiki-light:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVPnS, html code.shiki .sVPnS{--shiki-default:#24292E;--shiki-light:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s-HEn, html code.shiki .s-HEn{--shiki-default:#032F62;--shiki-light:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sUNQB, html code.shiki .sUNQB{--shiki-default:#005CC5;--shiki-light:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sgQzM, html code.shiki .sgQzM{--shiki-default:#6F42C1;--shiki-light:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .su0ou, html code.shiki .su0ou{--shiki-default:#22863A;--shiki-light:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sde8i, html code.shiki .sde8i{--shiki-default:#E36209;--shiki-light:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sqmzS, html code.shiki .sqmzS{--shiki-default:#6A737D;--shiki-light:#6A737D;--shiki-dark:#6A737D}",{"title":60,"searchDepth":108,"depth":108,"links":887},[888,889,894,895,896,897],{"id":12,"depth":108,"text":12},{"id":37,"depth":108,"text":37,"children":890},[891,892,893],{"id":49,"depth":115,"text":50},{"id":76,"depth":115,"text":77},{"id":202,"depth":115,"text":203},{"id":272,"depth":108,"text":273},{"id":359,"depth":108,"text":359},{"id":550,"depth":108,"text":551},{"id":827,"depth":108,"text":827},"按需加入多人编辑、远端光标和协作者列表。","md",[901,902,903,904,905,906],"协同","Yjs","Hocuspocus","session","历史","保存","zh-CN",{},"\u002Fguide\u002Fcollaboration","接入指南",{"title":5,"description":898},"guide\u002Fcollaboration.zh-CN","c_DevY_d_49YmrcfDXmNQHEvhWa8bpB2M735K6xoOnQ","import { createMsfeEditor, type MsfeEditor } from \"@quirekit\u002Fmsfe-core\";\nimport { StarterKit } from \"@quirekit\u002Fmsfe-starter-kit\";\nimport {\n  Collaboration,\n  createCollaborationSession,\n  type CollaborationSession,\n} from \"@quirekit\u002Fmsfe-collaboration\";\nimport {\n  hocuspocusProvider,\n  type HocuspocusProviderOptions,\n} from \"@quirekit\u002Fmsfe-collaboration-hocuspocus\";\n\n\u002F**\n * @param documentId - Existing application document.\n * @param service - Application admission and transport endpoints.\n * @returns Host-owned session, retained even if preparation fails.\n *\u002F\nexport function sharedSource(\n  documentId: string,\n  service: HocuspocusProviderOptions,\n): CollaborationSession {\n  return createCollaborationSession({ documentId, provider: hocuspocusProvider(service) });\n}\n\n\u002F**\n * @param parent - Editor mount.\n * @param session - Host-owned source and history.\n * @param signal - Route cancellation.\n * @returns Mounted editor after authoritative preparation.\n *\u002F\nexport async function mountSharedSource(\n  parent: HTMLElement,\n  session: CollaborationSession,\n  signal: AbortSignal,\n): Promise\u003CMsfeEditor> {\n  \u002F\u002F Finish admission and loading before allocating an editor.\n  await session.prepare({ signal });\n  signal.throwIfAborted();\n  \u002F\u002F Session owns initial content and identity; extensions keep planning source edits.\n  return createMsfeEditor({\n    parent,\n    extensions: [StarterKit, Collaboration.configure({ session })],\n  });\n}\n",{"data":916,"body":917},{},{"type":918,"children":919},"root",[920,1676],{"type":921,"tag":55,"props":922,"children":924},"element",{"className":83,"code":923,"language":86,"meta":60,"style":60},"import { createMsfeEditor, type MsfeEditor } from \"@quirekit\u002Fmsfe-core\";\nimport { StarterKit } from \"@quirekit\u002Fmsfe-starter-kit\";\nimport {\n  Collaboration,\n  createCollaborationSession,\n  type CollaborationSession,\n} from \"@quirekit\u002Fmsfe-collaboration\";\nimport {\n  hocuspocusProvider,\n  type HocuspocusProviderOptions,\n} from \"@quirekit\u002Fmsfe-collaboration-hocuspocus\";\n\n\u002F**\n * @param documentId - Existing application document.\n * @param service - Application admission and transport endpoints.\n * @returns Host-owned session, retained even if preparation fails.\n *\u002F\nexport function sharedSource(\n  documentId: string,\n  service: HocuspocusProviderOptions,\n): CollaborationSession {\n  return createCollaborationSession({ documentId, provider: hocuspocusProvider(service) });\n}\n\n\u002F**\n * @param parent - Editor mount.\n * @param session - Host-owned source and history.\n * @param signal - Route cancellation.\n * @returns Mounted editor after authoritative preparation.\n *\u002F\nexport async function mountSharedSource(\n  parent: HTMLElement,\n  session: CollaborationSession,\n  signal: AbortSignal,\n): Promise\u003CMsfeEditor> {\n  \u002F\u002F Finish admission and loading before allocating an editor.\n  await session.prepare({ signal });\n  signal.throwIfAborted();\n  \u002F\u002F Session owns initial content and identity; extensions keep planning source edits.\n  return createMsfeEditor({\n    parent,\n    extensions: [StarterKit, Collaboration.configure({ session })],\n  });\n}\n\n",[925],{"type":921,"tag":62,"props":926,"children":927},{"__ignoreMap":60},[928,968,993,1005,1013,1021,1034,1055,1066,1074,1086,1106,1114,1124,1148,1170,1188,1197,1221,1246,1268,1290,1319,1328,1336,1344,1366,1387,1409,1426,1434,1459,1481,1502,1524,1555,1564,1587,1606,1615,1632,1641,1659,1668],{"type":921,"tag":65,"props":929,"children":930},{"class":67,"line":68},[931,937,943,948,953,957,963],{"type":921,"tag":65,"props":932,"children":934},{"style":933},"--shiki-default:#D73A49;--shiki-light:#D73A49;--shiki-dark:#F97583",[935],{"type":936,"value":94},"text",{"type":921,"tag":65,"props":938,"children":940},{"style":939},"--shiki-default:#24292E;--shiki-light:#24292E;--shiki-dark:#E1E4E8",[941],{"type":936,"value":942}," { createMsfeEditor, ",{"type":921,"tag":65,"props":944,"children":945},{"style":933},[946],{"type":936,"value":947},"type",{"type":921,"tag":65,"props":949,"children":950},{"style":939},[951],{"type":936,"value":952}," MsfeEditor } ",{"type":921,"tag":65,"props":954,"children":955},{"style":933},[956],{"type":936,"value":101},{"type":921,"tag":65,"props":958,"children":960},{"style":959},"--shiki-default:#032F62;--shiki-light:#032F62;--shiki-dark:#9ECBFF",[961],{"type":936,"value":962}," \"@quirekit\u002Fmsfe-core\"",{"type":921,"tag":65,"props":964,"children":965},{"style":939},[966],{"type":936,"value":967},";\n",{"type":921,"tag":65,"props":969,"children":970},{"class":67,"line":108},[971,975,980,984,989],{"type":921,"tag":65,"props":972,"children":973},{"style":933},[974],{"type":936,"value":94},{"type":921,"tag":65,"props":976,"children":977},{"style":939},[978],{"type":936,"value":979}," { StarterKit } ",{"type":921,"tag":65,"props":981,"children":982},{"style":933},[983],{"type":936,"value":101},{"type":921,"tag":65,"props":985,"children":986},{"style":959},[987],{"type":936,"value":988}," \"@quirekit\u002Fmsfe-starter-kit\"",{"type":921,"tag":65,"props":990,"children":991},{"style":939},[992],{"type":936,"value":967},{"type":921,"tag":65,"props":994,"children":995},{"class":67,"line":115},[996,1000],{"type":921,"tag":65,"props":997,"children":998},{"style":933},[999],{"type":936,"value":94},{"type":921,"tag":65,"props":1001,"children":1002},{"style":939},[1003],{"type":936,"value":1004}," {\n",{"type":921,"tag":65,"props":1006,"children":1007},{"class":67,"line":141},[1008],{"type":921,"tag":65,"props":1009,"children":1010},{"style":939},[1011],{"type":936,"value":1012},"  Collaboration,\n",{"type":921,"tag":65,"props":1014,"children":1015},{"class":67,"line":153},[1016],{"type":921,"tag":65,"props":1017,"children":1018},{"style":939},[1019],{"type":936,"value":1020},"  createCollaborationSession,\n",{"type":921,"tag":65,"props":1022,"children":1023},{"class":67,"line":164},[1024,1029],{"type":921,"tag":65,"props":1025,"children":1026},{"style":933},[1027],{"type":936,"value":1028},"  type",{"type":921,"tag":65,"props":1030,"children":1031},{"style":939},[1032],{"type":936,"value":1033}," CollaborationSession,\n",{"type":921,"tag":65,"props":1035,"children":1036},{"class":67,"line":182},[1037,1042,1046,1051],{"type":921,"tag":65,"props":1038,"children":1039},{"style":939},[1040],{"type":936,"value":1041},"} ",{"type":921,"tag":65,"props":1043,"children":1044},{"style":933},[1045],{"type":936,"value":101},{"type":921,"tag":65,"props":1047,"children":1048},{"style":959},[1049],{"type":936,"value":1050}," \"@quirekit\u002Fmsfe-collaboration\"",{"type":921,"tag":65,"props":1052,"children":1053},{"style":939},[1054],{"type":936,"value":967},{"type":921,"tag":65,"props":1056,"children":1057},{"class":67,"line":440},[1058,1062],{"type":921,"tag":65,"props":1059,"children":1060},{"style":933},[1061],{"type":936,"value":94},{"type":921,"tag":65,"props":1063,"children":1064},{"style":939},[1065],{"type":936,"value":1004},{"type":921,"tag":65,"props":1067,"children":1068},{"class":67,"line":464},[1069],{"type":921,"tag":65,"props":1070,"children":1071},{"style":939},[1072],{"type":936,"value":1073},"  hocuspocusProvider,\n",{"type":921,"tag":65,"props":1075,"children":1076},{"class":67,"line":489},[1077,1081],{"type":921,"tag":65,"props":1078,"children":1079},{"style":933},[1080],{"type":936,"value":1028},{"type":921,"tag":65,"props":1082,"children":1083},{"style":939},[1084],{"type":936,"value":1085}," HocuspocusProviderOptions,\n",{"type":921,"tag":65,"props":1087,"children":1088},{"class":67,"line":495},[1089,1093,1097,1102],{"type":921,"tag":65,"props":1090,"children":1091},{"style":939},[1092],{"type":936,"value":1041},{"type":921,"tag":65,"props":1094,"children":1095},{"style":933},[1096],{"type":936,"value":101},{"type":921,"tag":65,"props":1098,"children":1099},{"style":959},[1100],{"type":936,"value":1101}," \"@quirekit\u002Fmsfe-collaboration-hocuspocus\"",{"type":921,"tag":65,"props":1103,"children":1104},{"style":939},[1105],{"type":936,"value":967},{"type":921,"tag":65,"props":1107,"children":1109},{"class":67,"line":1108},12,[1110],{"type":921,"tag":65,"props":1111,"children":1112},{"emptyLinePlaceholder":111},[1113],{"type":936,"value":112},{"type":921,"tag":65,"props":1115,"children":1117},{"class":67,"line":1116},13,[1118],{"type":921,"tag":65,"props":1119,"children":1121},{"style":1120},"--shiki-default:#6A737D;--shiki-light:#6A737D;--shiki-dark:#6A737D",[1122],{"type":936,"value":1123},"\u002F**\n",{"type":921,"tag":65,"props":1125,"children":1127},{"class":67,"line":1126},14,[1128,1133,1138,1143],{"type":921,"tag":65,"props":1129,"children":1130},{"style":1120},[1131],{"type":936,"value":1132}," * ",{"type":921,"tag":65,"props":1134,"children":1135},{"style":933},[1136],{"type":936,"value":1137},"@param",{"type":921,"tag":65,"props":1139,"children":1140},{"style":939},[1141],{"type":936,"value":1142}," documentId",{"type":921,"tag":65,"props":1144,"children":1145},{"style":1120},[1146],{"type":936,"value":1147}," - Existing application document.\n",{"type":921,"tag":65,"props":1149,"children":1151},{"class":67,"line":1150},15,[1152,1156,1160,1165],{"type":921,"tag":65,"props":1153,"children":1154},{"style":1120},[1155],{"type":936,"value":1132},{"type":921,"tag":65,"props":1157,"children":1158},{"style":933},[1159],{"type":936,"value":1137},{"type":921,"tag":65,"props":1161,"children":1162},{"style":939},[1163],{"type":936,"value":1164}," service",{"type":921,"tag":65,"props":1166,"children":1167},{"style":1120},[1168],{"type":936,"value":1169}," - Application admission and transport endpoints.\n",{"type":921,"tag":65,"props":1171,"children":1173},{"class":67,"line":1172},16,[1174,1178,1183],{"type":921,"tag":65,"props":1175,"children":1176},{"style":1120},[1177],{"type":936,"value":1132},{"type":921,"tag":65,"props":1179,"children":1180},{"style":933},[1181],{"type":936,"value":1182},"@returns",{"type":921,"tag":65,"props":1184,"children":1185},{"style":1120},[1186],{"type":936,"value":1187}," Host-owned session, retained even if preparation fails.\n",{"type":921,"tag":65,"props":1189,"children":1191},{"class":67,"line":1190},17,[1192],{"type":921,"tag":65,"props":1193,"children":1194},{"style":1120},[1195],{"type":936,"value":1196}," *\u002F\n",{"type":921,"tag":65,"props":1198,"children":1200},{"class":67,"line":1199},18,[1201,1206,1211,1216],{"type":921,"tag":65,"props":1202,"children":1203},{"style":933},[1204],{"type":936,"value":1205},"export",{"type":921,"tag":65,"props":1207,"children":1208},{"style":933},[1209],{"type":936,"value":1210}," function",{"type":921,"tag":65,"props":1212,"children":1214},{"style":1213},"--shiki-default:#6F42C1;--shiki-light:#6F42C1;--shiki-dark:#B392F0",[1215],{"type":936,"value":129},{"type":921,"tag":65,"props":1217,"children":1218},{"style":939},[1219],{"type":936,"value":1220},"(\n",{"type":921,"tag":65,"props":1222,"children":1224},{"class":67,"line":1223},19,[1225,1231,1236,1242],{"type":921,"tag":65,"props":1226,"children":1228},{"style":1227},"--shiki-default:#E36209;--shiki-light:#E36209;--shiki-dark:#FFAB70",[1229],{"type":936,"value":1230},"  documentId",{"type":921,"tag":65,"props":1232,"children":1233},{"style":933},[1234],{"type":936,"value":1235},":",{"type":921,"tag":65,"props":1237,"children":1239},{"style":1238},"--shiki-default:#005CC5;--shiki-light:#005CC5;--shiki-dark:#79B8FF",[1240],{"type":936,"value":1241}," string",{"type":921,"tag":65,"props":1243,"children":1244},{"style":939},[1245],{"type":936,"value":150},{"type":921,"tag":65,"props":1247,"children":1249},{"class":67,"line":1248},20,[1250,1255,1259,1264],{"type":921,"tag":65,"props":1251,"children":1252},{"style":1227},[1253],{"type":936,"value":1254},"  service",{"type":921,"tag":65,"props":1256,"children":1257},{"style":933},[1258],{"type":936,"value":1235},{"type":921,"tag":65,"props":1260,"children":1261},{"style":1213},[1262],{"type":936,"value":1263}," HocuspocusProviderOptions",{"type":921,"tag":65,"props":1265,"children":1266},{"style":939},[1267],{"type":936,"value":150},{"type":921,"tag":65,"props":1269,"children":1271},{"class":67,"line":1270},21,[1272,1277,1281,1286],{"type":921,"tag":65,"props":1273,"children":1274},{"style":939},[1275],{"type":936,"value":1276},")",{"type":921,"tag":65,"props":1278,"children":1279},{"style":933},[1280],{"type":936,"value":1235},{"type":921,"tag":65,"props":1282,"children":1283},{"style":1213},[1284],{"type":936,"value":1285}," CollaborationSession",{"type":921,"tag":65,"props":1287,"children":1288},{"style":939},[1289],{"type":936,"value":1004},{"type":921,"tag":65,"props":1291,"children":1293},{"class":67,"line":1292},22,[1294,1299,1304,1309,1314],{"type":921,"tag":65,"props":1295,"children":1296},{"style":933},[1297],{"type":936,"value":1298},"  return",{"type":921,"tag":65,"props":1300,"children":1301},{"style":1213},[1302],{"type":936,"value":1303}," createCollaborationSession",{"type":921,"tag":65,"props":1305,"children":1306},{"style":939},[1307],{"type":936,"value":1308},"({ documentId, provider: ",{"type":921,"tag":65,"props":1310,"children":1311},{"style":1213},[1312],{"type":936,"value":1313},"hocuspocusProvider",{"type":921,"tag":65,"props":1315,"children":1316},{"style":939},[1317],{"type":936,"value":1318},"(service) });\n",{"type":921,"tag":65,"props":1320,"children":1322},{"class":67,"line":1321},23,[1323],{"type":921,"tag":65,"props":1324,"children":1325},{"style":939},[1326],{"type":936,"value":1327},"}\n",{"type":921,"tag":65,"props":1329,"children":1331},{"class":67,"line":1330},24,[1332],{"type":921,"tag":65,"props":1333,"children":1334},{"emptyLinePlaceholder":111},[1335],{"type":936,"value":112},{"type":921,"tag":65,"props":1337,"children":1339},{"class":67,"line":1338},25,[1340],{"type":921,"tag":65,"props":1341,"children":1342},{"style":1120},[1343],{"type":936,"value":1123},{"type":921,"tag":65,"props":1345,"children":1347},{"class":67,"line":1346},26,[1348,1352,1356,1361],{"type":921,"tag":65,"props":1349,"children":1350},{"style":1120},[1351],{"type":936,"value":1132},{"type":921,"tag":65,"props":1353,"children":1354},{"style":933},[1355],{"type":936,"value":1137},{"type":921,"tag":65,"props":1357,"children":1358},{"style":939},[1359],{"type":936,"value":1360}," parent",{"type":921,"tag":65,"props":1362,"children":1363},{"style":1120},[1364],{"type":936,"value":1365}," - Editor mount.\n",{"type":921,"tag":65,"props":1367,"children":1369},{"class":67,"line":1368},27,[1370,1374,1378,1382],{"type":921,"tag":65,"props":1371,"children":1372},{"style":1120},[1373],{"type":936,"value":1132},{"type":921,"tag":65,"props":1375,"children":1376},{"style":933},[1377],{"type":936,"value":1137},{"type":921,"tag":65,"props":1379,"children":1380},{"style":939},[1381],{"type":936,"value":122},{"type":921,"tag":65,"props":1383,"children":1384},{"style":1120},[1385],{"type":936,"value":1386}," - Host-owned source and history.\n",{"type":921,"tag":65,"props":1388,"children":1390},{"class":67,"line":1389},28,[1391,1395,1399,1404],{"type":921,"tag":65,"props":1392,"children":1393},{"style":1120},[1394],{"type":936,"value":1132},{"type":921,"tag":65,"props":1396,"children":1397},{"style":933},[1398],{"type":936,"value":1137},{"type":921,"tag":65,"props":1400,"children":1401},{"style":939},[1402],{"type":936,"value":1403}," signal",{"type":921,"tag":65,"props":1405,"children":1406},{"style":1120},[1407],{"type":936,"value":1408}," - Route cancellation.\n",{"type":921,"tag":65,"props":1410,"children":1412},{"class":67,"line":1411},29,[1413,1417,1421],{"type":921,"tag":65,"props":1414,"children":1415},{"style":1120},[1416],{"type":936,"value":1132},{"type":921,"tag":65,"props":1418,"children":1419},{"style":933},[1420],{"type":936,"value":1182},{"type":921,"tag":65,"props":1422,"children":1423},{"style":1120},[1424],{"type":936,"value":1425}," Mounted editor after authoritative preparation.\n",{"type":921,"tag":65,"props":1427,"children":1429},{"class":67,"line":1428},30,[1430],{"type":921,"tag":65,"props":1431,"children":1432},{"style":1120},[1433],{"type":936,"value":1196},{"type":921,"tag":65,"props":1435,"children":1437},{"class":67,"line":1436},31,[1438,1442,1447,1451,1455],{"type":921,"tag":65,"props":1439,"children":1440},{"style":933},[1441],{"type":936,"value":1205},{"type":921,"tag":65,"props":1443,"children":1444},{"style":933},[1445],{"type":936,"value":1446}," async",{"type":921,"tag":65,"props":1448,"children":1449},{"style":933},[1450],{"type":936,"value":1210},{"type":921,"tag":65,"props":1452,"children":1453},{"style":1213},[1454],{"type":936,"value":248},{"type":921,"tag":65,"props":1456,"children":1457},{"style":939},[1458],{"type":936,"value":1220},{"type":921,"tag":65,"props":1460,"children":1462},{"class":67,"line":1461},32,[1463,1468,1472,1477],{"type":921,"tag":65,"props":1464,"children":1465},{"style":1227},[1466],{"type":936,"value":1467},"  parent",{"type":921,"tag":65,"props":1469,"children":1470},{"style":933},[1471],{"type":936,"value":1235},{"type":921,"tag":65,"props":1473,"children":1474},{"style":1213},[1475],{"type":936,"value":1476}," HTMLElement",{"type":921,"tag":65,"props":1478,"children":1479},{"style":939},[1480],{"type":936,"value":150},{"type":921,"tag":65,"props":1482,"children":1484},{"class":67,"line":1483},33,[1485,1490,1494,1498],{"type":921,"tag":65,"props":1486,"children":1487},{"style":1227},[1488],{"type":936,"value":1489},"  session",{"type":921,"tag":65,"props":1491,"children":1492},{"style":933},[1493],{"type":936,"value":1235},{"type":921,"tag":65,"props":1495,"children":1496},{"style":1213},[1497],{"type":936,"value":1285},{"type":921,"tag":65,"props":1499,"children":1500},{"style":939},[1501],{"type":936,"value":150},{"type":921,"tag":65,"props":1503,"children":1505},{"class":67,"line":1504},34,[1506,1511,1515,1520],{"type":921,"tag":65,"props":1507,"children":1508},{"style":1227},[1509],{"type":936,"value":1510},"  signal",{"type":921,"tag":65,"props":1512,"children":1513},{"style":933},[1514],{"type":936,"value":1235},{"type":921,"tag":65,"props":1516,"children":1517},{"style":1213},[1518],{"type":936,"value":1519}," AbortSignal",{"type":921,"tag":65,"props":1521,"children":1522},{"style":939},[1523],{"type":936,"value":150},{"type":921,"tag":65,"props":1525,"children":1527},{"class":67,"line":1526},35,[1528,1532,1536,1541,1545,1550],{"type":921,"tag":65,"props":1529,"children":1530},{"style":939},[1531],{"type":936,"value":1276},{"type":921,"tag":65,"props":1533,"children":1534},{"style":933},[1535],{"type":936,"value":1235},{"type":921,"tag":65,"props":1537,"children":1538},{"style":1213},[1539],{"type":936,"value":1540}," Promise",{"type":921,"tag":65,"props":1542,"children":1543},{"style":939},[1544],{"type":936,"value":296},{"type":921,"tag":65,"props":1546,"children":1547},{"style":1213},[1548],{"type":936,"value":1549},"MsfeEditor",{"type":921,"tag":65,"props":1551,"children":1552},{"style":939},[1553],{"type":936,"value":1554},"> {\n",{"type":921,"tag":65,"props":1556,"children":1558},{"class":67,"line":1557},36,[1559],{"type":921,"tag":65,"props":1560,"children":1561},{"style":1120},[1562],{"type":936,"value":1563},"  \u002F\u002F Finish admission and loading before allocating an editor.\n",{"type":921,"tag":65,"props":1565,"children":1567},{"class":67,"line":1566},37,[1568,1573,1577,1582],{"type":921,"tag":65,"props":1569,"children":1570},{"style":933},[1571],{"type":936,"value":1572},"  await",{"type":921,"tag":65,"props":1574,"children":1575},{"style":939},[1576],{"type":936,"value":675},{"type":921,"tag":65,"props":1578,"children":1579},{"style":1213},[1580],{"type":936,"value":1581},"prepare",{"type":921,"tag":65,"props":1583,"children":1584},{"style":939},[1585],{"type":936,"value":1586},"({ signal });\n",{"type":921,"tag":65,"props":1588,"children":1590},{"class":67,"line":1589},38,[1591,1596,1601],{"type":921,"tag":65,"props":1592,"children":1593},{"style":939},[1594],{"type":936,"value":1595},"  signal.",{"type":921,"tag":65,"props":1597,"children":1598},{"style":1213},[1599],{"type":936,"value":1600},"throwIfAborted",{"type":921,"tag":65,"props":1602,"children":1603},{"style":939},[1604],{"type":936,"value":1605},"();\n",{"type":921,"tag":65,"props":1607,"children":1609},{"class":67,"line":1608},39,[1610],{"type":921,"tag":65,"props":1611,"children":1612},{"style":1120},[1613],{"type":936,"value":1614},"  \u002F\u002F Session owns initial content and identity; extensions keep planning source edits.\n",{"type":921,"tag":65,"props":1616,"children":1618},{"class":67,"line":1617},40,[1619,1623,1628],{"type":921,"tag":65,"props":1620,"children":1621},{"style":933},[1622],{"type":936,"value":1298},{"type":921,"tag":65,"props":1624,"children":1625},{"style":1213},[1626],{"type":936,"value":1627}," createMsfeEditor",{"type":921,"tag":65,"props":1629,"children":1630},{"style":939},[1631],{"type":936,"value":432},{"type":921,"tag":65,"props":1633,"children":1635},{"class":67,"line":1634},41,[1636],{"type":921,"tag":65,"props":1637,"children":1638},{"style":939},[1639],{"type":936,"value":1640},"    parent,\n",{"type":921,"tag":65,"props":1642,"children":1644},{"class":67,"line":1643},42,[1645,1650,1654],{"type":921,"tag":65,"props":1646,"children":1647},{"style":939},[1648],{"type":936,"value":1649},"    extensions: [StarterKit, Collaboration.",{"type":921,"tag":65,"props":1651,"children":1652},{"style":1213},[1653],{"type":936,"value":318},{"type":921,"tag":65,"props":1655,"children":1656},{"style":939},[1657],{"type":936,"value":1658},"({ session })],\n",{"type":921,"tag":65,"props":1660,"children":1662},{"class":67,"line":1661},43,[1663],{"type":921,"tag":65,"props":1664,"children":1665},{"style":939},[1666],{"type":936,"value":1667},"  });\n",{"type":921,"tag":65,"props":1669,"children":1671},{"class":67,"line":1670},44,[1672],{"type":921,"tag":65,"props":1673,"children":1674},{"style":939},[1675],{"type":936,"value":1327},{"type":921,"tag":883,"props":1677,"children":1678},{},[1679],{"type":936,"value":1680},"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 .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",1793046311418]