[{"data":1,"prerenderedAt":2603},["ShallowReactive",2],{"navigation":3,"docs-\u002Fmodule\u002Futils-kit":52,"docs-\u002Fmodule\u002Futils-kit-surround":2598},[4,22,43],{"title":5,"path":6,"stem":7,"children":8,"page":21},"Guide","\u002Fguide","1.guide",[9,13,17],{"title":10,"path":11,"stem":12},"Getting Started","\u002Fguide\u002Fgetting-started","1.guide\u002F0.getting-started",{"title":14,"path":15,"stem":16},"Features","\u002Fguide\u002Ffeatures","1.guide\u002F1.features",{"title":18,"path":19,"stem":20},"Composables","\u002Fguide\u002Fcomposables","1.guide\u002F2.composables",false,{"title":23,"path":24,"stem":25,"children":26,"page":21},"Module","\u002Fmodule","2.module",[27,31,35,39],{"title":28,"path":29,"stem":30},"Module Authors","\u002Fmodule\u002Fguide","2.module\u002F0.guide",{"title":32,"path":33,"stem":34},"Utility Kit","\u002Fmodule\u002Futils-kit","2.module\u002F1.utils-kit",{"title":36,"path":37,"stem":38},"UI Kit","\u002Fmodule\u002Fui-kit","2.module\u002F2.ui-kit",{"title":40,"path":41,"stem":42},"Migration to v4","\u002Fmodule\u002Fmigration-v4","2.module\u002F3.migration-v4",{"title":44,"path":45,"stem":46,"children":47,"page":21},"Development","\u002Fdevelopment","3.development",[48],{"title":49,"path":50,"stem":51},"Contribution Guide","\u002Fdevelopment\u002Fcontributing","3.development\u002F0.contributing",{"id":53,"title":32,"body":54,"description":2593,"extension":2594,"meta":2595,"navigation":214,"path":33,"seo":2596,"stem":34,"__hash__":2597},"docs\u002F2.module\u002F1.utils-kit.md",{"type":55,"value":56,"toc":2572},"minimark",[57,66,91,127,137,143,150,180,186,379,382,415,518,524,542,549,555,574,581,783,812,818,833,836,921,931,1153,1160,1165,1175,1497,1504,1550,1562,1622,1633,1642,1646,1668,1675,1688,1790,1817,1823,1826,1829,1873,1884,1889,1906,2039,2044,2055,2060,2074,2079,2082,2142,2155,2260,2266,2272,2278,2373,2379,2385,2391,2399,2501,2507,2511,2568],[58,59,60,61,65],"p",{},"Since v0.3.0, we are now providing a utility kit for easier DevTools integrations, similar to ",[62,63,64],"code",{},"@nuxt\u002Fkit",".",[67,68,73],"pre",{"className":69,"code":70,"language":71,"meta":72,"style":72},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npm i @nuxt\u002Fdevtools-kit\n","bash","",[62,74,75],{"__ignoreMap":72},[76,77,80,84,88],"span",{"class":78,"line":79},"line",1,[76,81,83],{"class":82},"sBMFI","npm",[76,85,87],{"class":86},"sfazB"," i",[76,89,90],{"class":86}," @nuxt\u002Fdevtools-kit\n",[67,92,96],{"className":93,"code":94,"language":95,"meta":72,"style":72},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { addCustomTab } from '@nuxt\u002Fdevtools-kit'\n","ts",[62,97,98],{"__ignoreMap":72},[76,99,100,104,108,112,115,118,121,124],{"class":78,"line":79},[76,101,103],{"class":102},"s7zQu","import",[76,105,107],{"class":106},"sMK4o"," {",[76,109,111],{"class":110},"sTEyZ"," addCustomTab",[76,113,114],{"class":106}," }",[76,116,117],{"class":102}," from",[76,119,120],{"class":106}," '",[76,122,123],{"class":86},"@nuxt\u002Fdevtools-kit",[76,125,126],{"class":106},"'\n",[58,128,129,130,132,133,136],{},"We recommend module authors to install ",[62,131,123],{}," as a dependency and ",[62,134,135],{},"@nuxt\u002Fdevtools"," as a dev dependency.",[138,139,141],"h2",{"id":140},"nuxtdevtools-kit",[62,142,123],{},[144,145,147],"h3",{"id":146},"addcustomtab",[62,148,149],{},"addCustomTab()",[151,152,153],"warning",{},[58,154,155,159,160,162,163,166,167,170,171,174,175,65],{},[156,157,158],"strong",{},"Deprecated."," ",[62,161,149],{}," is soft-deprecated (",[62,164,165],{},"NDT_DEP_0005",") in favour of\nregistering a dock entry on the Vite DevTools docks host\n(",[62,168,169],{},"nuxt.devtools.docks.register(...)","). It still works as a shim. Note the docks\nhost does not yet cover ",[62,172,173],{},"vnode"," views or tab categories. See the\n",[176,177,179],"a",{"href":178},"\u002Fmodule\u002Fmigration-v4#ndt_dep_0005","migration guide",[58,181,182,183,65],{},"A shorthand for calling the hook ",[62,184,185],{},"devtools:customTabs",[67,187,189],{"className":93,"code":188,"language":95,"meta":72,"style":72},"import { addCustomTab } from '@nuxt\u002Fdevtools-kit'\n\naddCustomTab(() => ({\n  \u002F\u002F unique identifier\n  name: 'my-module',\n  \u002F\u002F title to display in the tab\n  title: 'My Module',\n  \u002F\u002F any icon from Iconify, or a URL to an image\n  icon: 'carbon:apps',\n  \u002F\u002F iframe view\n  view: {\n    type: 'iframe',\n    src: '\u002Furl-to-your-module-view',\n  },\n}))\n",[62,190,191,209,216,239,246,267,273,290,296,313,319,330,347,364,370],{"__ignoreMap":72},[76,192,193,195,197,199,201,203,205,207],{"class":78,"line":79},[76,194,103],{"class":102},[76,196,107],{"class":106},[76,198,111],{"class":110},[76,200,114],{"class":106},[76,202,117],{"class":102},[76,204,120],{"class":106},[76,206,123],{"class":86},[76,208,126],{"class":106},[76,210,212],{"class":78,"line":211},2,[76,213,215],{"emptyLinePlaceholder":214},true,"\n",[76,217,219,223,226,229,233,236],{"class":78,"line":218},3,[76,220,222],{"class":221},"s2Zo4","addCustomTab",[76,224,225],{"class":110},"(",[76,227,228],{"class":106},"()",[76,230,232],{"class":231},"spNyl"," =>",[76,234,235],{"class":110}," (",[76,237,238],{"class":106},"{\n",[76,240,242],{"class":78,"line":241},4,[76,243,245],{"class":244},"sHwdD","  \u002F\u002F unique identifier\n",[76,247,249,253,256,258,261,264],{"class":78,"line":248},5,[76,250,252],{"class":251},"swJcz","  name",[76,254,255],{"class":106},":",[76,257,120],{"class":106},[76,259,260],{"class":86},"my-module",[76,262,263],{"class":106},"'",[76,265,266],{"class":106},",\n",[76,268,270],{"class":78,"line":269},6,[76,271,272],{"class":244},"  \u002F\u002F title to display in the tab\n",[76,274,276,279,281,283,286,288],{"class":78,"line":275},7,[76,277,278],{"class":251},"  title",[76,280,255],{"class":106},[76,282,120],{"class":106},[76,284,285],{"class":86},"My Module",[76,287,263],{"class":106},[76,289,266],{"class":106},[76,291,293],{"class":78,"line":292},8,[76,294,295],{"class":244},"  \u002F\u002F any icon from Iconify, or a URL to an image\n",[76,297,299,302,304,306,309,311],{"class":78,"line":298},9,[76,300,301],{"class":251},"  icon",[76,303,255],{"class":106},[76,305,120],{"class":106},[76,307,308],{"class":86},"carbon:apps",[76,310,263],{"class":106},[76,312,266],{"class":106},[76,314,316],{"class":78,"line":315},10,[76,317,318],{"class":244},"  \u002F\u002F iframe view\n",[76,320,322,325,327],{"class":78,"line":321},11,[76,323,324],{"class":251},"  view",[76,326,255],{"class":106},[76,328,329],{"class":106}," {\n",[76,331,333,336,338,340,343,345],{"class":78,"line":332},12,[76,334,335],{"class":251},"    type",[76,337,255],{"class":106},[76,339,120],{"class":106},[76,341,342],{"class":86},"iframe",[76,344,263],{"class":106},[76,346,266],{"class":106},[76,348,350,353,355,357,360,362],{"class":78,"line":349},13,[76,351,352],{"class":251},"    src",[76,354,255],{"class":106},[76,356,120],{"class":106},[76,358,359],{"class":86},"\u002Furl-to-your-module-view",[76,361,263],{"class":106},[76,363,266],{"class":106},[76,365,367],{"class":78,"line":366},14,[76,368,369],{"class":106},"  },\n",[76,371,373,376],{"class":78,"line":372},15,[76,374,375],{"class":106},"}",[76,377,378],{"class":110},"))\n",[58,380,381],{},"The iframe view supports the following options:",[383,384,385,392,402],"ul",{},[386,387,388,391],"li",{},[62,389,390],{},"src",": URL of the iframe",[386,393,394,397,398,401],{},[62,395,396],{},"persistent",": Whether to persist the iframe instance when switching tabs (default: ",[62,399,400],{},"true",")",[386,403,404,407,408,411,412,401],{},[62,405,406],{},"permissions",": Additional permissions to allow in the iframe (merged with default ",[62,409,410],{},"clipboard-write"," and ",[62,413,414],{},"clipboard-read",[67,416,418],{"className":93,"code":417,"language":95,"meta":72,"style":72},"const view: ModuleIframeView = {\n  type: 'iframe',\n  src: '\u002Furl-to-your-module-view',\n  persistent: true,\n  permissions: ['camera', 'microphone'],\n}\n",[62,419,420,438,453,468,481,513],{"__ignoreMap":72},[76,421,422,425,428,430,433,436],{"class":78,"line":79},[76,423,424],{"class":231},"const",[76,426,427],{"class":110}," view",[76,429,255],{"class":106},[76,431,432],{"class":82}," ModuleIframeView",[76,434,435],{"class":106}," =",[76,437,329],{"class":106},[76,439,440,443,445,447,449,451],{"class":78,"line":211},[76,441,442],{"class":251},"  type",[76,444,255],{"class":106},[76,446,120],{"class":106},[76,448,342],{"class":86},[76,450,263],{"class":106},[76,452,266],{"class":106},[76,454,455,458,460,462,464,466],{"class":78,"line":218},[76,456,457],{"class":251},"  src",[76,459,255],{"class":106},[76,461,120],{"class":106},[76,463,359],{"class":86},[76,465,263],{"class":106},[76,467,266],{"class":106},[76,469,470,473,475,479],{"class":78,"line":241},[76,471,472],{"class":251},"  persistent",[76,474,255],{"class":106},[76,476,478],{"class":477},"sfNiH"," true",[76,480,266],{"class":106},[76,482,483,486,488,491,493,496,498,501,503,506,508,511],{"class":78,"line":248},[76,484,485],{"class":251},"  permissions",[76,487,255],{"class":106},[76,489,490],{"class":110}," [",[76,492,263],{"class":106},[76,494,495],{"class":86},"camera",[76,497,263],{"class":106},[76,499,500],{"class":106},",",[76,502,120],{"class":106},[76,504,505],{"class":86},"microphone",[76,507,263],{"class":106},[76,509,510],{"class":110},"]",[76,512,266],{"class":106},[76,514,515],{"class":78,"line":269},[76,516,517],{"class":106},"}\n",[144,519,521],{"id":520},"refreshcustomtabs",[62,522,523],{},"refreshCustomTabs()",[151,525,526],{},[58,527,528,159,530,162,532,535,536,538,539,65],{},[156,529,158],{},[62,531,523],{},[62,533,534],{},"NDT_DEP_0006","). Update\ndock entries directly via the handle returned by\n",[62,537,169],{},". It still works as a shim. See the\n",[176,540,179],{"href":541},"\u002Fmodule\u002Fmigration-v4#ndt_dep_0006",[58,543,544,545,548],{},"A shorthand for call hook ",[62,546,547],{},"devtools:customTabs:refresh",". It will refresh all custom tabs.",[144,550,552],{"id":551},"startsubprocess",[62,553,554],{},"startSubprocess()",[151,556,557],{},[58,558,559,159,561,162,563,566,567,570,571,65],{},[156,560,158],{},[62,562,554],{},[62,564,565],{},"NDT_DEP_0004",") in favour\nof the Vite DevTools terminals host\n(",[62,568,569],{},"nuxt.devtools.terminals.startChildProcess(...)","). It still works as a shim. See\nthe ",[176,572,179],{"href":573},"\u002Fmodule\u002Fmigration-v4#ndt_dep_0004",[58,575,576,577,580],{},"Start a sub process using ",[62,578,579],{},"tinyexec"," and create a terminal tab in DevTools.",[67,582,584],{"className":93,"code":583,"language":95,"meta":72,"style":72},"import { startSubprocess } from '@nuxt\u002Fdevtools-kit'\n\nconst subprocess = startSubprocess(\n  {\n    command: 'code-server',\n    args: [\n      'serve-local',\n      '--accept-server-license-terms',\n      '--without-connection-token',\n      `--port=${port}`,\n    ],\n  },\n  {\n    id: 'devtools:vscode',\n    name: 'VS Code Server',\n    icon: 'logos-visual-studio-code',\n  },\n)\n",[62,585,586,605,609,624,629,645,655,667,678,689,708,715,719,723,739,755,772,777],{"__ignoreMap":72},[76,587,588,590,592,595,597,599,601,603],{"class":78,"line":79},[76,589,103],{"class":102},[76,591,107],{"class":106},[76,593,594],{"class":110}," startSubprocess",[76,596,114],{"class":106},[76,598,117],{"class":102},[76,600,120],{"class":106},[76,602,123],{"class":86},[76,604,126],{"class":106},[76,606,607],{"class":78,"line":211},[76,608,215],{"emptyLinePlaceholder":214},[76,610,611,613,616,619,621],{"class":78,"line":218},[76,612,424],{"class":231},[76,614,615],{"class":110}," subprocess ",[76,617,618],{"class":106},"=",[76,620,594],{"class":221},[76,622,623],{"class":110},"(\n",[76,625,626],{"class":78,"line":241},[76,627,628],{"class":106},"  {\n",[76,630,631,634,636,638,641,643],{"class":78,"line":248},[76,632,633],{"class":251},"    command",[76,635,255],{"class":106},[76,637,120],{"class":106},[76,639,640],{"class":86},"code-server",[76,642,263],{"class":106},[76,644,266],{"class":106},[76,646,647,650,652],{"class":78,"line":269},[76,648,649],{"class":251},"    args",[76,651,255],{"class":106},[76,653,654],{"class":110}," [\n",[76,656,657,660,663,665],{"class":78,"line":275},[76,658,659],{"class":106},"      '",[76,661,662],{"class":86},"serve-local",[76,664,263],{"class":106},[76,666,266],{"class":106},[76,668,669,671,674,676],{"class":78,"line":292},[76,670,659],{"class":106},[76,672,673],{"class":86},"--accept-server-license-terms",[76,675,263],{"class":106},[76,677,266],{"class":106},[76,679,680,682,685,687],{"class":78,"line":298},[76,681,659],{"class":106},[76,683,684],{"class":86},"--without-connection-token",[76,686,263],{"class":106},[76,688,266],{"class":106},[76,690,691,694,697,700,703,706],{"class":78,"line":315},[76,692,693],{"class":106},"      `",[76,695,696],{"class":86},"--port=",[76,698,699],{"class":106},"${",[76,701,702],{"class":110},"port",[76,704,705],{"class":106},"}`",[76,707,266],{"class":106},[76,709,710,713],{"class":78,"line":321},[76,711,712],{"class":110},"    ]",[76,714,266],{"class":106},[76,716,717],{"class":78,"line":332},[76,718,369],{"class":106},[76,720,721],{"class":78,"line":349},[76,722,628],{"class":106},[76,724,725,728,730,732,735,737],{"class":78,"line":366},[76,726,727],{"class":251},"    id",[76,729,255],{"class":106},[76,731,120],{"class":106},[76,733,734],{"class":86},"devtools:vscode",[76,736,263],{"class":106},[76,738,266],{"class":106},[76,740,741,744,746,748,751,753],{"class":78,"line":372},[76,742,743],{"class":251},"    name",[76,745,255],{"class":106},[76,747,120],{"class":106},[76,749,750],{"class":86},"VS Code Server",[76,752,263],{"class":106},[76,754,266],{"class":106},[76,756,758,761,763,765,768,770],{"class":78,"line":757},16,[76,759,760],{"class":251},"    icon",[76,762,255],{"class":106},[76,764,120],{"class":106},[76,766,767],{"class":86},"logos-visual-studio-code",[76,769,263],{"class":106},[76,771,266],{"class":106},[76,773,775],{"class":78,"line":774},17,[76,776,369],{"class":106},[76,778,780],{"class":78,"line":779},18,[76,781,782],{"class":110},")\n",[67,784,786],{"className":93,"code":785,"language":95,"meta":72,"style":72},"subprocess.restart()\nsubprocess.terminate()\n",[62,787,788,801],{"__ignoreMap":72},[76,789,790,793,795,798],{"class":78,"line":79},[76,791,792],{"class":110},"subprocess",[76,794,65],{"class":106},[76,796,797],{"class":221},"restart",[76,799,800],{"class":110},"()\n",[76,802,803,805,807,810],{"class":78,"line":211},[76,804,792],{"class":110},[76,806,65],{"class":106},[76,808,809],{"class":221},"terminate",[76,811,800],{"class":110},[144,813,815],{"id":814},"extendserverrpc",[62,816,817],{},"extendServerRpc()",[151,819,820],{},[58,821,822,159,824,162,826,829,830,65],{},[156,823,158],{},[62,825,817],{},[62,827,828],{},"NDT_DEP_0003",") in favour\nof the Vite DevTools RPC registration. It still works as a shim. See the\n",[176,831,179],{"href":832},"\u002Fmodule\u002Fmigration-v4#ndt_dep_0003",[58,834,835],{},"Extend the server RPC with your own methods.",[67,837,839],{"className":93,"code":838,"language":95,"meta":72,"style":72},"import { extendServerRpc } from '@nuxt\u002Fdevtools-kit'\n\nconst rpc = extendServerRpc('my-module', {\n  async myMethod() {\n    return 'hello'\n  },\n})\n",[62,840,841,860,864,887,899,911,915],{"__ignoreMap":72},[76,842,843,845,847,850,852,854,856,858],{"class":78,"line":79},[76,844,103],{"class":102},[76,846,107],{"class":106},[76,848,849],{"class":110}," extendServerRpc",[76,851,114],{"class":106},[76,853,117],{"class":102},[76,855,120],{"class":106},[76,857,123],{"class":86},[76,859,126],{"class":106},[76,861,862],{"class":78,"line":211},[76,863,215],{"emptyLinePlaceholder":214},[76,865,866,868,871,873,875,877,879,881,883,885],{"class":78,"line":218},[76,867,424],{"class":231},[76,869,870],{"class":110}," rpc ",[76,872,618],{"class":106},[76,874,849],{"class":221},[76,876,225],{"class":110},[76,878,263],{"class":106},[76,880,260],{"class":86},[76,882,263],{"class":106},[76,884,500],{"class":106},[76,886,329],{"class":106},[76,888,889,892,895,897],{"class":78,"line":241},[76,890,891],{"class":231},"  async",[76,893,894],{"class":251}," myMethod",[76,896,228],{"class":106},[76,898,329],{"class":106},[76,900,901,904,906,909],{"class":78,"line":248},[76,902,903],{"class":102},"    return",[76,905,120],{"class":106},[76,907,908],{"class":86},"hello",[76,910,126],{"class":106},[76,912,913],{"class":78,"line":269},[76,914,369],{"class":106},[76,916,917,919],{"class":78,"line":275},[76,918,375],{"class":106},[76,920,782],{"class":110},[58,922,923,924,930],{},"The forward path registers functions on the Vite DevTools RPC host from the\n",[176,925,927],{"href":926},"#ondevtoolsready",[62,928,929],{},"onDevtoolsReady()"," hook:",[67,932,934],{"className":93,"code":933,"language":95,"meta":72,"style":72},"import { onDevtoolsReady } from '@nuxt\u002Fdevtools-kit'\nimport { defineRpcFunction } from '@vitejs\u002Fdevtools-kit'\n\nexport default defineNuxtModule({\n  setup(_options, nuxt) {\n    onDevtoolsReady((ctx) => {\n      ctx.rpc.register(defineRpcFunction({\n        name: 'my-module:my-method',\n        type: 'query',\n        setup: () => ({ handler: async () => 'hello' }),\n      }))\n    })\n  },\n})\n",[62,935,936,955,975,979,994,1014,1032,1056,1072,1088,1129,1136,1143,1147],{"__ignoreMap":72},[76,937,938,940,942,945,947,949,951,953],{"class":78,"line":79},[76,939,103],{"class":102},[76,941,107],{"class":106},[76,943,944],{"class":110}," onDevtoolsReady",[76,946,114],{"class":106},[76,948,117],{"class":102},[76,950,120],{"class":106},[76,952,123],{"class":86},[76,954,126],{"class":106},[76,956,957,959,961,964,966,968,970,973],{"class":78,"line":211},[76,958,103],{"class":102},[76,960,107],{"class":106},[76,962,963],{"class":110}," defineRpcFunction",[76,965,114],{"class":106},[76,967,117],{"class":102},[76,969,120],{"class":106},[76,971,972],{"class":86},"@vitejs\u002Fdevtools-kit",[76,974,126],{"class":106},[76,976,977],{"class":78,"line":218},[76,978,215],{"emptyLinePlaceholder":214},[76,980,981,984,987,990,992],{"class":78,"line":241},[76,982,983],{"class":102},"export",[76,985,986],{"class":102}," default",[76,988,989],{"class":221}," defineNuxtModule",[76,991,225],{"class":110},[76,993,238],{"class":106},[76,995,996,999,1001,1005,1007,1010,1012],{"class":78,"line":248},[76,997,998],{"class":251},"  setup",[76,1000,225],{"class":106},[76,1002,1004],{"class":1003},"sHdIc","_options",[76,1006,500],{"class":106},[76,1008,1009],{"class":1003}," nuxt",[76,1011,401],{"class":106},[76,1013,329],{"class":106},[76,1015,1016,1019,1021,1023,1026,1028,1030],{"class":78,"line":269},[76,1017,1018],{"class":221},"    onDevtoolsReady",[76,1020,225],{"class":251},[76,1022,225],{"class":106},[76,1024,1025],{"class":1003},"ctx",[76,1027,401],{"class":106},[76,1029,232],{"class":231},[76,1031,329],{"class":106},[76,1033,1034,1037,1039,1042,1044,1047,1049,1052,1054],{"class":78,"line":275},[76,1035,1036],{"class":110},"      ctx",[76,1038,65],{"class":106},[76,1040,1041],{"class":110},"rpc",[76,1043,65],{"class":106},[76,1045,1046],{"class":221},"register",[76,1048,225],{"class":251},[76,1050,1051],{"class":221},"defineRpcFunction",[76,1053,225],{"class":251},[76,1055,238],{"class":106},[76,1057,1058,1061,1063,1065,1068,1070],{"class":78,"line":292},[76,1059,1060],{"class":251},"        name",[76,1062,255],{"class":106},[76,1064,120],{"class":106},[76,1066,1067],{"class":86},"my-module:my-method",[76,1069,263],{"class":106},[76,1071,266],{"class":106},[76,1073,1074,1077,1079,1081,1084,1086],{"class":78,"line":298},[76,1075,1076],{"class":251},"        type",[76,1078,255],{"class":106},[76,1080,120],{"class":106},[76,1082,1083],{"class":86},"query",[76,1085,263],{"class":106},[76,1087,266],{"class":106},[76,1089,1090,1093,1095,1098,1100,1102,1105,1108,1110,1113,1115,1117,1119,1121,1123,1125,1127],{"class":78,"line":315},[76,1091,1092],{"class":221},"        setup",[76,1094,255],{"class":106},[76,1096,1097],{"class":106}," ()",[76,1099,232],{"class":231},[76,1101,235],{"class":251},[76,1103,1104],{"class":106},"{",[76,1106,1107],{"class":221}," handler",[76,1109,255],{"class":106},[76,1111,1112],{"class":231}," async",[76,1114,1097],{"class":106},[76,1116,232],{"class":231},[76,1118,120],{"class":106},[76,1120,908],{"class":86},[76,1122,263],{"class":106},[76,1124,114],{"class":106},[76,1126,401],{"class":251},[76,1128,266],{"class":106},[76,1130,1131,1134],{"class":78,"line":321},[76,1132,1133],{"class":106},"      }",[76,1135,378],{"class":251},[76,1137,1138,1141],{"class":78,"line":332},[76,1139,1140],{"class":106},"    }",[76,1142,782],{"class":251},[76,1144,1145],{"class":78,"line":349},[76,1146,369],{"class":106},[76,1148,1149,1151],{"class":78,"line":366},[76,1150,375],{"class":106},[76,1152,782],{"class":110},[58,1154,1155,1156,65],{},"Learn more about ",[176,1157,1159],{"href":1158},"\u002Fmodule\u002Fguide#custom-rpc-functions","Custom RPC functions",[144,1161,1163],{"id":1162},"ondevtoolsready",[62,1164,929],{},[58,1166,1167,1170,1171,1174],{},[156,1168,1169],{},"The recommended entry point for DevTools integration."," The callback runs once\nthe Vite DevTools kit has connected and receives the connected\n",[62,1172,1173],{},"ViteDevToolsNodeContext",", so the full devframe surface is guaranteed to be\navailable — no connect-safe buffering needed. Do all your DevTools integration here:",[67,1176,1178],{"className":93,"code":1177,"language":95,"meta":72,"style":72},"import { onDevtoolsReady } from '@nuxt\u002Fdevtools-kit'\nimport { defineRpcFunction } from '@vitejs\u002Fdevtools-kit'\n\nexport default defineNuxtModule({\n  setup(_options, nuxt) {\n    onDevtoolsReady((ctx) => {\n      \u002F\u002F `ctx` is the connected ViteDevToolsNodeContext\n      ctx.docks.register({\n        id: 'my-module',\n        title: 'My Module',\n        type: 'iframe',\n        url: '\u002F__my-module__\u002F',\n      })\n\n      ctx.rpc.register(defineRpcFunction({\n        name: 'my-module:my-method',\n        type: 'query',\n        setup: () => ({ handler: async () => 'hello' }),\n      }))\n\n      ctx.messages.info('My module is ready')\n    })\n  },\n})\n",[62,1179,1180,1198,1216,1220,1232,1248,1264,1269,1286,1301,1316,1330,1346,1352,1356,1376,1390,1404,1440,1447,1452,1478,1485,1490],{"__ignoreMap":72},[76,1181,1182,1184,1186,1188,1190,1192,1194,1196],{"class":78,"line":79},[76,1183,103],{"class":102},[76,1185,107],{"class":106},[76,1187,944],{"class":110},[76,1189,114],{"class":106},[76,1191,117],{"class":102},[76,1193,120],{"class":106},[76,1195,123],{"class":86},[76,1197,126],{"class":106},[76,1199,1200,1202,1204,1206,1208,1210,1212,1214],{"class":78,"line":211},[76,1201,103],{"class":102},[76,1203,107],{"class":106},[76,1205,963],{"class":110},[76,1207,114],{"class":106},[76,1209,117],{"class":102},[76,1211,120],{"class":106},[76,1213,972],{"class":86},[76,1215,126],{"class":106},[76,1217,1218],{"class":78,"line":218},[76,1219,215],{"emptyLinePlaceholder":214},[76,1221,1222,1224,1226,1228,1230],{"class":78,"line":241},[76,1223,983],{"class":102},[76,1225,986],{"class":102},[76,1227,989],{"class":221},[76,1229,225],{"class":110},[76,1231,238],{"class":106},[76,1233,1234,1236,1238,1240,1242,1244,1246],{"class":78,"line":248},[76,1235,998],{"class":251},[76,1237,225],{"class":106},[76,1239,1004],{"class":1003},[76,1241,500],{"class":106},[76,1243,1009],{"class":1003},[76,1245,401],{"class":106},[76,1247,329],{"class":106},[76,1249,1250,1252,1254,1256,1258,1260,1262],{"class":78,"line":269},[76,1251,1018],{"class":221},[76,1253,225],{"class":251},[76,1255,225],{"class":106},[76,1257,1025],{"class":1003},[76,1259,401],{"class":106},[76,1261,232],{"class":231},[76,1263,329],{"class":106},[76,1265,1266],{"class":78,"line":275},[76,1267,1268],{"class":244},"      \u002F\u002F `ctx` is the connected ViteDevToolsNodeContext\n",[76,1270,1271,1273,1275,1278,1280,1282,1284],{"class":78,"line":292},[76,1272,1036],{"class":110},[76,1274,65],{"class":106},[76,1276,1277],{"class":110},"docks",[76,1279,65],{"class":106},[76,1281,1046],{"class":221},[76,1283,225],{"class":251},[76,1285,238],{"class":106},[76,1287,1288,1291,1293,1295,1297,1299],{"class":78,"line":298},[76,1289,1290],{"class":251},"        id",[76,1292,255],{"class":106},[76,1294,120],{"class":106},[76,1296,260],{"class":86},[76,1298,263],{"class":106},[76,1300,266],{"class":106},[76,1302,1303,1306,1308,1310,1312,1314],{"class":78,"line":315},[76,1304,1305],{"class":251},"        title",[76,1307,255],{"class":106},[76,1309,120],{"class":106},[76,1311,285],{"class":86},[76,1313,263],{"class":106},[76,1315,266],{"class":106},[76,1317,1318,1320,1322,1324,1326,1328],{"class":78,"line":321},[76,1319,1076],{"class":251},[76,1321,255],{"class":106},[76,1323,120],{"class":106},[76,1325,342],{"class":86},[76,1327,263],{"class":106},[76,1329,266],{"class":106},[76,1331,1332,1335,1337,1339,1342,1344],{"class":78,"line":332},[76,1333,1334],{"class":251},"        url",[76,1336,255],{"class":106},[76,1338,120],{"class":106},[76,1340,1341],{"class":86},"\u002F__my-module__\u002F",[76,1343,263],{"class":106},[76,1345,266],{"class":106},[76,1347,1348,1350],{"class":78,"line":349},[76,1349,1133],{"class":106},[76,1351,782],{"class":251},[76,1353,1354],{"class":78,"line":366},[76,1355,215],{"emptyLinePlaceholder":214},[76,1357,1358,1360,1362,1364,1366,1368,1370,1372,1374],{"class":78,"line":372},[76,1359,1036],{"class":110},[76,1361,65],{"class":106},[76,1363,1041],{"class":110},[76,1365,65],{"class":106},[76,1367,1046],{"class":221},[76,1369,225],{"class":251},[76,1371,1051],{"class":221},[76,1373,225],{"class":251},[76,1375,238],{"class":106},[76,1377,1378,1380,1382,1384,1386,1388],{"class":78,"line":757},[76,1379,1060],{"class":251},[76,1381,255],{"class":106},[76,1383,120],{"class":106},[76,1385,1067],{"class":86},[76,1387,263],{"class":106},[76,1389,266],{"class":106},[76,1391,1392,1394,1396,1398,1400,1402],{"class":78,"line":774},[76,1393,1076],{"class":251},[76,1395,255],{"class":106},[76,1397,120],{"class":106},[76,1399,1083],{"class":86},[76,1401,263],{"class":106},[76,1403,266],{"class":106},[76,1405,1406,1408,1410,1412,1414,1416,1418,1420,1422,1424,1426,1428,1430,1432,1434,1436,1438],{"class":78,"line":779},[76,1407,1092],{"class":221},[76,1409,255],{"class":106},[76,1411,1097],{"class":106},[76,1413,232],{"class":231},[76,1415,235],{"class":251},[76,1417,1104],{"class":106},[76,1419,1107],{"class":221},[76,1421,255],{"class":106},[76,1423,1112],{"class":231},[76,1425,1097],{"class":106},[76,1427,232],{"class":231},[76,1429,120],{"class":106},[76,1431,908],{"class":86},[76,1433,263],{"class":106},[76,1435,114],{"class":106},[76,1437,401],{"class":251},[76,1439,266],{"class":106},[76,1441,1443,1445],{"class":78,"line":1442},19,[76,1444,1133],{"class":106},[76,1446,378],{"class":251},[76,1448,1450],{"class":78,"line":1449},20,[76,1451,215],{"emptyLinePlaceholder":214},[76,1453,1455,1457,1459,1462,1464,1467,1469,1471,1474,1476],{"class":78,"line":1454},21,[76,1456,1036],{"class":110},[76,1458,65],{"class":106},[76,1460,1461],{"class":110},"messages",[76,1463,65],{"class":106},[76,1465,1466],{"class":221},"info",[76,1468,225],{"class":251},[76,1470,263],{"class":106},[76,1472,1473],{"class":86},"My module is ready",[76,1475,263],{"class":106},[76,1477,782],{"class":251},[76,1479,1481,1483],{"class":78,"line":1480},22,[76,1482,1140],{"class":106},[76,1484,782],{"class":251},[76,1486,1488],{"class":78,"line":1487},23,[76,1489,369],{"class":106},[76,1491,1493,1495],{"class":78,"line":1492},24,[76,1494,375],{"class":106},[76,1496,782],{"class":110},[58,1498,1499,1500,1503],{},"It is backed by the ",[62,1501,1502],{},"devtools:ready"," Nuxt hook:",[67,1505,1507],{"className":93,"code":1506,"language":95,"meta":72,"style":72},"nuxt.hook('devtools:ready', (ctx) => {\n  \u002F\u002F ...\n})\n",[62,1508,1509,1539,1544],{"__ignoreMap":72},[76,1510,1511,1514,1516,1519,1521,1523,1525,1527,1529,1531,1533,1535,1537],{"class":78,"line":79},[76,1512,1513],{"class":110},"nuxt",[76,1515,65],{"class":106},[76,1517,1518],{"class":221},"hook",[76,1520,225],{"class":110},[76,1522,263],{"class":106},[76,1524,1502],{"class":86},[76,1526,263],{"class":106},[76,1528,500],{"class":106},[76,1530,235],{"class":106},[76,1532,1025],{"class":1003},[76,1534,401],{"class":106},[76,1536,232],{"class":231},[76,1538,329],{"class":106},[76,1540,1541],{"class":78,"line":211},[76,1542,1543],{"class":244},"  \u002F\u002F ...\n",[76,1545,1546,1548],{"class":78,"line":218},[76,1547,375],{"class":106},[76,1549,782],{"class":110},[58,1551,1552,1553,1555,1556,1558,1559,1561],{},"Inside ",[62,1554,929],{},", the ",[62,1557,1025],{}," is the connected ",[62,1560,1173],{},",\nwhich exposes the full devframe-native surface:",[383,1563,1564,1570,1576,1582,1588,1600],{},[386,1565,1566,1569],{},[62,1567,1568],{},"ctx.docks"," — register dock entries (iframe \u002F action \u002F json-render \u002F launcher)",[386,1571,1572,1575],{},[62,1573,1574],{},"ctx.terminals"," — spawn and manage child processes \u002F PTY sessions",[386,1577,1578,1581],{},[62,1579,1580],{},"ctx.messages"," — structured messages and toast notifications",[386,1583,1584,1587],{},[62,1585,1586],{},"ctx.commands"," — command-palette entries",[386,1589,1590,1593,1594,401],{},[62,1591,1592],{},"ctx.diagnostics"," — structured, coded diagnostics (powered by ",[176,1595,1599],{"href":1596,"rel":1597},"https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fnostics",[1598],"nofollow","nostics",[386,1601,1602,1605,1606,1608,1609,1608,1612,1608,1615,1608,1618,1621],{},[62,1603,1604],{},"ctx.rpc"," — the devframe RPC host (",[62,1607,1046],{},"\u002F",[62,1610,1611],{},"invokeLocal",[62,1613,1614],{},"broadcast",[62,1616,1617],{},"sharedState",[62,1619,1620],{},"streaming","\u002F…)",[58,1623,1624,1625,1628,1629,1632],{},"If you need the raw context outside the hook, ",[62,1626,1627],{},"nuxt.devtools.devtoolsKit"," is\navailable as an escape hatch (it is ",[62,1630,1631],{},"undefined"," until the kit connects).",[58,1634,1635,1636,1641],{},"See the ",[176,1637,1640],{"href":1638,"rel":1639},"https:\u002F\u002Fgithub.com\u002Fvitejs\u002Fdevtools",[1598],"Vite DevTools Kit"," docs for the\nfull host API.",[144,1643,1645],{"id":1644},"deprecation-diagnostics","Deprecation diagnostics",[58,1647,1648,1649,1652,1653,1655,1656,1658,1659,1663,1664,65],{},"Nuxt DevTools emits coded deprecation diagnostics (",[62,1650,1651],{},"NDT_DEP_xxxx",") through\n",[62,1654,1599],{},". They print to the terminal and, once the Vite DevTools kit connects,\nalso surface in the DevTools diagnostics UI, each with a code, a fix, and a link\nto the ",[176,1657,179],{"href":41},". See\n",[176,1660,1661],{"href":832},[62,1662,817],{}," and\n",[176,1665,1666],{"href":573},[62,1667,554],{},[144,1669,1671,1674],{"id":1670},"devtoolsnotify-hook",[62,1672,1673],{},"devtools:notify"," hook",[58,1676,1677,1678,1681,1682,1684,1685,1687],{},"Push a notification into the unified devframe ",[156,1679,1680],{},"Messages"," system — the same\nsystem that powers the Vite DevTools ",[156,1683,1680],{}," dock and its toast overlay.\nThe notification is forwarded to ",[62,1686,1580],{},", so no direct kit access is\nneeded, and calls made before the kit connects are buffered and replayed once\nit does:",[67,1689,1691],{"className":93,"code":1690,"language":95,"meta":72,"style":72},"\u002F\u002F server-side (module setup)\nnuxt.callHook('devtools:notify', {\n  message: 'Something happened',\n  level: 'error', \u002F\u002F 'info' | 'warn' | 'error' | 'success' | 'debug' (default 'info')\n  description: 'More details about what happened.',\n  notify: true, \u002F\u002F also show a transient toast\n})\n",[62,1692,1693,1698,1719,1735,1754,1770,1784],{"__ignoreMap":72},[76,1694,1695],{"class":78,"line":79},[76,1696,1697],{"class":244},"\u002F\u002F server-side (module setup)\n",[76,1699,1700,1702,1704,1707,1709,1711,1713,1715,1717],{"class":78,"line":211},[76,1701,1513],{"class":110},[76,1703,65],{"class":106},[76,1705,1706],{"class":221},"callHook",[76,1708,225],{"class":110},[76,1710,263],{"class":106},[76,1712,1673],{"class":86},[76,1714,263],{"class":106},[76,1716,500],{"class":106},[76,1718,329],{"class":106},[76,1720,1721,1724,1726,1728,1731,1733],{"class":78,"line":218},[76,1722,1723],{"class":251},"  message",[76,1725,255],{"class":106},[76,1727,120],{"class":106},[76,1729,1730],{"class":86},"Something happened",[76,1732,263],{"class":106},[76,1734,266],{"class":106},[76,1736,1737,1740,1742,1744,1747,1749,1751],{"class":78,"line":241},[76,1738,1739],{"class":251},"  level",[76,1741,255],{"class":106},[76,1743,120],{"class":106},[76,1745,1746],{"class":86},"error",[76,1748,263],{"class":106},[76,1750,500],{"class":106},[76,1752,1753],{"class":244}," \u002F\u002F 'info' | 'warn' | 'error' | 'success' | 'debug' (default 'info')\n",[76,1755,1756,1759,1761,1763,1766,1768],{"class":78,"line":248},[76,1757,1758],{"class":251},"  description",[76,1760,255],{"class":106},[76,1762,120],{"class":106},[76,1764,1765],{"class":86},"More details about what happened.",[76,1767,263],{"class":106},[76,1769,266],{"class":106},[76,1771,1772,1775,1777,1779,1781],{"class":78,"line":269},[76,1773,1774],{"class":251},"  notify",[76,1776,255],{"class":106},[76,1778,478],{"class":477},[76,1780,500],{"class":106},[76,1782,1783],{"class":244}," \u002F\u002F also show a transient toast\n",[76,1785,1786,1788],{"class":78,"line":275},[76,1787,375],{"class":106},[76,1789,782],{"class":110},[58,1791,1792,1793,1796,1797,1799,1800,1803,1804,1803,1807,1809,1810,1813,1814,65],{},"Omit ",[62,1794,1795],{},"autoDelete"," for a ",[156,1798,396],{},", leveled entry that builds history in the\nMessages dock; set ",[62,1801,1802],{},"notify"," + ",[62,1805,1806],{},"autoDismiss",[62,1808,1795],{}," for an ",[156,1811,1812],{},"ephemeral",",\ntoast-only notification. From the client, the same input is available on the\ninjected client as ",[62,1815,1816],{},"client.devtools.notify(...)",[138,1818,1820],{"id":1819},"nuxtdevtools-kitiframe-client",[62,1821,1822],{},"@nuxt\u002Fdevtools-kit\u002Fiframe-client",[58,1824,1825],{},"To provide complex interactions for your module integrations, we recommend to host your own view and display it in devtools via iframe.",[58,1827,1828],{},"To get the infomation from the devtools and the client app, you can do this in your client app:",[67,1830,1832],{"className":93,"code":1831,"language":95,"meta":72,"style":72},"import { useDevtoolsClient } from '@nuxt\u002Fdevtools-kit\u002Fiframe-client'\n\nexport const devtoolsClient = useDevtoolsClient()\n",[62,1833,1834,1853,1857],{"__ignoreMap":72},[76,1835,1836,1838,1840,1843,1845,1847,1849,1851],{"class":78,"line":79},[76,1837,103],{"class":102},[76,1839,107],{"class":106},[76,1841,1842],{"class":110}," useDevtoolsClient",[76,1844,114],{"class":106},[76,1846,117],{"class":102},[76,1848,120],{"class":106},[76,1850,1822],{"class":86},[76,1852,126],{"class":106},[76,1854,1855],{"class":78,"line":211},[76,1856,215],{"emptyLinePlaceholder":214},[76,1858,1859,1861,1864,1867,1869,1871],{"class":78,"line":218},[76,1860,983],{"class":102},[76,1862,1863],{"class":231}," const",[76,1865,1866],{"class":110}," devtoolsClient ",[76,1868,618],{"class":106},[76,1870,1842],{"class":221},[76,1872,800],{"class":110},[58,1874,1875,1876,1879,1880,1883],{},"When the iframe been served with the same origin (CORS limitation), devtools will automatically inject ",[62,1877,1878],{},"__NUXT_DEVTOOLS__"," to the iframe's window object. You can access it as a ref using ",[62,1881,1882],{},"useDevtoolsClient()"," utility.",[144,1885,1887],{"id":1886},"ondevtoolsready-1",[62,1888,929],{},[58,1890,1891,1892,1897,1898,1901,1902,1905],{},"The client-side mirror of the server's ",[176,1893,1894],{"href":926},[62,1895,1896],{},"onDevtoolsReady",". The\ncallback runs once the Vite DevTools client is connected and receives the\n",[62,1899,1900],{},"DevToolsRpcClient"," (the same object as ",[62,1903,1904],{},"client.devtools.devtoolsKit","), giving\nfull devframe-native access. This is the recommended way to register client RPC\nfunctions:",[67,1907,1909],{"className":93,"code":1908,"language":95,"meta":72,"style":72},"import { onDevtoolsReady } from '@nuxt\u002Fdevtools-kit\u002Fiframe-client'\n\nonDevtoolsReady((kit) => {\n  kit.client.register({\n    name: 'my-module:on-update',\n    type: 'event',\n    handler: (payload) => {\n      \u002F\u002F ...\n    },\n  })\n})\n",[62,1910,1911,1929,1933,1950,1968,1983,1998,2016,2021,2026,2033],{"__ignoreMap":72},[76,1912,1913,1915,1917,1919,1921,1923,1925,1927],{"class":78,"line":79},[76,1914,103],{"class":102},[76,1916,107],{"class":106},[76,1918,944],{"class":110},[76,1920,114],{"class":106},[76,1922,117],{"class":102},[76,1924,120],{"class":106},[76,1926,1822],{"class":86},[76,1928,126],{"class":106},[76,1930,1931],{"class":78,"line":211},[76,1932,215],{"emptyLinePlaceholder":214},[76,1934,1935,1937,1939,1941,1944,1946,1948],{"class":78,"line":218},[76,1936,1896],{"class":221},[76,1938,225],{"class":110},[76,1940,225],{"class":106},[76,1942,1943],{"class":1003},"kit",[76,1945,401],{"class":106},[76,1947,232],{"class":231},[76,1949,329],{"class":106},[76,1951,1952,1955,1957,1960,1962,1964,1966],{"class":78,"line":241},[76,1953,1954],{"class":110},"  kit",[76,1956,65],{"class":106},[76,1958,1959],{"class":110},"client",[76,1961,65],{"class":106},[76,1963,1046],{"class":221},[76,1965,225],{"class":251},[76,1967,238],{"class":106},[76,1969,1970,1972,1974,1976,1979,1981],{"class":78,"line":248},[76,1971,743],{"class":251},[76,1973,255],{"class":106},[76,1975,120],{"class":106},[76,1977,1978],{"class":86},"my-module:on-update",[76,1980,263],{"class":106},[76,1982,266],{"class":106},[76,1984,1985,1987,1989,1991,1994,1996],{"class":78,"line":269},[76,1986,335],{"class":251},[76,1988,255],{"class":106},[76,1990,120],{"class":106},[76,1992,1993],{"class":86},"event",[76,1995,263],{"class":106},[76,1997,266],{"class":106},[76,1999,2000,2003,2005,2007,2010,2012,2014],{"class":78,"line":275},[76,2001,2002],{"class":221},"    handler",[76,2004,255],{"class":106},[76,2006,235],{"class":106},[76,2008,2009],{"class":1003},"payload",[76,2011,401],{"class":106},[76,2013,232],{"class":231},[76,2015,329],{"class":106},[76,2017,2018],{"class":78,"line":292},[76,2019,2020],{"class":244},"      \u002F\u002F ...\n",[76,2022,2023],{"class":78,"line":298},[76,2024,2025],{"class":106},"    },\n",[76,2027,2028,2031],{"class":78,"line":315},[76,2029,2030],{"class":106},"  }",[76,2032,782],{"class":251},[76,2034,2035,2037],{"class":78,"line":321},[76,2036,375],{"class":106},[76,2038,782],{"class":110},[144,2040,2042],{"id":2041},"usedevtoolsclient",[62,2043,1882],{},[58,2045,2046,2047,2050,2051,2054],{},"It will return a ref of ",[62,2048,2049],{},"NuxtDevtoolsIframeClient"," object that are intially ",[62,2052,2053],{},"null"," and will be updated when the connection is ready.",[58,2056,2057,2059],{},[62,2058,2049],{}," contains two properties:",[383,2061,2062,2068],{},[386,2063,2064,2067],{},[62,2065,2066],{},"host",": APIs to communicate with the main app in browser",[386,2069,2070,2073],{},[62,2071,2072],{},"devtools",": APIs to communicate with the devtools",[58,2075,2076,2078],{},[62,2077,2066],{}," can be undefined when devtools are accessed standalone or from a different origin.",[58,2080,2081],{},"For example, you can get the router instance from the client app:",[67,2083,2085],{"className":93,"code":2084,"language":95,"meta":72,"style":72},"const router = computed(() => devtoolsClient.value?.host?.nuxt.vueApp.config.globalProperties?.$router)\n",[62,2086,2087],{"__ignoreMap":72},[76,2088,2089,2091,2094,2096,2099,2101,2103,2105,2108,2110,2113,2116,2118,2120,2122,2124,2127,2129,2132,2134,2137,2139],{"class":78,"line":79},[76,2090,424],{"class":231},[76,2092,2093],{"class":110}," router ",[76,2095,618],{"class":106},[76,2097,2098],{"class":221}," computed",[76,2100,225],{"class":110},[76,2102,228],{"class":106},[76,2104,232],{"class":231},[76,2106,2107],{"class":110}," devtoolsClient",[76,2109,65],{"class":106},[76,2111,2112],{"class":110},"value",[76,2114,2115],{"class":106},"?.",[76,2117,2066],{"class":110},[76,2119,2115],{"class":106},[76,2121,1513],{"class":110},[76,2123,65],{"class":106},[76,2125,2126],{"class":110},"vueApp",[76,2128,65],{"class":106},[76,2130,2131],{"class":110},"config",[76,2133,65],{"class":106},[76,2135,2136],{"class":110},"globalProperties",[76,2138,2115],{"class":106},[76,2140,2141],{"class":110},"$router)\n",[58,2143,2144,2145,2147,2148,2151,2152,2154],{},"The ",[62,2146,2072],{}," object also exposes ",[62,2149,2150],{},"devtoolsKit"," — the connected Vite DevTools\nRPC client (mirroring ",[62,2153,1627],{}," on the server) — for full\ndevframe-native access. Use it to register client RPC functions, call server\nfunctions, and more:",[67,2156,2158],{"className":93,"code":2157,"language":95,"meta":72,"style":72},"const kit = devtoolsClient.value?.devtools.devtoolsKit\nkit?.client.register({\n  name: 'my-module:on-update',\n  type: 'event',\n  handler: (payload) => {\n    \u002F\u002F ...\n  },\n})\n",[62,2159,2160,2184,2200,2214,2228,2245,2250,2254],{"__ignoreMap":72},[76,2161,2162,2164,2167,2169,2171,2173,2175,2177,2179,2181],{"class":78,"line":79},[76,2163,424],{"class":231},[76,2165,2166],{"class":110}," kit ",[76,2168,618],{"class":106},[76,2170,2107],{"class":110},[76,2172,65],{"class":106},[76,2174,2112],{"class":110},[76,2176,2115],{"class":106},[76,2178,2072],{"class":110},[76,2180,65],{"class":106},[76,2182,2183],{"class":110},"devtoolsKit\n",[76,2185,2186,2188,2190,2192,2194,2196,2198],{"class":78,"line":211},[76,2187,1943],{"class":110},[76,2189,2115],{"class":106},[76,2191,1959],{"class":110},[76,2193,65],{"class":106},[76,2195,1046],{"class":221},[76,2197,225],{"class":110},[76,2199,238],{"class":106},[76,2201,2202,2204,2206,2208,2210,2212],{"class":78,"line":218},[76,2203,252],{"class":251},[76,2205,255],{"class":106},[76,2207,120],{"class":106},[76,2209,1978],{"class":86},[76,2211,263],{"class":106},[76,2213,266],{"class":106},[76,2215,2216,2218,2220,2222,2224,2226],{"class":78,"line":241},[76,2217,442],{"class":251},[76,2219,255],{"class":106},[76,2221,120],{"class":106},[76,2223,1993],{"class":86},[76,2225,263],{"class":106},[76,2227,266],{"class":106},[76,2229,2230,2233,2235,2237,2239,2241,2243],{"class":78,"line":248},[76,2231,2232],{"class":221},"  handler",[76,2234,255],{"class":106},[76,2236,235],{"class":106},[76,2238,2009],{"class":1003},[76,2240,401],{"class":106},[76,2242,232],{"class":231},[76,2244,329],{"class":106},[76,2246,2247],{"class":78,"line":269},[76,2248,2249],{"class":244},"    \u002F\u002F ...\n",[76,2251,2252],{"class":78,"line":275},[76,2253,369],{"class":106},[76,2255,2256,2258],{"class":78,"line":292},[76,2257,375],{"class":106},[76,2259,782],{"class":110},[58,2261,2262,2263,65],{},"This replaces the deprecated ",[62,2264,2265],{},"devtools.extendClientRpc()",[144,2267,2269],{"id":2268},"ondevtoolsclientconnected",[62,2270,2271],{},"onDevtoolsClientConnected()",[58,2273,2274,2275,2277],{},"Similiar to ",[62,2276,1882],{}," but as a callback style:",[67,2279,2281],{"className":93,"code":2280,"language":95,"meta":72,"style":72},"import { onDevtoolsClientConnected } from '@nuxt\u002Fdevtools-kit\u002Fiframe-client'\n\nonDevtoolsClientConnected(async (client) => {\n  \u002F\u002F client is NuxtDevtoolsIframeClient\n\n  const config = client.devtools.rpc.getServerConfig()\n  \u002F\u002F ...\n})\n",[62,2282,2283,2302,2306,2326,2331,2335,2363,2367],{"__ignoreMap":72},[76,2284,2285,2287,2289,2292,2294,2296,2298,2300],{"class":78,"line":79},[76,2286,103],{"class":102},[76,2288,107],{"class":106},[76,2290,2291],{"class":110}," onDevtoolsClientConnected",[76,2293,114],{"class":106},[76,2295,117],{"class":102},[76,2297,120],{"class":106},[76,2299,1822],{"class":86},[76,2301,126],{"class":106},[76,2303,2304],{"class":78,"line":211},[76,2305,215],{"emptyLinePlaceholder":214},[76,2307,2308,2311,2313,2316,2318,2320,2322,2324],{"class":78,"line":218},[76,2309,2310],{"class":221},"onDevtoolsClientConnected",[76,2312,225],{"class":110},[76,2314,2315],{"class":231},"async",[76,2317,235],{"class":106},[76,2319,1959],{"class":1003},[76,2321,401],{"class":106},[76,2323,232],{"class":231},[76,2325,329],{"class":106},[76,2327,2328],{"class":78,"line":241},[76,2329,2330],{"class":244},"  \u002F\u002F client is NuxtDevtoolsIframeClient\n",[76,2332,2333],{"class":78,"line":248},[76,2334,215],{"emptyLinePlaceholder":214},[76,2336,2337,2340,2343,2345,2348,2350,2352,2354,2356,2358,2361],{"class":78,"line":269},[76,2338,2339],{"class":231},"  const",[76,2341,2342],{"class":110}," config",[76,2344,435],{"class":106},[76,2346,2347],{"class":110}," client",[76,2349,65],{"class":106},[76,2351,2072],{"class":110},[76,2353,65],{"class":106},[76,2355,1041],{"class":110},[76,2357,65],{"class":106},[76,2359,2360],{"class":221},"getServerConfig",[76,2362,800],{"class":251},[76,2364,2365],{"class":78,"line":275},[76,2366,1543],{"class":244},[76,2368,2369,2371],{"class":78,"line":292},[76,2370,375],{"class":106},[76,2372,782],{"class":110},[138,2374,2376],{"id":2375},"nuxtdevtools-kithost-client",[62,2377,2378],{},"@nuxt\u002Fdevtools-kit\u002Fhost-client",[58,2380,2381,2382,2384],{},"When you have iframe for your devtools view, sometimes you need to communicate with the devtools host (the main app in browser) with a runtime plugin. You can use ",[62,2383,2378],{}," to do that.",[144,2386,2388],{"id":2387},"usedevtoolshostclient",[62,2389,2390],{},"useDevtoolsHostClient()",[58,2392,2046,2393,2050,2396,2398],{},[62,2394,2395],{},"NuxtDevtoolsHostClient",[62,2397,2053],{}," and will be updated when the host is initialized by NuxtDevtools.",[67,2400,2402],{"className":93,"code":2401,"language":95,"meta":72,"style":72},"import { useDevtoolsHostClient } from '@nuxt\u002Fdevtools-kit\u002Fhost-client'\n\nexport default defineNuxtPlugin({\n  name: 'my-module:devtools',\n  setup(nuxtApp) {\n    const devtoolsHost = useDevtoolsHostClient()\n\n    \u002F\u002F ...\n  }\n})\n",[62,2403,2404,2423,2427,2440,2455,2468,2482,2486,2490,2495],{"__ignoreMap":72},[76,2405,2406,2408,2410,2413,2415,2417,2419,2421],{"class":78,"line":79},[76,2407,103],{"class":102},[76,2409,107],{"class":106},[76,2411,2412],{"class":110}," useDevtoolsHostClient",[76,2414,114],{"class":106},[76,2416,117],{"class":102},[76,2418,120],{"class":106},[76,2420,2378],{"class":86},[76,2422,126],{"class":106},[76,2424,2425],{"class":78,"line":211},[76,2426,215],{"emptyLinePlaceholder":214},[76,2428,2429,2431,2433,2436,2438],{"class":78,"line":218},[76,2430,983],{"class":102},[76,2432,986],{"class":102},[76,2434,2435],{"class":221}," defineNuxtPlugin",[76,2437,225],{"class":110},[76,2439,238],{"class":106},[76,2441,2442,2444,2446,2448,2451,2453],{"class":78,"line":241},[76,2443,252],{"class":251},[76,2445,255],{"class":106},[76,2447,120],{"class":106},[76,2449,2450],{"class":86},"my-module:devtools",[76,2452,263],{"class":106},[76,2454,266],{"class":106},[76,2456,2457,2459,2461,2464,2466],{"class":78,"line":248},[76,2458,998],{"class":251},[76,2460,225],{"class":106},[76,2462,2463],{"class":1003},"nuxtApp",[76,2465,401],{"class":106},[76,2467,329],{"class":106},[76,2469,2470,2473,2476,2478,2480],{"class":78,"line":269},[76,2471,2472],{"class":231},"    const",[76,2474,2475],{"class":110}," devtoolsHost",[76,2477,435],{"class":106},[76,2479,2412],{"class":221},[76,2481,800],{"class":251},[76,2483,2484],{"class":78,"line":275},[76,2485,215],{"emptyLinePlaceholder":214},[76,2487,2488],{"class":78,"line":292},[76,2489,2249],{"class":244},[76,2491,2492],{"class":78,"line":298},[76,2493,2494],{"class":106},"  }\n",[76,2496,2497,2499],{"class":78,"line":315},[76,2498,375],{"class":106},[76,2500,782],{"class":110},[144,2502,2504],{"id":2503},"ondevtoolshostclientconnected",[62,2505,2506],{},"onDevtoolsHostClientConnected()",[58,2508,2274,2509,2277],{},[62,2510,2390],{},[67,2512,2514],{"className":93,"code":2513,"language":95,"meta":72,"style":72},"import { onDevtoolsHostClientConnected } from '@nuxt\u002Fdevtools-kit\u002Fhost-client'\n\nonDevtoolsHostClientConnected(async (host) => {\n\n})\n",[62,2515,2516,2535,2539,2558,2562],{"__ignoreMap":72},[76,2517,2518,2520,2522,2525,2527,2529,2531,2533],{"class":78,"line":79},[76,2519,103],{"class":102},[76,2521,107],{"class":106},[76,2523,2524],{"class":110}," onDevtoolsHostClientConnected",[76,2526,114],{"class":106},[76,2528,117],{"class":102},[76,2530,120],{"class":106},[76,2532,2378],{"class":86},[76,2534,126],{"class":106},[76,2536,2537],{"class":78,"line":211},[76,2538,215],{"emptyLinePlaceholder":214},[76,2540,2541,2544,2546,2548,2550,2552,2554,2556],{"class":78,"line":218},[76,2542,2543],{"class":221},"onDevtoolsHostClientConnected",[76,2545,225],{"class":110},[76,2547,2315],{"class":231},[76,2549,235],{"class":106},[76,2551,2066],{"class":1003},[76,2553,401],{"class":106},[76,2555,232],{"class":231},[76,2557,329],{"class":106},[76,2559,2560],{"class":78,"line":241},[76,2561,215],{"emptyLinePlaceholder":214},[76,2563,2564,2566],{"class":78,"line":248},[76,2565,375],{"class":106},[76,2567,782],{"class":110},[2569,2570,2571],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}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 pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}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}",{"title":72,"searchDepth":211,"depth":211,"links":2573},[2574,2584,2589],{"id":140,"depth":211,"text":123,"children":2575},[2576,2577,2578,2579,2580,2581,2582],{"id":146,"depth":218,"text":149},{"id":520,"depth":218,"text":523},{"id":551,"depth":218,"text":554},{"id":814,"depth":218,"text":817},{"id":1162,"depth":218,"text":929},{"id":1644,"depth":218,"text":1645},{"id":1670,"depth":218,"text":2583},"devtools:notify hook",{"id":1819,"depth":211,"text":1822,"children":2585},[2586,2587,2588],{"id":1886,"depth":218,"text":929},{"id":2041,"depth":218,"text":1882},{"id":2268,"depth":218,"text":2271},{"id":2375,"depth":211,"text":2378,"children":2590},[2591,2592],{"id":2387,"depth":218,"text":2390},{"id":2503,"depth":218,"text":2506},"Utility kit for easier DevTools integrations.","md",{},{"title":32,"description":2593},"NGKHLCX6PmHTL8nGMIv3CjjcB40M--GxUMhoAl86wFM",[2599,2601],{"title":28,"path":29,"stem":30,"description":2600,"children":-1},"Add your own modules integration to the Nuxt DevTools.",{"title":36,"path":37,"stem":38,"description":2602,"children":-1},"UI Kit is for module authors to build a custom view.",1784090045574]