[{"data":1,"prerenderedAt":1004},["ShallowReactive",2],{"navigation_docs":3,"-vue-props":81,"-vue-props-surround":999},[4,41,62],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":40},"Guide","i-lucide-book-open","\u002Fguide","1.guide",[10,15,20,25,30,35],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fguide\u002Fintroduction","1.guide\u002F1.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"How it works","\u002Fguide\u002Fhow-it-works","1.guide\u002F2.how-it-works","i-lucide-workflow",{"title":21,"path":22,"stem":23,"icon":24},"Data modes","\u002Fguide\u002Fdata-modes","1.guide\u002F3.data-modes","i-lucide-git-fork",{"title":26,"path":27,"stem":28,"icon":29},"Options","\u002Fguide\u002Foptions","1.guide\u002F4.options","i-lucide-settings-2",{"title":31,"path":32,"stem":33,"icon":34},"Gradients","\u002Fguide\u002Fgradients","1.guide\u002F5.gradients","i-lucide-palette",{"title":36,"path":37,"stem":38,"icon":39},"WebSocket protocol","\u002Fguide\u002Fwebsocket-protocol","1.guide\u002F6.websocket-protocol","i-lucide-radio",false,{"title":42,"icon":43,"path":44,"stem":45,"children":46,"page":40},"Core","i-lucide-box","\u002Fcore","2.core",[47,52,57],{"title":48,"path":49,"stem":50,"icon":51},"Installation","\u002Fcore\u002Finstallation","2.core\u002F1.installation","i-lucide-download",{"title":53,"path":54,"stem":55,"icon":56},"API reference","\u002Fcore\u002Fapi","2.core\u002F2.api","i-lucide-code",{"title":58,"path":59,"stem":60,"icon":61},"Audio engines","\u002Fcore\u002Faudio-engines","2.core\u002F3.audio-engines","i-lucide-audio-lines",{"title":63,"icon":64,"path":65,"stem":66,"children":67,"page":40},"Vue","i-simple-icons-vuedotjs","\u002Fvue","3.vue",[68,71,76],{"title":48,"path":69,"stem":70,"icon":51},"\u002Fvue\u002Finstallation","3.vue\u002F1.installation",{"title":72,"path":73,"stem":74,"icon":75},"Props, events & methods","\u002Fvue\u002Fprops","3.vue\u002F2.props","i-lucide-sliders-horizontal",{"title":77,"path":78,"stem":79,"icon":80},"Composables","\u002Fvue\u002Fcomposables","3.vue\u002F3.composables","i-lucide-plug",{"id":82,"title":72,"body":83,"description":992,"extension":993,"links":994,"meta":995,"navigation":996,"path":73,"seo":997,"stem":74,"__hash__":998},"docs\u002F3.vue\u002F2.props.md",{"type":84,"value":85,"toc":981},"minimark",[86,91,118,236,264,269,272,321,325,396,402,405,459,620,624,627,941,945,977],[87,88,90],"h2",{"id":89},"props","Props",[92,93,94,95,99,100,104,105,109,110,113,114,117],"p",{},"The ",[96,97,98],"code",{},"\u003CFFTVisualizer>"," component accepts ",[101,102,103],"strong",{},"every"," ",[106,107,108],"a",{"href":27},"shared option"," as a prop,\none-to-one, in ",[96,111,112],{},"camelCase"," or ",[96,115,116],{},"kebab-case",":",[119,120,125],"pre",{"className":121,"code":122,"language":123,"meta":124,"style":124},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003CFFTVisualizer\n  mode=\"local\"\n  :bands=\"40\"\n  gradient=\"sunset\"\n  :led-bars=\"true\"\n  :smoothing=\"0.7\"\n\u002F>\n","vue","",[96,126,127,140,160,179,194,212,229],{"__ignoreMap":124},[128,129,132,136],"span",{"class":130,"line":131},"line",1,[128,133,135],{"class":134},"sMK4o","\u003C",[128,137,139],{"class":138},"swJcz","FFTVisualizer\n",[128,141,143,147,150,153,157],{"class":130,"line":142},2,[128,144,146],{"class":145},"spNyl","  mode",[128,148,149],{"class":134},"=",[128,151,152],{"class":134},"\"",[128,154,156],{"class":155},"sfazB","local",[128,158,159],{"class":134},"\"\n",[128,161,163,166,169,171,173,177],{"class":130,"line":162},3,[128,164,165],{"class":134},"  :",[128,167,168],{"class":145},"bands",[128,170,149],{"class":134},[128,172,152],{"class":134},[128,174,176],{"class":175},"sbssI","40",[128,178,159],{"class":134},[128,180,182,185,187,189,192],{"class":130,"line":181},4,[128,183,184],{"class":145},"  gradient",[128,186,149],{"class":134},[128,188,152],{"class":134},[128,190,191],{"class":155},"sunset",[128,193,159],{"class":134},[128,195,197,199,202,204,206,210],{"class":130,"line":196},5,[128,198,165],{"class":134},[128,200,201],{"class":145},"led-bars",[128,203,149],{"class":134},[128,205,152],{"class":134},[128,207,209],{"class":208},"sfNiH","true",[128,211,159],{"class":134},[128,213,215,217,220,222,224,227],{"class":130,"line":214},6,[128,216,165],{"class":134},[128,218,219],{"class":145},"smoothing",[128,221,149],{"class":134},[128,223,152],{"class":134},[128,225,226],{"class":175},"0.7",[128,228,159],{"class":134},[128,230,232],{"class":130,"line":231},7,[128,233,235],{"class":234},"sTEyZ","\u002F>\n",[92,237,238,239,241,242,245,246,245,249,252,253,256,257,259,260,263],{},"See ",[106,240,26],{"href":27}," for the full list of names, types, defaults, and meanings.\nObject\u002Farray props (",[96,243,244],{},"data",", ",[96,247,248],{},"dataLeft",[96,250,251],{},"dataRight",", custom ",[96,254,255],{},"gradient"," stops) are bound with\n",[96,258,117],{},", e.g. ",[96,261,262],{},":gradient=\"[{ stop: 0, color: '#001233' }, …]\"",".",[265,266,268],"h3",{"id":267},"vue-only-prop","Vue-only prop",[92,270,271],{},"One prop exists only on the Vue wrapper, for its built-in overlay:",[273,274,275,294],"table",{},[276,277,278],"thead",{},[279,280,281,285,288,291],"tr",{},[282,283,284],"th",{},"Prop",[282,286,287],{},"Type",[282,289,290],{},"Default",[282,292,293],{},"Description",[295,296,297],"tbody",{},[279,298,299,305,310,314],{},[300,301,302],"td",{},[96,303,304],{},"showStats",[300,306,307],{},[96,308,309],{},"boolean",[300,311,312],{},[96,313,209],{},[300,315,316,317,320],{},"Show the small connection\u002Ffps overlay (overridable via the ",[96,318,319],{},"stats"," slot)",[87,322,324],{"id":323},"events","Events",[273,326,327,339],{},[276,328,329],{},[279,330,331,334,337],{},[282,332,333],{},"Event",[282,335,336],{},"Payload",[282,338,293],{},[295,340,341,354,366,381],{},[279,342,343,348,351],{},[300,344,345],{},[96,346,347],{},"connected",[300,349,350],{},"—",[300,352,353],{},"Data source became active",[279,355,356,361,363],{},[300,357,358],{},[96,359,360],{},"disconnected",[300,362,350],{},[300,364,365],{},"Data source stopped",[279,367,368,373,378],{},[300,369,370],{},[96,371,372],{},"error",[300,374,375],{},[96,376,377],{},"string",[300,379,380],{},"Error message (WS error, capture failure, WebGL init failure)",[279,382,383,388,393],{},[300,384,385],{},[96,386,387],{},"frame",[300,389,390],{},[96,391,392],{},"(data, left, right)",[300,394,395],{},"The display bar magnitudes, once per processed audio frame",[265,397,94,399,401],{"id":398},"the-frame-event",[96,400,387],{}," event",[92,403,404],{},"Fires once per processed audio frame with the same 0–255 bar values the shader\ndraws — a ready-made feed for external hardware (LED strips, flip-dot displays, …)\nwithout re-implementing any FFT. Listener-gated, so it costs nothing when unused.",[119,406,408],{"className":121,"code":407,"language":123,"meta":124,"style":124},"\u003CFFTVisualizer mode=\"local\" :bands=\"28\" @frame=\"onFrame\" \u002F>\n",[96,409,410],{"__ignoreMap":124},[128,411,412,414,417,420,422,424,426,428,431,433,435,437,440,442,445,447,449,451,454,456],{"class":130,"line":131},[128,413,135],{"class":134},[128,415,416],{"class":138},"FFTVisualizer",[128,418,419],{"class":145}," mode",[128,421,149],{"class":134},[128,423,152],{"class":134},[128,425,156],{"class":155},[128,427,152],{"class":134},[128,429,430],{"class":134}," :",[128,432,168],{"class":145},[128,434,149],{"class":134},[128,436,152],{"class":134},[128,438,439],{"class":175},"28",[128,441,152],{"class":134},[128,443,444],{"class":134}," @",[128,446,387],{"class":145},[128,448,149],{"class":134},[128,450,152],{"class":134},[128,452,453],{"class":234},"onFrame",[128,455,152],{"class":134},[128,457,458],{"class":134}," \u002F>\n",[119,460,464],{"className":461,"code":462,"language":463,"meta":124,"style":124},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F data:  Uint8Array — one 0–255 magnitude per bar (length = `bands`)\n\u002F\u002F left \u002F right: per-channel arrays in stereo mode, else null\n\u002F\u002F               (in stereo, `data` is the per-bar max of both channels)\nfunction onFrame(data, left, right) {\n  const rows = 14 \u002F\u002F e.g. dots per column on a flip-dot panel\n  data.forEach((v, col) => {\n    const lit = Math.round((v \u002F 255) * rows)\n    \u002F\u002F light dots 0..lit-1 in column `col`\n  })\n}\n","ts",[96,465,466,472,477,482,514,531,560,600,606,614],{"__ignoreMap":124},[128,467,468],{"class":130,"line":131},[128,469,471],{"class":470},"sHwdD","\u002F\u002F data:  Uint8Array — one 0–255 magnitude per bar (length = `bands`)\n",[128,473,474],{"class":130,"line":142},[128,475,476],{"class":470},"\u002F\u002F left \u002F right: per-channel arrays in stereo mode, else null\n",[128,478,479],{"class":130,"line":162},[128,480,481],{"class":470},"\u002F\u002F               (in stereo, `data` is the per-bar max of both channels)\n",[128,483,484,487,491,494,497,500,503,505,508,511],{"class":130,"line":181},[128,485,486],{"class":145},"function",[128,488,490],{"class":489},"s2Zo4"," onFrame",[128,492,493],{"class":134},"(",[128,495,244],{"class":496},"sHdIc",[128,498,499],{"class":134},",",[128,501,502],{"class":496}," left",[128,504,499],{"class":134},[128,506,507],{"class":496}," right",[128,509,510],{"class":134},")",[128,512,513],{"class":134}," {\n",[128,515,516,519,522,525,528],{"class":130,"line":196},[128,517,518],{"class":145},"  const",[128,520,521],{"class":234}," rows",[128,523,524],{"class":134}," =",[128,526,527],{"class":175}," 14",[128,529,530],{"class":470}," \u002F\u002F e.g. dots per column on a flip-dot panel\n",[128,532,533,536,538,541,543,545,548,550,553,555,558],{"class":130,"line":214},[128,534,535],{"class":234},"  data",[128,537,263],{"class":134},[128,539,540],{"class":489},"forEach",[128,542,493],{"class":138},[128,544,493],{"class":134},[128,546,547],{"class":496},"v",[128,549,499],{"class":134},[128,551,552],{"class":496}," col",[128,554,510],{"class":134},[128,556,557],{"class":145}," =>",[128,559,513],{"class":134},[128,561,562,565,568,570,573,575,578,581,583,586,589,592,595,597],{"class":130,"line":231},[128,563,564],{"class":145},"    const",[128,566,567],{"class":234}," lit",[128,569,524],{"class":134},[128,571,572],{"class":234}," Math",[128,574,263],{"class":134},[128,576,577],{"class":489},"round",[128,579,580],{"class":138},"((",[128,582,547],{"class":234},[128,584,585],{"class":134}," \u002F",[128,587,588],{"class":175}," 255",[128,590,591],{"class":138},") ",[128,593,594],{"class":134},"*",[128,596,521],{"class":234},[128,598,599],{"class":138},")\n",[128,601,603],{"class":130,"line":602},8,[128,604,605],{"class":470},"    \u002F\u002F light dots 0..lit-1 in column `col`\n",[128,607,609,612],{"class":130,"line":608},9,[128,610,611],{"class":134},"  }",[128,613,599],{"class":138},[128,615,617],{"class":130,"line":616},10,[128,618,619],{"class":134},"}\n",[87,621,623],{"id":622},"exposed-methods","Exposed methods",[92,625,626],{},"Access via a template ref:",[119,628,630],{"className":121,"code":629,"language":123,"meta":124,"style":124},"\u003Cscript setup>\nimport { ref } from 'vue'\nconst viz = ref()\n\n\u002F\u002F Manual connection control\nviz.value.connect()\nviz.value.disconnect()\nviz.value.isConnected            \u002F\u002F Ref\u003Cboolean>\n\n\u002F\u002F Feed FFT frames imperatively (mode=\"external\") — copies the data, so it works\n\u002F\u002F even when you reuse one buffer each frame (unlike the reference-watched `data` prop)\nviz.value.feedData(mono)               \u002F\u002F Uint8Array\nviz.value.feedData(mono, left, right)  \u002F\u002F stereo\n\n\u002F\u002F Local-audio device management\nawait viz.value.getAudioDevices()   \u002F\u002F Promise\u003CAudioDevice[]> (prompts for mic permission)\nviz.value.audioDevices              \u002F\u002F Ref\u003CAudioDevice[]>\nviz.value.activeAudioDeviceId       \u002F\u002F Ref\u003Cstring | undefined>\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003CFFTVisualizer ref=\"viz\" mode=\"local\" \u002F>\n\u003C\u002Ftemplate>\n",[96,631,632,645,671,686,692,697,714,729,745,749,754,760,780,808,813,819,843,860,877,887,892,902,932],{"__ignoreMap":124},[128,633,634,636,639,642],{"class":130,"line":131},[128,635,135],{"class":134},[128,637,638],{"class":138},"script",[128,640,641],{"class":145}," setup",[128,643,644],{"class":134},">\n",[128,646,647,651,654,657,660,663,666,668],{"class":130,"line":142},[128,648,650],{"class":649},"s7zQu","import",[128,652,653],{"class":134}," {",[128,655,656],{"class":234}," ref",[128,658,659],{"class":134}," }",[128,661,662],{"class":649}," from",[128,664,665],{"class":134}," '",[128,667,123],{"class":155},[128,669,670],{"class":134},"'\n",[128,672,673,676,679,681,683],{"class":130,"line":162},[128,674,675],{"class":145},"const",[128,677,678],{"class":234}," viz ",[128,680,149],{"class":134},[128,682,656],{"class":489},[128,684,685],{"class":234},"()\n",[128,687,688],{"class":130,"line":181},[128,689,691],{"emptyLinePlaceholder":690},true,"\n",[128,693,694],{"class":130,"line":196},[128,695,696],{"class":470},"\u002F\u002F Manual connection control\n",[128,698,699,702,704,707,709,712],{"class":130,"line":214},[128,700,701],{"class":234},"viz",[128,703,263],{"class":134},[128,705,706],{"class":234},"value",[128,708,263],{"class":134},[128,710,711],{"class":489},"connect",[128,713,685],{"class":234},[128,715,716,718,720,722,724,727],{"class":130,"line":231},[128,717,701],{"class":234},[128,719,263],{"class":134},[128,721,706],{"class":234},[128,723,263],{"class":134},[128,725,726],{"class":489},"disconnect",[128,728,685],{"class":234},[128,730,731,733,735,737,739,742],{"class":130,"line":602},[128,732,701],{"class":234},[128,734,263],{"class":134},[128,736,706],{"class":234},[128,738,263],{"class":134},[128,740,741],{"class":234},"isConnected            ",[128,743,744],{"class":470},"\u002F\u002F Ref\u003Cboolean>\n",[128,746,747],{"class":130,"line":608},[128,748,691],{"emptyLinePlaceholder":690},[128,750,751],{"class":130,"line":616},[128,752,753],{"class":470},"\u002F\u002F Feed FFT frames imperatively (mode=\"external\") — copies the data, so it works\n",[128,755,757],{"class":130,"line":756},11,[128,758,759],{"class":470},"\u002F\u002F even when you reuse one buffer each frame (unlike the reference-watched `data` prop)\n",[128,761,763,765,767,769,771,774,777],{"class":130,"line":762},12,[128,764,701],{"class":234},[128,766,263],{"class":134},[128,768,706],{"class":234},[128,770,263],{"class":134},[128,772,773],{"class":489},"feedData",[128,775,776],{"class":234},"(mono)               ",[128,778,779],{"class":470},"\u002F\u002F Uint8Array\n",[128,781,783,785,787,789,791,793,796,798,800,802,805],{"class":130,"line":782},13,[128,784,701],{"class":234},[128,786,263],{"class":134},[128,788,706],{"class":234},[128,790,263],{"class":134},[128,792,773],{"class":489},[128,794,795],{"class":234},"(mono",[128,797,499],{"class":134},[128,799,502],{"class":234},[128,801,499],{"class":134},[128,803,804],{"class":234}," right)  ",[128,806,807],{"class":470},"\u002F\u002F stereo\n",[128,809,811],{"class":130,"line":810},14,[128,812,691],{"emptyLinePlaceholder":690},[128,814,816],{"class":130,"line":815},15,[128,817,818],{"class":470},"\u002F\u002F Local-audio device management\n",[128,820,822,825,828,830,832,834,837,840],{"class":130,"line":821},16,[128,823,824],{"class":649},"await",[128,826,827],{"class":234}," viz",[128,829,263],{"class":134},[128,831,706],{"class":234},[128,833,263],{"class":134},[128,835,836],{"class":489},"getAudioDevices",[128,838,839],{"class":234},"()   ",[128,841,842],{"class":470},"\u002F\u002F Promise\u003CAudioDevice[]> (prompts for mic permission)\n",[128,844,846,848,850,852,854,857],{"class":130,"line":845},17,[128,847,701],{"class":234},[128,849,263],{"class":134},[128,851,706],{"class":234},[128,853,263],{"class":134},[128,855,856],{"class":234},"audioDevices              ",[128,858,859],{"class":470},"\u002F\u002F Ref\u003CAudioDevice[]>\n",[128,861,863,865,867,869,871,874],{"class":130,"line":862},18,[128,864,701],{"class":234},[128,866,263],{"class":134},[128,868,706],{"class":234},[128,870,263],{"class":134},[128,872,873],{"class":234},"activeAudioDeviceId       ",[128,875,876],{"class":470},"\u002F\u002F Ref\u003Cstring | undefined>\n",[128,878,880,883,885],{"class":130,"line":879},19,[128,881,882],{"class":134},"\u003C\u002F",[128,884,638],{"class":138},[128,886,644],{"class":134},[128,888,890],{"class":130,"line":889},20,[128,891,691],{"emptyLinePlaceholder":690},[128,893,895,897,900],{"class":130,"line":894},21,[128,896,135],{"class":134},[128,898,899],{"class":138},"template",[128,901,644],{"class":134},[128,903,905,908,910,912,914,916,918,920,922,924,926,928,930],{"class":130,"line":904},22,[128,906,907],{"class":134},"  \u003C",[128,909,416],{"class":138},[128,911,656],{"class":145},[128,913,149],{"class":134},[128,915,152],{"class":134},[128,917,701],{"class":155},[128,919,152],{"class":134},[128,921,419],{"class":145},[128,923,149],{"class":134},[128,925,152],{"class":134},[128,927,156],{"class":155},[128,929,152],{"class":134},[128,931,458],{"class":134},[128,933,935,937,939],{"class":130,"line":934},23,[128,936,882],{"class":134},[128,938,899],{"class":138},[128,940,644],{"class":134},[87,942,944],{"id":943},"slots","Slots",[273,946,947,958],{},[276,948,949],{},[279,950,951,954,956],{},[282,952,953],{},"Slot",[282,955,90],{},[282,957,293],{},[295,959,960],{},[279,961,962,966,971],{},[300,963,964],{},[96,965,319],{},[300,967,968],{},[96,969,970],{},"{ connected, bands, fps }",[300,972,973,974,976],{},"Replace the default corner overlay with your own (only rendered when ",[96,975,304],{}," is true)",[978,979,980],"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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}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 .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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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 .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}",{"title":124,"searchDepth":142,"depth":142,"links":982},[983,986,990,991],{"id":89,"depth":142,"text":90,"children":984},[985],{"id":267,"depth":162,"text":268},{"id":323,"depth":142,"text":324,"children":987},[988],{"id":398,"depth":162,"text":989},"The frame event",{"id":622,"depth":142,"text":623},{"id":943,"depth":142,"text":944},"The Vue component API — props, emitted events, exposed methods, and slots.","md",null,{},{"icon":75},{"title":72,"description":992},"4tdsdPcL6kXv13py2OE7FSDsC28HdsrDfO5ywHMw_q0",[1000,1002],{"title":48,"path":69,"stem":70,"description":1001,"icon":51,"children":-1},"Install the package and render your first spectrum in under a minute.",{"title":77,"path":78,"stem":79,"description":1003,"icon":80,"children":-1},"Standalone Vue composables that wrap the core audio engines as refs.",1784963433242]