[{"data":1,"prerenderedAt":2112},["ShallowReactive",2],{"navigation_docs":3,"-api-composables":188,"-api-composables-surround":2107},[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":144,"body":190,"description":2101,"extension":2102,"links":2103,"meta":2104,"navigation":536,"path":145,"seo":2105,"stem":146,"__hash__":2106},"docs\u002F6.api\u002F3.composables.md",{"type":191,"value":192,"toc":2082},"minimark",[193,197,205,217,222,585,589,683,693,715,725,790,794,1219,1236,1239,1245,1284,1288,1426,1429,1435,1448,1451,1622,1625,1650,1800,1803,1970,1976,2049,2053,2064,2078],[194,195,144],"h1",{"id":196},"composables",[198,199,201],"h2",{"id":200},"usemodalt-ccomponent-defaults",[202,203,204],"code",{},"useModal\u003CT, C>(component, defaults?)",[206,207,208,209,212,213,216],"p",{},"Bind a single modal component to the current scope. Returns reactive ",[202,210,211],{},"isOpen",", persistent event listeners that survive across multiple ",[202,214,215],{},".open()"," calls, and auto-cleanup on scope unmount (configurable).",[218,219,221],"h3",{"id":220},"signature","Signature",[223,224,229],"pre",{"className":225,"code":226,"language":227,"meta":228,"style":228},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","function useModal\u003CT = unknown, C extends Component = Component>(\n  component: C,\n  defaults?: UseModalDefaults\u003CC>\n): {\n  open(options?: OpenModalOptions\u003CC>): Promise\u003CT>\n  close(opts?: CloseFlags): void\n  on(event: string, handler: (...args: any[]) => void): void\n  off(event: string, handler: (...args: any[]) => void): void\n  isOpen: ComputedRef\u003Cboolean>\n  isTop: ComputedRef\u003Cboolean>\n  instanceId: Ref\u003Cnumber | null>\n}\n\ninterface UseModalDefaults\u003CC extends Component> extends OpenModalOptions\u003CC> {\n  closeOnUnmount?: boolean\n}\n","ts","",[202,230,231,277,292,312,321,355,376,427,467,485,501,525,531,538,569,580],{"__ignoreMap":228},[232,233,236,240,244,248,252,255,258,261,264,267,270,272,274],"span",{"class":234,"line":235},"line",1,[232,237,239],{"class":238},"spNyl","function",[232,241,243],{"class":242},"s2Zo4"," useModal",[232,245,247],{"class":246},"sMK4o","\u003C",[232,249,251],{"class":250},"sBMFI","T",[232,253,254],{"class":246}," =",[232,256,257],{"class":250}," unknown",[232,259,260],{"class":246},",",[232,262,263],{"class":250}," C",[232,265,266],{"class":238}," extends",[232,268,269],{"class":250}," Component",[232,271,254],{"class":246},[232,273,269],{"class":250},[232,275,276],{"class":246},">(\n",[232,278,280,284,287,289],{"class":234,"line":279},2,[232,281,283],{"class":282},"sHdIc","  component",[232,285,286],{"class":246},":",[232,288,263],{"class":250},[232,290,291],{"class":246},",\n",[232,293,295,298,301,304,306,309],{"class":234,"line":294},3,[232,296,297],{"class":282},"  defaults",[232,299,300],{"class":246},"?:",[232,302,303],{"class":250}," UseModalDefaults",[232,305,247],{"class":246},[232,307,308],{"class":250},"C",[232,310,311],{"class":246},">\n",[232,313,315,318],{"class":234,"line":314},4,[232,316,317],{"class":246},"):",[232,319,320],{"class":246}," {\n",[232,322,324,328,331,334,336,339,341,343,346,349,351,353],{"class":234,"line":323},5,[232,325,327],{"class":326},"swJcz","  open",[232,329,330],{"class":246},"(",[232,332,333],{"class":282},"options",[232,335,300],{"class":246},[232,337,338],{"class":250}," OpenModalOptions",[232,340,247],{"class":246},[232,342,308],{"class":250},[232,344,345],{"class":246},">):",[232,347,348],{"class":250}," Promise",[232,350,247],{"class":246},[232,352,251],{"class":250},[232,354,311],{"class":246},[232,356,358,361,363,366,368,371,373],{"class":234,"line":357},6,[232,359,360],{"class":326},"  close",[232,362,330],{"class":246},[232,364,365],{"class":282},"opts",[232,367,300],{"class":246},[232,369,370],{"class":250}," CloseFlags",[232,372,317],{"class":246},[232,374,375],{"class":250}," void\n",[232,377,379,382,384,387,389,392,394,397,399,402,405,407,410,414,417,420,423,425],{"class":234,"line":378},7,[232,380,381],{"class":326},"  on",[232,383,330],{"class":246},[232,385,386],{"class":282},"event",[232,388,286],{"class":246},[232,390,391],{"class":250}," string",[232,393,260],{"class":246},[232,395,396],{"class":242}," handler",[232,398,286],{"class":246},[232,400,401],{"class":246}," (...",[232,403,404],{"class":282},"args",[232,406,286],{"class":246},[232,408,409],{"class":250}," any",[232,411,413],{"class":412},"sTEyZ","[]",[232,415,416],{"class":246},")",[232,418,419],{"class":238}," =>",[232,421,422],{"class":250}," void",[232,424,317],{"class":246},[232,426,375],{"class":250},[232,428,430,433,435,437,439,441,443,445,447,449,451,453,455,457,459,461,463,465],{"class":234,"line":429},8,[232,431,432],{"class":326},"  off",[232,434,330],{"class":246},[232,436,386],{"class":282},[232,438,286],{"class":246},[232,440,391],{"class":250},[232,442,260],{"class":246},[232,444,396],{"class":242},[232,446,286],{"class":246},[232,448,401],{"class":246},[232,450,404],{"class":282},[232,452,286],{"class":246},[232,454,409],{"class":250},[232,456,413],{"class":412},[232,458,416],{"class":246},[232,460,419],{"class":238},[232,462,422],{"class":250},[232,464,317],{"class":246},[232,466,375],{"class":250},[232,468,470,473,475,478,480,483],{"class":234,"line":469},9,[232,471,472],{"class":326},"  isOpen",[232,474,286],{"class":246},[232,476,477],{"class":250}," ComputedRef",[232,479,247],{"class":246},[232,481,482],{"class":250},"boolean",[232,484,311],{"class":246},[232,486,488,491,493,495,497,499],{"class":234,"line":487},10,[232,489,490],{"class":326},"  isTop",[232,492,286],{"class":246},[232,494,477],{"class":250},[232,496,247],{"class":246},[232,498,482],{"class":250},[232,500,311],{"class":246},[232,502,504,507,509,512,514,517,520,523],{"class":234,"line":503},11,[232,505,506],{"class":326},"  instanceId",[232,508,286],{"class":246},[232,510,511],{"class":250}," Ref",[232,513,247],{"class":246},[232,515,516],{"class":250},"number",[232,518,519],{"class":246}," |",[232,521,522],{"class":250}," null",[232,524,311],{"class":246},[232,526,528],{"class":234,"line":527},12,[232,529,530],{"class":246},"}\n",[232,532,534],{"class":234,"line":533},13,[232,535,537],{"emptyLinePlaceholder":536},true,"\n",[232,539,541,544,546,548,550,552,554,557,559,561,563,565,567],{"class":234,"line":540},14,[232,542,543],{"class":238},"interface",[232,545,303],{"class":250},[232,547,247],{"class":246},[232,549,308],{"class":250},[232,551,266],{"class":238},[232,553,269],{"class":250},[232,555,556],{"class":246},">",[232,558,266],{"class":238},[232,560,338],{"class":250},[232,562,247],{"class":246},[232,564,308],{"class":250},[232,566,556],{"class":246},[232,568,320],{"class":246},[232,570,572,575,577],{"class":234,"line":571},15,[232,573,574],{"class":326},"  closeOnUnmount",[232,576,300],{"class":246},[232,578,579],{"class":250}," boolean\n",[232,581,583],{"class":234,"line":582},16,[232,584,530],{"class":246},[218,586,588],{"id":587},"parameters","Parameters",[590,591,592,611],"table",{},[593,594,595],"thead",{},[596,597,598,602,605,608],"tr",{},[599,600,601],"th",{},"Parameter",[599,603,604],{},"Type",[599,606,607],{},"Required",[599,609,610],{},"Description",[612,613,614,636],"tbody",{},[596,615,616,622,627,630],{},[617,618,619],"td",{},[202,620,621],{},"component",[617,623,624],{},[202,625,626],{},"C extends Component",[617,628,629],{},"yes",[617,631,632,633,635],{},"The Vue component bound to this controller. All ",[202,634,215],{}," calls mount this same component.",[596,637,638,643,648,651],{},[617,639,640],{},[202,641,642],{},"defaults",[617,644,645],{},[202,646,647],{},"UseModalDefaults\u003CC>",[617,649,650],{},"no",[617,652,653,654,656,657,664,665,668,669,668,672,668,675,678,679,682],{},"Defaults applied to every ",[202,655,215],{}," call: inherits all of ",[658,659,661],"a",{"href":660},"\u002Fapi\u002Ftypes#openmodaloptionsc",[202,662,663],{},"OpenModalOptions\u003CC>"," (",[202,666,667],{},"props",", ",[202,670,671],{},"on",[202,673,674],{},"group",[202,676,677],{},"instantEnter",") plus ",[202,680,681],{},"closeOnUnmount",".",[206,684,685,689,690,682],{},[686,687,688],"strong",{},"Type parameters"," identical to ",[202,691,692],{},"openModal",[206,694,695,698,699,668,702,705,706,709,710,705,712,714],{},[686,696,697],{},"Per-call merge."," When you call ",[202,700,701],{},".open(opts)",[202,703,704],{},"defaults.props"," and ",[202,707,708],{},"opts.props"," are shallow-merged (per-call wins); listeners from both sources fire. ",[202,711,674],{},[202,713,677],{}," follow override semantics — per-call wins.",[218,716,718,719,722,723],{"id":717},"when-to-reach-for-usemodal-vs-openmodal","When to reach for ",[202,720,721],{},"useModal"," vs ",[202,724,692],{},[590,726,727,737],{},[593,728,729],{},[596,730,731,734],{},[599,732,733],{},"Need",[599,735,736],{},"Use",[612,738,739,748,757,772,781],{},[596,740,741,744],{},[617,742,743],{},"One-off call from a function\u002Fhandler",[617,745,746],{},[202,747,692],{},[596,749,750,753],{},[617,751,752],{},"Same modal opened multiple times from a component",[617,754,755],{},[202,756,721],{},[596,758,759,768],{},[617,760,761,762,764,765],{},"Reactive ",[202,763,211],{}," for binding to a button's ",[202,766,767],{},"disabled",[617,769,770],{},[202,771,721],{},[596,773,774,777],{},[617,775,776],{},"Persistent event listeners across open calls",[617,778,779],{},[202,780,721],{},[596,782,783,786],{},[617,784,785],{},"Auto-close when the calling component unmounts",[617,787,788],{},[202,789,721],{},[218,791,793],{"id":792},"example","Example",[223,795,799],{"className":796,"code":797,"language":798,"meta":228,"style":228},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\nimport { useModal } from '@kolirt\u002Fvue-modal'\nimport EditDialog from '.\u002FEditDialog.vue'\n\nconst editModal = useModal\u003C{ value: string }>(EditDialog, {\n  group: 'default',\n  props: { mode: 'inline' },\n  on: {\n    progress: (percent) => console.log(percent)\n  },\n  closeOnUnmount: true \u002F\u002F default\n})\n\nasync function edit(id: number) {\n  const data = await editModal.open({ props: { id } }).catch(() => null)\n  if (data) console.log('saved', data.value)\n}\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cbutton :disabled=\"editModal.isOpen.value\" @click=\"edit(42)\">Edit\u003C\u002Fbutton>\n\u003C\u002Ftemplate>\n","vue",[202,800,801,827,853,870,874,906,923,947,955,982,987,1001,1009,1013,1038,1096,1136,1141,1151,1156,1166,1210],{"__ignoreMap":228},[232,802,803,805,808,811,814,817,820,823,825],{"class":234,"line":235},[232,804,247],{"class":246},[232,806,807],{"class":326},"script",[232,809,810],{"class":238}," setup",[232,812,813],{"class":238}," lang",[232,815,816],{"class":246},"=",[232,818,819],{"class":246},"\"",[232,821,227],{"class":822},"sfazB",[232,824,819],{"class":246},[232,826,311],{"class":246},[232,828,829,833,836,838,841,844,847,850],{"class":234,"line":279},[232,830,832],{"class":831},"s7zQu","import",[232,834,835],{"class":246}," {",[232,837,243],{"class":412},[232,839,840],{"class":246}," }",[232,842,843],{"class":831}," from",[232,845,846],{"class":246}," '",[232,848,849],{"class":822},"@kolirt\u002Fvue-modal",[232,851,852],{"class":246},"'\n",[232,854,855,857,860,863,865,868],{"class":234,"line":294},[232,856,832],{"class":831},[232,858,859],{"class":412}," EditDialog ",[232,861,862],{"class":831},"from",[232,864,846],{"class":246},[232,866,867],{"class":822},".\u002FEditDialog.vue",[232,869,852],{"class":246},[232,871,872],{"class":234,"line":314},[232,873,537],{"emptyLinePlaceholder":536},[232,875,876,879,882,884,886,889,892,894,896,899,902,904],{"class":234,"line":323},[232,877,878],{"class":238},"const",[232,880,881],{"class":412}," editModal ",[232,883,816],{"class":246},[232,885,243],{"class":242},[232,887,888],{"class":246},"\u003C{",[232,890,891],{"class":326}," value",[232,893,286],{"class":246},[232,895,391],{"class":250},[232,897,898],{"class":246}," }>",[232,900,901],{"class":412},"(EditDialog",[232,903,260],{"class":246},[232,905,320],{"class":246},[232,907,908,911,913,915,918,921],{"class":234,"line":357},[232,909,910],{"class":326},"  group",[232,912,286],{"class":246},[232,914,846],{"class":246},[232,916,917],{"class":822},"default",[232,919,920],{"class":246},"'",[232,922,291],{"class":246},[232,924,925,928,930,932,935,937,939,942,944],{"class":234,"line":378},[232,926,927],{"class":326},"  props",[232,929,286],{"class":246},[232,931,835],{"class":246},[232,933,934],{"class":326}," mode",[232,936,286],{"class":246},[232,938,846],{"class":246},[232,940,941],{"class":822},"inline",[232,943,920],{"class":246},[232,945,946],{"class":246}," },\n",[232,948,949,951,953],{"class":234,"line":429},[232,950,381],{"class":326},[232,952,286],{"class":246},[232,954,320],{"class":246},[232,956,957,960,962,964,967,969,971,974,976,979],{"class":234,"line":469},[232,958,959],{"class":242},"    progress",[232,961,286],{"class":246},[232,963,664],{"class":246},[232,965,966],{"class":282},"percent",[232,968,416],{"class":246},[232,970,419],{"class":238},[232,972,973],{"class":412}," console",[232,975,682],{"class":246},[232,977,978],{"class":242},"log",[232,980,981],{"class":412},"(percent)\n",[232,983,984],{"class":234,"line":487},[232,985,986],{"class":246},"  },\n",[232,988,989,991,993,997],{"class":234,"line":503},[232,990,574],{"class":326},[232,992,286],{"class":246},[232,994,996],{"class":995},"sfNiH"," true",[232,998,1000],{"class":999},"sHwdD"," \u002F\u002F default\n",[232,1002,1003,1006],{"class":234,"line":527},[232,1004,1005],{"class":246},"}",[232,1007,1008],{"class":412},")\n",[232,1010,1011],{"class":234,"line":533},[232,1012,537],{"emptyLinePlaceholder":536},[232,1014,1015,1018,1021,1024,1026,1029,1031,1034,1036],{"class":234,"line":540},[232,1016,1017],{"class":238},"async",[232,1019,1020],{"class":238}," function",[232,1022,1023],{"class":242}," edit",[232,1025,330],{"class":246},[232,1027,1028],{"class":282},"id",[232,1030,286],{"class":246},[232,1032,1033],{"class":250}," number",[232,1035,416],{"class":246},[232,1037,320],{"class":246},[232,1039,1040,1043,1046,1048,1051,1054,1056,1059,1061,1064,1067,1069,1071,1074,1076,1078,1080,1082,1085,1087,1090,1092,1094],{"class":234,"line":571},[232,1041,1042],{"class":238},"  const",[232,1044,1045],{"class":412}," data",[232,1047,254],{"class":246},[232,1049,1050],{"class":831}," await",[232,1052,1053],{"class":412}," editModal",[232,1055,682],{"class":246},[232,1057,1058],{"class":242},"open",[232,1060,330],{"class":326},[232,1062,1063],{"class":246},"{",[232,1065,1066],{"class":326}," props",[232,1068,286],{"class":246},[232,1070,835],{"class":246},[232,1072,1073],{"class":412}," id",[232,1075,840],{"class":246},[232,1077,840],{"class":246},[232,1079,416],{"class":326},[232,1081,682],{"class":246},[232,1083,1084],{"class":242},"catch",[232,1086,330],{"class":326},[232,1088,1089],{"class":246},"()",[232,1091,419],{"class":238},[232,1093,522],{"class":246},[232,1095,1008],{"class":326},[232,1097,1098,1101,1103,1106,1109,1112,1114,1116,1118,1120,1123,1125,1127,1129,1131,1134],{"class":234,"line":582},[232,1099,1100],{"class":831},"  if",[232,1102,664],{"class":326},[232,1104,1105],{"class":412},"data",[232,1107,1108],{"class":326},") ",[232,1110,1111],{"class":412},"console",[232,1113,682],{"class":246},[232,1115,978],{"class":242},[232,1117,330],{"class":326},[232,1119,920],{"class":246},[232,1121,1122],{"class":822},"saved",[232,1124,920],{"class":246},[232,1126,260],{"class":246},[232,1128,1045],{"class":412},[232,1130,682],{"class":246},[232,1132,1133],{"class":412},"value",[232,1135,1008],{"class":326},[232,1137,1139],{"class":234,"line":1138},17,[232,1140,530],{"class":246},[232,1142,1144,1147,1149],{"class":234,"line":1143},18,[232,1145,1146],{"class":246},"\u003C\u002F",[232,1148,807],{"class":326},[232,1150,311],{"class":246},[232,1152,1154],{"class":234,"line":1153},19,[232,1155,537],{"emptyLinePlaceholder":536},[232,1157,1159,1161,1164],{"class":234,"line":1158},20,[232,1160,247],{"class":246},[232,1162,1163],{"class":326},"template",[232,1165,311],{"class":246},[232,1167,1169,1172,1175,1178,1180,1182,1185,1187,1190,1192,1194,1197,1199,1201,1204,1206,1208],{"class":234,"line":1168},21,[232,1170,1171],{"class":246},"  \u003C",[232,1173,1174],{"class":326},"button",[232,1176,1177],{"class":238}," :disabled",[232,1179,816],{"class":246},[232,1181,819],{"class":246},[232,1183,1184],{"class":822},"editModal.isOpen.value",[232,1186,819],{"class":246},[232,1188,1189],{"class":238}," @click",[232,1191,816],{"class":246},[232,1193,819],{"class":246},[232,1195,1196],{"class":822},"edit(42)",[232,1198,819],{"class":246},[232,1200,556],{"class":246},[232,1202,1203],{"class":412},"Edit",[232,1205,1146],{"class":246},[232,1207,1174],{"class":326},[232,1209,311],{"class":246},[232,1211,1213,1215,1217],{"class":234,"line":1212},22,[232,1214,1146],{"class":246},[232,1216,1163],{"class":326},[232,1218,311],{"class":246},[206,1220,1221,1224,1225,1227,1228,1230,1231,1233,1234,682],{},[202,1222,1223],{},"open()"," merges ",[202,1226,642],{}," with the per-call ",[202,1229,333],{},": props are shallow-merged (per-call wins), listeners from both sources fire. See ",[658,1232,160],{"href":161}," for ",[202,1235,663],{},[218,1237,1238],{"id":642},"Defaults",[206,1240,1241,1242,1244],{},"Same as ",[202,1243,663],{}," plus:",[590,1246,1247,1261],{},[593,1248,1249],{},[596,1250,1251,1254,1256,1259],{},[599,1252,1253],{},"Field",[599,1255,604],{},[599,1257,1258],{},"Default",[599,1260,610],{},[612,1262,1263],{},[596,1264,1265,1269,1273,1278],{},[617,1266,1267],{},[202,1268,681],{},[617,1270,1271],{},[202,1272,482],{},[617,1274,1275],{},[202,1276,1277],{},"true",[617,1279,1280,1281,682],{},"When the calling scope is disposed, close the open instance with ",[202,1282,1283],{},"ignoreGuard: true, instantExit: true",[218,1285,1287],{"id":1286},"returned-api","Returned API",[590,1289,1290,1300],{},[593,1291,1292],{},[596,1293,1294,1296,1298],{},[599,1295,1253],{},[599,1297,604],{},[599,1299,610],{},[612,1301,1302,1326,1345,1363,1377,1394,1408],{},[596,1303,1304,1309,1314],{},[617,1305,1306],{},[202,1307,1308],{},"open(options?)",[617,1310,1311],{},[202,1312,1313],{},"(opts?: OpenModalOptions\u003CC>) => Promise\u003CT>",[617,1315,1316,1317,1319,1320,1322,1323,1325],{},"Merge ",[202,1318,642],{}," + ",[202,1321,333],{}," (props shallow-merged with per-call wins, listeners merged), call ",[202,1324,692],{},", await.",[596,1327,1328,1333,1338],{},[617,1329,1330],{},[202,1331,1332],{},"close(opts?)",[617,1334,1335],{},[202,1336,1337],{},"(opts?: { ignoreGuard?, instantExit? }) => void",[617,1339,1340,1341,1344],{},"Close current instance with ",[202,1342,1343],{},"success: false",". No-op if not open.",[596,1346,1347,1352,1357],{},[617,1348,1349],{},[202,1350,1351],{},"on(event, handler)",[617,1353,1354],{},[202,1355,1356],{},"(event, handler) => void",[617,1358,1359,1360,1362],{},"Add a persistent listener (survives across ",[202,1361,1058],{}," calls).",[596,1364,1365,1370,1374],{},[617,1366,1367],{},[202,1368,1369],{},"off(event, handler)",[617,1371,1372],{},[202,1373,1356],{},[617,1375,1376],{},"Remove a persistent listener.",[596,1378,1379,1383,1388],{},[617,1380,1381],{},[202,1382,211],{},[617,1384,1385],{},[202,1386,1387],{},"ComputedRef\u003Cboolean>",[617,1389,1390,1393],{},[202,1391,1392],{},"instanceId !== null"," — true while this instance is mounted in the stack (regardless of position).",[596,1395,1396,1401,1405],{},[617,1397,1398],{},[202,1399,1400],{},"isTop",[617,1402,1403],{},[202,1404,1387],{},[617,1406,1407],{},"True only when this instance is the topmost in the global stack.",[596,1409,1410,1415,1420],{},[617,1411,1412],{},[202,1413,1414],{},"instanceId",[617,1416,1417],{},[202,1418,1419],{},"Ref\u003Cnumber | null>",[617,1421,1422,1423,682],{},"Current open instance id, or ",[202,1424,1425],{},"null",[1427,1428],"hr",{},[198,1430,1432],{"id":1431},"usemodalcontextt",[202,1433,1434],{},"useModalContext\u003CT>()",[206,1436,1437,1438,1441,1442,1444,1445,1447],{},"Called ",[686,1439,1440],{},"inside a modal component"," (the one opened via ",[202,1443,692],{},"\u002F",[202,1446,721],{},"). Gives access to the close API, before-close guards, and effective behavior options.",[218,1449,221],{"id":1450},"signature-1",[223,1452,1454],{"className":225,"code":1453,"language":227,"meta":228,"style":228},"function useModalContext\u003CT = unknown>(): {\n  id: number\n  group: ModalGroup\n  isClosing: ComputedRef\u003Cboolean>\n  isTopmost: ComputedRef\u003Cboolean>\n  isTopmostGlobal: ComputedRef\u003Cboolean>\n  effectiveOptions: ComputedRef\u003CModalEffectiveOptions>\n  close(opts?: CloseFlags): void\n  confirm(data: T, opts?: CloseFlags): void\n  onBeforeClose(handler: BeforeCloseHandler): void\n}\n",[202,1455,1456,1476,1486,1495,1510,1525,1540,1556,1572,1599,1618],{"__ignoreMap":228},[232,1457,1458,1460,1463,1465,1467,1469,1471,1474],{"class":234,"line":235},[232,1459,239],{"class":238},[232,1461,1462],{"class":242}," useModalContext",[232,1464,247],{"class":246},[232,1466,251],{"class":250},[232,1468,254],{"class":246},[232,1470,257],{"class":250},[232,1472,1473],{"class":246},">():",[232,1475,320],{"class":246},[232,1477,1478,1481,1483],{"class":234,"line":279},[232,1479,1480],{"class":326},"  id",[232,1482,286],{"class":246},[232,1484,1485],{"class":250}," number\n",[232,1487,1488,1490,1492],{"class":234,"line":294},[232,1489,910],{"class":326},[232,1491,286],{"class":246},[232,1493,1494],{"class":250}," ModalGroup\n",[232,1496,1497,1500,1502,1504,1506,1508],{"class":234,"line":314},[232,1498,1499],{"class":326},"  isClosing",[232,1501,286],{"class":246},[232,1503,477],{"class":250},[232,1505,247],{"class":246},[232,1507,482],{"class":250},[232,1509,311],{"class":246},[232,1511,1512,1515,1517,1519,1521,1523],{"class":234,"line":323},[232,1513,1514],{"class":326},"  isTopmost",[232,1516,286],{"class":246},[232,1518,477],{"class":250},[232,1520,247],{"class":246},[232,1522,482],{"class":250},[232,1524,311],{"class":246},[232,1526,1527,1530,1532,1534,1536,1538],{"class":234,"line":357},[232,1528,1529],{"class":326},"  isTopmostGlobal",[232,1531,286],{"class":246},[232,1533,477],{"class":250},[232,1535,247],{"class":246},[232,1537,482],{"class":250},[232,1539,311],{"class":246},[232,1541,1542,1545,1547,1549,1551,1554],{"class":234,"line":378},[232,1543,1544],{"class":326},"  effectiveOptions",[232,1546,286],{"class":246},[232,1548,477],{"class":250},[232,1550,247],{"class":246},[232,1552,1553],{"class":250},"ModalEffectiveOptions",[232,1555,311],{"class":246},[232,1557,1558,1560,1562,1564,1566,1568,1570],{"class":234,"line":429},[232,1559,360],{"class":326},[232,1561,330],{"class":246},[232,1563,365],{"class":282},[232,1565,300],{"class":246},[232,1567,370],{"class":250},[232,1569,317],{"class":246},[232,1571,375],{"class":250},[232,1573,1574,1577,1579,1581,1583,1586,1588,1591,1593,1595,1597],{"class":234,"line":469},[232,1575,1576],{"class":326},"  confirm",[232,1578,330],{"class":246},[232,1580,1105],{"class":282},[232,1582,286],{"class":246},[232,1584,1585],{"class":250}," T",[232,1587,260],{"class":246},[232,1589,1590],{"class":282}," opts",[232,1592,300],{"class":246},[232,1594,370],{"class":250},[232,1596,317],{"class":246},[232,1598,375],{"class":250},[232,1600,1601,1604,1606,1609,1611,1614,1616],{"class":234,"line":487},[232,1602,1603],{"class":326},"  onBeforeClose",[232,1605,330],{"class":246},[232,1607,1608],{"class":282},"handler",[232,1610,286],{"class":246},[232,1612,1613],{"class":250}," BeforeCloseHandler",[232,1615,317],{"class":246},[232,1617,375],{"class":250},[232,1619,1620],{"class":234,"line":503},[232,1621,530],{"class":246},[218,1623,588],{"id":1624},"parameters-1",[206,1626,1627,1630,1631,1633,1634,1637,1638,1641,1642,1645,1646,1649],{},[202,1628,1629],{},"useModalContext"," takes no parameters. The single type parameter ",[202,1632,251],{}," (default ",[202,1635,1636],{},"unknown",") describes the value ",[202,1639,1640],{},"confirm(data)"," resolves the modal's promise with — pass the same type you used when opening (",[202,1643,1644],{},"openModal\u003CT>(...)"," \u002F ",[202,1647,1648],{},"useModal\u003CT>(...)",").",[223,1651,1653],{"className":796,"code":1652,"language":798,"meta":228,"style":228},"\u003Cscript setup lang=\"ts\">\nimport { useModalContext } from '@kolirt\u002Fvue-modal'\n\nconst { close, confirm, onBeforeClose, isTopmost, effectiveOptions } = useModalContext\u003Cboolean>()\n\nonBeforeClose(async () => {\n  if (formIsDirty.value) return await askConfirm()\n})\n\u003C\u002Fscript>\n",[202,1654,1655,1675,1693,1697,1741,1745,1761,1786,1792],{"__ignoreMap":228},[232,1656,1657,1659,1661,1663,1665,1667,1669,1671,1673],{"class":234,"line":235},[232,1658,247],{"class":246},[232,1660,807],{"class":326},[232,1662,810],{"class":238},[232,1664,813],{"class":238},[232,1666,816],{"class":246},[232,1668,819],{"class":246},[232,1670,227],{"class":822},[232,1672,819],{"class":246},[232,1674,311],{"class":246},[232,1676,1677,1679,1681,1683,1685,1687,1689,1691],{"class":234,"line":279},[232,1678,832],{"class":831},[232,1680,835],{"class":246},[232,1682,1462],{"class":412},[232,1684,840],{"class":246},[232,1686,843],{"class":831},[232,1688,846],{"class":246},[232,1690,849],{"class":822},[232,1692,852],{"class":246},[232,1694,1695],{"class":234,"line":294},[232,1696,537],{"emptyLinePlaceholder":536},[232,1698,1699,1701,1703,1706,1708,1711,1713,1716,1718,1721,1723,1726,1728,1730,1732,1734,1736,1738],{"class":234,"line":314},[232,1700,878],{"class":238},[232,1702,835],{"class":246},[232,1704,1705],{"class":412}," close",[232,1707,260],{"class":246},[232,1709,1710],{"class":412}," confirm",[232,1712,260],{"class":246},[232,1714,1715],{"class":412}," onBeforeClose",[232,1717,260],{"class":246},[232,1719,1720],{"class":412}," isTopmost",[232,1722,260],{"class":246},[232,1724,1725],{"class":412}," effectiveOptions ",[232,1727,1005],{"class":246},[232,1729,254],{"class":246},[232,1731,1462],{"class":242},[232,1733,247],{"class":246},[232,1735,482],{"class":250},[232,1737,556],{"class":246},[232,1739,1740],{"class":412},"()\n",[232,1742,1743],{"class":234,"line":323},[232,1744,537],{"emptyLinePlaceholder":536},[232,1746,1747,1750,1752,1754,1757,1759],{"class":234,"line":357},[232,1748,1749],{"class":242},"onBeforeClose",[232,1751,330],{"class":412},[232,1753,1017],{"class":238},[232,1755,1756],{"class":246}," ()",[232,1758,419],{"class":238},[232,1760,320],{"class":246},[232,1762,1763,1765,1767,1770,1772,1774,1776,1779,1781,1784],{"class":234,"line":378},[232,1764,1100],{"class":831},[232,1766,664],{"class":326},[232,1768,1769],{"class":412},"formIsDirty",[232,1771,682],{"class":246},[232,1773,1133],{"class":412},[232,1775,1108],{"class":326},[232,1777,1778],{"class":831},"return",[232,1780,1050],{"class":831},[232,1782,1783],{"class":242}," askConfirm",[232,1785,1740],{"class":326},[232,1787,1788,1790],{"class":234,"line":429},[232,1789,1005],{"class":246},[232,1791,1008],{"class":412},[232,1793,1794,1796,1798],{"class":234,"line":469},[232,1795,1146],{"class":246},[232,1797,807],{"class":326},[232,1799,311],{"class":246},[218,1801,1287],{"id":1802},"returned-api-1",[590,1804,1805,1815],{},[593,1806,1807],{},[596,1808,1809,1811,1813],{},[599,1810,1253],{},[599,1812,604],{},[599,1814,610],{},[612,1816,1817,1830,1844,1860,1874,1894,1909,1926,1943],{},[596,1818,1819,1823,1827],{},[617,1820,1821],{},[202,1822,1028],{},[617,1824,1825],{},[202,1826,516],{},[617,1828,1829],{},"Modal instance id.",[596,1831,1832,1836,1841],{},[617,1833,1834],{},[202,1835,674],{},[617,1837,1838],{},[202,1839,1840],{},"ModalGroup",[617,1842,1843],{},"This modal's group.",[596,1845,1846,1851,1855],{},[617,1847,1848],{},[202,1849,1850],{},"isClosing",[617,1852,1853],{},[202,1854,1387],{},[617,1856,1857,1859],{},[202,1858,1277],{}," from the moment close starts until DOM removal.",[596,1861,1862,1867,1871],{},[617,1863,1864],{},[202,1865,1866],{},"isTopmost",[617,1868,1869],{},[202,1870,1387],{},[617,1872,1873],{},"Topmost in this modal's group.",[596,1875,1876,1881,1885],{},[617,1877,1878],{},[202,1879,1880],{},"isTopmostGlobal",[617,1882,1883],{},[202,1884,1387],{},[617,1886,1887,1888,1649],{},"Topmost across all groups (last entry of ",[658,1889,1891],{"href":1890},"\u002Fapi\u002Fstate#modals",[202,1892,1893],{},"modals",[596,1895,1896,1901,1906],{},[617,1897,1898],{},[202,1899,1900],{},"effectiveOptions",[617,1902,1903],{},[202,1904,1905],{},"ComputedRef\u003CModalEffectiveOptions>",[617,1907,1908],{},"Resolved positive-form options for this modal's group.",[596,1910,1911,1915,1920],{},[617,1912,1913],{},[202,1914,1332],{},[617,1916,1917],{},[202,1918,1919],{},"(opts?: { ignoreGuard?: boolean; instantExit?: boolean }) => void",[617,1921,1922,1923,682],{},"Reject the handle promise with ",[202,1924,1925],{},"ModalClosedError",[596,1927,1928,1933,1938],{},[617,1929,1930],{},[202,1931,1932],{},"confirm(data, opts?)",[617,1934,1935],{},[202,1936,1937],{},"(data: T, opts?: { ignoreGuard?: boolean; instantExit?: boolean }) => void",[617,1939,1940,1941,682],{},"Resolve the handle promise with ",[202,1942,1105],{},[596,1944,1945,1950,1955],{},[617,1946,1947],{},[202,1948,1949],{},"onBeforeClose(handler)",[617,1951,1952],{},[202,1953,1954],{},"(handler: BeforeCloseHandler) => void",[617,1956,1957,1958,1961,1962,1965,1966,1969],{},"Register a guard. Return ",[202,1959,1960],{},"false"," (or ",[202,1963,1964],{},"Promise\u003Cfalse>",") to block close. Auto-unregistered on the component's ",[202,1967,1968],{},"onBeforeUnmount"," lifecycle hook.",[218,1971,1973,1975],{"id":1972},"effectiveoptions-shape",[202,1974,1900],{}," shape",[223,1977,1979],{"className":225,"code":1978,"language":227,"meta":228,"style":228},"interface ModalEffectiveOptions {\n  interactOutside: boolean \u002F\u002F false in modal mode\n  closeOnInteractOutside: boolean \u002F\u002F close on click outside the region\n  closeOnInteractOverlay: boolean \u002F\u002F close on click in the overlay\u002Fempty area\n  lockBodyScroll: boolean\n  closeOnEscape: boolean\n}\n",[202,1980,1981,1990,2003,2015,2027,2036,2045],{"__ignoreMap":228},[232,1982,1983,1985,1988],{"class":234,"line":235},[232,1984,543],{"class":238},[232,1986,1987],{"class":250}," ModalEffectiveOptions",[232,1989,320],{"class":246},[232,1991,1992,1995,1997,2000],{"class":234,"line":279},[232,1993,1994],{"class":326},"  interactOutside",[232,1996,286],{"class":246},[232,1998,1999],{"class":250}," boolean",[232,2001,2002],{"class":999}," \u002F\u002F false in modal mode\n",[232,2004,2005,2008,2010,2012],{"class":234,"line":294},[232,2006,2007],{"class":326},"  closeOnInteractOutside",[232,2009,286],{"class":246},[232,2011,1999],{"class":250},[232,2013,2014],{"class":999}," \u002F\u002F close on click outside the region\n",[232,2016,2017,2020,2022,2024],{"class":234,"line":314},[232,2018,2019],{"class":326},"  closeOnInteractOverlay",[232,2021,286],{"class":246},[232,2023,1999],{"class":250},[232,2025,2026],{"class":999}," \u002F\u002F close on click in the overlay\u002Fempty area\n",[232,2028,2029,2032,2034],{"class":234,"line":323},[232,2030,2031],{"class":326},"  lockBodyScroll",[232,2033,286],{"class":246},[232,2035,579],{"class":250},[232,2037,2038,2041,2043],{"class":234,"line":357},[232,2039,2040],{"class":326},"  closeOnEscape",[232,2042,286],{"class":246},[232,2044,579],{"class":250},[232,2046,2047],{"class":234,"line":378},[232,2048,530],{"class":246},[218,2050,2052],{"id":2051},"throws","Throws",[206,2054,2055,2056,1444,2058,2060,2061],{},"If called outside a modal component (one opened via ",[202,2057,692],{},[202,2059,721],{},"). Exact message: ",[202,2062,2063],{},"[@kolirt\u002Fvue-modal] useModalContext() must be called inside a modal component (opened via openModal\u002FuseModal).",[206,2065,2066,2067,1233,2069,668,2071,2074,2075,682],{},"See ",[658,2068,160],{"href":161},[202,2070,1553],{},[202,2072,2073],{},"BeforeCloseHandler",", and ",[202,2076,2077],{},"CloseModalOptions\u003CT>",[2079,2080,2081],"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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .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}",{"title":228,"searchDepth":279,"depth":279,"links":2083},[2084,2093],{"id":200,"depth":279,"text":204,"children":2085},[2086,2087,2088,2090,2091,2092],{"id":220,"depth":294,"text":221},{"id":587,"depth":294,"text":588},{"id":717,"depth":294,"text":2089},"When to reach for useModal vs openModal",{"id":792,"depth":294,"text":793},{"id":642,"depth":294,"text":1238},{"id":1286,"depth":294,"text":1287},{"id":1431,"depth":279,"text":1434,"children":2094},[2095,2096,2097,2098,2100],{"id":1450,"depth":294,"text":221},{"id":1624,"depth":294,"text":588},{"id":1802,"depth":294,"text":1287},{"id":1972,"depth":294,"text":2099},"effectiveOptions shape",{"id":2051,"depth":294,"text":2052},"useModal, useModalContext.","md",null,{},{"title":144,"description":2101},"pgUIMvXmXR6Zhrii1LU3pzKqjdvWII96LOTbT8taRjE",[2108,2110],{"title":140,"path":141,"stem":142,"description":2109,"children":-1},"ModalTarget, ModalRoot, ModalContent, ModalTitle, ModalDescription, ModalOverlay.",{"title":148,"path":149,"stem":150,"description":2111,"children":-1},"createModal() — the Vue plugin factory for @kolirt\u002Fvue-modal.",1779523620174]