[{"data":1,"prerenderedAt":1307},["ShallowReactive",2],{"msfe-doc:\u002Fen\u002Fcustomization\u002Fimages":3,"msfe-source:recipes\u002Fimage.ts":515,"mdc--xmsndu-key":516},{"id":4,"title":5,"body":6,"description":502,"extension":503,"keywords":504,"locale":509,"meta":510,"navigation":100,"order":104,"path":511,"section":488,"seo":512,"stem":513,"__hash__":514},"docs\u002Fcustomization\u002Fimages.en.md","Images and external resources",{"type":7,"value":8,"toc":494},"minimark",[9,14,27,38,42,45,49,60,320,352,359,363,422,431,438,442,456,463,467,473,477,490],[10,11,13],"h2",{"id":12},"separate-source-fields-from-browser-resources","Separate source fields from browser resources",[15,16,17,18,22,23,26],"p",{},"Markdown stores a durable asset reference, while the browser may need signed URLs, blobs or authenticated endpoints. ",[19,20,21],"code",{},"Image.configure({ resolve })"," maps source to ",[19,24,25],{},"{ url, release? }"," without persisting credentials.",[15,28,29,30,33,34,37],{},"This complete same-origin adapter accepts ",[19,31,32],{},"\u002Fassets\u002F\u003Cid>",". The host must implement ",[19,35,36],{},"GET \u002Fapi\u002Fassets\u002F:id","; this documentation site does not send requests to that illustrative endpoint.",[39,40],"msfe-recipe",{"name":41},"recipes\u002Fimage",[15,43,44],{},"The recipe replaces StarterKit's image entry to avoid duplicate ownership. It resolves durable identifiers to Blob URLs and revokes each URL on release. Its raster-type and 5 MB limits are application policy, adjustable for your storage contract.",[10,46,48],{"id":47},"paste-drop-and-upload","Paste, drop and upload",[15,50,51,52,55,56,59],{},"The image feature handles paste and drop: when the clipboard or drop carries only image files it stores them and inserts ",[19,53,54],{},"![alt](\u003Caddress>)"," where they landed. A source anchor holds the landing position during the upload; read-only editors are left alone. ",[19,57,58],{},"upload"," decides where images go:",[61,62,67],"pre",{"className":63,"code":64,"language":65,"meta":66,"style":66},"language-ts shiki shiki-themes github-light github-light github-dark","import { Image, type ImageUploader } from '@quirekit\u002Fmsfe-image'\n\nconst uploader: ImageUploader = {\n  async upload(file, { source, name, signal }) {\n    const body = new FormData()\n    body.append('file', file, name ?? 'image')\n    const response = await fetch('\u002Fapi\u002Fassets', { method: 'POST', body, signal })\n    if (!response.ok) throw new Error('upload-failed')\n    return (await response.json()).url \u002F\u002F durable address written to Markdown\n  },\n}\n\nImage.configure({ upload: uploader })\n","ts","",[19,68,69,95,102,125,161,181,207,237,267,291,297,303,308],{"__ignoreMap":66},[70,71,74,78,82,85,88,91],"span",{"class":72,"line":73},"line",1,[70,75,77],{"class":76},"sDD9d","import",[70,79,81],{"class":80},"sVPnS"," { Image, ",[70,83,84],{"class":76},"type",[70,86,87],{"class":80}," ImageUploader } ",[70,89,90],{"class":76},"from",[70,92,94],{"class":93},"s-HEn"," '@quirekit\u002Fmsfe-image'\n",[70,96,98],{"class":72,"line":97},2,[70,99,101],{"emptyLinePlaceholder":100},true,"\n",[70,103,105,108,112,115,119,122],{"class":72,"line":104},3,[70,106,107],{"class":76},"const",[70,109,111],{"class":110},"sUNQB"," uploader",[70,113,114],{"class":76},":",[70,116,118],{"class":117},"sgQzM"," ImageUploader",[70,120,121],{"class":76}," =",[70,123,124],{"class":80}," {\n",[70,126,128,131,134,137,141,144,147,150,153,155,158],{"class":72,"line":127},4,[70,129,130],{"class":76},"  async",[70,132,133],{"class":117}," upload",[70,135,136],{"class":80},"(",[70,138,140],{"class":139},"sde8i","file",[70,142,143],{"class":80},", { ",[70,145,146],{"class":139},"source",[70,148,149],{"class":80},", ",[70,151,152],{"class":139},"name",[70,154,149],{"class":80},[70,156,157],{"class":139},"signal",[70,159,160],{"class":80}," }) {\n",[70,162,164,167,170,172,175,178],{"class":72,"line":163},5,[70,165,166],{"class":76},"    const",[70,168,169],{"class":110}," body",[70,171,121],{"class":76},[70,173,174],{"class":76}," new",[70,176,177],{"class":117}," FormData",[70,179,180],{"class":80},"()\n",[70,182,184,187,190,192,195,198,201,204],{"class":72,"line":183},6,[70,185,186],{"class":80},"    body.",[70,188,189],{"class":117},"append",[70,191,136],{"class":80},[70,193,194],{"class":93},"'file'",[70,196,197],{"class":80},", file, name ",[70,199,200],{"class":76},"??",[70,202,203],{"class":93}," 'image'",[70,205,206],{"class":80},")\n",[70,208,210,212,215,217,220,223,225,228,231,234],{"class":72,"line":209},7,[70,211,166],{"class":76},[70,213,214],{"class":110}," response",[70,216,121],{"class":76},[70,218,219],{"class":76}," await",[70,221,222],{"class":117}," fetch",[70,224,136],{"class":80},[70,226,227],{"class":93},"'\u002Fapi\u002Fassets'",[70,229,230],{"class":80},", { method: ",[70,232,233],{"class":93},"'POST'",[70,235,236],{"class":80},", body, signal })\n",[70,238,240,243,246,249,252,255,257,260,262,265],{"class":72,"line":239},8,[70,241,242],{"class":76},"    if",[70,244,245],{"class":80}," (",[70,247,248],{"class":76},"!",[70,250,251],{"class":80},"response.ok) ",[70,253,254],{"class":76},"throw",[70,256,174],{"class":76},[70,258,259],{"class":117}," Error",[70,261,136],{"class":80},[70,263,264],{"class":93},"'upload-failed'",[70,266,206],{"class":80},[70,268,270,273,275,278,281,284,287],{"class":72,"line":269},9,[70,271,272],{"class":76},"    return",[70,274,245],{"class":80},[70,276,277],{"class":76},"await",[70,279,280],{"class":80}," response.",[70,282,283],{"class":117},"json",[70,285,286],{"class":80},"()).url ",[70,288,290],{"class":289},"sqmzS","\u002F\u002F durable address written to Markdown\n",[70,292,294],{"class":72,"line":293},10,[70,295,296],{"class":80},"  },\n",[70,298,300],{"class":72,"line":299},11,[70,301,302],{"class":80},"}\n",[70,304,306],{"class":72,"line":305},12,[70,307,101],{"emptyLinePlaceholder":100},[70,309,311,314,317],{"class":72,"line":310},13,[70,312,313],{"class":80},"Image.",[70,315,316],{"class":117},"configure",[70,318,319],{"class":80},"({ upload: uploader })\n",[321,322,323,336,346],"ul",{},[324,325,326,327,329,330,332,333,335],"li",{},"With ",[19,328,58],{},": the returned address is written after the upload; a failed image is skipped and the host reports the failure inside ",[19,331,58],{},". ",[19,334,146],{}," distinguishes paste, drop, dialog, Word import and AI, for quotas or naming.",[324,337,338,339,341,342,345],{},"Without ",[19,340,58],{},": PNG, JPEG, GIF and WebP are inlined as ",[19,343,344],{},"data:"," URLs, keeping the document self-contained but larger; SVG is never inlined and needs a host upload.",[324,347,348,351],{},[19,349,350],{},"upload: false",": paste and drop are left to your own extension.",[15,353,354,355,358],{},"The optional ",[19,356,357],{},"resolve"," is a reverse lookup that fetches stored addresses back as data URIs for Word and PDF export.",[10,360,362],{"id":361},"insert-command","Insert command",[61,364,366],{"className":63,"code":365,"language":65,"meta":66,"style":66},"const inserted = editor.commands.insertImage({\n  url: '\u002Fassets\u002Fdiagram_42',\n  alt: 'System diagram',\n  title: 'Architecture review',\n})\n",[19,367,368,386,397,407,417],{"__ignoreMap":66},[70,369,370,372,375,377,380,383],{"class":72,"line":73},[70,371,107],{"class":76},[70,373,374],{"class":110}," inserted",[70,376,121],{"class":76},[70,378,379],{"class":80}," editor.commands.",[70,381,382],{"class":117},"insertImage",[70,384,385],{"class":80},"({\n",[70,387,388,391,394],{"class":72,"line":97},[70,389,390],{"class":80},"  url: ",[70,392,393],{"class":93},"'\u002Fassets\u002Fdiagram_42'",[70,395,396],{"class":80},",\n",[70,398,399,402,405],{"class":72,"line":104},[70,400,401],{"class":80},"  alt: ",[70,403,404],{"class":93},"'System diagram'",[70,406,396],{"class":80},[70,408,409,412,415],{"class":72,"line":127},[70,410,411],{"class":80},"  title: ",[70,413,414],{"class":93},"'Architecture review'",[70,416,396],{"class":80},[70,418,419],{"class":72,"line":163},[70,420,421],{"class":80},"})\n",[15,423,424,425,430],{},"The command validates fields and encodes Markdown. When you build your own upload entry (such as a dialog), capture intent, upload, obtain a durable address and issue the command. Use a ",[426,427,429],"a",{"href":428},"\u002Fen\u002Fguide\u002Fselection","mapped anchor"," for long waits. Cancellation or document replacement must not redirect the insertion to a new cursor position.",[15,432,433,434,437],{},"Built-in Image validates source destinations before invoking the resolver and rejects schemes such as ",[19,435,436],{},"asset:",". Use safe relative paths or HTTPS identifiers. Supporting a new scheme requires your own field validation and codec, not just a resolver.",[10,439,441],{"id":440},"replace-the-image-component","Replace the image component",[15,443,444,447,448,451,452,455],{},[19,445,446],{},"Image.extend({ addNodeView() { return VueNodeViewRenderer(ImageView) } })"," retains the codec and resource protocol. Read ",[19,449,450],{},"nodeView.status"," for loading\u002Fready\u002Ferror and use the resolved ",[19,453,454],{},"nodeView.resource",". Mutate source through guarded attribute actions.",[15,457,458,459,462],{},"Add design-system controls, title forms and error UI without moving content out of CodeMirror or changing only a DOM ",[19,460,461],{},"src"," and treating that as saved data. Resource display and persistent source edits have different owners.",[10,464,466],{"id":465},"links-and-external-navigation","Links and external navigation",[15,468,469,472],{},[19,470,471],{},"Link.configure({ openLink })"," controls safe link opening after an explicit user action. Projection building and resource loading must not navigate. Reference-style syntax, relative paths and special schemes need codec-specific handling; successful display does not prove every spelling supports exact field writes.",[10,474,476],{"id":475},"verification","Verification",[15,478,479,480,484,485,489],{},"Cover success, HTTP failure, non-image responses, oversized data, late responses, deletion, readonly and undo; verify paste and drop both with an uploader and inline. Ensure object URLs are released and Markdown retains durable identifiers. Continue with ",[426,481,483],{"href":482},"\u002Fen\u002Fextensions\u002Fresources","Resources"," and ",[426,486,488],{"href":487},"\u002Fen\u002Fcustomization\u002Ftheme","UI and themes",".",[491,492,493],"style",{},"html pre.shiki code .sDD9d, html code.shiki .sDD9d{--shiki-default:#D73A49;--shiki-light:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVPnS, html code.shiki .sVPnS{--shiki-default:#24292E;--shiki-light:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s-HEn, html code.shiki .s-HEn{--shiki-default:#032F62;--shiki-light:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sUNQB, html code.shiki .sUNQB{--shiki-default:#005CC5;--shiki-light:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sgQzM, html code.shiki .sgQzM{--shiki-default:#6F42C1;--shiki-light:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sde8i, html code.shiki .sde8i{--shiki-default:#E36209;--shiki-light:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sqmzS, html code.shiki .sqmzS{--shiki-default:#6A737D;--shiki-light:#6A737D;--shiki-dark:#6A737D}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 .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 .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":66,"searchDepth":97,"depth":97,"links":495},[496,497,498,499,500,501],{"id":12,"depth":97,"text":13},{"id":47,"depth":97,"text":48},{"id":361,"depth":97,"text":362},{"id":440,"depth":97,"text":441},{"id":465,"depth":97,"text":466},{"id":475,"depth":97,"text":476},"Resolve private assets, release resources and preserve durable source identifiers.","md",[505,357,58,506,507,508],"Image","openLink","asset","ObjectURL","en",{},"\u002Fen\u002Fcustomization\u002Fimages",{"title":5,"description":502},"customization\u002Fimages.en","K9HdJ-_5j96XUeXZVphBS0SppuZhEnrHe9OJMEv-v8E","import { Image } from \"@quirekit\u002Fmsfe-image\";\nimport { StarterKit } from \"@quirekit\u002Fmsfe-starter-kit\";\n\u002F** A same-origin asset resolver; authentication remains in the host fetch policy. *\u002F\nexport const PrivateImages = Image.configure({\n  \u002F** @param source - Canonical asset reference. @param signal - This image's lifetime. @returns One browser resource lease. *\u002F\n  async resolve(source, signal) {\n    const match = \u002F^\\\u002Fassets\\\u002F([a-zA-Z0-9_-]+)$\u002F.exec(source);\n    if (!match) throw new Error(\"unsupported-asset-reference\");\n    const response = await fetch(`\u002Fapi\u002Fassets\u002F${encodeURIComponent(match[1]!)}`, { signal, credentials: \"same-origin\" });\n    if (!response.ok) throw new Error(`asset-http-${response.status}`);\n    const blob = await response.blob();\n    if (!\u002F^image\\\u002F(png|jpeg|webp|gif)$\u002F.test(blob.type) || blob.size > 5_000_000) throw new Error(\"unsupported-image\");\n    const url = URL.createObjectURL(blob);\n    return { url, release() { URL.revokeObjectURL(url); } };\n  },\n});\n\u002F** Replace the preset's image owner; the host must implement GET \u002Fapi\u002Fassets\u002F:id. *\u002F\nexport const privateImageKit = StarterKit.configure({ image: PrivateImages });\n",{"data":517,"body":518},{},{"type":519,"children":520},"root",[521,1302],{"type":522,"tag":61,"props":523,"children":525},"element",{"className":63,"code":524,"language":65,"meta":66,"style":66},"import { Image } from \"@quirekit\u002Fmsfe-image\";\nimport { StarterKit } from \"@quirekit\u002Fmsfe-starter-kit\";\n\u002F** A same-origin asset resolver; authentication remains in the host fetch policy. *\u002F\nexport const PrivateImages = Image.configure({\n  \u002F** @param source - Canonical asset reference. @param signal - This image's lifetime. @returns One browser resource lease. *\u002F\n  async resolve(source, signal) {\n    const match = \u002F^\\\u002Fassets\\\u002F([a-zA-Z0-9_-]+)$\u002F.exec(source);\n    if (!match) throw new Error(\"unsupported-asset-reference\");\n    const response = await fetch(`\u002Fapi\u002Fassets\u002F${encodeURIComponent(match[1]!)}`, { signal, credentials: \"same-origin\" });\n    if (!response.ok) throw new Error(`asset-http-${response.status}`);\n    const blob = await response.blob();\n    if (!\u002F^image\\\u002F(png|jpeg|webp|gif)$\u002F.test(blob.type) || blob.size > 5_000_000) throw new Error(\"unsupported-image\");\n    const url = URL.createObjectURL(blob);\n    return { url, release() { URL.revokeObjectURL(url); } };\n  },\n});\n\u002F** Replace the preset's image owner; the host must implement GET \u002Fapi\u002Fassets\u002F:id. *\u002F\nexport const privateImageKit = StarterKit.configure({ image: PrivateImages });\n\n",[526],{"type":522,"tag":19,"props":527,"children":528},{"__ignoreMap":66},[529,559,584,593,630,677,711,796,842,931,993,1027,1164,1199,1241,1249,1258,1267],{"type":522,"tag":70,"props":530,"children":531},{"class":72,"line":73},[532,538,544,548,554],{"type":522,"tag":70,"props":533,"children":535},{"style":534},"--shiki-default:#D73A49;--shiki-light:#D73A49;--shiki-dark:#F97583",[536],{"type":537,"value":77},"text",{"type":522,"tag":70,"props":539,"children":541},{"style":540},"--shiki-default:#24292E;--shiki-light:#24292E;--shiki-dark:#E1E4E8",[542],{"type":537,"value":543}," { Image } ",{"type":522,"tag":70,"props":545,"children":546},{"style":534},[547],{"type":537,"value":90},{"type":522,"tag":70,"props":549,"children":551},{"style":550},"--shiki-default:#032F62;--shiki-light:#032F62;--shiki-dark:#9ECBFF",[552],{"type":537,"value":553}," \"@quirekit\u002Fmsfe-image\"",{"type":522,"tag":70,"props":555,"children":556},{"style":540},[557],{"type":537,"value":558},";\n",{"type":522,"tag":70,"props":560,"children":561},{"class":72,"line":97},[562,566,571,575,580],{"type":522,"tag":70,"props":563,"children":564},{"style":534},[565],{"type":537,"value":77},{"type":522,"tag":70,"props":567,"children":568},{"style":540},[569],{"type":537,"value":570}," { StarterKit } ",{"type":522,"tag":70,"props":572,"children":573},{"style":534},[574],{"type":537,"value":90},{"type":522,"tag":70,"props":576,"children":577},{"style":550},[578],{"type":537,"value":579}," \"@quirekit\u002Fmsfe-starter-kit\"",{"type":522,"tag":70,"props":581,"children":582},{"style":540},[583],{"type":537,"value":558},{"type":522,"tag":70,"props":585,"children":586},{"class":72,"line":104},[587],{"type":522,"tag":70,"props":588,"children":590},{"style":589},"--shiki-default:#6A737D;--shiki-light:#6A737D;--shiki-dark:#6A737D",[591],{"type":537,"value":592},"\u002F** A same-origin asset resolver; authentication remains in the host fetch policy. *\u002F\n",{"type":522,"tag":70,"props":594,"children":595},{"class":72,"line":127},[596,601,606,612,616,621,626],{"type":522,"tag":70,"props":597,"children":598},{"style":534},[599],{"type":537,"value":600},"export",{"type":522,"tag":70,"props":602,"children":603},{"style":534},[604],{"type":537,"value":605}," const",{"type":522,"tag":70,"props":607,"children":609},{"style":608},"--shiki-default:#005CC5;--shiki-light:#005CC5;--shiki-dark:#79B8FF",[610],{"type":537,"value":611}," PrivateImages",{"type":522,"tag":70,"props":613,"children":614},{"style":534},[615],{"type":537,"value":121},{"type":522,"tag":70,"props":617,"children":618},{"style":540},[619],{"type":537,"value":620}," Image.",{"type":522,"tag":70,"props":622,"children":624},{"style":623},"--shiki-default:#6F42C1;--shiki-light:#6F42C1;--shiki-dark:#B392F0",[625],{"type":537,"value":316},{"type":522,"tag":70,"props":627,"children":628},{"style":540},[629],{"type":537,"value":385},{"type":522,"tag":70,"props":631,"children":632},{"class":72,"line":163},[633,638,643,648,653,657,662,667,672],{"type":522,"tag":70,"props":634,"children":635},{"style":589},[636],{"type":537,"value":637},"  \u002F** ",{"type":522,"tag":70,"props":639,"children":640},{"style":534},[641],{"type":537,"value":642},"@param",{"type":522,"tag":70,"props":644,"children":645},{"style":540},[646],{"type":537,"value":647}," source",{"type":522,"tag":70,"props":649,"children":650},{"style":589},[651],{"type":537,"value":652}," - Canonical asset reference. ",{"type":522,"tag":70,"props":654,"children":655},{"style":534},[656],{"type":537,"value":642},{"type":522,"tag":70,"props":658,"children":659},{"style":540},[660],{"type":537,"value":661}," signal",{"type":522,"tag":70,"props":663,"children":664},{"style":589},[665],{"type":537,"value":666}," - This image's lifetime. ",{"type":522,"tag":70,"props":668,"children":669},{"style":534},[670],{"type":537,"value":671},"@returns",{"type":522,"tag":70,"props":673,"children":674},{"style":589},[675],{"type":537,"value":676}," One browser resource lease. *\u002F\n",{"type":522,"tag":70,"props":678,"children":679},{"class":72,"line":183},[680,684,689,693,698,702,706],{"type":522,"tag":70,"props":681,"children":682},{"style":534},[683],{"type":537,"value":130},{"type":522,"tag":70,"props":685,"children":686},{"style":623},[687],{"type":537,"value":688}," resolve",{"type":522,"tag":70,"props":690,"children":691},{"style":540},[692],{"type":537,"value":136},{"type":522,"tag":70,"props":694,"children":696},{"style":695},"--shiki-default:#E36209;--shiki-light:#E36209;--shiki-dark:#FFAB70",[697],{"type":537,"value":146},{"type":522,"tag":70,"props":699,"children":700},{"style":540},[701],{"type":537,"value":149},{"type":522,"tag":70,"props":703,"children":704},{"style":695},[705],{"type":537,"value":157},{"type":522,"tag":70,"props":707,"children":708},{"style":540},[709],{"type":537,"value":710},") {\n",{"type":522,"tag":70,"props":712,"children":713},{"class":72,"line":209},[714,718,723,727,732,737,743,749,753,757,762,767,772,777,782,786,791],{"type":522,"tag":70,"props":715,"children":716},{"style":534},[717],{"type":537,"value":166},{"type":522,"tag":70,"props":719,"children":720},{"style":608},[721],{"type":537,"value":722}," match",{"type":522,"tag":70,"props":724,"children":725},{"style":534},[726],{"type":537,"value":121},{"type":522,"tag":70,"props":728,"children":729},{"style":550},[730],{"type":537,"value":731}," \u002F",{"type":522,"tag":70,"props":733,"children":734},{"style":534},[735],{"type":537,"value":736},"^",{"type":522,"tag":70,"props":738,"children":740},{"style":739},"--shiki-default:#22863A;--shiki-default-font-weight:bold;--shiki-light:#22863A;--shiki-light-font-weight:bold;--shiki-dark:#85E89D;--shiki-dark-font-weight:bold",[741],{"type":537,"value":742},"\\\u002F",{"type":522,"tag":70,"props":744,"children":746},{"style":745},"--shiki-default:#032F62;--shiki-light:#032F62;--shiki-dark:#DBEDFF",[747],{"type":537,"value":748},"assets",{"type":522,"tag":70,"props":750,"children":751},{"style":739},[752],{"type":537,"value":742},{"type":522,"tag":70,"props":754,"children":755},{"style":745},[756],{"type":537,"value":136},{"type":522,"tag":70,"props":758,"children":759},{"style":608},[760],{"type":537,"value":761},"[a-zA-Z0-9_-]",{"type":522,"tag":70,"props":763,"children":764},{"style":534},[765],{"type":537,"value":766},"+",{"type":522,"tag":70,"props":768,"children":769},{"style":745},[770],{"type":537,"value":771},")",{"type":522,"tag":70,"props":773,"children":774},{"style":534},[775],{"type":537,"value":776},"$",{"type":522,"tag":70,"props":778,"children":779},{"style":550},[780],{"type":537,"value":781},"\u002F",{"type":522,"tag":70,"props":783,"children":784},{"style":540},[785],{"type":537,"value":489},{"type":522,"tag":70,"props":787,"children":788},{"style":623},[789],{"type":537,"value":790},"exec",{"type":522,"tag":70,"props":792,"children":793},{"style":540},[794],{"type":537,"value":795},"(source);\n",{"type":522,"tag":70,"props":797,"children":798},{"class":72,"line":239},[799,803,807,811,816,820,824,828,832,837],{"type":522,"tag":70,"props":800,"children":801},{"style":534},[802],{"type":537,"value":242},{"type":522,"tag":70,"props":804,"children":805},{"style":540},[806],{"type":537,"value":245},{"type":522,"tag":70,"props":808,"children":809},{"style":534},[810],{"type":537,"value":248},{"type":522,"tag":70,"props":812,"children":813},{"style":540},[814],{"type":537,"value":815},"match) ",{"type":522,"tag":70,"props":817,"children":818},{"style":534},[819],{"type":537,"value":254},{"type":522,"tag":70,"props":821,"children":822},{"style":534},[823],{"type":537,"value":174},{"type":522,"tag":70,"props":825,"children":826},{"style":623},[827],{"type":537,"value":259},{"type":522,"tag":70,"props":829,"children":830},{"style":540},[831],{"type":537,"value":136},{"type":522,"tag":70,"props":833,"children":834},{"style":550},[835],{"type":537,"value":836},"\"unsupported-asset-reference\"",{"type":522,"tag":70,"props":838,"children":839},{"style":540},[840],{"type":537,"value":841},");\n",{"type":522,"tag":70,"props":843,"children":844},{"class":72,"line":269},[845,849,853,857,861,865,869,874,879,883,888,893,898,903,907,911,916,921,926],{"type":522,"tag":70,"props":846,"children":847},{"style":534},[848],{"type":537,"value":166},{"type":522,"tag":70,"props":850,"children":851},{"style":608},[852],{"type":537,"value":214},{"type":522,"tag":70,"props":854,"children":855},{"style":534},[856],{"type":537,"value":121},{"type":522,"tag":70,"props":858,"children":859},{"style":534},[860],{"type":537,"value":219},{"type":522,"tag":70,"props":862,"children":863},{"style":623},[864],{"type":537,"value":222},{"type":522,"tag":70,"props":866,"children":867},{"style":540},[868],{"type":537,"value":136},{"type":522,"tag":70,"props":870,"children":871},{"style":550},[872],{"type":537,"value":873},"`\u002Fapi\u002Fassets\u002F${",{"type":522,"tag":70,"props":875,"children":876},{"style":623},[877],{"type":537,"value":878},"encodeURIComponent",{"type":522,"tag":70,"props":880,"children":881},{"style":550},[882],{"type":537,"value":136},{"type":522,"tag":70,"props":884,"children":885},{"style":540},[886],{"type":537,"value":887},"match",{"type":522,"tag":70,"props":889,"children":890},{"style":550},[891],{"type":537,"value":892},"[",{"type":522,"tag":70,"props":894,"children":895},{"style":608},[896],{"type":537,"value":897},"1",{"type":522,"tag":70,"props":899,"children":900},{"style":550},[901],{"type":537,"value":902},"]",{"type":522,"tag":70,"props":904,"children":905},{"style":534},[906],{"type":537,"value":248},{"type":522,"tag":70,"props":908,"children":909},{"style":550},[910],{"type":537,"value":771},{"type":522,"tag":70,"props":912,"children":913},{"style":550},[914],{"type":537,"value":915},"}`",{"type":522,"tag":70,"props":917,"children":918},{"style":540},[919],{"type":537,"value":920},", { signal, credentials: ",{"type":522,"tag":70,"props":922,"children":923},{"style":550},[924],{"type":537,"value":925},"\"same-origin\"",{"type":522,"tag":70,"props":927,"children":928},{"style":540},[929],{"type":537,"value":930}," });\n",{"type":522,"tag":70,"props":932,"children":933},{"class":72,"line":293},[934,938,942,946,950,954,958,962,966,971,976,980,985,989],{"type":522,"tag":70,"props":935,"children":936},{"style":534},[937],{"type":537,"value":242},{"type":522,"tag":70,"props":939,"children":940},{"style":540},[941],{"type":537,"value":245},{"type":522,"tag":70,"props":943,"children":944},{"style":534},[945],{"type":537,"value":248},{"type":522,"tag":70,"props":947,"children":948},{"style":540},[949],{"type":537,"value":251},{"type":522,"tag":70,"props":951,"children":952},{"style":534},[953],{"type":537,"value":254},{"type":522,"tag":70,"props":955,"children":956},{"style":534},[957],{"type":537,"value":174},{"type":522,"tag":70,"props":959,"children":960},{"style":623},[961],{"type":537,"value":259},{"type":522,"tag":70,"props":963,"children":964},{"style":540},[965],{"type":537,"value":136},{"type":522,"tag":70,"props":967,"children":968},{"style":550},[969],{"type":537,"value":970},"`asset-http-${",{"type":522,"tag":70,"props":972,"children":973},{"style":540},[974],{"type":537,"value":975},"response",{"type":522,"tag":70,"props":977,"children":978},{"style":550},[979],{"type":537,"value":489},{"type":522,"tag":70,"props":981,"children":982},{"style":540},[983],{"type":537,"value":984},"status",{"type":522,"tag":70,"props":986,"children":987},{"style":550},[988],{"type":537,"value":915},{"type":522,"tag":70,"props":990,"children":991},{"style":540},[992],{"type":537,"value":841},{"type":522,"tag":70,"props":994,"children":995},{"class":72,"line":299},[996,1000,1005,1009,1013,1017,1022],{"type":522,"tag":70,"props":997,"children":998},{"style":534},[999],{"type":537,"value":166},{"type":522,"tag":70,"props":1001,"children":1002},{"style":608},[1003],{"type":537,"value":1004}," blob",{"type":522,"tag":70,"props":1006,"children":1007},{"style":534},[1008],{"type":537,"value":121},{"type":522,"tag":70,"props":1010,"children":1011},{"style":534},[1012],{"type":537,"value":219},{"type":522,"tag":70,"props":1014,"children":1015},{"style":540},[1016],{"type":537,"value":280},{"type":522,"tag":70,"props":1018,"children":1019},{"style":623},[1020],{"type":537,"value":1021},"blob",{"type":522,"tag":70,"props":1023,"children":1024},{"style":540},[1025],{"type":537,"value":1026},"();\n",{"type":522,"tag":70,"props":1028,"children":1029},{"class":72,"line":305},[1030,1034,1038,1042,1046,1050,1055,1059,1064,1069,1074,1078,1083,1087,1092,1096,1100,1104,1109,1114,1119,1124,1129,1134,1139,1143,1147,1151,1155,1160],{"type":522,"tag":70,"props":1031,"children":1032},{"style":534},[1033],{"type":537,"value":242},{"type":522,"tag":70,"props":1035,"children":1036},{"style":540},[1037],{"type":537,"value":245},{"type":522,"tag":70,"props":1039,"children":1040},{"style":534},[1041],{"type":537,"value":248},{"type":522,"tag":70,"props":1043,"children":1044},{"style":550},[1045],{"type":537,"value":781},{"type":522,"tag":70,"props":1047,"children":1048},{"style":534},[1049],{"type":537,"value":736},{"type":522,"tag":70,"props":1051,"children":1052},{"style":745},[1053],{"type":537,"value":1054},"image",{"type":522,"tag":70,"props":1056,"children":1057},{"style":739},[1058],{"type":537,"value":742},{"type":522,"tag":70,"props":1060,"children":1061},{"style":745},[1062],{"type":537,"value":1063},"(png",{"type":522,"tag":70,"props":1065,"children":1066},{"style":534},[1067],{"type":537,"value":1068},"|",{"type":522,"tag":70,"props":1070,"children":1071},{"style":745},[1072],{"type":537,"value":1073},"jpeg",{"type":522,"tag":70,"props":1075,"children":1076},{"style":534},[1077],{"type":537,"value":1068},{"type":522,"tag":70,"props":1079,"children":1080},{"style":745},[1081],{"type":537,"value":1082},"webp",{"type":522,"tag":70,"props":1084,"children":1085},{"style":534},[1086],{"type":537,"value":1068},{"type":522,"tag":70,"props":1088,"children":1089},{"style":745},[1090],{"type":537,"value":1091},"gif)",{"type":522,"tag":70,"props":1093,"children":1094},{"style":534},[1095],{"type":537,"value":776},{"type":522,"tag":70,"props":1097,"children":1098},{"style":550},[1099],{"type":537,"value":781},{"type":522,"tag":70,"props":1101,"children":1102},{"style":540},[1103],{"type":537,"value":489},{"type":522,"tag":70,"props":1105,"children":1106},{"style":623},[1107],{"type":537,"value":1108},"test",{"type":522,"tag":70,"props":1110,"children":1111},{"style":540},[1112],{"type":537,"value":1113},"(blob.type) ",{"type":522,"tag":70,"props":1115,"children":1116},{"style":534},[1117],{"type":537,"value":1118},"||",{"type":522,"tag":70,"props":1120,"children":1121},{"style":540},[1122],{"type":537,"value":1123}," blob.size ",{"type":522,"tag":70,"props":1125,"children":1126},{"style":534},[1127],{"type":537,"value":1128},">",{"type":522,"tag":70,"props":1130,"children":1131},{"style":608},[1132],{"type":537,"value":1133}," 5_000_000",{"type":522,"tag":70,"props":1135,"children":1136},{"style":540},[1137],{"type":537,"value":1138},") ",{"type":522,"tag":70,"props":1140,"children":1141},{"style":534},[1142],{"type":537,"value":254},{"type":522,"tag":70,"props":1144,"children":1145},{"style":534},[1146],{"type":537,"value":174},{"type":522,"tag":70,"props":1148,"children":1149},{"style":623},[1150],{"type":537,"value":259},{"type":522,"tag":70,"props":1152,"children":1153},{"style":540},[1154],{"type":537,"value":136},{"type":522,"tag":70,"props":1156,"children":1157},{"style":550},[1158],{"type":537,"value":1159},"\"unsupported-image\"",{"type":522,"tag":70,"props":1161,"children":1162},{"style":540},[1163],{"type":537,"value":841},{"type":522,"tag":70,"props":1165,"children":1166},{"class":72,"line":310},[1167,1171,1176,1180,1185,1189,1194],{"type":522,"tag":70,"props":1168,"children":1169},{"style":534},[1170],{"type":537,"value":166},{"type":522,"tag":70,"props":1172,"children":1173},{"style":608},[1174],{"type":537,"value":1175}," url",{"type":522,"tag":70,"props":1177,"children":1178},{"style":534},[1179],{"type":537,"value":121},{"type":522,"tag":70,"props":1181,"children":1182},{"style":608},[1183],{"type":537,"value":1184}," URL",{"type":522,"tag":70,"props":1186,"children":1187},{"style":540},[1188],{"type":537,"value":489},{"type":522,"tag":70,"props":1190,"children":1191},{"style":623},[1192],{"type":537,"value":1193},"createObjectURL",{"type":522,"tag":70,"props":1195,"children":1196},{"style":540},[1197],{"type":537,"value":1198},"(blob);\n",{"type":522,"tag":70,"props":1200,"children":1202},{"class":72,"line":1201},14,[1203,1207,1212,1217,1222,1227,1231,1236],{"type":522,"tag":70,"props":1204,"children":1205},{"style":534},[1206],{"type":537,"value":272},{"type":522,"tag":70,"props":1208,"children":1209},{"style":540},[1210],{"type":537,"value":1211}," { url, ",{"type":522,"tag":70,"props":1213,"children":1214},{"style":623},[1215],{"type":537,"value":1216},"release",{"type":522,"tag":70,"props":1218,"children":1219},{"style":540},[1220],{"type":537,"value":1221},"() { ",{"type":522,"tag":70,"props":1223,"children":1224},{"style":608},[1225],{"type":537,"value":1226},"URL",{"type":522,"tag":70,"props":1228,"children":1229},{"style":540},[1230],{"type":537,"value":489},{"type":522,"tag":70,"props":1232,"children":1233},{"style":623},[1234],{"type":537,"value":1235},"revokeObjectURL",{"type":522,"tag":70,"props":1237,"children":1238},{"style":540},[1239],{"type":537,"value":1240},"(url); } };\n",{"type":522,"tag":70,"props":1242,"children":1244},{"class":72,"line":1243},15,[1245],{"type":522,"tag":70,"props":1246,"children":1247},{"style":540},[1248],{"type":537,"value":296},{"type":522,"tag":70,"props":1250,"children":1252},{"class":72,"line":1251},16,[1253],{"type":522,"tag":70,"props":1254,"children":1255},{"style":540},[1256],{"type":537,"value":1257},"});\n",{"type":522,"tag":70,"props":1259,"children":1261},{"class":72,"line":1260},17,[1262],{"type":522,"tag":70,"props":1263,"children":1264},{"style":589},[1265],{"type":537,"value":1266},"\u002F** Replace the preset's image owner; the host must implement GET \u002Fapi\u002Fassets\u002F:id. *\u002F\n",{"type":522,"tag":70,"props":1268,"children":1270},{"class":72,"line":1269},18,[1271,1275,1279,1284,1288,1293,1297],{"type":522,"tag":70,"props":1272,"children":1273},{"style":534},[1274],{"type":537,"value":600},{"type":522,"tag":70,"props":1276,"children":1277},{"style":534},[1278],{"type":537,"value":605},{"type":522,"tag":70,"props":1280,"children":1281},{"style":608},[1282],{"type":537,"value":1283}," privateImageKit",{"type":522,"tag":70,"props":1285,"children":1286},{"style":534},[1287],{"type":537,"value":121},{"type":522,"tag":70,"props":1289,"children":1290},{"style":540},[1291],{"type":537,"value":1292}," StarterKit.",{"type":522,"tag":70,"props":1294,"children":1295},{"style":623},[1296],{"type":537,"value":316},{"type":522,"tag":70,"props":1298,"children":1299},{"style":540},[1300],{"type":537,"value":1301},"({ image: PrivateImages });\n",{"type":522,"tag":491,"props":1303,"children":1304},{},[1305],{"type":537,"value":1306},"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 .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 .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);}",1793046312758]