1 line
12 KiB
JSON

[{"data":1,"prerenderedAt":440},["ShallowReactive",2],{"navigation_docs":3,"-client-addons-notifications":145,"-client-addons-notifications-surround":435},[4,27,41,93],{"title":5,"path":6,"stem":7,"children":8,"icon":26},"Getting Started","\u002Fgetting-started","1.getting-started\u002F0.index",[9,10,14,18,22],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"Framework Architecture","\u002Fgetting-started\u002Farchitecture","1.getting-started\u002F1.architecture",{"title":15,"path":16,"stem":17},"Module Reference","\u002Fgetting-started\u002Fmodule-reference","1.getting-started\u002F2.module-reference",{"title":19,"path":20,"stem":21},"Development Guide","\u002Fgetting-started\u002Fdevelopment","1.getting-started\u002F3.development",{"title":23,"path":24,"stem":25},"SurrealDB Setup","\u002Fgetting-started\u002Fsurrealdb-setup","1.getting-started\u002F4.surrealdb-setup","i-lucide-rocket",{"title":28,"path":29,"stem":30,"children":31},"Forge Server Extension","\u002Fserver-extension","2.server-extension\u002F0.index",[32,33,37],{"title":28,"path":29,"stem":30},{"title":34,"path":35,"stem":36},"Forge Server API Reference","\u002Fserver-extension\u002Fapi-reference","2.server-extension\u002F1.api-reference",{"title":38,"path":39,"stem":40},"Forge Server Usage Examples","\u002Fserver-extension\u002Fusage-examples","2.server-extension\u002F2.usage-examples",{"title":42,"path":43,"stem":44,"children":45,"icon":92},"Server Modules","\u002Fserver-modules","3.server-modules\u002F0.index",[46,48,52,56,60,64,68,72,76,80,84,88],{"title":47,"path":43,"stem":44},"Server Module Guides",{"title":49,"path":50,"stem":51},"Actor Usage Guide","\u002Fserver-modules\u002Factor","3.server-modules\u002F1.actor",{"title":53,"path":54,"stem":55},"Store Usage Guide","\u002Fserver-modules\u002Fstore","3.server-modules\u002F10.store",{"title":57,"path":58,"stem":59},"Task Usage Guide","\u002Fserver-modules\u002Ftask","3.server-modules\u002F11.task",{"title":61,"path":62,"stem":63},"Bank Usage Guide","\u002Fserver-modules\u002Fbank","3.server-modules\u002F2.bank",{"title":65,"path":66,"stem":67},"CAD Usage Guide","\u002Fserver-modules\u002Fcad","3.server-modules\u002F3.cad",{"title":69,"path":70,"stem":71},"Economy Usage Guide","\u002Fserver-modules\u002Feconomy","3.server-modules\u002F4.economy",{"title":73,"path":74,"stem":75},"Garage Usage Guide","\u002Fserver-modules\u002Fgarage","3.server-modules\u002F5.garage",{"title":77,"path":78,"stem":79},"Locker Usage Guide","\u002Fserver-modules\u002Flocker","3.server-modules\u002F6.locker",{"title":81,"path":82,"stem":83},"Organization Usage Guide","\u002Fserver-modules\u002Forganization","3.server-modules\u002F7.organization",{"title":85,"path":86,"stem":87},"Owned Storage Usage Guide","\u002Fserver-modules\u002Fowned-storage","3.server-modules\u002F8.owned-storage",{"title":89,"path":90,"stem":91},"Phone Usage Guide","\u002Fserver-modules\u002Fphone","3.server-modules\u002F9.phone","i-lucide-layers-3",{"title":94,"path":95,"stem":96,"children":97,"icon":144},"Client Addons","\u002Fclient-addons","4.client-addons\u002F0.index",[98,100,104,108,112,116,120,124,128,132,136,140],{"title":99,"path":95,"stem":96},"Client Usage Guide",{"title":101,"path":102,"stem":103},"Client Main Usage Guide","\u002Fclient-addons\u002Fmain","4.client-addons\u002F1.main",{"title":105,"path":106,"stem":107},"Client Phone Usage Guide","\u002Fclient-addons\u002Fphone","4.client-addons\u002F10.phone",{"title":109,"path":110,"stem":111},"Client Store Usage Guide","\u002Fclient-addons\u002Fstore","4.client-addons\u002F11.store",{"title":113,"path":114,"stem":115},"Client Common Usage Guide","\u002Fclient-addons\u002Fcommon","4.client-addons\u002F2.common",{"title":117,"path":118,"stem":119},"Client Actor Usage Guide","\u002Fclient-addons\u002Factor","4.client-addons\u002F3.actor",{"title":121,"path":122,"stem":123},"Client Bank Usage Guide","\u002Fclient-addons\u002Fbank","4.client-addons\u002F4.bank",{"title":125,"path":126,"stem":127},"Client CAD Usage Guide","\u002Fclient-addons\u002Fcad","4.client-addons\u002F5.cad",{"title":129,"path":130,"stem":131},"Client Garage Usage Guide","\u002Fclient-addons\u002Fgarage","4.client-addons\u002F6.garage",{"title":133,"path":134,"stem":135},"Client Locker Usage Guide","\u002Fclient-addons\u002Flocker","4.client-addons\u002F7.locker",{"title":137,"path":138,"stem":139},"Client Notifications Usage Guide","\u002Fclient-addons\u002Fnotifications","4.client-addons\u002F8.notifications",{"title":141,"path":142,"stem":143},"Client Organization Usage Guide","\u002Fclient-addons\u002Forganization","4.client-addons\u002F9.organization","i-lucide-monitor-smartphone",{"id":146,"title":137,"body":147,"description":157,"extension":429,"links":430,"meta":431,"navigation":432,"path":138,"seo":433,"stem":139,"__hash__":434},"docs\u002F4.client-addons\u002F8.notifications.md",{"type":148,"value":149,"toc":422},"minimark",[150,154,158,163,166,177,184,188,191,236,239,314,321,325,328,363,366,375,379,395,399,418],[151,152,137],"h1",{"id":153},"client-notifications-usage-guide",[155,156,157],"p",{},"The client notifications addon owns the notification HUD, notification sound,\nand local notification service used by Forge client and server modules.",[159,160,162],"h2",{"id":161},"runtime-behavior","Runtime Behavior",[155,164,165],{},"The notification display is created during client initialization. The browser\nHUD sends:",[167,168,174],"pre",{"className":169,"code":171,"language":172,"meta":173},[170],"language-text","notifications::ready\n","text","",[175,176,171],"code",{"__ignoreMap":173},[155,178,179,180,183],{},"When that event is received, ",[175,181,182],{},"NotificationService"," initializes and sends a\nstartup notification.",[159,185,187],{"id":186},"create-a-notification","Create a Notification",[155,189,190],{},"Use the notification service when available:",[167,192,196],{"className":193,"code":194,"language":195,"meta":173,"style":173},"language-sqf shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","GVAR(NotificationService) call [\"create\", [\n \"success\",\n \"Title\",\n \"Notification text.\",\n 4000\n]];\n","sqf",[175,197,198,206,212,218,224,230],{"__ignoreMap":173},[199,200,203],"span",{"class":201,"line":202},"line",1,[199,204,205],{},"GVAR(NotificationService) call [\"create\", [\n",[199,207,209],{"class":201,"line":208},2,[199,210,211],{}," \"success\",\n",[199,213,215],{"class":201,"line":214},3,[199,216,217],{}," \"Title\",\n",[199,219,221],{"class":201,"line":220},4,[199,222,223],{}," \"Notification text.\",\n",[199,225,227],{"class":201,"line":226},5,[199,228,229],{}," 4000\n",[199,231,233],{"class":201,"line":232},6,[199,234,235],{},"]];\n",[155,237,238],{},"Arguments:",[240,241,242,255],"table",{},[243,244,245],"thead",{},[246,247,248,252],"tr",{},[249,250,251],"th",{},"Argument",[249,253,254],{},"Purpose",[256,257,258,284,294,304],"tbody",{},[246,259,260,266],{},[261,262,263],"td",{},[175,264,265],{},"_type",[261,267,268,269,272,273,272,276,279,280,283],{},"Notification type, such as ",[175,270,271],{},"success",", ",[175,274,275],{},"info",[175,277,278],{},"warning",", or ",[175,281,282],{},"error",".",[246,285,286,291],{},[261,287,288],{},[175,289,290],{},"_title",[261,292,293],{},"Notification title.",[246,295,296,301],{},[261,297,298],{},[175,299,300],{},"_content",[261,302,303],{},"Notification body text.",[246,305,306,311],{},[261,307,308],{},[175,309,310],{},"_duration",[261,312,313],{},"Display duration in milliseconds.",[155,315,316,317,320],{},"The service dispatches a browser ",[175,318,319],{},"forge:notify"," custom event.",[159,322,324],{"id":323},"cba-event-surface","CBA Event Surface",[155,326,327],{},"Other addons can use the client notification event:",[167,329,331],{"className":193,"code":330,"language":195,"meta":173,"style":173},"[\"forge_client_notifications_recieveNotification\", [\n \"warning\",\n \"Garage\",\n \"Vehicle spawn position is blocked.\",\n 3000\n]] call CBA_fnc_localEvent;\n",[175,332,333,338,343,348,353,358],{"__ignoreMap":173},[199,334,335],{"class":201,"line":202},[199,336,337],{},"[\"forge_client_notifications_recieveNotification\", [\n",[199,339,340],{"class":201,"line":208},[199,341,342],{}," \"warning\",\n",[199,344,345],{"class":201,"line":214},[199,346,347],{}," \"Garage\",\n",[199,349,350],{"class":201,"line":220},[199,351,352],{}," \"Vehicle spawn position is blocked.\",\n",[199,354,355],{"class":201,"line":226},[199,356,357],{}," 3000\n",[199,359,360],{"class":201,"line":232},[199,361,362],{},"]] call CBA_fnc_localEvent;\n",[155,364,365],{},"The event payload is:",[167,367,369],{"className":193,"code":368,"language":195,"meta":173,"style":173},"[_type, _title, _content, _duration]\n",[175,370,371],{"__ignoreMap":173},[199,372,373],{"class":201,"line":202},[199,374,368],{},[159,376,378],{"id":377},"usage-rules","Usage Rules",[380,381,382,386,389,392],"ul",{},[383,384,385],"li",{},"Use the shared notification service instead of opening separate transient\nbrowser UIs.",[383,387,388],{},"Keep server-driven player feedback short and actionable.",[383,390,391],{},"Treat notification state as transient client UI state.",[383,393,394],{},"Do not use notifications as the only record of durable domain changes.",[159,396,398],{"id":397},"related-guides","Related Guides",[380,400,401,406,410,414],{},[383,402,403],{},[404,405,99],"a",{"href":95},[383,407,408],{},[404,409,129],{"href":130},[383,411,412],{},[404,413,121],{"href":122},[383,415,416],{},[404,417,109],{"href":110},[419,420,421],"style",{},"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);}",{"title":173,"searchDepth":208,"depth":208,"links":423},[424,425,426,427,428],{"id":161,"depth":208,"text":162},{"id":186,"depth":208,"text":187},{"id":323,"depth":208,"text":324},{"id":377,"depth":208,"text":378},{"id":397,"depth":208,"text":398},"md",null,{},true,{"title":137,"description":157},"P5hLsZEtZ07GJaZAEGp85RqGAXcXTLDP_pi2pwHR08o",[436,438],{"title":133,"path":134,"stem":135,"description":437,"children":-1},"The client locker addon manages personal locker display state, local locker\ncontainer behavior, and virtual arsenal unlock state.",{"title":141,"path":142,"stem":143,"description":439,"children":-1},"The client organization addon provides the organization portal UI and browser\nbridge for login, registration, membership, invites, credit lines, leave and\ndisband flows, assets, fleet, and treasury display.",1776806627742]