[{"data":1,"prerenderedAt":2863},["ShallowReactive",2],{"navigation":3,"\u002Fcomposables\u002Fuserealtimeroom":111,"\u002Fcomposables\u002Fuserealtimeroom-surround":2858},[4,38,77,97,104],{"title":5,"path":6,"stem":7,"children":8,"icon":37},"Getting Started","\u002Fgetting-started","1.getting-started\u002F1.index",[9,12,17,22,27,32],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-lucide-house",{"title":13,"path":14,"stem":15,"icon":16},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":18,"path":19,"stem":20,"icon":21},"Configuration","\u002Fgetting-started\u002Fconfiguration","1.getting-started\u002F3.configuration","i-lucide-settings",{"title":23,"path":24,"stem":25,"icon":26},"Usage","\u002Fgetting-started\u002Fusage","1.getting-started\u002F4.usage","i-lucide-code",{"title":28,"path":29,"stem":30,"icon":31},"Authentication","\u002Fgetting-started\u002Fauthentication","1.getting-started\u002F5.authentication","i-lucide-lock",{"title":33,"path":34,"stem":35,"icon":36},"DevTools","\u002Fgetting-started\u002Fdevtools","1.getting-started\u002F6.devtools","i-lucide-radio-tower",false,{"title":39,"icon":26,"path":40,"stem":41,"children":42,"page":37},"Composables","\u002Fcomposables","2.composables",[43,48,53,58,63,67,72],{"title":44,"path":45,"stem":46,"icon":47},"useRealtimeState","\u002Fcomposables\u002Fuserealtimestate","2.composables\u002F1.useRealtimeState","i-lucide-refresh-cw",{"title":49,"path":50,"stem":51,"icon":52},"useRealtimeEvents","\u002Fcomposables\u002Fuserealtimeevents","2.composables\u002F2.useRealtimeEvents","i-lucide-radio",{"title":54,"path":55,"stem":56,"icon":57},"useRealtimeConnection","\u002Fcomposables\u002Fuserealtimeconnection","2.composables\u002F3.useRealtimeConnection","i-lucide-wifi",{"title":59,"path":60,"stem":61,"icon":62},"useRealtimePresence","\u002Fcomposables\u002Fuserealtimepresence","2.composables\u002F4.useRealtimePresence","i-lucide-users",{"title":64,"path":65,"stem":66,"icon":31},"useRealtimeLock","\u002Fcomposables\u002Fuserealtimelock","2.composables\u002F5.useRealtimeLock",{"title":68,"path":69,"stem":70,"icon":71},"useRealtimeLockRoom","\u002Fcomposables\u002Fuserealtimelockroom","2.composables\u002F6.useRealtimeLockRoom","i-lucide-list-checks",{"title":73,"path":74,"stem":75,"icon":76},"useRealtimeRoom","\u002Fcomposables\u002Fuserealtimeroom","2.composables\u002F7.useRealtimeRoom","i-lucide-door-open",{"title":78,"icon":79,"path":80,"stem":81,"children":82,"page":37},"Technical","i-lucide-cpu","\u002Ftechnical","3.technical",[83,88,92],{"title":84,"path":85,"stem":86,"icon":87},"Architecture","\u002Ftechnical\u002Farchitecture","3.technical\u002F1.architecture","i-lucide-network",{"title":89,"path":90,"stem":91,"icon":52},"Notification Layer","\u002Ftechnical\u002Fpubsub","3.technical\u002F2.pubsub",{"title":93,"path":94,"stem":95,"icon":96},"Multi-Server Sync","\u002Ftechnical\u002Fcross-server-sync","3.technical\u002F3.cross-server-sync","i-lucide-server",{"title":98,"path":99,"stem":100,"children":101,"icon":103},"Blocks","\u002Fblocks","4.blocks\u002F1.index",[102],{"title":98,"path":99,"stem":100,"icon":103},"i-lucide-layout-grid",{"title":105,"path":106,"stem":107,"children":108,"icon":110},"Components","\u002Fcomponents","5.components\u002F1.index",[109],{"title":105,"path":106,"stem":107,"icon":110},"i-lucide-component",{"id":112,"title":73,"body":113,"description":2851,"extension":2852,"links":2853,"meta":2854,"navigation":2855,"path":74,"seo":2856,"stem":75,"__hash__":2857},"docs\u002F2.composables\u002F7.useRealtimeRoom.md",{"type":114,"value":115,"toc":2828},"minimark",[116,120,145,159,163,586,590,621,625,629,649,655,659,975,978,981,1075,1079,1084,1153,1163,1166,1172,1241,1244,1250,1311,1315,1330,1377,1380,1389,1449,1453,1458,1608,1612,1617,1621,1630,1750,1754,1760,1950,1955,1959,1963,1966,2824],[117,118,73],"h1",{"id":119},"userealtimeroom",[121,122,123,124,130,131,130,135,139,140,144],"p",{},"An explicit room concept that scopes ",[125,126,127],"a",{"href":45},[128,129,44],"code",{},", ",[125,132,133],{"href":50},[128,134,49],{},[125,136,137],{"href":60},[128,138,59],{},", and ",[125,141,142],{"href":65},[128,143,64],{}," together under one id, with server-side lifecycle hooks and a single auth checkpoint instead of gating every handler individually.",[121,146,147,148,151,152,155,156,158],{},"It's a convenience layer, not a requirement. ",[128,149,150],{},"useRealtimeLock(key, { room })"," and ",[128,153,154],{},"useRealtimePresence(room)"," keep working standalone without ever calling ",[128,157,73],{},"; they pass through the same server-side membership path implicitly.",[160,161,23],"h2",{"id":162},"usage",[164,165,170],"pre",{"className":166,"code":167,"language":168,"meta":169,"style":169},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\nconst room = useRealtimeRoom('document:123')\n\nconst doc = room.state('content', '')\nconst { members } = room.presence({ info: { name: 'Alice' } })\nconst { claim, release, ownedByMe } = room.lock('editing')\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cdiv class=\"space-y-2\">\n    \u003Cp>{{ Object.keys(members).length }} people here\u003C\u002Fp>\n    \u003CUTextarea v-model=\"doc\" :disabled=\"!ownedByMe\" class=\"w-full\" \u002F>\n    \u003CUButton v-if=\"!ownedByMe\" @click=\"claim()\">Edit\u003C\u002FUButton>\n    \u003CUButton v-else @click=\"release({ changed: true })\">Save\u003C\u002FUButton>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n","vue","",[128,171,172,207,237,244,280,337,379,389,394,404,427,447,493,535,567,577],{"__ignoreMap":169},[173,174,177,181,185,189,192,195,198,202,204],"span",{"class":175,"line":176},"line",1,[173,178,180],{"class":179},"sMK4o","\u003C",[173,182,184],{"class":183},"swJcz","script",[173,186,188],{"class":187},"spNyl"," setup",[173,190,191],{"class":187}," lang",[173,193,194],{"class":179},"=",[173,196,197],{"class":179},"\"",[173,199,201],{"class":200},"sfazB","ts",[173,203,197],{"class":179},[173,205,206],{"class":179},">\n",[173,208,210,213,217,219,223,226,229,232,234],{"class":175,"line":209},2,[173,211,212],{"class":187},"const",[173,214,216],{"class":215},"sTEyZ"," room ",[173,218,194],{"class":179},[173,220,222],{"class":221},"s2Zo4"," useRealtimeRoom",[173,224,225],{"class":215},"(",[173,227,228],{"class":179},"'",[173,230,231],{"class":200},"document:123",[173,233,228],{"class":179},[173,235,236],{"class":215},")\n",[173,238,240],{"class":175,"line":239},3,[173,241,243],{"emptyLinePlaceholder":242},true,"\n",[173,245,247,249,252,254,257,260,263,265,267,270,272,275,278],{"class":175,"line":246},4,[173,248,212],{"class":187},[173,250,251],{"class":215}," doc ",[173,253,194],{"class":179},[173,255,256],{"class":215}," room",[173,258,259],{"class":179},".",[173,261,262],{"class":221},"state",[173,264,225],{"class":215},[173,266,228],{"class":179},[173,268,269],{"class":200},"content",[173,271,228],{"class":179},[173,273,274],{"class":179},",",[173,276,277],{"class":179}," ''",[173,279,236],{"class":215},[173,281,283,285,288,291,294,297,299,301,304,306,309,312,315,317,320,322,325,328,330,333,335],{"class":175,"line":282},5,[173,284,212],{"class":187},[173,286,287],{"class":179}," {",[173,289,290],{"class":215}," members ",[173,292,293],{"class":179},"}",[173,295,296],{"class":179}," =",[173,298,256],{"class":215},[173,300,259],{"class":179},[173,302,303],{"class":221},"presence",[173,305,225],{"class":215},[173,307,308],{"class":179},"{",[173,310,311],{"class":183}," info",[173,313,314],{"class":179},":",[173,316,287],{"class":179},[173,318,319],{"class":183}," name",[173,321,314],{"class":179},[173,323,324],{"class":179}," '",[173,326,327],{"class":200},"Alice",[173,329,228],{"class":179},[173,331,332],{"class":179}," }",[173,334,332],{"class":179},[173,336,236],{"class":215},[173,338,340,342,344,347,349,352,354,357,359,361,363,365,368,370,372,375,377],{"class":175,"line":339},6,[173,341,212],{"class":187},[173,343,287],{"class":179},[173,345,346],{"class":215}," claim",[173,348,274],{"class":179},[173,350,351],{"class":215}," release",[173,353,274],{"class":179},[173,355,356],{"class":215}," ownedByMe ",[173,358,293],{"class":179},[173,360,296],{"class":179},[173,362,256],{"class":215},[173,364,259],{"class":179},[173,366,367],{"class":221},"lock",[173,369,225],{"class":215},[173,371,228],{"class":179},[173,373,374],{"class":200},"editing",[173,376,228],{"class":179},[173,378,236],{"class":215},[173,380,382,385,387],{"class":175,"line":381},7,[173,383,384],{"class":179},"\u003C\u002F",[173,386,184],{"class":183},[173,388,206],{"class":179},[173,390,392],{"class":175,"line":391},8,[173,393,243],{"emptyLinePlaceholder":242},[173,395,397,399,402],{"class":175,"line":396},9,[173,398,180],{"class":179},[173,400,401],{"class":183},"template",[173,403,206],{"class":179},[173,405,407,410,413,416,418,420,423,425],{"class":175,"line":406},10,[173,408,409],{"class":179},"  \u003C",[173,411,412],{"class":183},"div",[173,414,415],{"class":187}," class",[173,417,194],{"class":179},[173,419,197],{"class":179},[173,421,422],{"class":200},"space-y-2",[173,424,197],{"class":179},[173,426,206],{"class":179},[173,428,430,433,435,438,441,443,445],{"class":175,"line":429},11,[173,431,432],{"class":179},"    \u003C",[173,434,121],{"class":183},[173,436,437],{"class":179},">",[173,439,440],{"class":215},"{{ Object.keys(members).length }} people here",[173,442,384],{"class":179},[173,444,121],{"class":183},[173,446,206],{"class":179},[173,448,450,452,455,458,460,462,465,467,470,472,474,477,479,481,483,485,488,490],{"class":175,"line":449},12,[173,451,432],{"class":179},[173,453,454],{"class":183},"UTextarea",[173,456,457],{"class":187}," v-model",[173,459,194],{"class":179},[173,461,197],{"class":179},[173,463,464],{"class":200},"doc",[173,466,197],{"class":179},[173,468,469],{"class":187}," :disabled",[173,471,194],{"class":179},[173,473,197],{"class":179},[173,475,476],{"class":200},"!ownedByMe",[173,478,197],{"class":179},[173,480,415],{"class":187},[173,482,194],{"class":179},[173,484,197],{"class":179},[173,486,487],{"class":200},"w-full",[173,489,197],{"class":179},[173,491,492],{"class":179}," \u002F>\n",[173,494,496,498,501,504,506,508,510,512,515,517,519,522,524,526,529,531,533],{"class":175,"line":495},13,[173,497,432],{"class":179},[173,499,500],{"class":183},"UButton",[173,502,503],{"class":187}," v-if",[173,505,194],{"class":179},[173,507,197],{"class":179},[173,509,476],{"class":200},[173,511,197],{"class":179},[173,513,514],{"class":187}," @click",[173,516,194],{"class":179},[173,518,197],{"class":179},[173,520,521],{"class":200},"claim()",[173,523,197],{"class":179},[173,525,437],{"class":179},[173,527,528],{"class":215},"Edit",[173,530,384],{"class":179},[173,532,500],{"class":183},[173,534,206],{"class":179},[173,536,538,540,542,545,547,549,551,554,556,558,561,563,565],{"class":175,"line":537},14,[173,539,432],{"class":179},[173,541,500],{"class":183},[173,543,544],{"class":187}," v-else",[173,546,514],{"class":187},[173,548,194],{"class":179},[173,550,197],{"class":179},[173,552,553],{"class":200},"release({ changed: true })",[173,555,197],{"class":179},[173,557,437],{"class":179},[173,559,560],{"class":215},"Save",[173,562,384],{"class":179},[173,564,500],{"class":183},[173,566,206],{"class":179},[173,568,570,573,575],{"class":175,"line":569},15,[173,571,572],{"class":179},"  \u003C\u002F",[173,574,412],{"class":183},[173,576,206],{"class":179},[173,578,580,582,584],{"class":175,"line":579},16,[173,581,384],{"class":179},[173,583,401],{"class":183},[173,585,206],{"class":179},[160,587,589],{"id":588},"type-signature","Type Signature",[164,591,594],{"className":592,"code":593,"language":201,"meta":169,"style":169},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","function useRealtimeRoom(roomId: string): UseRealtimeRoomReturn\n",[128,595,596],{"__ignoreMap":169},[173,597,598,601,603,605,609,611,615,618],{"class":175,"line":176},[173,599,600],{"class":187},"function",[173,602,222],{"class":221},[173,604,225],{"class":179},[173,606,608],{"class":607},"sHdIc","roomId",[173,610,314],{"class":179},[173,612,614],{"class":613},"sBMFI"," string",[173,616,617],{"class":179},"):",[173,619,620],{"class":613}," UseRealtimeRoomReturn\n",[160,622,624],{"id":623},"parameters","Parameters",[626,627,608],"h3",{"id":628},"roomid",[630,631,632,643],"ul",{},[633,634,635,639,640],"li",{},[636,637,638],"strong",{},"Type:"," ",[128,641,642],{},"string",[633,644,645,648],{},[636,646,647],{},"Required:"," Yes",[121,650,651,652,654],{},"A unique identifier for the room. Calling ",[128,653,73],{}," joins it immediately.",[160,656,658],{"id":657},"return-value","Return Value",[164,660,662],{"className":592,"code":661,"language":201,"meta":169,"style":169},"interface UseRealtimeRoomReturn {\n  joined: Readonly\u003CRef\u003Cboolean>>\n  join: () => Promise\u003Cboolean>\n  leave: () => Promise\u003Cvoid>\n  presence: \u003CTInfo = unknown>(options?: UseRealtimePresenceOptions\u003CTInfo>) => UseRealtimePresenceReturn\u003CTInfo>\n  lock: \u003CTOwnerInfo = string>(key: string, options?: Omit\u003CUseRealtimeLockOptions\u003CTOwnerInfo>, 'room'>) => UseRealtimeLockReturn\u003CTOwnerInfo>\n  locks: () => UseRealtimeLockRoomReturn\n  state: \u003CT>(key: string, defaultValue?: T, options?: useRealtimeStateOptions) => UseRealtimeStateReturn\u003CT>\n  events: \u003CTEventMap = Record\u003Cstring, unknown>>(options?: UseRealtimeEventsOptions) => UseRealtimeEventsReturn\u003CTEventMap>\n}\n",[128,663,664,675,698,720,740,788,855,869,922,970],{"__ignoreMap":169},[173,665,666,669,672],{"class":175,"line":176},[173,667,668],{"class":187},"interface",[173,670,671],{"class":613}," UseRealtimeRoomReturn",[173,673,674],{"class":179}," {\n",[173,676,677,680,682,685,687,690,692,695],{"class":175,"line":209},[173,678,679],{"class":183},"  joined",[173,681,314],{"class":179},[173,683,684],{"class":613}," Readonly",[173,686,180],{"class":179},[173,688,689],{"class":613},"Ref",[173,691,180],{"class":179},[173,693,694],{"class":613},"boolean",[173,696,697],{"class":179},">>\n",[173,699,700,703,705,708,711,714,716,718],{"class":175,"line":239},[173,701,702],{"class":183},"  join",[173,704,314],{"class":179},[173,706,707],{"class":179}," ()",[173,709,710],{"class":187}," =>",[173,712,713],{"class":613}," Promise",[173,715,180],{"class":179},[173,717,694],{"class":613},[173,719,206],{"class":179},[173,721,722,725,727,729,731,733,735,738],{"class":175,"line":246},[173,723,724],{"class":183},"  leave",[173,726,314],{"class":179},[173,728,707],{"class":179},[173,730,710],{"class":187},[173,732,713],{"class":613},[173,734,180],{"class":179},[173,736,737],{"class":613},"void",[173,739,206],{"class":179},[173,741,742,745,747,750,753,755,758,761,764,767,770,772,774,777,779,782,784,786],{"class":175,"line":282},[173,743,744],{"class":183},"  presence",[173,746,314],{"class":179},[173,748,749],{"class":179}," \u003C",[173,751,752],{"class":613},"TInfo",[173,754,296],{"class":179},[173,756,757],{"class":613}," unknown",[173,759,760],{"class":179},">(",[173,762,763],{"class":607},"options",[173,765,766],{"class":179},"?:",[173,768,769],{"class":613}," UseRealtimePresenceOptions",[173,771,180],{"class":179},[173,773,752],{"class":613},[173,775,776],{"class":179},">)",[173,778,710],{"class":187},[173,780,781],{"class":613}," UseRealtimePresenceReturn",[173,783,180],{"class":179},[173,785,752],{"class":613},[173,787,206],{"class":179},[173,789,790,793,795,797,800,802,804,806,809,811,813,815,818,820,823,825,828,830,832,835,837,840,842,844,846,849,851,853],{"class":175,"line":339},[173,791,792],{"class":183},"  lock",[173,794,314],{"class":179},[173,796,749],{"class":179},[173,798,799],{"class":613},"TOwnerInfo",[173,801,296],{"class":179},[173,803,614],{"class":613},[173,805,760],{"class":179},[173,807,808],{"class":607},"key",[173,810,314],{"class":179},[173,812,614],{"class":613},[173,814,274],{"class":179},[173,816,817],{"class":607}," options",[173,819,766],{"class":179},[173,821,822],{"class":613}," Omit",[173,824,180],{"class":179},[173,826,827],{"class":613},"UseRealtimeLockOptions",[173,829,180],{"class":179},[173,831,799],{"class":613},[173,833,834],{"class":179},">,",[173,836,324],{"class":179},[173,838,839],{"class":200},"room",[173,841,228],{"class":179},[173,843,776],{"class":179},[173,845,710],{"class":187},[173,847,848],{"class":613}," UseRealtimeLockReturn",[173,850,180],{"class":179},[173,852,799],{"class":613},[173,854,206],{"class":179},[173,856,857,860,862,864,866],{"class":175,"line":381},[173,858,859],{"class":183},"  locks",[173,861,314],{"class":179},[173,863,707],{"class":179},[173,865,710],{"class":187},[173,867,868],{"class":613}," UseRealtimeLockRoomReturn\n",[173,870,871,874,876,878,881,883,885,887,889,891,894,896,899,901,903,905,908,911,913,916,918,920],{"class":175,"line":391},[173,872,873],{"class":183},"  state",[173,875,314],{"class":179},[173,877,749],{"class":179},[173,879,880],{"class":613},"T",[173,882,760],{"class":179},[173,884,808],{"class":607},[173,886,314],{"class":179},[173,888,614],{"class":613},[173,890,274],{"class":179},[173,892,893],{"class":607}," defaultValue",[173,895,766],{"class":179},[173,897,898],{"class":613}," T",[173,900,274],{"class":179},[173,902,817],{"class":607},[173,904,766],{"class":179},[173,906,907],{"class":613}," useRealtimeStateOptions",[173,909,910],{"class":179},")",[173,912,710],{"class":187},[173,914,915],{"class":613}," UseRealtimeStateReturn",[173,917,180],{"class":179},[173,919,880],{"class":613},[173,921,206],{"class":179},[173,923,924,927,929,931,934,936,939,941,943,945,947,950,952,954,957,959,961,964,966,968],{"class":175,"line":396},[173,925,926],{"class":183},"  events",[173,928,314],{"class":179},[173,930,749],{"class":179},[173,932,933],{"class":613},"TEventMap",[173,935,296],{"class":179},[173,937,938],{"class":613}," Record",[173,940,180],{"class":179},[173,942,642],{"class":613},[173,944,274],{"class":179},[173,946,757],{"class":613},[173,948,949],{"class":179},">>(",[173,951,763],{"class":607},[173,953,766],{"class":179},[173,955,956],{"class":613}," UseRealtimeEventsOptions",[173,958,910],{"class":179},[173,960,710],{"class":187},[173,962,963],{"class":613}," UseRealtimeEventsReturn",[173,965,180],{"class":179},[173,967,933],{"class":613},[173,969,206],{"class":179},[173,971,972],{"class":175,"line":406},[173,973,974],{"class":179},"}\n",[626,976,977],{"id":977},"joined",[121,979,980],{},"Whether this client is currently a member of the room, reflecting the last join\u002Fleave acknowledgment:",[164,982,984],{"className":592,"code":983,"language":201,"meta":169,"style":169},"const room = useRealtimeRoom('document:123')\n\nwatchEffect(() => {\n  if (!room.joined.value) console.log('Not in the room')\n})\n",[128,985,986,1006,1010,1024,1069],{"__ignoreMap":169},[173,987,988,990,992,994,996,998,1000,1002,1004],{"class":175,"line":176},[173,989,212],{"class":187},[173,991,216],{"class":215},[173,993,194],{"class":179},[173,995,222],{"class":221},[173,997,225],{"class":215},[173,999,228],{"class":179},[173,1001,231],{"class":200},[173,1003,228],{"class":179},[173,1005,236],{"class":215},[173,1007,1008],{"class":175,"line":209},[173,1009,243],{"emptyLinePlaceholder":242},[173,1011,1012,1015,1017,1020,1022],{"class":175,"line":239},[173,1013,1014],{"class":221},"watchEffect",[173,1016,225],{"class":215},[173,1018,1019],{"class":179},"()",[173,1021,710],{"class":187},[173,1023,674],{"class":179},[173,1025,1026,1030,1033,1036,1038,1040,1042,1044,1047,1050,1053,1055,1058,1060,1062,1065,1067],{"class":175,"line":246},[173,1027,1029],{"class":1028},"s7zQu","  if",[173,1031,1032],{"class":183}," (",[173,1034,1035],{"class":179},"!",[173,1037,839],{"class":215},[173,1039,259],{"class":179},[173,1041,977],{"class":215},[173,1043,259],{"class":179},[173,1045,1046],{"class":215},"value",[173,1048,1049],{"class":183},") ",[173,1051,1052],{"class":215},"console",[173,1054,259],{"class":179},[173,1056,1057],{"class":221},"log",[173,1059,225],{"class":183},[173,1061,228],{"class":179},[173,1063,1064],{"class":200},"Not in the room",[173,1066,228],{"class":179},[173,1068,236],{"class":183},[173,1070,1071,1073],{"class":175,"line":282},[173,1072,293],{"class":179},[173,1074,236],{"class":215},[626,1076,1078],{"id":1077},"join-leave","join() \u002F leave()",[121,1080,1081,1083],{},[128,1082,73],{}," joins automatically on setup and leaves on unmount. Call these directly for manual control:",[164,1085,1087],{"className":592,"code":1086,"language":201,"meta":169,"style":169},"const room = useRealtimeRoom('document:123')\n\nasync function switchDocument() {\n  await room.leave()\n  \u002F\u002F ... navigate elsewhere ...\n}\n",[128,1088,1089,1109,1113,1128,1143,1149],{"__ignoreMap":169},[173,1090,1091,1093,1095,1097,1099,1101,1103,1105,1107],{"class":175,"line":176},[173,1092,212],{"class":187},[173,1094,216],{"class":215},[173,1096,194],{"class":179},[173,1098,222],{"class":221},[173,1100,225],{"class":215},[173,1102,228],{"class":179},[173,1104,231],{"class":200},[173,1106,228],{"class":179},[173,1108,236],{"class":215},[173,1110,1111],{"class":175,"line":209},[173,1112,243],{"emptyLinePlaceholder":242},[173,1114,1115,1118,1121,1124,1126],{"class":175,"line":239},[173,1116,1117],{"class":187},"async",[173,1119,1120],{"class":187}," function",[173,1122,1123],{"class":221}," switchDocument",[173,1125,1019],{"class":179},[173,1127,674],{"class":179},[173,1129,1130,1133,1135,1137,1140],{"class":175,"line":246},[173,1131,1132],{"class":1028},"  await",[173,1134,256],{"class":215},[173,1136,259],{"class":179},[173,1138,1139],{"class":221},"leave",[173,1141,1142],{"class":183},"()\n",[173,1144,1145],{"class":175,"line":282},[173,1146,1148],{"class":1147},"sHwdD","  \u002F\u002F ... navigate elsewhere ...\n",[173,1150,1151],{"class":175,"line":339},[173,1152,974],{"class":179},[121,1154,1155,1158,1159,1162],{},[128,1156,1157],{},"join()"," resolves to whether it succeeded. It's gated server-side by the ",[128,1160,1161],{},"nuxt-realtime:canJoinRoom"," hook (allowed by default).",[626,1164,1165],{"id":303},"presence()",[121,1167,1168,1169,314],{},"Presence scoped to this room, equivalent to ",[128,1170,1171],{},"useRealtimePresence(roomId, options)",[164,1173,1175],{"className":592,"code":1174,"language":201,"meta":169,"style":169},"const room = useRealtimeRoom('document:123')\nconst { members } = room.presence({ info: { name: 'Alice' } })\n",[128,1176,1177,1197],{"__ignoreMap":169},[173,1178,1179,1181,1183,1185,1187,1189,1191,1193,1195],{"class":175,"line":176},[173,1180,212],{"class":187},[173,1182,216],{"class":215},[173,1184,194],{"class":179},[173,1186,222],{"class":221},[173,1188,225],{"class":215},[173,1190,228],{"class":179},[173,1192,231],{"class":200},[173,1194,228],{"class":179},[173,1196,236],{"class":215},[173,1198,1199,1201,1203,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239],{"class":175,"line":209},[173,1200,212],{"class":187},[173,1202,287],{"class":179},[173,1204,290],{"class":215},[173,1206,293],{"class":179},[173,1208,296],{"class":179},[173,1210,256],{"class":215},[173,1212,259],{"class":179},[173,1214,303],{"class":221},[173,1216,225],{"class":215},[173,1218,308],{"class":179},[173,1220,311],{"class":183},[173,1222,314],{"class":179},[173,1224,287],{"class":179},[173,1226,319],{"class":183},[173,1228,314],{"class":179},[173,1230,324],{"class":179},[173,1232,327],{"class":200},[173,1234,228],{"class":179},[173,1236,332],{"class":179},[173,1238,332],{"class":179},[173,1240,236],{"class":215},[626,1242,1243],{"id":367},"lock()",[121,1245,1246,1247,314],{},"A lock scoped to this room, equivalent to ",[128,1248,1249],{},"useRealtimeLock(key, { ...options, room: roomId })",[164,1251,1253],{"className":592,"code":1252,"language":201,"meta":169,"style":169},"const room = useRealtimeRoom('document:123')\nconst { claim, release, ownedByMe } = room.lock('editing')\n",[128,1254,1255,1275],{"__ignoreMap":169},[173,1256,1257,1259,1261,1263,1265,1267,1269,1271,1273],{"class":175,"line":176},[173,1258,212],{"class":187},[173,1260,216],{"class":215},[173,1262,194],{"class":179},[173,1264,222],{"class":221},[173,1266,225],{"class":215},[173,1268,228],{"class":179},[173,1270,231],{"class":200},[173,1272,228],{"class":179},[173,1274,236],{"class":215},[173,1276,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309],{"class":175,"line":209},[173,1278,212],{"class":187},[173,1280,287],{"class":179},[173,1282,346],{"class":215},[173,1284,274],{"class":179},[173,1286,351],{"class":215},[173,1288,274],{"class":179},[173,1290,356],{"class":215},[173,1292,293],{"class":179},[173,1294,296],{"class":179},[173,1296,256],{"class":215},[173,1298,259],{"class":179},[173,1300,367],{"class":221},[173,1302,225],{"class":215},[173,1304,228],{"class":179},[173,1306,374],{"class":200},[173,1308,228],{"class":179},[173,1310,236],{"class":215},[626,1312,1314],{"id":1313},"locks","locks()",[121,1316,1317,1318,1321,1322,1325,1326,1329],{},"Read-only, bulk view of every lock claimed via ",[128,1319,1320],{},"room.lock()"," in this room, equivalent to ",[128,1323,1324],{},"useRealtimeLockRoom(roomId)",". Use this for an overview across many keys; use ",[128,1327,1328],{},"lock(key)"," to claim or release one specific key:",[164,1331,1333],{"className":592,"code":1332,"language":201,"meta":169,"style":169},"const room = useRealtimeRoom('board:main')\nconst { locks } = room.locks()\n",[128,1334,1335,1356],{"__ignoreMap":169},[173,1336,1337,1339,1341,1343,1345,1347,1349,1352,1354],{"class":175,"line":176},[173,1338,212],{"class":187},[173,1340,216],{"class":215},[173,1342,194],{"class":179},[173,1344,222],{"class":221},[173,1346,225],{"class":215},[173,1348,228],{"class":179},[173,1350,1351],{"class":200},"board:main",[173,1353,228],{"class":179},[173,1355,236],{"class":215},[173,1357,1358,1360,1362,1365,1367,1369,1371,1373,1375],{"class":175,"line":209},[173,1359,212],{"class":187},[173,1361,287],{"class":179},[173,1363,1364],{"class":215}," locks ",[173,1366,293],{"class":179},[173,1368,296],{"class":179},[173,1370,256],{"class":215},[173,1372,259],{"class":179},[173,1374,1313],{"class":221},[173,1376,1142],{"class":215},[626,1378,1379],{"id":262},"state()",[121,1381,1382,1383,1385,1386,1388],{},"State scoped to this room. A thin client-side convenience that namespaces ",[128,1384,808],{}," under the room id and delegates to ",[128,1387,44],{},"; it adds no new server protocol:",[164,1390,1392],{"className":592,"code":1391,"language":201,"meta":169,"style":169},"const room = useRealtimeRoom('document:123')\nconst title = room.state('title', 'Untitled')\n",[128,1393,1394,1414],{"__ignoreMap":169},[173,1395,1396,1398,1400,1402,1404,1406,1408,1410,1412],{"class":175,"line":176},[173,1397,212],{"class":187},[173,1399,216],{"class":215},[173,1401,194],{"class":179},[173,1403,222],{"class":221},[173,1405,225],{"class":215},[173,1407,228],{"class":179},[173,1409,231],{"class":200},[173,1411,228],{"class":179},[173,1413,236],{"class":215},[173,1415,1416,1418,1421,1423,1425,1427,1429,1431,1433,1436,1438,1440,1442,1445,1447],{"class":175,"line":209},[173,1417,212],{"class":187},[173,1419,1420],{"class":215}," title ",[173,1422,194],{"class":179},[173,1424,256],{"class":215},[173,1426,259],{"class":179},[173,1428,262],{"class":221},[173,1430,225],{"class":215},[173,1432,228],{"class":179},[173,1434,1435],{"class":200},"title",[173,1437,228],{"class":179},[173,1439,274],{"class":179},[173,1441,324],{"class":179},[173,1443,1444],{"class":200},"Untitled",[173,1446,228],{"class":179},[173,1448,236],{"class":215},[626,1450,1452],{"id":1451},"events","events()",[121,1454,1455,1456,314],{},"Event pub\u002Fsub scoped to this room. Namespaces the channel under the room id and delegates to ",[128,1457,49],{},[164,1459,1461],{"className":592,"code":1460,"language":201,"meta":169,"style":169},"const room = useRealtimeRoom('document:123')\nconst { subscribe, publish } = room.events()\n\nsubscribe('comment-added', (comment) => {\n  console.log('New comment:', comment)\n})\n\npublish('comment-added', { text: 'Nice work!' })\n",[128,1462,1463,1483,1509,1513,1540,1565,1571,1575],{"__ignoreMap":169},[173,1464,1465,1467,1469,1471,1473,1475,1477,1479,1481],{"class":175,"line":176},[173,1466,212],{"class":187},[173,1468,216],{"class":215},[173,1470,194],{"class":179},[173,1472,222],{"class":221},[173,1474,225],{"class":215},[173,1476,228],{"class":179},[173,1478,231],{"class":200},[173,1480,228],{"class":179},[173,1482,236],{"class":215},[173,1484,1485,1487,1489,1492,1494,1497,1499,1501,1503,1505,1507],{"class":175,"line":209},[173,1486,212],{"class":187},[173,1488,287],{"class":179},[173,1490,1491],{"class":215}," subscribe",[173,1493,274],{"class":179},[173,1495,1496],{"class":215}," publish ",[173,1498,293],{"class":179},[173,1500,296],{"class":179},[173,1502,256],{"class":215},[173,1504,259],{"class":179},[173,1506,1451],{"class":221},[173,1508,1142],{"class":215},[173,1510,1511],{"class":175,"line":239},[173,1512,243],{"emptyLinePlaceholder":242},[173,1514,1515,1518,1520,1522,1525,1527,1529,1531,1534,1536,1538],{"class":175,"line":246},[173,1516,1517],{"class":221},"subscribe",[173,1519,225],{"class":215},[173,1521,228],{"class":179},[173,1523,1524],{"class":200},"comment-added",[173,1526,228],{"class":179},[173,1528,274],{"class":179},[173,1530,1032],{"class":179},[173,1532,1533],{"class":607},"comment",[173,1535,910],{"class":179},[173,1537,710],{"class":187},[173,1539,674],{"class":179},[173,1541,1542,1545,1547,1549,1551,1553,1556,1558,1560,1563],{"class":175,"line":282},[173,1543,1544],{"class":215},"  console",[173,1546,259],{"class":179},[173,1548,1057],{"class":221},[173,1550,225],{"class":183},[173,1552,228],{"class":179},[173,1554,1555],{"class":200},"New comment:",[173,1557,228],{"class":179},[173,1559,274],{"class":179},[173,1561,1562],{"class":215}," comment",[173,1564,236],{"class":183},[173,1566,1567,1569],{"class":175,"line":339},[173,1568,293],{"class":179},[173,1570,236],{"class":215},[173,1572,1573],{"class":175,"line":381},[173,1574,243],{"emptyLinePlaceholder":242},[173,1576,1577,1580,1582,1584,1586,1588,1590,1592,1595,1597,1599,1602,1604,1606],{"class":175,"line":391},[173,1578,1579],{"class":221},"publish",[173,1581,225],{"class":215},[173,1583,228],{"class":179},[173,1585,1524],{"class":200},[173,1587,228],{"class":179},[173,1589,274],{"class":179},[173,1591,287],{"class":179},[173,1593,1594],{"class":183}," text",[173,1596,314],{"class":179},[173,1598,324],{"class":179},[173,1600,1601],{"class":200},"Nice work!",[173,1603,228],{"class":179},[173,1605,332],{"class":179},[173,1607,236],{"class":215},[160,1609,1611],{"id":1610},"server-hooks","Server Hooks",[121,1613,1614,1616],{},[128,1615,73],{}," fires three server-side hooks around joining and leaving. Register them in a Nitro plugin.",[626,1618,1620],{"id":1619},"gating-who-can-join","Gating who can join",[121,1622,1623,1625,1626,1629],{},[128,1624,1161],{}," is the single checkpoint for per-room auth, run once per connection the first time it joins a given room. Allowed by default; set ",[128,1627,1628],{},"ctx.allow = false"," to deny:",[164,1631,1634],{"className":592,"code":1632,"filename":1633,"language":201,"meta":169,"style":169},"export default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('nuxt-realtime:canJoinRoom', async (ctx) => {\n    ctx.allow = await userCanAccessRoom(ctx.connectionId, ctx.roomId)\n  })\n})\n","server\u002Fplugins\u002Frealtime-room-auth.ts",[128,1635,1636,1660,1699,1737,1744],{"__ignoreMap":169},[173,1637,1638,1641,1644,1647,1649,1651,1654,1656,1658],{"class":175,"line":176},[173,1639,1640],{"class":1028},"export",[173,1642,1643],{"class":1028}," default",[173,1645,1646],{"class":221}," defineNitroPlugin",[173,1648,225],{"class":215},[173,1650,225],{"class":179},[173,1652,1653],{"class":607},"nitroApp",[173,1655,910],{"class":179},[173,1657,710],{"class":187},[173,1659,674],{"class":179},[173,1661,1662,1665,1667,1670,1672,1675,1677,1679,1681,1683,1685,1688,1690,1693,1695,1697],{"class":175,"line":209},[173,1663,1664],{"class":215},"  nitroApp",[173,1666,259],{"class":179},[173,1668,1669],{"class":215},"hooks",[173,1671,259],{"class":179},[173,1673,1674],{"class":221},"hook",[173,1676,225],{"class":183},[173,1678,228],{"class":179},[173,1680,1161],{"class":200},[173,1682,228],{"class":179},[173,1684,274],{"class":179},[173,1686,1687],{"class":187}," async",[173,1689,1032],{"class":179},[173,1691,1692],{"class":607},"ctx",[173,1694,910],{"class":179},[173,1696,710],{"class":187},[173,1698,674],{"class":179},[173,1700,1701,1704,1706,1709,1711,1714,1717,1719,1721,1723,1726,1728,1731,1733,1735],{"class":175,"line":239},[173,1702,1703],{"class":215},"    ctx",[173,1705,259],{"class":179},[173,1707,1708],{"class":215},"allow",[173,1710,296],{"class":179},[173,1712,1713],{"class":1028}," await",[173,1715,1716],{"class":221}," userCanAccessRoom",[173,1718,225],{"class":183},[173,1720,1692],{"class":215},[173,1722,259],{"class":179},[173,1724,1725],{"class":215},"connectionId",[173,1727,274],{"class":179},[173,1729,1730],{"class":215}," ctx",[173,1732,259],{"class":179},[173,1734,608],{"class":215},[173,1736,236],{"class":183},[173,1738,1739,1742],{"class":175,"line":246},[173,1740,1741],{"class":179},"  }",[173,1743,236],{"class":183},[173,1745,1746,1748],{"class":175,"line":282},[173,1747,293],{"class":179},[173,1749,236],{"class":215},[626,1751,1753],{"id":1752},"room-created-emptied","Room created \u002F emptied",[121,1755,1756,1759],{},[128,1757,1758],{},"nuxt-realtime:roomCreated"," fires once when a room's membership goes from 0 to 1, the natural place for provisioning logic:",[164,1761,1764],{"className":592,"code":1762,"filename":1763,"language":201,"meta":169,"style":169},"export default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('nuxt-realtime:roomCreated', async ({ roomId }) => {\n    await db.rooms.upsert({ id: roomId, createdAt: new Date() })\n  })\n\n  nitroApp.hooks.hook('nuxt-realtime:roomEmpty', async ({ roomId }) => {\n    await db.rooms.archive(roomId)\n  })\n})\n","server\u002Fplugins\u002Frealtime-room-lifecycle.ts",[128,1765,1766,1786,1823,1872,1878,1882,1917,1938,1944],{"__ignoreMap":169},[173,1767,1768,1770,1772,1774,1776,1778,1780,1782,1784],{"class":175,"line":176},[173,1769,1640],{"class":1028},[173,1771,1643],{"class":1028},[173,1773,1646],{"class":221},[173,1775,225],{"class":215},[173,1777,225],{"class":179},[173,1779,1653],{"class":607},[173,1781,910],{"class":179},[173,1783,710],{"class":187},[173,1785,674],{"class":179},[173,1787,1788,1790,1792,1794,1796,1798,1800,1802,1804,1806,1808,1810,1813,1816,1819,1821],{"class":175,"line":209},[173,1789,1664],{"class":215},[173,1791,259],{"class":179},[173,1793,1669],{"class":215},[173,1795,259],{"class":179},[173,1797,1674],{"class":221},[173,1799,225],{"class":183},[173,1801,228],{"class":179},[173,1803,1758],{"class":200},[173,1805,228],{"class":179},[173,1807,274],{"class":179},[173,1809,1687],{"class":187},[173,1811,1812],{"class":179}," ({",[173,1814,1815],{"class":607}," roomId",[173,1817,1818],{"class":179}," })",[173,1820,710],{"class":187},[173,1822,674],{"class":179},[173,1824,1825,1828,1831,1833,1836,1838,1841,1843,1845,1848,1850,1852,1854,1857,1859,1862,1865,1868,1870],{"class":175,"line":239},[173,1826,1827],{"class":1028},"    await",[173,1829,1830],{"class":215}," db",[173,1832,259],{"class":179},[173,1834,1835],{"class":215},"rooms",[173,1837,259],{"class":179},[173,1839,1840],{"class":221},"upsert",[173,1842,225],{"class":183},[173,1844,308],{"class":179},[173,1846,1847],{"class":183}," id",[173,1849,314],{"class":179},[173,1851,1815],{"class":215},[173,1853,274],{"class":179},[173,1855,1856],{"class":183}," createdAt",[173,1858,314],{"class":179},[173,1860,1861],{"class":179}," new",[173,1863,1864],{"class":221}," Date",[173,1866,1867],{"class":183},"() ",[173,1869,293],{"class":179},[173,1871,236],{"class":183},[173,1873,1874,1876],{"class":175,"line":246},[173,1875,1741],{"class":179},[173,1877,236],{"class":183},[173,1879,1880],{"class":175,"line":282},[173,1881,243],{"emptyLinePlaceholder":242},[173,1883,1884,1886,1888,1890,1892,1894,1896,1898,1901,1903,1905,1907,1909,1911,1913,1915],{"class":175,"line":339},[173,1885,1664],{"class":215},[173,1887,259],{"class":179},[173,1889,1669],{"class":215},[173,1891,259],{"class":179},[173,1893,1674],{"class":221},[173,1895,225],{"class":183},[173,1897,228],{"class":179},[173,1899,1900],{"class":200},"nuxt-realtime:roomEmpty",[173,1902,228],{"class":179},[173,1904,274],{"class":179},[173,1906,1687],{"class":187},[173,1908,1812],{"class":179},[173,1910,1815],{"class":607},[173,1912,1818],{"class":179},[173,1914,710],{"class":187},[173,1916,674],{"class":179},[173,1918,1919,1921,1923,1925,1927,1929,1932,1934,1936],{"class":175,"line":381},[173,1920,1827],{"class":1028},[173,1922,1830],{"class":215},[173,1924,259],{"class":179},[173,1926,1835],{"class":215},[173,1928,259],{"class":179},[173,1930,1931],{"class":221},"archive",[173,1933,225],{"class":183},[173,1935,608],{"class":215},[173,1937,236],{"class":183},[173,1939,1940,1942],{"class":175,"line":391},[173,1941,1741],{"class":179},[173,1943,236],{"class":183},[173,1945,1946,1948],{"class":175,"line":396},[173,1947,293],{"class":179},[173,1949,236],{"class":215},[121,1951,1952,1954],{},[128,1953,1900],{}," fires once when membership goes from 1 to 0, either an explicit leave that empties the room or (after every member's disconnect grace period lapses without a reconnect) the connection registry's sweep.",[160,1956,1958],{"id":1957},"examples","Examples",[626,1960,1962],{"id":1961},"collaborative-document-page","Collaborative Document Page",[121,1964,1965],{},"Combine presence, a title lock, and shared state on a single document page:",[164,1967,1970],{"className":166,"code":1968,"filename":1969,"language":168,"meta":169,"style":169},"\u003Cscript setup lang=\"ts\">\nconst props = defineProps\u003C{ documentId: string }>()\nconst currentUser = useCurrentUser()\n\nconst room = useRealtimeRoom(`document:${props.documentId}`)\n\nconst { members } = room.presence({\n  info: { name: currentUser.name, avatarUrl: currentUser.avatarUrl },\n})\n\nconst title = room.state('title', 'Untitled')\nconst { claim, release, ownedByMe, ownerInfo } = room.lock('title-edit')\n\nconst { subscribe, publish } = room.events()\nconst comments = ref([])\n\nsubscribe('comment-added', (comment) => {\n  comments.value.push(comment)\n})\n\nfunction addComment(text: string) {\n  publish('comment-added', { id: crypto.randomUUID(), text, author: currentUser.name })\n}\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cdiv class=\"space-y-4\">\n    \u003CUAvatarGroup>\n      \u003CUAvatar\n        v-for=\"(info, connectionId) in members\"\n        :key=\"connectionId\"\n        :src=\"info.avatarUrl\"\n        :alt=\"info.name\"\n        :text=\"info.name[0]\"\n      \u002F>\n    \u003C\u002FUAvatarGroup>\n\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003CUInput v-model=\"title\" :disabled=\"!ownedByMe\" \u002F>\n      \u003CUButton v-if=\"!ownedByMe\" :disabled=\"!!ownerInfo\" @click=\"claim()\">\n        Edit title\n      \u003C\u002FUButton>\n      \u003CUButton v-else @click=\"release({ changed: true })\">Done\u003C\u002FUButton>\n    \u003C\u002Fdiv>\n\n    \u003Cul class=\"space-y-1\">\n      \u003Cli v-for=\"comment in comments\" :key=\"comment.id\">\n        \u003Cstrong>{{ comment.author }}:\u003C\u002Fstrong> {{ comment.text }}\n      \u003C\u002Fli>\n    \u003C\u002Ful>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n","DocumentPage.vue",[128,1971,1972,1992,2019,2033,2037,2071,2075,2098,2136,2142,2146,2178,2221,2225,2249,2264,2268,2293,2314,2321,2326,2347,2400,2405,2414,2419,2428,2448,2458,2467,2483,2497,2512,2527,2542,2548,2558,2563,2583,2613,2653,2659,2669,2699,2708,2713,2733,2766,2788,2797,2806,2815],{"__ignoreMap":169},[173,1973,1974,1976,1978,1980,1982,1984,1986,1988,1990],{"class":175,"line":176},[173,1975,180],{"class":179},[173,1977,184],{"class":183},[173,1979,188],{"class":187},[173,1981,191],{"class":187},[173,1983,194],{"class":179},[173,1985,197],{"class":179},[173,1987,201],{"class":200},[173,1989,197],{"class":179},[173,1991,206],{"class":179},[173,1993,1994,1996,1999,2001,2004,2007,2010,2012,2014,2017],{"class":175,"line":209},[173,1995,212],{"class":187},[173,1997,1998],{"class":215}," props ",[173,2000,194],{"class":179},[173,2002,2003],{"class":221}," defineProps",[173,2005,2006],{"class":179},"\u003C{",[173,2008,2009],{"class":183}," documentId",[173,2011,314],{"class":179},[173,2013,614],{"class":613},[173,2015,2016],{"class":179}," }>",[173,2018,1142],{"class":215},[173,2020,2021,2023,2026,2028,2031],{"class":175,"line":239},[173,2022,212],{"class":187},[173,2024,2025],{"class":215}," currentUser ",[173,2027,194],{"class":179},[173,2029,2030],{"class":221}," useCurrentUser",[173,2032,1142],{"class":215},[173,2034,2035],{"class":175,"line":246},[173,2036,243],{"emptyLinePlaceholder":242},[173,2038,2039,2041,2043,2045,2047,2049,2052,2055,2058,2061,2063,2066,2069],{"class":175,"line":282},[173,2040,212],{"class":187},[173,2042,216],{"class":215},[173,2044,194],{"class":179},[173,2046,222],{"class":221},[173,2048,225],{"class":215},[173,2050,2051],{"class":179},"`",[173,2053,2054],{"class":200},"document:",[173,2056,2057],{"class":179},"${",[173,2059,2060],{"class":215},"props",[173,2062,259],{"class":179},[173,2064,2065],{"class":215},"documentId",[173,2067,2068],{"class":179},"}`",[173,2070,236],{"class":215},[173,2072,2073],{"class":175,"line":339},[173,2074,243],{"emptyLinePlaceholder":242},[173,2076,2077,2079,2081,2083,2085,2087,2089,2091,2093,2095],{"class":175,"line":381},[173,2078,212],{"class":187},[173,2080,287],{"class":179},[173,2082,290],{"class":215},[173,2084,293],{"class":179},[173,2086,296],{"class":179},[173,2088,256],{"class":215},[173,2090,259],{"class":179},[173,2092,303],{"class":221},[173,2094,225],{"class":215},[173,2096,2097],{"class":179},"{\n",[173,2099,2100,2103,2105,2107,2109,2111,2114,2116,2119,2121,2124,2126,2128,2130,2133],{"class":175,"line":391},[173,2101,2102],{"class":183},"  info",[173,2104,314],{"class":179},[173,2106,287],{"class":179},[173,2108,319],{"class":183},[173,2110,314],{"class":179},[173,2112,2113],{"class":215}," currentUser",[173,2115,259],{"class":179},[173,2117,2118],{"class":215},"name",[173,2120,274],{"class":179},[173,2122,2123],{"class":183}," avatarUrl",[173,2125,314],{"class":179},[173,2127,2113],{"class":215},[173,2129,259],{"class":179},[173,2131,2132],{"class":215},"avatarUrl ",[173,2134,2135],{"class":179},"},\n",[173,2137,2138,2140],{"class":175,"line":396},[173,2139,293],{"class":179},[173,2141,236],{"class":215},[173,2143,2144],{"class":175,"line":406},[173,2145,243],{"emptyLinePlaceholder":242},[173,2147,2148,2150,2152,2154,2156,2158,2160,2162,2164,2166,2168,2170,2172,2174,2176],{"class":175,"line":429},[173,2149,212],{"class":187},[173,2151,1420],{"class":215},[173,2153,194],{"class":179},[173,2155,256],{"class":215},[173,2157,259],{"class":179},[173,2159,262],{"class":221},[173,2161,225],{"class":215},[173,2163,228],{"class":179},[173,2165,1435],{"class":200},[173,2167,228],{"class":179},[173,2169,274],{"class":179},[173,2171,324],{"class":179},[173,2173,1444],{"class":200},[173,2175,228],{"class":179},[173,2177,236],{"class":215},[173,2179,2180,2182,2184,2186,2188,2190,2192,2195,2197,2200,2202,2204,2206,2208,2210,2212,2214,2217,2219],{"class":175,"line":449},[173,2181,212],{"class":187},[173,2183,287],{"class":179},[173,2185,346],{"class":215},[173,2187,274],{"class":179},[173,2189,351],{"class":215},[173,2191,274],{"class":179},[173,2193,2194],{"class":215}," ownedByMe",[173,2196,274],{"class":179},[173,2198,2199],{"class":215}," ownerInfo ",[173,2201,293],{"class":179},[173,2203,296],{"class":179},[173,2205,256],{"class":215},[173,2207,259],{"class":179},[173,2209,367],{"class":221},[173,2211,225],{"class":215},[173,2213,228],{"class":179},[173,2215,2216],{"class":200},"title-edit",[173,2218,228],{"class":179},[173,2220,236],{"class":215},[173,2222,2223],{"class":175,"line":495},[173,2224,243],{"emptyLinePlaceholder":242},[173,2226,2227,2229,2231,2233,2235,2237,2239,2241,2243,2245,2247],{"class":175,"line":537},[173,2228,212],{"class":187},[173,2230,287],{"class":179},[173,2232,1491],{"class":215},[173,2234,274],{"class":179},[173,2236,1496],{"class":215},[173,2238,293],{"class":179},[173,2240,296],{"class":179},[173,2242,256],{"class":215},[173,2244,259],{"class":179},[173,2246,1451],{"class":221},[173,2248,1142],{"class":215},[173,2250,2251,2253,2256,2258,2261],{"class":175,"line":569},[173,2252,212],{"class":187},[173,2254,2255],{"class":215}," comments ",[173,2257,194],{"class":179},[173,2259,2260],{"class":221}," ref",[173,2262,2263],{"class":215},"([])\n",[173,2265,2266],{"class":175,"line":579},[173,2267,243],{"emptyLinePlaceholder":242},[173,2269,2271,2273,2275,2277,2279,2281,2283,2285,2287,2289,2291],{"class":175,"line":2270},17,[173,2272,1517],{"class":221},[173,2274,225],{"class":215},[173,2276,228],{"class":179},[173,2278,1524],{"class":200},[173,2280,228],{"class":179},[173,2282,274],{"class":179},[173,2284,1032],{"class":179},[173,2286,1533],{"class":607},[173,2288,910],{"class":179},[173,2290,710],{"class":187},[173,2292,674],{"class":179},[173,2294,2296,2299,2301,2303,2305,2308,2310,2312],{"class":175,"line":2295},18,[173,2297,2298],{"class":215},"  comments",[173,2300,259],{"class":179},[173,2302,1046],{"class":215},[173,2304,259],{"class":179},[173,2306,2307],{"class":221},"push",[173,2309,225],{"class":183},[173,2311,1533],{"class":215},[173,2313,236],{"class":183},[173,2315,2317,2319],{"class":175,"line":2316},19,[173,2318,293],{"class":179},[173,2320,236],{"class":215},[173,2322,2324],{"class":175,"line":2323},20,[173,2325,243],{"emptyLinePlaceholder":242},[173,2327,2329,2331,2334,2336,2339,2341,2343,2345],{"class":175,"line":2328},21,[173,2330,600],{"class":187},[173,2332,2333],{"class":221}," addComment",[173,2335,225],{"class":179},[173,2337,2338],{"class":607},"text",[173,2340,314],{"class":179},[173,2342,614],{"class":613},[173,2344,910],{"class":179},[173,2346,674],{"class":179},[173,2348,2350,2353,2355,2357,2359,2361,2363,2365,2367,2369,2372,2374,2377,2379,2381,2383,2385,2388,2390,2392,2394,2396,2398],{"class":175,"line":2349},22,[173,2351,2352],{"class":221},"  publish",[173,2354,225],{"class":183},[173,2356,228],{"class":179},[173,2358,1524],{"class":200},[173,2360,228],{"class":179},[173,2362,274],{"class":179},[173,2364,287],{"class":179},[173,2366,1847],{"class":183},[173,2368,314],{"class":179},[173,2370,2371],{"class":215}," crypto",[173,2373,259],{"class":179},[173,2375,2376],{"class":221},"randomUUID",[173,2378,1019],{"class":183},[173,2380,274],{"class":179},[173,2382,1594],{"class":215},[173,2384,274],{"class":179},[173,2386,2387],{"class":183}," author",[173,2389,314],{"class":179},[173,2391,2113],{"class":215},[173,2393,259],{"class":179},[173,2395,2118],{"class":215},[173,2397,332],{"class":179},[173,2399,236],{"class":183},[173,2401,2403],{"class":175,"line":2402},23,[173,2404,974],{"class":179},[173,2406,2408,2410,2412],{"class":175,"line":2407},24,[173,2409,384],{"class":179},[173,2411,184],{"class":183},[173,2413,206],{"class":179},[173,2415,2417],{"class":175,"line":2416},25,[173,2418,243],{"emptyLinePlaceholder":242},[173,2420,2422,2424,2426],{"class":175,"line":2421},26,[173,2423,180],{"class":179},[173,2425,401],{"class":183},[173,2427,206],{"class":179},[173,2429,2431,2433,2435,2437,2439,2441,2444,2446],{"class":175,"line":2430},27,[173,2432,409],{"class":179},[173,2434,412],{"class":183},[173,2436,415],{"class":187},[173,2438,194],{"class":179},[173,2440,197],{"class":179},[173,2442,2443],{"class":200},"space-y-4",[173,2445,197],{"class":179},[173,2447,206],{"class":179},[173,2449,2451,2453,2456],{"class":175,"line":2450},28,[173,2452,432],{"class":179},[173,2454,2455],{"class":183},"UAvatarGroup",[173,2457,206],{"class":179},[173,2459,2461,2464],{"class":175,"line":2460},29,[173,2462,2463],{"class":179},"      \u003C",[173,2465,2466],{"class":183},"UAvatar\n",[173,2468,2470,2473,2475,2477,2480],{"class":175,"line":2469},30,[173,2471,2472],{"class":187},"        v-for",[173,2474,194],{"class":179},[173,2476,197],{"class":179},[173,2478,2479],{"class":200},"(info, connectionId) in members",[173,2481,2482],{"class":179},"\"\n",[173,2484,2486,2489,2491,2493,2495],{"class":175,"line":2485},31,[173,2487,2488],{"class":187},"        :key",[173,2490,194],{"class":179},[173,2492,197],{"class":179},[173,2494,1725],{"class":200},[173,2496,2482],{"class":179},[173,2498,2500,2503,2505,2507,2510],{"class":175,"line":2499},32,[173,2501,2502],{"class":187},"        :src",[173,2504,194],{"class":179},[173,2506,197],{"class":179},[173,2508,2509],{"class":200},"info.avatarUrl",[173,2511,2482],{"class":179},[173,2513,2515,2518,2520,2522,2525],{"class":175,"line":2514},33,[173,2516,2517],{"class":187},"        :alt",[173,2519,194],{"class":179},[173,2521,197],{"class":179},[173,2523,2524],{"class":200},"info.name",[173,2526,2482],{"class":179},[173,2528,2530,2533,2535,2537,2540],{"class":175,"line":2529},34,[173,2531,2532],{"class":187},"        :text",[173,2534,194],{"class":179},[173,2536,197],{"class":179},[173,2538,2539],{"class":200},"info.name[0]",[173,2541,2482],{"class":179},[173,2543,2545],{"class":175,"line":2544},35,[173,2546,2547],{"class":179},"      \u002F>\n",[173,2549,2551,2554,2556],{"class":175,"line":2550},36,[173,2552,2553],{"class":179},"    \u003C\u002F",[173,2555,2455],{"class":183},[173,2557,206],{"class":179},[173,2559,2561],{"class":175,"line":2560},37,[173,2562,243],{"emptyLinePlaceholder":242},[173,2564,2566,2568,2570,2572,2574,2576,2579,2581],{"class":175,"line":2565},38,[173,2567,432],{"class":179},[173,2569,412],{"class":183},[173,2571,415],{"class":187},[173,2573,194],{"class":179},[173,2575,197],{"class":179},[173,2577,2578],{"class":200},"flex items-center gap-2",[173,2580,197],{"class":179},[173,2582,206],{"class":179},[173,2584,2586,2588,2591,2593,2595,2597,2599,2601,2603,2605,2607,2609,2611],{"class":175,"line":2585},39,[173,2587,2463],{"class":179},[173,2589,2590],{"class":183},"UInput",[173,2592,457],{"class":187},[173,2594,194],{"class":179},[173,2596,197],{"class":179},[173,2598,1435],{"class":200},[173,2600,197],{"class":179},[173,2602,469],{"class":187},[173,2604,194],{"class":179},[173,2606,197],{"class":179},[173,2608,476],{"class":200},[173,2610,197],{"class":179},[173,2612,492],{"class":179},[173,2614,2616,2618,2620,2622,2624,2626,2628,2630,2632,2634,2636,2639,2641,2643,2645,2647,2649,2651],{"class":175,"line":2615},40,[173,2617,2463],{"class":179},[173,2619,500],{"class":183},[173,2621,503],{"class":187},[173,2623,194],{"class":179},[173,2625,197],{"class":179},[173,2627,476],{"class":200},[173,2629,197],{"class":179},[173,2631,469],{"class":187},[173,2633,194],{"class":179},[173,2635,197],{"class":179},[173,2637,2638],{"class":200},"!!ownerInfo",[173,2640,197],{"class":179},[173,2642,514],{"class":187},[173,2644,194],{"class":179},[173,2646,197],{"class":179},[173,2648,521],{"class":200},[173,2650,197],{"class":179},[173,2652,206],{"class":179},[173,2654,2656],{"class":175,"line":2655},41,[173,2657,2658],{"class":215},"        Edit title\n",[173,2660,2662,2665,2667],{"class":175,"line":2661},42,[173,2663,2664],{"class":179},"      \u003C\u002F",[173,2666,500],{"class":183},[173,2668,206],{"class":179},[173,2670,2672,2674,2676,2678,2680,2682,2684,2686,2688,2690,2693,2695,2697],{"class":175,"line":2671},43,[173,2673,2463],{"class":179},[173,2675,500],{"class":183},[173,2677,544],{"class":187},[173,2679,514],{"class":187},[173,2681,194],{"class":179},[173,2683,197],{"class":179},[173,2685,553],{"class":200},[173,2687,197],{"class":179},[173,2689,437],{"class":179},[173,2691,2692],{"class":215},"Done",[173,2694,384],{"class":179},[173,2696,500],{"class":183},[173,2698,206],{"class":179},[173,2700,2702,2704,2706],{"class":175,"line":2701},44,[173,2703,2553],{"class":179},[173,2705,412],{"class":183},[173,2707,206],{"class":179},[173,2709,2711],{"class":175,"line":2710},45,[173,2712,243],{"emptyLinePlaceholder":242},[173,2714,2716,2718,2720,2722,2724,2726,2729,2731],{"class":175,"line":2715},46,[173,2717,432],{"class":179},[173,2719,630],{"class":183},[173,2721,415],{"class":187},[173,2723,194],{"class":179},[173,2725,197],{"class":179},[173,2727,2728],{"class":200},"space-y-1",[173,2730,197],{"class":179},[173,2732,206],{"class":179},[173,2734,2736,2738,2740,2743,2745,2747,2750,2752,2755,2757,2759,2762,2764],{"class":175,"line":2735},47,[173,2737,2463],{"class":179},[173,2739,633],{"class":183},[173,2741,2742],{"class":187}," v-for",[173,2744,194],{"class":179},[173,2746,197],{"class":179},[173,2748,2749],{"class":200},"comment in comments",[173,2751,197],{"class":179},[173,2753,2754],{"class":187}," :key",[173,2756,194],{"class":179},[173,2758,197],{"class":179},[173,2760,2761],{"class":200},"comment.id",[173,2763,197],{"class":179},[173,2765,206],{"class":179},[173,2767,2769,2772,2774,2776,2779,2781,2783,2785],{"class":175,"line":2768},48,[173,2770,2771],{"class":179},"        \u003C",[173,2773,636],{"class":183},[173,2775,437],{"class":179},[173,2777,2778],{"class":215},"{{ comment.author }}:",[173,2780,384],{"class":179},[173,2782,636],{"class":183},[173,2784,437],{"class":179},[173,2786,2787],{"class":215}," {{ comment.text }}\n",[173,2789,2791,2793,2795],{"class":175,"line":2790},49,[173,2792,2664],{"class":179},[173,2794,633],{"class":183},[173,2796,206],{"class":179},[173,2798,2800,2802,2804],{"class":175,"line":2799},50,[173,2801,2553],{"class":179},[173,2803,630],{"class":183},[173,2805,206],{"class":179},[173,2807,2809,2811,2813],{"class":175,"line":2808},51,[173,2810,572],{"class":179},[173,2812,412],{"class":183},[173,2814,206],{"class":179},[173,2816,2818,2820,2822],{"class":175,"line":2817},52,[173,2819,384],{"class":179},[173,2821,401],{"class":183},[173,2823,206],{"class":179},[2825,2826,2827],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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 .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 .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 .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":169,"searchDepth":176,"depth":209,"links":2829},[2830,2831,2832,2835,2844,2848],{"id":162,"depth":209,"text":23},{"id":588,"depth":209,"text":589},{"id":623,"depth":209,"text":624,"children":2833},[2834],{"id":628,"depth":239,"text":608},{"id":657,"depth":209,"text":658,"children":2836},[2837,2838,2839,2840,2841,2842,2843],{"id":977,"depth":239,"text":977},{"id":1077,"depth":239,"text":1078},{"id":303,"depth":239,"text":1165},{"id":367,"depth":239,"text":1243},{"id":1313,"depth":239,"text":1314},{"id":262,"depth":239,"text":1379},{"id":1451,"depth":239,"text":1452},{"id":1610,"depth":209,"text":1611,"children":2845},[2846,2847],{"id":1619,"depth":239,"text":1620},{"id":1752,"depth":239,"text":1753},{"id":1957,"depth":209,"text":1958,"children":2849},[2850],{"id":1961,"depth":239,"text":1962},"Scope state, events, presence, and locks together under one room.","md",null,{},{"icon":76},{"title":73,"description":2851},"oAI6KXhV0JrThBOty7-z-zMC21wVv59q611ym65EGv0",[2859,2861],{"title":68,"path":69,"stem":70,"description":2860,"icon":71,"children":-1},"Bulk view of every lock tagged with a room.",{"title":84,"path":85,"stem":86,"description":2862,"icon":87,"children":-1},"How Nitro, crossws, Engine.IO, and Socket.IO are connected under the hood.",1787657974365]