[{"data":1,"prerenderedAt":3054},["ShallowReactive",2],{"navigation_docs":3,"-api-functions":188,"-api-functions-surround":3049},[4,9,27,52,101,130,163],{"title":5,"path":6,"stem":7,"icon":8},"Playground","\u002Fplayground","1.playground","i-lucide-flask-conical",{"title":10,"path":11,"stem":12,"children":13,"page":26},"Getting Started","\u002Fgetting-started","2.getting-started",[14,18,22],{"title":15,"path":16,"stem":17},"Introduction","\u002Fgetting-started\u002Fintroduction","2.getting-started\u002F1.introduction",{"title":19,"path":20,"stem":21},"Installation","\u002Fgetting-started\u002Finstallation","2.getting-started\u002F2.installation",{"title":23,"path":24,"stem":25},"First modal","\u002Fgetting-started\u002Ffirst-modal","2.getting-started\u002F3.first-modal",false,{"title":28,"path":29,"stem":30,"children":31,"page":26},"Concepts","\u002Fconcepts","3.concepts",[32,36,40,44,48],{"title":33,"path":34,"stem":35},"Architecture","\u002Fconcepts\u002Farchitecture","3.concepts\u002F1.architecture",{"title":37,"path":38,"stem":39},"Imperative flow","\u002Fconcepts\u002Fimperative-flow","3.concepts\u002F2.imperative-flow",{"title":41,"path":42,"stem":43},"Stacking","\u002Fconcepts\u002Fstacking","3.concepts\u002F3.stacking",{"title":45,"path":46,"stem":47},"Groups","\u002Fconcepts\u002Fgroups","3.concepts\u002F4.groups",{"title":49,"path":50,"stem":51},"Headless primitives","\u002Fconcepts\u002Fheadless-primitives","3.concepts\u002F5.headless-primitives",{"title":53,"path":54,"stem":55,"children":56,"page":26},"Guide","\u002Fguide","4.guide",[57,61,65,69,73,77,81,85,89,93,97],{"title":58,"path":59,"stem":60},"Writing a modal","\u002Fguide\u002Fwriting-a-modal","4.guide\u002F01.writing-a-modal",{"title":62,"path":63,"stem":64},"Opening & closing","\u002Fguide\u002Fopening-and-closing","4.guide\u002F02.opening-and-closing",{"title":66,"path":67,"stem":68},"Props & results","\u002Fguide\u002Fpassing-props-and-results","4.guide\u002F03.passing-props-and-results",{"title":70,"path":71,"stem":72},"Behavior options","\u002Fguide\u002Fbehavior-options","4.guide\u002F04.behavior-options",{"title":74,"path":75,"stem":76},"Animations & styling","\u002Fguide\u002Fstyling-and-animations","4.guide\u002F05.styling-and-animations",{"title":78,"path":79,"stem":80},"useModal composable","\u002Fguide\u002Fusemodal-composable","4.guide\u002F06.usemodal-composable",{"title":82,"path":83,"stem":84},"Modal context","\u002Fguide\u002Fmodal-context","4.guide\u002F07.modal-context",{"title":86,"path":87,"stem":88},"Multiple targets","\u002Fguide\u002Fmultiple-targets","4.guide\u002F08.multiple-targets",{"title":90,"path":91,"stem":92},"Overlay","\u002Fguide\u002Foverlay","4.guide\u002F09.overlay",{"title":94,"path":95,"stem":96},"Async components","\u002Fguide\u002Fasync-components","4.guide\u002F10.async-components",{"title":98,"path":99,"stem":100},"TypeScript","\u002Fguide\u002Ftypescript","4.guide\u002F11.typescript",{"title":102,"path":103,"stem":104,"children":105,"page":26},"Recipes","\u002Frecipes","5.recipes",[106,110,114,118,122,126],{"title":107,"path":108,"stem":109},"Confirm dialog","\u002Frecipes\u002Fconfirm-dialog","5.recipes\u002F1.confirm-dialog",{"title":111,"path":112,"stem":113},"Form modal with validation","\u002Frecipes\u002Fform-modal-with-validation","5.recipes\u002F2.form-modal-with-validation",{"title":115,"path":116,"stem":117},"Image lightbox","\u002Frecipes\u002Fimage-lightbox","5.recipes\u002F3.image-lightbox",{"title":119,"path":120,"stem":121},"Command palette","\u002Frecipes\u002Fcommand-palette","5.recipes\u002F4.command-palette",{"title":123,"path":124,"stem":125},"Nested flows \u002F wizards","\u002Frecipes\u002Fnested-flows","5.recipes\u002F5.nested-flows",{"title":127,"path":128,"stem":129},"Global error modal","\u002Frecipes\u002Fglobal-error-modal","5.recipes\u002F6.global-error-modal",{"title":131,"path":132,"stem":133,"children":134,"page":26},"Api","\u002Fapi","6.api",[135,139,143,147,151,155,159],{"title":136,"path":137,"stem":138},"Functions","\u002Fapi\u002Ffunctions","6.api\u002F1.functions",{"title":140,"path":141,"stem":142},"Components","\u002Fapi\u002Fcomponents","6.api\u002F2.components",{"title":144,"path":145,"stem":146},"Composables","\u002Fapi\u002Fcomposables","6.api\u002F3.composables",{"title":148,"path":149,"stem":150},"Plugin","\u002Fapi\u002Fplugin","6.api\u002F4.plugin",{"title":152,"path":153,"stem":154},"State helpers","\u002Fapi\u002Fstate","6.api\u002F5.state",{"title":156,"path":157,"stem":158},"Global events","\u002Fapi\u002Fevents","6.api\u002F6.events",{"title":160,"path":161,"stem":162},"Types","\u002Fapi\u002Ftypes","6.api\u002F7.types",{"title":164,"path":165,"stem":166,"children":167,"page":26},"Resources","\u002Fresources","7.resources",[168,172,176,180,184],{"title":169,"path":170,"stem":171},"Migration from v1","\u002Fresources\u002Fmigration-from-v1","7.resources\u002F1.migration-from-v1",{"title":173,"path":174,"stem":175},"FAQ","\u002Fresources\u002Ffaq","7.resources\u002F2.faq",{"title":177,"path":178,"stem":179},"Troubleshooting","\u002Fresources\u002Ftroubleshooting","7.resources\u002F3.troubleshooting",{"title":181,"path":182,"stem":183},"Comparison","\u002Fresources\u002Fcomparison","7.resources\u002F4.comparison",{"title":185,"path":186,"stem":187},"Changelog","\u002Fresources\u002Fchangelog","7.resources\u002F5.changelog",{"id":189,"title":136,"body":190,"description":3043,"extension":3044,"links":3045,"meta":3046,"navigation":362,"path":137,"seo":3047,"stem":138,"__hash__":3048},"docs\u002F6.api\u002F1.functions.md",{"type":191,"value":192,"toc":3010},"minimark",[193,197,214,221,248,253,641,645,727,732,794,1387,1389,1478,1482,1498,1511,1514,1520,1535,1538,1680,1683,1735,1862,1877,1879,1885,1896,1899,1966,1969,2036,2099,2101,2107,2110,2113,2204,2207,2253,2278,2317,2331,2333,2339,2346,2349,2414,2417,2478,2480,2486,2497,2500,2579,2582,2646,2653,2721,2727,2730,2740,2742,2746,2764,2766,2771,2791,2794,2845,3006],[194,195,136],"h1",{"id":196},"functions",[198,199,200,201,205,206,209,210,213],"p",{},"All functions are top-level exports from ",[202,203,204],"code",{},"@kolirt\u002Fvue-modal",". For ",[202,207,208],{},"createModal",", see ",[211,212,148],"a",{"href":149},".",[215,216,218],"h2",{"id":217},"openmodalt-ccomponent-options-modalhandlet",[202,219,220],{},"openModal\u003CT, C>(component, options?) → ModalHandle\u003CT>",[198,222,223,224,227,228,231,232,227,235,238,239,243,244,247],{},"Opens a modal. Returns a Promise-like handle that resolves with ",[202,225,226],{},"T"," on ",[202,229,230],{},"confirm(data)"," or rejects with ",[202,233,234],{},"ModalClosedError",[202,236,237],{},"close()",". The handle is ",[240,241,242],"strong",{},"awaitable directly"," — ",[202,245,246],{},"await openModal(...)"," unwraps the resolved data.",[249,250,252],"h3",{"id":251},"signature","Signature",[254,255,260],"pre",{"className":256,"code":257,"language":258,"meta":259,"style":259},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","function openModal\u003CT = unknown, C extends Component = Component>(\n  component: C,\n  options?: OpenModalOptions\u003CC>\n): ModalHandle\u003CT>\n\ninterface OpenModalOptions\u003CC extends Component> {\n  props?: ExtractComponentProps\u003CC>\n  on?: Record\u003Cstring, (...args: any[]) => void>\n  group?: ModalGroup\n  instantEnter?: boolean\n}\n\ninterface ModalHandle\u003CT> extends Promise\u003CT> {\n  id: number\n  group: ModalGroup\n  close(opts?: CloseModalOptions\u003CT>): void\n  on(event: string, handler: (...args: any[]) => void): void\n  off(event: string, handler: (...args: any[]) => void): void\n}\n","ts","",[202,261,262,307,322,342,357,364,386,404,448,459,470,476,481,507,518,527,554,596,636],{"__ignoreMap":259},[263,264,267,271,275,279,282,285,288,291,294,297,300,302,304],"span",{"class":265,"line":266},"line",1,[263,268,270],{"class":269},"spNyl","function",[263,272,274],{"class":273},"s2Zo4"," openModal",[263,276,278],{"class":277},"sMK4o","\u003C",[263,280,226],{"class":281},"sBMFI",[263,283,284],{"class":277}," =",[263,286,287],{"class":281}," unknown",[263,289,290],{"class":277},",",[263,292,293],{"class":281}," C",[263,295,296],{"class":269}," extends",[263,298,299],{"class":281}," Component",[263,301,284],{"class":277},[263,303,299],{"class":281},[263,305,306],{"class":277},">(\n",[263,308,310,314,317,319],{"class":265,"line":309},2,[263,311,313],{"class":312},"sHdIc","  component",[263,315,316],{"class":277},":",[263,318,293],{"class":281},[263,320,321],{"class":277},",\n",[263,323,325,328,331,334,336,339],{"class":265,"line":324},3,[263,326,327],{"class":312},"  options",[263,329,330],{"class":277},"?:",[263,332,333],{"class":281}," OpenModalOptions",[263,335,278],{"class":277},[263,337,338],{"class":281},"C",[263,340,341],{"class":277},">\n",[263,343,345,348,351,353,355],{"class":265,"line":344},4,[263,346,347],{"class":277},"):",[263,349,350],{"class":281}," ModalHandle",[263,352,278],{"class":277},[263,354,226],{"class":281},[263,356,341],{"class":277},[263,358,360],{"class":265,"line":359},5,[263,361,363],{"emptyLinePlaceholder":362},true,"\n",[263,365,367,370,372,374,376,378,380,383],{"class":265,"line":366},6,[263,368,369],{"class":269},"interface",[263,371,333],{"class":281},[263,373,278],{"class":277},[263,375,338],{"class":281},[263,377,296],{"class":269},[263,379,299],{"class":281},[263,381,382],{"class":277},">",[263,384,385],{"class":277}," {\n",[263,387,389,393,395,398,400,402],{"class":265,"line":388},7,[263,390,392],{"class":391},"swJcz","  props",[263,394,330],{"class":277},[263,396,397],{"class":281}," ExtractComponentProps",[263,399,278],{"class":277},[263,401,338],{"class":281},[263,403,341],{"class":277},[263,405,407,410,412,415,417,420,422,425,428,430,433,437,440,443,446],{"class":265,"line":406},8,[263,408,409],{"class":391},"  on",[263,411,330],{"class":277},[263,413,414],{"class":281}," Record",[263,416,278],{"class":277},[263,418,419],{"class":281},"string",[263,421,290],{"class":277},[263,423,424],{"class":277}," (...",[263,426,427],{"class":312},"args",[263,429,316],{"class":277},[263,431,432],{"class":281}," any",[263,434,436],{"class":435},"sTEyZ","[]",[263,438,439],{"class":277},")",[263,441,442],{"class":269}," =>",[263,444,445],{"class":281}," void",[263,447,341],{"class":277},[263,449,451,454,456],{"class":265,"line":450},9,[263,452,453],{"class":391},"  group",[263,455,330],{"class":277},[263,457,458],{"class":281}," ModalGroup\n",[263,460,462,465,467],{"class":265,"line":461},10,[263,463,464],{"class":391},"  instantEnter",[263,466,330],{"class":277},[263,468,469],{"class":281}," boolean\n",[263,471,473],{"class":265,"line":472},11,[263,474,475],{"class":277},"}\n",[263,477,479],{"class":265,"line":478},12,[263,480,363],{"emptyLinePlaceholder":362},[263,482,484,486,488,490,492,494,496,499,501,503,505],{"class":265,"line":483},13,[263,485,369],{"class":269},[263,487,350],{"class":281},[263,489,278],{"class":277},[263,491,226],{"class":281},[263,493,382],{"class":277},[263,495,296],{"class":269},[263,497,498],{"class":281}," Promise",[263,500,278],{"class":277},[263,502,226],{"class":281},[263,504,382],{"class":277},[263,506,385],{"class":277},[263,508,510,513,515],{"class":265,"line":509},14,[263,511,512],{"class":391},"  id",[263,514,316],{"class":277},[263,516,517],{"class":281}," number\n",[263,519,521,523,525],{"class":265,"line":520},15,[263,522,453],{"class":391},[263,524,316],{"class":277},[263,526,458],{"class":281},[263,528,530,533,536,539,541,544,546,548,551],{"class":265,"line":529},16,[263,531,532],{"class":391},"  close",[263,534,535],{"class":277},"(",[263,537,538],{"class":312},"opts",[263,540,330],{"class":277},[263,542,543],{"class":281}," CloseModalOptions",[263,545,278],{"class":277},[263,547,226],{"class":281},[263,549,550],{"class":277},">):",[263,552,553],{"class":281}," void\n",[263,555,557,559,561,564,566,569,571,574,576,578,580,582,584,586,588,590,592,594],{"class":265,"line":556},17,[263,558,409],{"class":391},[263,560,535],{"class":277},[263,562,563],{"class":312},"event",[263,565,316],{"class":277},[263,567,568],{"class":281}," string",[263,570,290],{"class":277},[263,572,573],{"class":273}," handler",[263,575,316],{"class":277},[263,577,424],{"class":277},[263,579,427],{"class":312},[263,581,316],{"class":277},[263,583,432],{"class":281},[263,585,436],{"class":435},[263,587,439],{"class":277},[263,589,442],{"class":269},[263,591,445],{"class":281},[263,593,347],{"class":277},[263,595,553],{"class":281},[263,597,599,602,604,606,608,610,612,614,616,618,620,622,624,626,628,630,632,634],{"class":265,"line":598},18,[263,600,601],{"class":391},"  off",[263,603,535],{"class":277},[263,605,563],{"class":312},[263,607,316],{"class":277},[263,609,568],{"class":281},[263,611,290],{"class":277},[263,613,573],{"class":273},[263,615,316],{"class":277},[263,617,424],{"class":277},[263,619,427],{"class":312},[263,621,316],{"class":277},[263,623,432],{"class":281},[263,625,436],{"class":435},[263,627,439],{"class":277},[263,629,442],{"class":269},[263,631,445],{"class":281},[263,633,347],{"class":277},[263,635,553],{"class":281},[263,637,639],{"class":265,"line":638},19,[263,640,475],{"class":277},[249,642,644],{"id":643},"parameters","Parameters",[646,647,648,667],"table",{},[649,650,651],"thead",{},[652,653,654,658,661,664],"tr",{},[655,656,657],"th",{},"Parameter",[655,659,660],{},"Type",[655,662,663],{},"Required",[655,665,666],{},"Description",[668,669,670,697],"tbody",{},[652,671,672,678,683,686],{},[673,674,675],"td",{},[202,676,677],{},"component",[673,679,680],{},[202,681,682],{},"C extends Component",[673,684,685],{},"yes",[673,687,688,689,692,693,696],{},"The Vue component to mount as a modal. Can be sync, async (",[202,690,691],{},"defineAsyncComponent","), or carry a ",[202,694,695],{},"defineOptions({ modalGroup })"," declaration.",[652,698,699,704,709,712],{},[673,700,701],{},[202,702,703],{},"options",[673,705,706],{},[202,707,708],{},"OpenModalOptions\u003CC>",[673,710,711],{},"no",[673,713,714,715,717,718,721,722,726],{},"Open-time configuration. Required only when ",[202,716,677],{}," doesn't declare a group via ",[202,719,720],{},"defineOptions",". See the ",[211,723,725],{"href":724},"#options","Options"," section below for the full shape.",[198,728,729],{},[240,730,731],{},"Type parameters",[646,733,734,747],{},[649,735,736],{},[652,737,738,741,744],{},[655,739,740],{},"Param",[655,742,743],{},"Default",[655,745,746],{},"Meaning",[668,748,749,773],{},[652,750,751,755,760],{},[673,752,753],{},[202,754,226],{},[673,756,757],{},[202,758,759],{},"unknown",[673,761,762,763,765,766,769,770,213],{},"The type the modal resolves with via ",[202,764,230],{},". Drives the ",[202,767,768],{},"Promise\u003CT>"," return and ",[202,771,772],{},"ModalHandle\u003CT>",[652,774,775,779,784],{},[673,776,777],{},[202,778,338],{},[673,780,781],{},[202,782,783],{},"Component",[673,785,786,787,790,791,213],{},"Component type — used to infer ",[202,788,789],{},"props"," shape via ",[202,792,793],{},"ExtractComponentProps\u003CC>",[795,796,797,1148],"code-group",{},[254,798,801],{"className":256,"code":799,"filename":800,"language":258,"meta":259,"style":259},"import { openModal } from '@kolirt\u002Fvue-modal'\nimport ConfirmDialog from '.\u002FConfirmDialog.vue'\n\nconst handle = openModal\u003Cboolean>(ConfirmDialog, {\n  group: 'default',\n  props: { message: 'Sure?' },\n  on: {\n    progress: (n: number) => console.log(n)\n  },\n  instantEnter: false\n})\n\nhandle.id \u002F\u002F number — instance id\nhandle.group \u002F\u002F ModalGroup\nhandle.close({ ignoreGuard: true }) \u002F\u002F request close (default success: false)\nhandle.on('done', (v) => console.log(v)) \u002F\u002F add listener post-mount\nhandle.off('done', fn) \u002F\u002F remove listener\n\n\u002F\u002F or await directly:\nconst ok = await handle.catch(() => false)\n","openModal",[202,802,803,829,846,850,877,893,916,924,957,962,972,980,984,998,1010,1040,1081,1106,1110,1115],{"__ignoreMap":259},[263,804,805,809,812,814,817,820,823,826],{"class":265,"line":266},[263,806,808],{"class":807},"s7zQu","import",[263,810,811],{"class":277}," {",[263,813,274],{"class":435},[263,815,816],{"class":277}," }",[263,818,819],{"class":807}," from",[263,821,822],{"class":277}," '",[263,824,204],{"class":825},"sfazB",[263,827,828],{"class":277},"'\n",[263,830,831,833,836,839,841,844],{"class":265,"line":309},[263,832,808],{"class":807},[263,834,835],{"class":435}," ConfirmDialog ",[263,837,838],{"class":807},"from",[263,840,822],{"class":277},[263,842,843],{"class":825},".\u002FConfirmDialog.vue",[263,845,828],{"class":277},[263,847,848],{"class":265,"line":324},[263,849,363],{"emptyLinePlaceholder":362},[263,851,852,855,858,861,863,865,868,870,873,875],{"class":265,"line":344},[263,853,854],{"class":269},"const",[263,856,857],{"class":435}," handle ",[263,859,860],{"class":277},"=",[263,862,274],{"class":273},[263,864,278],{"class":277},[263,866,867],{"class":281},"boolean",[263,869,382],{"class":277},[263,871,872],{"class":435},"(ConfirmDialog",[263,874,290],{"class":277},[263,876,385],{"class":277},[263,878,879,881,883,885,888,891],{"class":265,"line":359},[263,880,453],{"class":391},[263,882,316],{"class":277},[263,884,822],{"class":277},[263,886,887],{"class":825},"default",[263,889,890],{"class":277},"'",[263,892,321],{"class":277},[263,894,895,897,899,901,904,906,908,911,913],{"class":265,"line":366},[263,896,392],{"class":391},[263,898,316],{"class":277},[263,900,811],{"class":277},[263,902,903],{"class":391}," message",[263,905,316],{"class":277},[263,907,822],{"class":277},[263,909,910],{"class":825},"Sure?",[263,912,890],{"class":277},[263,914,915],{"class":277}," },\n",[263,917,918,920,922],{"class":265,"line":388},[263,919,409],{"class":391},[263,921,316],{"class":277},[263,923,385],{"class":277},[263,925,926,929,931,934,937,939,942,944,946,949,951,954],{"class":265,"line":406},[263,927,928],{"class":273},"    progress",[263,930,316],{"class":277},[263,932,933],{"class":277}," (",[263,935,936],{"class":312},"n",[263,938,316],{"class":277},[263,940,941],{"class":281}," number",[263,943,439],{"class":277},[263,945,442],{"class":269},[263,947,948],{"class":435}," console",[263,950,213],{"class":277},[263,952,953],{"class":273},"log",[263,955,956],{"class":435},"(n)\n",[263,958,959],{"class":265,"line":450},[263,960,961],{"class":277},"  },\n",[263,963,964,966,968],{"class":265,"line":461},[263,965,464],{"class":391},[263,967,316],{"class":277},[263,969,971],{"class":970},"sfNiH"," false\n",[263,973,974,977],{"class":265,"line":472},[263,975,976],{"class":277},"}",[263,978,979],{"class":435},")\n",[263,981,982],{"class":265,"line":478},[263,983,363],{"emptyLinePlaceholder":362},[263,985,986,989,991,994],{"class":265,"line":483},[263,987,988],{"class":435},"handle",[263,990,213],{"class":277},[263,992,993],{"class":435},"id ",[263,995,997],{"class":996},"sHwdD","\u002F\u002F number — instance id\n",[263,999,1000,1002,1004,1007],{"class":265,"line":509},[263,1001,988],{"class":435},[263,1003,213],{"class":277},[263,1005,1006],{"class":435},"group ",[263,1008,1009],{"class":996},"\u002F\u002F ModalGroup\n",[263,1011,1012,1014,1016,1019,1021,1024,1027,1029,1032,1034,1037],{"class":265,"line":520},[263,1013,988],{"class":435},[263,1015,213],{"class":277},[263,1017,1018],{"class":273},"close",[263,1020,535],{"class":435},[263,1022,1023],{"class":277},"{",[263,1025,1026],{"class":391}," ignoreGuard",[263,1028,316],{"class":277},[263,1030,1031],{"class":970}," true",[263,1033,816],{"class":277},[263,1035,1036],{"class":435},") ",[263,1038,1039],{"class":996},"\u002F\u002F request close (default success: false)\n",[263,1041,1042,1044,1046,1049,1051,1053,1056,1058,1060,1062,1065,1067,1069,1071,1073,1075,1078],{"class":265,"line":529},[263,1043,988],{"class":435},[263,1045,213],{"class":277},[263,1047,1048],{"class":273},"on",[263,1050,535],{"class":435},[263,1052,890],{"class":277},[263,1054,1055],{"class":825},"done",[263,1057,890],{"class":277},[263,1059,290],{"class":277},[263,1061,933],{"class":277},[263,1063,1064],{"class":312},"v",[263,1066,439],{"class":277},[263,1068,442],{"class":269},[263,1070,948],{"class":435},[263,1072,213],{"class":277},[263,1074,953],{"class":273},[263,1076,1077],{"class":435},"(v)) ",[263,1079,1080],{"class":996},"\u002F\u002F add listener post-mount\n",[263,1082,1083,1085,1087,1090,1092,1094,1096,1098,1100,1103],{"class":265,"line":556},[263,1084,988],{"class":435},[263,1086,213],{"class":277},[263,1088,1089],{"class":273},"off",[263,1091,535],{"class":435},[263,1093,890],{"class":277},[263,1095,1055],{"class":825},[263,1097,890],{"class":277},[263,1099,290],{"class":277},[263,1101,1102],{"class":435}," fn) ",[263,1104,1105],{"class":996},"\u002F\u002F remove listener\n",[263,1107,1108],{"class":265,"line":598},[263,1109,363],{"emptyLinePlaceholder":362},[263,1111,1112],{"class":265,"line":638},[263,1113,1114],{"class":996},"\u002F\u002F or await directly:\n",[263,1116,1118,1120,1123,1125,1128,1131,1133,1136,1138,1141,1143,1146],{"class":265,"line":1117},20,[263,1119,854],{"class":269},[263,1121,1122],{"class":435}," ok ",[263,1124,860],{"class":277},[263,1126,1127],{"class":807}," await",[263,1129,1130],{"class":435}," handle",[263,1132,213],{"class":277},[263,1134,1135],{"class":273},"catch",[263,1137,535],{"class":435},[263,1139,1140],{"class":277},"()",[263,1142,442],{"class":269},[263,1144,1145],{"class":970}," false",[263,1147,979],{"class":435},[254,1149,1152],{"className":256,"code":1150,"filename":1151,"language":258,"meta":259,"style":259},"import { useModal } from '@kolirt\u002Fvue-modal'\nimport ConfirmDialog from '.\u002FConfirmDialog.vue'\n\nconst dialog = useModal\u003Cboolean>(ConfirmDialog, {\n  group: 'default',\n  props: { message: 'Sure?' },\n  on: {\n    progress: (n: number) => console.log(n)\n  }\n})\n\nconst ok = await dialog.open({ instantEnter: false }).catch(() => false)\n\n\u002F\u002F reactive bindings:\ndialog.isOpen.value \u002F\u002F boolean\ndialog.instanceId.value \u002F\u002F number | null\n","useModal",[202,1153,1154,1173,1187,1191,1214,1228,1248,1256,1282,1287,1293,1297,1344,1348,1353,1371],{"__ignoreMap":259},[263,1155,1156,1158,1160,1163,1165,1167,1169,1171],{"class":265,"line":266},[263,1157,808],{"class":807},[263,1159,811],{"class":277},[263,1161,1162],{"class":435}," useModal",[263,1164,816],{"class":277},[263,1166,819],{"class":807},[263,1168,822],{"class":277},[263,1170,204],{"class":825},[263,1172,828],{"class":277},[263,1174,1175,1177,1179,1181,1183,1185],{"class":265,"line":309},[263,1176,808],{"class":807},[263,1178,835],{"class":435},[263,1180,838],{"class":807},[263,1182,822],{"class":277},[263,1184,843],{"class":825},[263,1186,828],{"class":277},[263,1188,1189],{"class":265,"line":324},[263,1190,363],{"emptyLinePlaceholder":362},[263,1192,1193,1195,1198,1200,1202,1204,1206,1208,1210,1212],{"class":265,"line":344},[263,1194,854],{"class":269},[263,1196,1197],{"class":435}," dialog ",[263,1199,860],{"class":277},[263,1201,1162],{"class":273},[263,1203,278],{"class":277},[263,1205,867],{"class":281},[263,1207,382],{"class":277},[263,1209,872],{"class":435},[263,1211,290],{"class":277},[263,1213,385],{"class":277},[263,1215,1216,1218,1220,1222,1224,1226],{"class":265,"line":359},[263,1217,453],{"class":391},[263,1219,316],{"class":277},[263,1221,822],{"class":277},[263,1223,887],{"class":825},[263,1225,890],{"class":277},[263,1227,321],{"class":277},[263,1229,1230,1232,1234,1236,1238,1240,1242,1244,1246],{"class":265,"line":366},[263,1231,392],{"class":391},[263,1233,316],{"class":277},[263,1235,811],{"class":277},[263,1237,903],{"class":391},[263,1239,316],{"class":277},[263,1241,822],{"class":277},[263,1243,910],{"class":825},[263,1245,890],{"class":277},[263,1247,915],{"class":277},[263,1249,1250,1252,1254],{"class":265,"line":388},[263,1251,409],{"class":391},[263,1253,316],{"class":277},[263,1255,385],{"class":277},[263,1257,1258,1260,1262,1264,1266,1268,1270,1272,1274,1276,1278,1280],{"class":265,"line":406},[263,1259,928],{"class":273},[263,1261,316],{"class":277},[263,1263,933],{"class":277},[263,1265,936],{"class":312},[263,1267,316],{"class":277},[263,1269,941],{"class":281},[263,1271,439],{"class":277},[263,1273,442],{"class":269},[263,1275,948],{"class":435},[263,1277,213],{"class":277},[263,1279,953],{"class":273},[263,1281,956],{"class":435},[263,1283,1284],{"class":265,"line":450},[263,1285,1286],{"class":277},"  }\n",[263,1288,1289,1291],{"class":265,"line":461},[263,1290,976],{"class":277},[263,1292,979],{"class":435},[263,1294,1295],{"class":265,"line":472},[263,1296,363],{"emptyLinePlaceholder":362},[263,1298,1299,1301,1303,1305,1307,1310,1312,1315,1317,1319,1322,1324,1326,1328,1330,1332,1334,1336,1338,1340,1342],{"class":265,"line":478},[263,1300,854],{"class":269},[263,1302,1122],{"class":435},[263,1304,860],{"class":277},[263,1306,1127],{"class":807},[263,1308,1309],{"class":435}," dialog",[263,1311,213],{"class":277},[263,1313,1314],{"class":273},"open",[263,1316,535],{"class":435},[263,1318,1023],{"class":277},[263,1320,1321],{"class":391}," instantEnter",[263,1323,316],{"class":277},[263,1325,1145],{"class":970},[263,1327,816],{"class":277},[263,1329,439],{"class":435},[263,1331,213],{"class":277},[263,1333,1135],{"class":273},[263,1335,535],{"class":435},[263,1337,1140],{"class":277},[263,1339,442],{"class":269},[263,1341,1145],{"class":970},[263,1343,979],{"class":435},[263,1345,1346],{"class":265,"line":483},[263,1347,363],{"emptyLinePlaceholder":362},[263,1349,1350],{"class":265,"line":509},[263,1351,1352],{"class":996},"\u002F\u002F reactive bindings:\n",[263,1354,1355,1358,1360,1363,1365,1368],{"class":265,"line":520},[263,1356,1357],{"class":435},"dialog",[263,1359,213],{"class":277},[263,1361,1362],{"class":435},"isOpen",[263,1364,213],{"class":277},[263,1366,1367],{"class":435},"value ",[263,1369,1370],{"class":996},"\u002F\u002F boolean\n",[263,1372,1373,1375,1377,1380,1382,1384],{"class":265,"line":529},[263,1374,1357],{"class":435},[263,1376,213],{"class":277},[263,1378,1379],{"class":435},"instanceId",[263,1381,213],{"class":277},[263,1383,1367],{"class":435},[263,1385,1386],{"class":996},"\u002F\u002F number | null\n",[249,1388,725],{"id":703},[646,1390,1391,1402],{},[649,1392,1393],{},[652,1394,1395,1398,1400],{},[655,1396,1397],{},"Field",[655,1399,660],{},[655,1401,666],{},[668,1403,1404,1422,1435,1464],{},[652,1405,1406,1411,1416],{},[673,1407,1408],{},[202,1409,1410],{},"group",[673,1412,1413],{},[202,1414,1415],{},"ModalGroup",[673,1417,1418,1419,1421],{},"Target group. If omitted, falls back to ",[202,1420,695],{}," on the component; otherwise runtime error.",[652,1423,1424,1428,1432],{},[673,1425,1426],{},[202,1427,789],{},[673,1429,1430],{},[202,1431,793],{},[673,1433,1434],{},"Typed props for the modal component.",[652,1436,1437,1441,1446],{},[673,1438,1439],{},[202,1440,1048],{},[673,1442,1443],{},[202,1444,1445],{},"Record\u003Cstring, (...args) => void>",[673,1447,1448,1449,1452,1453,1456,1457,1452,1460,1463],{},"Event listeners. Names converted Vue-style (",[202,1450,1451],{},"my-event"," → ",[202,1454,1455],{},"onMyEvent",", ",[202,1458,1459],{},"update:value",[202,1461,1462],{},"onUpdate:value",").",[652,1465,1466,1471,1475],{},[673,1467,1468],{},[202,1469,1470],{},"instantEnter",[673,1472,1473],{},[202,1474,867],{},[673,1476,1477],{},"Skip enter animation.",[249,1479,1481],{"id":1480},"throws","Throws",[1483,1484,1485],"ul",{},[1486,1487,1488,1489,1491,1492,1494,1495],"li",{},"Synchronously, if ",[202,1490,1410],{}," cannot be resolved from options or ",[202,1493,695],{},". Exact message: ",[202,1496,1497],{},"[@kolirt\u002Fvue-modal] openModal() requires a `group` option (or `defineOptions({ modalGroup: ... })` on the component).",[198,1499,1500,1501,1503,1504,1456,1506,1508,1509,213],{},"See ",[211,1502,160],{"href":161}," for ",[202,1505,708],{},[202,1507,772],{},", and ",[202,1510,793],{},[1512,1513],"hr",{},[215,1515,1517],{"id":1516},"closemodaltopts-promisevoid",[202,1518,1519],{},"closeModal\u003CT>(opts?) → Promise\u003Cvoid>",[198,1521,1522,1523,1525,1526,1532,1533,213],{},"Closes the topmost modal — globally if no ",[202,1524,1410],{},", or topmost of the given group. Returns a promise that resolves when the close has been processed (guards awaited, animation pending or skipped). Accepts ",[211,1527,1529],{"href":1528},"\u002Fapi\u002Ftypes#closemodaloptionst",[202,1530,1531],{},"CloseModalOptions\u003CT>"," plus an optional ",[202,1534,1410],{},[249,1536,252],{"id":1537},"signature-1",[254,1539,1541],{"className":256,"code":1540,"language":258,"meta":259,"style":259},"function closeModal\u003CT = unknown>(\n  opts?: CloseModalOptions\u003CT> & { group?: ModalGroup }\n): Promise\u003Cvoid>\n\ninterface CloseModalOptions\u003CT = unknown> {\n  success?: boolean   \u002F\u002F false → reject with ModalClosedError, true → resolve with `data`\n  data?: T            \u002F\u002F value passed to resolve when success: true\n  ignoreGuard?: boolean \u002F\u002F skip every onBeforeClose guard\n  instantExit?: boolean \u002F\u002F skip exit animation, finalize synchronously\n}\n",[202,1542,1543,1560,1591,1604,1608,1626,1639,1652,1664,1676],{"__ignoreMap":259},[263,1544,1545,1547,1550,1552,1554,1556,1558],{"class":265,"line":266},[263,1546,270],{"class":269},[263,1548,1549],{"class":273}," closeModal",[263,1551,278],{"class":277},[263,1553,226],{"class":281},[263,1555,284],{"class":277},[263,1557,287],{"class":281},[263,1559,306],{"class":277},[263,1561,1562,1565,1567,1569,1571,1573,1575,1578,1580,1583,1585,1588],{"class":265,"line":309},[263,1563,1564],{"class":312},"  opts",[263,1566,330],{"class":277},[263,1568,543],{"class":281},[263,1570,278],{"class":277},[263,1572,226],{"class":281},[263,1574,382],{"class":277},[263,1576,1577],{"class":277}," &",[263,1579,811],{"class":277},[263,1581,1582],{"class":391}," group",[263,1584,330],{"class":277},[263,1586,1587],{"class":281}," ModalGroup",[263,1589,1590],{"class":277}," }\n",[263,1592,1593,1595,1597,1599,1602],{"class":265,"line":324},[263,1594,347],{"class":277},[263,1596,498],{"class":281},[263,1598,278],{"class":277},[263,1600,1601],{"class":281},"void",[263,1603,341],{"class":277},[263,1605,1606],{"class":265,"line":344},[263,1607,363],{"emptyLinePlaceholder":362},[263,1609,1610,1612,1614,1616,1618,1620,1622,1624],{"class":265,"line":359},[263,1611,369],{"class":269},[263,1613,543],{"class":281},[263,1615,278],{"class":277},[263,1617,226],{"class":281},[263,1619,284],{"class":277},[263,1621,287],{"class":281},[263,1623,382],{"class":277},[263,1625,385],{"class":277},[263,1627,1628,1631,1633,1636],{"class":265,"line":366},[263,1629,1630],{"class":391},"  success",[263,1632,330],{"class":277},[263,1634,1635],{"class":281}," boolean",[263,1637,1638],{"class":996},"   \u002F\u002F false → reject with ModalClosedError, true → resolve with `data`\n",[263,1640,1641,1644,1646,1649],{"class":265,"line":388},[263,1642,1643],{"class":391},"  data",[263,1645,330],{"class":277},[263,1647,1648],{"class":281}," T",[263,1650,1651],{"class":996},"            \u002F\u002F value passed to resolve when success: true\n",[263,1653,1654,1657,1659,1661],{"class":265,"line":406},[263,1655,1656],{"class":391},"  ignoreGuard",[263,1658,330],{"class":277},[263,1660,1635],{"class":281},[263,1662,1663],{"class":996}," \u002F\u002F skip every onBeforeClose guard\n",[263,1665,1666,1669,1671,1673],{"class":265,"line":450},[263,1667,1668],{"class":391},"  instantExit",[263,1670,330],{"class":277},[263,1672,1635],{"class":281},[263,1674,1675],{"class":996}," \u002F\u002F skip exit animation, finalize synchronously\n",[263,1677,1678],{"class":265,"line":461},[263,1679,475],{"class":277},[249,1681,644],{"id":1682},"parameters-1",[646,1684,1685,1697],{},[649,1686,1687],{},[652,1688,1689,1691,1693,1695],{},[655,1690,657],{},[655,1692,660],{},[655,1694,663],{},[655,1696,666],{},[668,1698,1699],{},[652,1700,1701,1705,1710,1712],{},[673,1702,1703],{},[202,1704,538],{},[673,1706,1707],{},[202,1708,1709],{},"CloseModalOptions\u003CT> & { group?: ModalGroup }",[673,1711,711],{},[673,1713,1714,1715,933,1719,1456,1722,1456,1725,1456,1728,1731,1732,1734],{},"Inherits all fields from ",[211,1716,1717],{"href":1528},[202,1718,1531],{},[202,1720,1721],{},"success",[202,1723,1724],{},"data",[202,1726,1727],{},"ignoreGuard",[202,1729,1730],{},"instantExit",") plus an optional ",[202,1733,1410],{}," to scope the lookup.",[254,1736,1738],{"className":256,"code":1737,"language":258,"meta":259,"style":259},"await closeModal() \u002F\u002F global topmost (rejects)\nawait closeModal({ group: 'confirm' }) \u002F\u002F topmost in 'confirm'\nawait closeModal({ success: true, data: payload }) \u002F\u002F resolve instead of reject\nawait closeModal({ ignoreGuard: true }) \u002F\u002F bypass beforeClose\nawait closeModal({ instantExit: true }) \u002F\u002F skip exit animation\n",[202,1739,1740,1753,1781,1815,1838],{"__ignoreMap":259},[263,1741,1742,1745,1747,1750],{"class":265,"line":266},[263,1743,1744],{"class":807},"await",[263,1746,1549],{"class":273},[263,1748,1749],{"class":435},"() ",[263,1751,1752],{"class":996},"\u002F\u002F global topmost (rejects)\n",[263,1754,1755,1757,1759,1761,1763,1765,1767,1769,1772,1774,1776,1778],{"class":265,"line":309},[263,1756,1744],{"class":807},[263,1758,1549],{"class":273},[263,1760,535],{"class":435},[263,1762,1023],{"class":277},[263,1764,1582],{"class":391},[263,1766,316],{"class":277},[263,1768,822],{"class":277},[263,1770,1771],{"class":825},"confirm",[263,1773,890],{"class":277},[263,1775,816],{"class":277},[263,1777,1036],{"class":435},[263,1779,1780],{"class":996},"\u002F\u002F topmost in 'confirm'\n",[263,1782,1783,1785,1787,1789,1791,1794,1796,1798,1800,1803,1805,1808,1810,1812],{"class":265,"line":324},[263,1784,1744],{"class":807},[263,1786,1549],{"class":273},[263,1788,535],{"class":435},[263,1790,1023],{"class":277},[263,1792,1793],{"class":391}," success",[263,1795,316],{"class":277},[263,1797,1031],{"class":970},[263,1799,290],{"class":277},[263,1801,1802],{"class":391}," data",[263,1804,316],{"class":277},[263,1806,1807],{"class":435}," payload ",[263,1809,976],{"class":277},[263,1811,1036],{"class":435},[263,1813,1814],{"class":996},"\u002F\u002F resolve instead of reject\n",[263,1816,1817,1819,1821,1823,1825,1827,1829,1831,1833,1835],{"class":265,"line":344},[263,1818,1744],{"class":807},[263,1820,1549],{"class":273},[263,1822,535],{"class":435},[263,1824,1023],{"class":277},[263,1826,1026],{"class":391},[263,1828,316],{"class":277},[263,1830,1031],{"class":970},[263,1832,816],{"class":277},[263,1834,1036],{"class":435},[263,1836,1837],{"class":996},"\u002F\u002F bypass beforeClose\n",[263,1839,1840,1842,1844,1846,1848,1851,1853,1855,1857,1859],{"class":265,"line":359},[263,1841,1744],{"class":807},[263,1843,1549],{"class":273},[263,1845,535],{"class":435},[263,1847,1023],{"class":277},[263,1849,1850],{"class":391}," instantExit",[263,1852,316],{"class":277},[263,1854,1031],{"class":970},[263,1856,816],{"class":277},[263,1858,1036],{"class":435},[263,1860,1861],{"class":996},"\u002F\u002F skip exit animation\n",[1863,1864,1866,1869,1870,1872,1873,1876],"callout",{"icon":1865},"i-lucide-info",[202,1867,1868],{},"closeModal"," is the imperative counterpart to the ",[202,1871,237],{}," returned by ",[202,1874,1875],{},"useModalContext()"," inside the modal itself. Inside a modal, prefer the context method — it's bound to the right instance even when other modals open on top.",[1512,1878],{},[215,1880,1882],{"id":1881},"closemodalbyidtid-opts-promisevoid",[202,1883,1884],{},"closeModalById\u003CT>(id, opts?) → Promise\u003Cvoid>",[198,1886,1887,1888,1891,1892,213],{},"Closes the modal with the given ",[202,1889,1890],{},"id",". No-op if no such modal exists. See ",[211,1893,1894],{"href":1528},[202,1895,1531],{},[249,1897,252],{"id":1898},"signature-2",[254,1900,1902],{"className":256,"code":1901,"language":258,"meta":259,"style":259},"function closeModalById\u003CT = unknown>(\n  id: number,\n  opts?: CloseModalOptions\u003CT>\n): Promise\u003Cvoid>\n\n\u002F\u002F CloseModalOptions\u003CT> shape — see closeModal above.\n",[202,1903,1904,1921,1931,1945,1957,1961],{"__ignoreMap":259},[263,1905,1906,1908,1911,1913,1915,1917,1919],{"class":265,"line":266},[263,1907,270],{"class":269},[263,1909,1910],{"class":273}," closeModalById",[263,1912,278],{"class":277},[263,1914,226],{"class":281},[263,1916,284],{"class":277},[263,1918,287],{"class":281},[263,1920,306],{"class":277},[263,1922,1923,1925,1927,1929],{"class":265,"line":309},[263,1924,512],{"class":312},[263,1926,316],{"class":277},[263,1928,941],{"class":281},[263,1930,321],{"class":277},[263,1932,1933,1935,1937,1939,1941,1943],{"class":265,"line":324},[263,1934,1564],{"class":312},[263,1936,330],{"class":277},[263,1938,543],{"class":281},[263,1940,278],{"class":277},[263,1942,226],{"class":281},[263,1944,341],{"class":277},[263,1946,1947,1949,1951,1953,1955],{"class":265,"line":344},[263,1948,347],{"class":277},[263,1950,498],{"class":281},[263,1952,278],{"class":277},[263,1954,1601],{"class":281},[263,1956,341],{"class":277},[263,1958,1959],{"class":265,"line":359},[263,1960,363],{"emptyLinePlaceholder":362},[263,1962,1963],{"class":265,"line":366},[263,1964,1965],{"class":996},"\u002F\u002F CloseModalOptions\u003CT> shape — see closeModal above.\n",[249,1967,644],{"id":1968},"parameters-2",[646,1970,1971,1983],{},[649,1972,1973],{},[652,1974,1975,1977,1979,1981],{},[655,1976,657],{},[655,1978,660],{},[655,1980,663],{},[655,1982,666],{},[668,1984,1985,2014],{},[652,1986,1987,1991,1996,1998],{},[673,1988,1989],{},[202,1990,1890],{},[673,1992,1993],{},[202,1994,1995],{},"number",[673,1997,685],{},[673,1999,2000,2001,2004,2005,2007,2008,1872,2011,2013],{},"The modal instance id — read from ",[202,2002,2003],{},"handle.id"," after ",[202,2006,800],{},", or from ",[202,2009,2010],{},"controller.instanceId.value",[202,2012,1151],{},". Unknown ids are silently ignored.",[652,2015,2016,2020,2024,2026],{},[673,2017,2018],{},[202,2019,538],{},[673,2021,2022],{},[202,2023,1531],{},[673,2025,711],{},[673,2027,2028,2029,2031,2032,213],{},"Same shape as ",[202,2030,1868],{},". See ",[211,2033,2034],{"href":1528},[202,2035,1531],{},[254,2037,2039],{"className":256,"code":2038,"language":258,"meta":259,"style":259},"const handle = openModal(MyDialog, { group: 'default' })\nawait closeModalById(handle.id, { ignoreGuard: true })\n",[202,2040,2041,2072],{"__ignoreMap":259},[263,2042,2043,2045,2047,2049,2051,2054,2056,2058,2060,2062,2064,2066,2068,2070],{"class":265,"line":266},[263,2044,854],{"class":269},[263,2046,857],{"class":435},[263,2048,860],{"class":277},[263,2050,274],{"class":273},[263,2052,2053],{"class":435},"(MyDialog",[263,2055,290],{"class":277},[263,2057,811],{"class":277},[263,2059,1582],{"class":391},[263,2061,316],{"class":277},[263,2063,822],{"class":277},[263,2065,887],{"class":825},[263,2067,890],{"class":277},[263,2069,816],{"class":277},[263,2071,979],{"class":435},[263,2073,2074,2076,2078,2081,2083,2085,2087,2089,2091,2093,2095,2097],{"class":265,"line":309},[263,2075,1744],{"class":807},[263,2077,1910],{"class":273},[263,2079,2080],{"class":435},"(handle",[263,2082,213],{"class":277},[263,2084,1890],{"class":435},[263,2086,290],{"class":277},[263,2088,811],{"class":277},[263,2090,1026],{"class":391},[263,2092,316],{"class":277},[263,2094,1031],{"class":970},[263,2096,816],{"class":277},[263,2098,979],{"class":435},[1512,2100],{},[215,2102,2104],{"id":2103},"closeallmodalsopts-promise-closed-vetoed",[202,2105,2106],{},"closeAllModals(opts?) → Promise\u003C{ closed, vetoed }>",[198,2108,2109],{},"Closes every open modal across the entire app, in reverse stack order (top-down).",[249,2111,252],{"id":2112},"signature-3",[254,2114,2116],{"className":256,"code":2115,"language":258,"meta":259,"style":259},"function closeAllModals(\n  opts?: CloseFlags\n): Promise\u003C{ closed: number; vetoed: number }>\n\ninterface CloseFlags {\n  ignoreGuard?: boolean \u002F\u002F skip every onBeforeClose guard\n  instantExit?: boolean \u002F\u002F skip exit animations\n}\n",[202,2117,2118,2128,2137,2166,2170,2179,2189,2200],{"__ignoreMap":259},[263,2119,2120,2122,2125],{"class":265,"line":266},[263,2121,270],{"class":269},[263,2123,2124],{"class":273}," closeAllModals",[263,2126,2127],{"class":277},"(\n",[263,2129,2130,2132,2134],{"class":265,"line":309},[263,2131,1564],{"class":312},[263,2133,330],{"class":277},[263,2135,2136],{"class":281}," CloseFlags\n",[263,2138,2139,2141,2143,2146,2149,2151,2153,2156,2159,2161,2163],{"class":265,"line":324},[263,2140,347],{"class":277},[263,2142,498],{"class":281},[263,2144,2145],{"class":277},"\u003C{",[263,2147,2148],{"class":391}," closed",[263,2150,316],{"class":277},[263,2152,941],{"class":281},[263,2154,2155],{"class":277},";",[263,2157,2158],{"class":391}," vetoed",[263,2160,316],{"class":277},[263,2162,941],{"class":281},[263,2164,2165],{"class":277}," }>\n",[263,2167,2168],{"class":265,"line":344},[263,2169,363],{"emptyLinePlaceholder":362},[263,2171,2172,2174,2177],{"class":265,"line":359},[263,2173,369],{"class":269},[263,2175,2176],{"class":281}," CloseFlags",[263,2178,385],{"class":277},[263,2180,2181,2183,2185,2187],{"class":265,"line":366},[263,2182,1656],{"class":391},[263,2184,330],{"class":277},[263,2186,1635],{"class":281},[263,2188,1663],{"class":996},[263,2190,2191,2193,2195,2197],{"class":265,"line":388},[263,2192,1668],{"class":391},[263,2194,330],{"class":277},[263,2196,1635],{"class":281},[263,2198,2199],{"class":996}," \u002F\u002F skip exit animations\n",[263,2201,2202],{"class":265,"line":406},[263,2203,475],{"class":277},[249,2205,644],{"id":2206},"parameters-3",[646,2208,2209,2221],{},[649,2210,2211],{},[652,2212,2213,2215,2217,2219],{},[655,2214,657],{},[655,2216,660],{},[655,2218,663],{},[655,2220,666],{},[668,2222,2223],{},[652,2224,2225,2229,2234,2236],{},[673,2226,2227],{},[202,2228,538],{},[673,2230,2231],{},[202,2232,2233],{},"CloseFlags",[673,2235,711],{},[673,2237,2238,2241,2242,2244,2245,2247,2248,213],{},[202,2239,2240],{},"{ ignoreGuard?: boolean, instantExit?: boolean }",". There is no ",[202,2243,1721],{}," \u002F ",[202,2246,1724],{}," — bulk close always rejects each modal's promise. See ",[211,2249,2251],{"href":2250},"\u002Fapi\u002Ftypes#closeflags",[202,2252,2233],{},[198,2254,2255,2256,243,2259,2262,2263,2266,2267,2270,2271,2274,2275,2277],{},"The promise resolves to ",[202,2257,2258],{},"{ closed, vetoed }",[202,2260,2261],{},"closed"," counts modals that began closing; ",[202,2264,2265],{},"vetoed"," counts those whose ",[202,2268,2269],{},"onBeforeClose"," guards returned ",[202,2272,2273],{},"false"," while ",[202,2276,1727],{}," was not set.",[254,2279,2281],{"className":256,"code":2280,"language":258,"meta":259,"style":259},"const { closed, vetoed } = await closeAllModals()\n\u002F\u002F closed: number of modals successfully closed\n\u002F\u002F vetoed: number that did not transition to closing (e.g. blocked by a guard)\n",[202,2282,2283,2307,2312],{"__ignoreMap":259},[263,2284,2285,2287,2289,2291,2293,2296,2298,2300,2302,2304],{"class":265,"line":266},[263,2286,854],{"class":269},[263,2288,811],{"class":277},[263,2290,2148],{"class":435},[263,2292,290],{"class":277},[263,2294,2295],{"class":435}," vetoed ",[263,2297,976],{"class":277},[263,2299,284],{"class":277},[263,2301,1127],{"class":807},[263,2303,2124],{"class":273},[263,2305,2306],{"class":435},"()\n",[263,2308,2309],{"class":265,"line":309},[263,2310,2311],{"class":996},"\u002F\u002F closed: number of modals successfully closed\n",[263,2313,2314],{"class":265,"line":324},[263,2315,2316],{"class":996},"\u002F\u002F vetoed: number that did not transition to closing (e.g. blocked by a guard)\n",[198,2318,2319,2320,2322,2323,2325,2326,2244,2328,2330],{},"Closes in reverse stack order (top-down). Only ",[202,2321,1727],{}," and ",[202,2324,1730],{}," are accepted — there is no ",[202,2327,1721],{},[202,2329,1724],{}," for bulk close.",[1512,2332],{},[215,2334,2336],{"id":2335},"closemodalsbygroupgroup-opts-promise-closed-vetoed",[202,2337,2338],{},"closeModalsByGroup(group, opts?) → Promise\u003C{ closed, vetoed }>",[198,2340,2341,2342,2345],{},"Same as ",[202,2343,2344],{},"closeAllModals"," but scoped to one group.",[249,2347,252],{"id":2348},"signature-4",[254,2350,2352],{"className":256,"code":2351,"language":258,"meta":259,"style":259},"function closeModalsByGroup(\n  group: ModalGroup,\n  opts?: CloseFlags\n): Promise\u003C{ closed: number; vetoed: number }>\n\n\u002F\u002F CloseFlags shape — see closeAllModals above.\n",[202,2353,2354,2363,2373,2381,2405,2409],{"__ignoreMap":259},[263,2355,2356,2358,2361],{"class":265,"line":266},[263,2357,270],{"class":269},[263,2359,2360],{"class":273}," closeModalsByGroup",[263,2362,2127],{"class":277},[263,2364,2365,2367,2369,2371],{"class":265,"line":309},[263,2366,453],{"class":312},[263,2368,316],{"class":277},[263,2370,1587],{"class":281},[263,2372,321],{"class":277},[263,2374,2375,2377,2379],{"class":265,"line":324},[263,2376,1564],{"class":312},[263,2378,330],{"class":277},[263,2380,2136],{"class":281},[263,2382,2383,2385,2387,2389,2391,2393,2395,2397,2399,2401,2403],{"class":265,"line":344},[263,2384,347],{"class":277},[263,2386,498],{"class":281},[263,2388,2145],{"class":277},[263,2390,2148],{"class":391},[263,2392,316],{"class":277},[263,2394,941],{"class":281},[263,2396,2155],{"class":277},[263,2398,2158],{"class":391},[263,2400,316],{"class":277},[263,2402,941],{"class":281},[263,2404,2165],{"class":277},[263,2406,2407],{"class":265,"line":359},[263,2408,363],{"emptyLinePlaceholder":362},[263,2410,2411],{"class":265,"line":366},[263,2412,2413],{"class":996},"\u002F\u002F CloseFlags shape — see closeAllModals above.\n",[249,2415,644],{"id":2416},"parameters-4",[646,2418,2419,2431],{},[649,2420,2421],{},[652,2422,2423,2425,2427,2429],{},[655,2424,657],{},[655,2426,660],{},[655,2428,663],{},[655,2430,666],{},[668,2432,2433,2455],{},[652,2434,2435,2439,2443,2445],{},[673,2436,2437],{},[202,2438,1410],{},[673,2440,2441],{},[202,2442,1415],{},[673,2444,685],{},[673,2446,2447,2448,2451,2452,2454],{},"The group key (typed by your ",[202,2449,2450],{},"ModalGroupRegistry","). Only modals whose ",[202,2453,1410],{}," matches are closed; other groups are unaffected.",[652,2456,2457,2461,2465,2467],{},[673,2458,2459],{},[202,2460,538],{},[673,2462,2463],{},[202,2464,2233],{},[673,2466,711],{},[673,2468,2028,2469,243,2471,2031,2474,213],{},[202,2470,2344],{},[202,2472,2473],{},"{ ignoreGuard?, instantExit? }",[211,2475,2476],{"href":2250},[202,2477,2233],{},[1512,2479],{},[215,2481,2483],{"id":2482},"replacemodalt-ccomponent-options-modalhandlet",[202,2484,2485],{},"replaceModal\u003CT, C>(component, options?) → ModalHandle\u003CT>",[198,2487,2488,2489,2492,2493,2496],{},"Closes the current topmost modal of the ",[240,2490,2491],{},"target group"," (with ",[202,2494,2495],{},"ignoreGuard: true, instantExit: true",") and opens a new one. Modals in other groups are left untouched. Useful for wizards \u002F dialog chains.",[249,2498,252],{"id":2499},"signature-5",[254,2501,2503],{"className":256,"code":2502,"language":258,"meta":259,"style":259},"function replaceModal\u003CT = unknown, C extends Component = Component>(\n  component: C,\n  options?: OpenModalOptions\u003CC>\n): ModalHandle\u003CT>\n\n\u002F\u002F OpenModalOptions\u003CC> and ModalHandle\u003CT> shapes — see openModal above.\n",[202,2504,2505,2534,2544,2558,2570,2574],{"__ignoreMap":259},[263,2506,2507,2509,2512,2514,2516,2518,2520,2522,2524,2526,2528,2530,2532],{"class":265,"line":266},[263,2508,270],{"class":269},[263,2510,2511],{"class":273}," replaceModal",[263,2513,278],{"class":277},[263,2515,226],{"class":281},[263,2517,284],{"class":277},[263,2519,287],{"class":281},[263,2521,290],{"class":277},[263,2523,293],{"class":281},[263,2525,296],{"class":269},[263,2527,299],{"class":281},[263,2529,284],{"class":277},[263,2531,299],{"class":281},[263,2533,306],{"class":277},[263,2535,2536,2538,2540,2542],{"class":265,"line":309},[263,2537,313],{"class":312},[263,2539,316],{"class":277},[263,2541,293],{"class":281},[263,2543,321],{"class":277},[263,2545,2546,2548,2550,2552,2554,2556],{"class":265,"line":324},[263,2547,327],{"class":312},[263,2549,330],{"class":277},[263,2551,333],{"class":281},[263,2553,278],{"class":277},[263,2555,338],{"class":281},[263,2557,341],{"class":277},[263,2559,2560,2562,2564,2566,2568],{"class":265,"line":344},[263,2561,347],{"class":277},[263,2563,350],{"class":281},[263,2565,278],{"class":277},[263,2567,226],{"class":281},[263,2569,341],{"class":277},[263,2571,2572],{"class":265,"line":359},[263,2573,363],{"emptyLinePlaceholder":362},[263,2575,2576],{"class":265,"line":366},[263,2577,2578],{"class":996},"\u002F\u002F OpenModalOptions\u003CC> and ModalHandle\u003CT> shapes — see openModal above.\n",[249,2580,644],{"id":2581},"parameters-5",[646,2583,2584,2596],{},[649,2585,2586],{},[652,2587,2588,2590,2592,2594],{},[655,2589,657],{},[655,2591,660],{},[655,2593,663],{},[655,2595,666],{},[668,2597,2598,2619],{},[652,2599,2600,2604,2608,2610],{},[673,2601,2602],{},[202,2603,677],{},[673,2605,2606],{},[202,2607,682],{},[673,2609,685],{},[673,2611,2612,2613,2616,2617,1463],{},"The component to mount ",[240,2614,2615],{},"after"," the current topmost modal in the target group is closed (",[202,2618,2495],{},[652,2620,2621,2625,2629,2631],{},[673,2622,2623],{},[202,2624,703],{},[673,2626,2627],{},[202,2628,708],{},[673,2630,711],{},[673,2632,2028,2633,2635,2636,2638,2639,2641,2642,2645],{},[202,2634,800],{},". The ",[202,2637,1410],{}," field (or ",[202,2640,695],{}," on the component) determines ",[240,2643,2644],{},"which"," stack to replace. Throws if neither is set.",[198,2647,2648,2650,2651,213],{},[240,2649,731],{}," identical to ",[202,2652,800],{},[254,2654,2656],{"className":256,"code":2655,"language":258,"meta":259,"style":259},"replaceModal(StepTwo, {\n  group: 'wizard',\n  props: { step: 2 },\n  instantEnter: true \u002F\u002F skip enter too — feels like one continuous step\n})\n",[202,2657,2658,2670,2685,2704,2715],{"__ignoreMap":259},[263,2659,2660,2663,2666,2668],{"class":265,"line":266},[263,2661,2662],{"class":273},"replaceModal",[263,2664,2665],{"class":435},"(StepTwo",[263,2667,290],{"class":277},[263,2669,385],{"class":277},[263,2671,2672,2674,2676,2678,2681,2683],{"class":265,"line":309},[263,2673,453],{"class":391},[263,2675,316],{"class":277},[263,2677,822],{"class":277},[263,2679,2680],{"class":825},"wizard",[263,2682,890],{"class":277},[263,2684,321],{"class":277},[263,2686,2687,2689,2691,2693,2696,2698,2702],{"class":265,"line":324},[263,2688,392],{"class":391},[263,2690,316],{"class":277},[263,2692,811],{"class":277},[263,2694,2695],{"class":391}," step",[263,2697,316],{"class":277},[263,2699,2701],{"class":2700},"sbssI"," 2",[263,2703,915],{"class":277},[263,2705,2706,2708,2710,2712],{"class":265,"line":344},[263,2707,464],{"class":391},[263,2709,316],{"class":277},[263,2711,1031],{"class":970},[263,2713,2714],{"class":996}," \u002F\u002F skip enter too — feels like one continuous step\n",[263,2716,2717,2719],{"class":265,"line":359},[263,2718,976],{"class":277},[263,2720,979],{"class":435},[198,2722,2723,2724,213],{},"Target group resolution: ",[202,2725,2726],{},"options.group ?? component.modalGroup",[249,2728,1481],{"id":2729},"throws-1",[1483,2731,2732],{},[1486,2733,1488,2734,2736,2737],{},[202,2735,1410],{}," cannot be resolved. Exact message: ",[202,2738,2739],{},"[@kolirt\u002Fvue-modal] replaceModal() requires a `group` option (or `defineOptions({ modalGroup: ... })` on the component).",[1512,2741],{},[215,2743,2745],{"id":2744},"state-inspection","State inspection",[198,2747,2748,2749,2751,2752,1456,2755,1456,2758,1456,2761,1463],{},"For reactive read-only access to the open stack, see the dedicated ",[211,2750,152],{"href":153}," page (",[202,2753,2754],{},"modals",[202,2756,2757],{},"isOpened",[202,2759,2760],{},"groupModals",[202,2762,2763],{},"isGroupOpen",[1512,2765],{},[215,2767,2769],{"id":2768},"modalclosederror",[202,2770,234],{},[198,2772,2773,2774,2777,2778,2781,2782,2322,2785,2781,2788,213],{},"The error a modal handle rejects with when it is closed without ",[202,2775,2776],{},"confirm()"," (i.e., user dismissed). ",[202,2779,2780],{},"name"," is ",[202,2783,2784],{},"'ModalClosedError'",[202,2786,2787],{},"message",[202,2789,2790],{},"'Modal closed.'",[249,2792,252],{"id":2793},"signature-6",[254,2795,2797],{"className":256,"code":2796,"language":258,"meta":259,"style":259},"class ModalClosedError extends Error {\n  name: 'ModalClosedError'\n  message: 'Modal closed.'\n}\n",[202,2798,2799,2814,2827,2841],{"__ignoreMap":259},[263,2800,2801,2804,2807,2809,2812],{"class":265,"line":266},[263,2802,2803],{"class":269},"class",[263,2805,2806],{"class":281}," ModalClosedError",[263,2808,296],{"class":269},[263,2810,2811],{"class":281}," Error",[263,2813,385],{"class":277},[263,2815,2816,2819,2821,2823,2825],{"class":265,"line":309},[263,2817,2818],{"class":391},"  name",[263,2820,316],{"class":277},[263,2822,822],{"class":277},[263,2824,234],{"class":825},[263,2826,828],{"class":277},[263,2828,2829,2832,2834,2836,2839],{"class":265,"line":324},[263,2830,2831],{"class":391},"  message",[263,2833,316],{"class":277},[263,2835,822],{"class":277},[263,2837,2838],{"class":825},"Modal closed.",[263,2840,828],{"class":277},[263,2842,2843],{"class":265,"line":344},[263,2844,475],{"class":277},[254,2846,2848],{"className":256,"code":2847,"language":258,"meta":259,"style":259},"import { openModal, ModalClosedError } from '@kolirt\u002Fvue-modal'\nimport ConfirmDialog from '.\u002FConfirmDialog.vue'\n\ntry {\n  const ok = await openModal\u003Cboolean>(ConfirmDialog, { group: 'default' })\n} catch (e) {\n  if (e instanceof ModalClosedError) {\n    \u002F\u002F user dismissed\n  } else {\n    throw e \u002F\u002F propagate\n  }\n}\n",[202,2849,2850,2872,2886,2890,2897,2940,2953,2972,2977,2987,2998,3002],{"__ignoreMap":259},[263,2851,2852,2854,2856,2858,2860,2862,2864,2866,2868,2870],{"class":265,"line":266},[263,2853,808],{"class":807},[263,2855,811],{"class":277},[263,2857,274],{"class":435},[263,2859,290],{"class":277},[263,2861,2806],{"class":435},[263,2863,816],{"class":277},[263,2865,819],{"class":807},[263,2867,822],{"class":277},[263,2869,204],{"class":825},[263,2871,828],{"class":277},[263,2873,2874,2876,2878,2880,2882,2884],{"class":265,"line":309},[263,2875,808],{"class":807},[263,2877,835],{"class":435},[263,2879,838],{"class":807},[263,2881,822],{"class":277},[263,2883,843],{"class":825},[263,2885,828],{"class":277},[263,2887,2888],{"class":265,"line":324},[263,2889,363],{"emptyLinePlaceholder":362},[263,2891,2892,2895],{"class":265,"line":344},[263,2893,2894],{"class":807},"try",[263,2896,385],{"class":277},[263,2898,2899,2902,2905,2907,2909,2911,2913,2915,2917,2919,2922,2924,2926,2928,2930,2932,2934,2936,2938],{"class":265,"line":359},[263,2900,2901],{"class":269},"  const",[263,2903,2904],{"class":435}," ok",[263,2906,284],{"class":277},[263,2908,1127],{"class":807},[263,2910,274],{"class":273},[263,2912,278],{"class":277},[263,2914,867],{"class":281},[263,2916,382],{"class":277},[263,2918,535],{"class":391},[263,2920,2921],{"class":435},"ConfirmDialog",[263,2923,290],{"class":277},[263,2925,811],{"class":277},[263,2927,1582],{"class":391},[263,2929,316],{"class":277},[263,2931,822],{"class":277},[263,2933,887],{"class":825},[263,2935,890],{"class":277},[263,2937,816],{"class":277},[263,2939,979],{"class":391},[263,2941,2942,2944,2947,2950],{"class":265,"line":366},[263,2943,976],{"class":277},[263,2945,2946],{"class":807}," catch",[263,2948,2949],{"class":435}," (e) ",[263,2951,2952],{"class":277},"{\n",[263,2954,2955,2958,2960,2963,2966,2968,2970],{"class":265,"line":388},[263,2956,2957],{"class":807},"  if",[263,2959,933],{"class":391},[263,2961,2962],{"class":435},"e",[263,2964,2965],{"class":277}," instanceof",[263,2967,2806],{"class":281},[263,2969,1036],{"class":391},[263,2971,2952],{"class":277},[263,2973,2974],{"class":265,"line":406},[263,2975,2976],{"class":996},"    \u002F\u002F user dismissed\n",[263,2978,2979,2982,2985],{"class":265,"line":450},[263,2980,2981],{"class":277},"  }",[263,2983,2984],{"class":807}," else",[263,2986,385],{"class":277},[263,2988,2989,2992,2995],{"class":265,"line":461},[263,2990,2991],{"class":807},"    throw",[263,2993,2994],{"class":435}," e",[263,2996,2997],{"class":996}," \u002F\u002F propagate\n",[263,2999,3000],{"class":265,"line":472},[263,3001,1286],{"class":277},[263,3003,3004],{"class":265,"line":478},[263,3005,475],{"class":277},[3007,3008,3009],"style",{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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 .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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":259,"searchDepth":309,"depth":309,"links":3011},[3012,3018,3022,3026,3030,3034,3039,3040],{"id":217,"depth":309,"text":220,"children":3013},[3014,3015,3016,3017],{"id":251,"depth":324,"text":252},{"id":643,"depth":324,"text":644},{"id":703,"depth":324,"text":725},{"id":1480,"depth":324,"text":1481},{"id":1516,"depth":309,"text":1519,"children":3019},[3020,3021],{"id":1537,"depth":324,"text":252},{"id":1682,"depth":324,"text":644},{"id":1881,"depth":309,"text":1884,"children":3023},[3024,3025],{"id":1898,"depth":324,"text":252},{"id":1968,"depth":324,"text":644},{"id":2103,"depth":309,"text":2106,"children":3027},[3028,3029],{"id":2112,"depth":324,"text":252},{"id":2206,"depth":324,"text":644},{"id":2335,"depth":309,"text":2338,"children":3031},[3032,3033],{"id":2348,"depth":324,"text":252},{"id":2416,"depth":324,"text":644},{"id":2482,"depth":309,"text":2485,"children":3035},[3036,3037,3038],{"id":2499,"depth":324,"text":252},{"id":2581,"depth":324,"text":644},{"id":2729,"depth":324,"text":1481},{"id":2744,"depth":309,"text":2745},{"id":2768,"depth":309,"text":234,"children":3041},[3042],{"id":2793,"depth":324,"text":252},"openModal, closeModal, closeModalById, closeAllModals, closeModalsByGroup, replaceModal, ModalClosedError.","md",null,{},{"title":136,"description":3043},"8_VC-IqRev8T8g5dkyvRl2xOvdR0VUjiHv4OoePwpFw",[3050,3052],{"title":127,"path":128,"stem":129,"description":3051,"children":-1},"Wire a fetch\u002Faxios interceptor to open an error modal from anywhere. Uses a dedicated high-z-index group, replaceModal to deduplicate, and closeModalsByGroup on logout.",{"title":140,"path":141,"stem":142,"description":3053,"children":-1},"ModalTarget, ModalRoot, ModalContent, ModalTitle, ModalDescription, ModalOverlay.",1779523619916]