[{"data":1,"prerenderedAt":878},["ShallowReactive",2],{"navigation_docs":3,"-advanced-custom-provider":208,"-advanced-custom-provider-surround":873},[4,30,47,195],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Get Started","\u002Fget-started","1.get-started",[9,13,17,21,25],{"title":10,"path":11,"stem":12},"Installation","\u002Fget-started\u002Finstallation","1.get-started\u002F1.installation",{"title":14,"path":15,"stem":16},"Configuration","\u002Fget-started\u002Fconfiguration","1.get-started\u002F2.configuration",{"title":18,"path":19,"stem":20},"Providers","\u002Fget-started\u002Fproviders","1.get-started\u002F3.providers",{"title":22,"path":23,"stem":24},"Contributing","\u002Fget-started\u002Fcontributing","1.get-started\u002F4.contributing",{"title":26,"path":27,"stem":28},"Migration","\u002Fget-started\u002Fmigration","1.get-started\u002F5.migration",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Usage","\u002Fusage","2.usage",[35,39,43],{"title":36,"path":37,"stem":38},"\u003CNuxtImg>","\u002Fusage\u002Fnuxt-img","2.usage\u002F1.nuxt-img",{"title":40,"path":41,"stem":42},"\u003CNuxtPicture>","\u002Fusage\u002Fnuxt-picture","2.usage\u002F2.nuxt-picture",{"title":44,"path":45,"stem":46},"useImage()","\u002Fusage\u002Fuse-image","2.usage\u002F3.use-image",{"title":18,"path":48,"stem":49,"children":50,"page":29},"\u002Fproviders","3.providers",[51,55,59,63,67,71,75,79,83,87,91,95,99,103,107,111,115,119,123,127,131,135,139,143,147,151,155,159,163,167,171,175,179,183,187,191],{"title":52,"path":53,"stem":54},"Aliyun","\u002Fproviders\u002Faliyun","3.providers\u002Faliyun",{"title":56,"path":57,"stem":58},"AWS Amplify","\u002Fproviders\u002Faws-amplify","3.providers\u002Faws-amplify",{"title":60,"path":61,"stem":62},"Builder.io","\u002Fproviders\u002Fbuilderio","3.providers\u002Fbuilderio",{"title":64,"path":65,"stem":66},"Bunny","\u002Fproviders\u002Fbunny","3.providers\u002Fbunny",{"title":68,"path":69,"stem":70},"Caisy","\u002Fproviders\u002Fcaisy","3.providers\u002Fcaisy",{"title":72,"path":73,"stem":74},"Cloudflare","\u002Fproviders\u002Fcloudflare","3.providers\u002Fcloudflare",{"title":76,"path":77,"stem":78},"Cloudimage","\u002Fproviders\u002Fcloudimage","3.providers\u002Fcloudimage",{"title":80,"path":81,"stem":82},"Cloudinary","\u002Fproviders\u002Fcloudinary","3.providers\u002Fcloudinary",{"title":84,"path":85,"stem":86},"Contentful","\u002Fproviders\u002Fcontentful","3.providers\u002Fcontentful",{"title":88,"path":89,"stem":90},"Directus","\u002Fproviders\u002Fdirectus","3.providers\u002Fdirectus",{"title":92,"path":93,"stem":94},"Fastly","\u002Fproviders\u002Ffastly","3.providers\u002Ffastly",{"title":96,"path":97,"stem":98},"Filerobot","\u002Fproviders\u002Ffilerobot","3.providers\u002Ffilerobot",{"title":100,"path":101,"stem":102},"GitHub","\u002Fproviders\u002Fgithub","3.providers\u002Fgithub",{"title":104,"path":105,"stem":106},"Glide","\u002Fproviders\u002Fglide","3.providers\u002Fglide",{"title":108,"path":109,"stem":110},"Gumlet","\u002Fproviders\u002Fgumlet","3.providers\u002Fgumlet",{"title":112,"path":113,"stem":114},"Hygraph","\u002Fproviders\u002Fhygraph","3.providers\u002Fhygraph",{"title":116,"path":117,"stem":118},"ImageEngine","\u002Fproviders\u002Fimageengine","3.providers\u002Fimageengine",{"title":120,"path":121,"stem":122},"ImageKit","\u002Fproviders\u002Fimagekit","3.providers\u002Fimagekit",{"title":124,"path":125,"stem":126},"Imgix","\u002Fproviders\u002Fimgix","3.providers\u002Fimgix",{"title":128,"path":129,"stem":130},"IPX","\u002Fproviders\u002Fipx","3.providers\u002Fipx",{"title":132,"path":133,"stem":134},"Netlify","\u002Fproviders\u002Fnetlify","3.providers\u002Fnetlify",{"title":136,"path":137,"stem":138},"None","\u002Fproviders\u002Fnone","3.providers\u002Fnone",{"title":140,"path":141,"stem":142},"Picsum","\u002Fproviders\u002Fpicsum","3.providers\u002Fpicsum",{"title":144,"path":145,"stem":146},"Prepr","\u002Fproviders\u002Fprepr","3.providers\u002Fprepr",{"title":148,"path":149,"stem":150},"Prismic","\u002Fproviders\u002Fprismic","3.providers\u002Fprismic",{"title":152,"path":153,"stem":154},"Sanity","\u002Fproviders\u002Fsanity","3.providers\u002Fsanity",{"title":156,"path":157,"stem":158},"Shopify","\u002Fproviders\u002Fshopify","3.providers\u002Fshopify",{"title":160,"path":161,"stem":162},"Sirv","\u002Fproviders\u002Fsirv","3.providers\u002Fsirv",{"title":164,"path":165,"stem":166},"Storyblok","\u002Fproviders\u002Fstoryblok","3.providers\u002Fstoryblok",{"title":168,"path":169,"stem":170},"Strapi","\u002Fproviders\u002Fstrapi","3.providers\u002Fstrapi",{"title":172,"path":173,"stem":174},"Supabase","\u002Fproviders\u002Fsupabase","3.providers\u002Fsupabase",{"title":176,"path":177,"stem":178},"Twicpics","\u002Fproviders\u002Ftwicpics","3.providers\u002Ftwicpics",{"title":180,"path":181,"stem":182},"Unsplash","\u002Fproviders\u002Funsplash","3.providers\u002Funsplash",{"title":184,"path":185,"stem":186},"Uploadcare","\u002Fproviders\u002Fuploadcare","3.providers\u002Fuploadcare",{"title":188,"path":189,"stem":190},"Vercel","\u002Fproviders\u002Fvercel","3.providers\u002Fvercel",{"title":192,"path":193,"stem":194},"Weserv","\u002Fproviders\u002Fweserv","3.providers\u002Fweserv",{"title":196,"path":197,"stem":198,"children":199,"page":29},"Advanced","\u002Fadvanced","4.advanced",[200,204],{"title":201,"path":202,"stem":203},"Custom Provider","\u002Fadvanced\u002Fcustom-provider","4.advanced\u002F1.custom-provider",{"title":205,"path":206,"stem":207},"Static Images","\u002Fadvanced\u002Fstatic-images","4.advanced\u002F2.static-images",{"id":209,"title":201,"body":210,"description":867,"extension":868,"links":869,"meta":870,"navigation":298,"path":202,"seo":871,"stem":203,"__hash__":872},"docs\u002F4.advanced\u002F1.custom-provider.md",{"type":211,"value":212,"toc":857},"minimark",[213,218,222,557,562,607,617,621,629,633,637,647,783,796,799,806,853],[214,215,217],"h2",{"id":216},"provider-entry","Provider Entry",[219,220,221],"p",{},"The runtime will receive a source, image modifiers and its provider options. It is responsible for generating a URL for optimized images, and needs to be isomorphic because it may be called on either server or client.",[223,224,230],"pre",{"className":225,"code":226,"filename":227,"language":228,"meta":229,"style":229},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { joinURL } from 'ufo'\nimport { createOperationsGenerator, defineProvider } from '@nuxt\u002Fimage\u002Fruntime'\n\nconst operationsGenerator = createOperationsGenerator()\n\nexport default defineProvider\u003C{ baseURL?: string }>({\n  getImage (src, { modifiers, baseURL }) {\n    if (!baseURL) {\n      \u002F\u002F also support runtime config \n      baseURL = useRuntimeConfig().public.siteUrl\n    }\n\n    const operations = operationsGenerator(modifiers)\n\n    return {\n      url: joinURL(baseURL, src + (operations ? '?' + operations : ''))\n    }\n  }\n})\n","providers\u002Fmy-provider.ts","ts","",[231,232,233,266,293,300,319,324,358,388,407,414,440,446,451,473,478,486,538,543,549],"code",{"__ignoreMap":229},[234,235,238,242,246,250,253,256,259,263],"span",{"class":236,"line":237},"line",1,[234,239,241],{"class":240},"s7zQu","import",[234,243,245],{"class":244},"sMK4o"," {",[234,247,249],{"class":248},"sTEyZ"," joinURL",[234,251,252],{"class":244}," }",[234,254,255],{"class":240}," from",[234,257,258],{"class":244}," '",[234,260,262],{"class":261},"sfazB","ufo",[234,264,265],{"class":244},"'\n",[234,267,269,271,273,276,279,282,284,286,288,291],{"class":236,"line":268},2,[234,270,241],{"class":240},[234,272,245],{"class":244},[234,274,275],{"class":248}," createOperationsGenerator",[234,277,278],{"class":244},",",[234,280,281],{"class":248}," defineProvider",[234,283,252],{"class":244},[234,285,255],{"class":240},[234,287,258],{"class":244},[234,289,290],{"class":261},"@nuxt\u002Fimage\u002Fruntime",[234,292,265],{"class":244},[234,294,296],{"class":236,"line":295},3,[234,297,299],{"emptyLinePlaceholder":298},true,"\n",[234,301,303,307,310,313,316],{"class":236,"line":302},4,[234,304,306],{"class":305},"spNyl","const",[234,308,309],{"class":248}," operationsGenerator ",[234,311,312],{"class":244},"=",[234,314,275],{"class":315},"s2Zo4",[234,317,318],{"class":248},"()\n",[234,320,322],{"class":236,"line":321},5,[234,323,299],{"emptyLinePlaceholder":298},[234,325,327,330,333,335,338,342,345,349,352,355],{"class":236,"line":326},6,[234,328,329],{"class":240},"export",[234,331,332],{"class":240}," default",[234,334,281],{"class":315},[234,336,337],{"class":244},"\u003C{",[234,339,341],{"class":340},"swJcz"," baseURL",[234,343,344],{"class":244},"?:",[234,346,348],{"class":347},"sBMFI"," string",[234,350,351],{"class":244}," }>",[234,353,354],{"class":248},"(",[234,356,357],{"class":244},"{\n",[234,359,361,364,367,371,373,375,378,380,382,385],{"class":236,"line":360},7,[234,362,363],{"class":340},"  getImage",[234,365,366],{"class":244}," (",[234,368,370],{"class":369},"sHdIc","src",[234,372,278],{"class":244},[234,374,245],{"class":244},[234,376,377],{"class":369}," modifiers",[234,379,278],{"class":244},[234,381,341],{"class":369},[234,383,384],{"class":244}," })",[234,386,387],{"class":244}," {\n",[234,389,391,394,396,399,402,405],{"class":236,"line":390},8,[234,392,393],{"class":240},"    if",[234,395,366],{"class":340},[234,397,398],{"class":244},"!",[234,400,401],{"class":248},"baseURL",[234,403,404],{"class":340},") ",[234,406,357],{"class":244},[234,408,410],{"class":236,"line":409},9,[234,411,413],{"class":412},"sHwdD","      \u002F\u002F also support runtime config \n",[234,415,417,420,423,426,429,432,435,437],{"class":236,"line":416},10,[234,418,419],{"class":248},"      baseURL",[234,421,422],{"class":244}," =",[234,424,425],{"class":315}," useRuntimeConfig",[234,427,428],{"class":340},"()",[234,430,431],{"class":244},".",[234,433,434],{"class":248},"public",[234,436,431],{"class":244},[234,438,439],{"class":248},"siteUrl\n",[234,441,443],{"class":236,"line":442},11,[234,444,445],{"class":244},"    }\n",[234,447,449],{"class":236,"line":448},12,[234,450,299],{"emptyLinePlaceholder":298},[234,452,454,457,460,462,465,467,470],{"class":236,"line":453},13,[234,455,456],{"class":305},"    const",[234,458,459],{"class":248}," operations",[234,461,422],{"class":244},[234,463,464],{"class":315}," operationsGenerator",[234,466,354],{"class":340},[234,468,469],{"class":248},"modifiers",[234,471,472],{"class":340},")\n",[234,474,476],{"class":236,"line":475},14,[234,477,299],{"emptyLinePlaceholder":298},[234,479,481,484],{"class":236,"line":480},15,[234,482,483],{"class":240},"    return",[234,485,387],{"class":244},[234,487,489,492,495,497,499,501,503,506,509,511,514,517,519,522,525,527,529,532,535],{"class":236,"line":488},16,[234,490,491],{"class":340},"      url",[234,493,494],{"class":244},":",[234,496,249],{"class":315},[234,498,354],{"class":340},[234,500,401],{"class":248},[234,502,278],{"class":244},[234,504,505],{"class":248}," src",[234,507,508],{"class":244}," +",[234,510,366],{"class":340},[234,512,513],{"class":248},"operations",[234,515,516],{"class":244}," ?",[234,518,258],{"class":244},[234,520,521],{"class":261},"?",[234,523,524],{"class":244},"'",[234,526,508],{"class":244},[234,528,459],{"class":248},[234,530,531],{"class":244}," :",[234,533,534],{"class":244}," ''",[234,536,537],{"class":340},"))\n",[234,539,541],{"class":236,"line":540},17,[234,542,445],{"class":244},[234,544,546],{"class":236,"line":545},18,[234,547,548],{"class":244},"  }\n",[234,550,552,555],{"class":236,"line":551},19,[234,553,554],{"class":244},"}",[234,556,472],{"class":248},[558,559,561],"h3",{"id":560},"parameters","Parameters",[563,564,565,571,576],"ul",{},[566,567,568,570],"li",{},[231,569,370],{},": Source path of the image.",[566,572,573,575],{},[231,574,469],{},": List of image modifiers that are defined in the image component or as a preset.",[566,577,578,581,582,585,586],{},[231,579,580],{},"ctx",": (",[231,583,584],{},"ImageCTX",") Image module runtime context\n",[563,587,588,597],{},[566,589,590,581,593,596],{},[231,591,592],{},"options",[231,594,595],{},"CreateImageOptions",") Image module global runtime options",[566,598,599,602,603],{},[231,600,601],{},"$img",": The ",[604,605,606],"a",{"href":45},"$img helper",[219,608,609,613,614,616],{},[610,611,612],"strong",{},"Note:"," Values in ",[231,615,580],{}," might change. Use it with caution.",[558,618,620],{"id":619},"return","Return",[563,622,623],{},[566,624,625,628],{},[231,626,627],{},"url",": Absolute or relative URL of optimized image.",[214,630,632],{"id":631},"use-your-provider","Use Your Provider",[558,634,636],{"id":635},"register-provider","Register provider",[219,638,639,640,643,644,431],{},"After you create your own provider, you should register it in the ",[231,641,642],{},"nuxt.config",". In order to do that create a property inside ",[231,645,646],{},"image.provider",[223,648,651],{"className":225,"code":649,"filename":650,"language":228,"meta":229,"style":229},"export default defineNuxtConfig({\n  image: {\n    providers: {\n      myProvider: {\n        name: 'myProvider', \u002F\u002F optional value to overrider provider name\n        provider: '~\u002Fproviders\u002Fmy-provider.ts', \u002F\u002F Path to custom provider\n        options: {\n          \u002F\u002F ... provider options\n          baseURL: 'https:\u002F\u002Fsite.com'\n        }\n      }\n    }\n  }\n})\n","nuxt.config.ts",[231,652,653,666,675,684,693,712,731,740,745,759,764,769,773,777],{"__ignoreMap":229},[234,654,655,657,659,662,664],{"class":236,"line":237},[234,656,329],{"class":240},[234,658,332],{"class":240},[234,660,661],{"class":315}," defineNuxtConfig",[234,663,354],{"class":248},[234,665,357],{"class":244},[234,667,668,671,673],{"class":236,"line":268},[234,669,670],{"class":340},"  image",[234,672,494],{"class":244},[234,674,387],{"class":244},[234,676,677,680,682],{"class":236,"line":295},[234,678,679],{"class":340},"    providers",[234,681,494],{"class":244},[234,683,387],{"class":244},[234,685,686,689,691],{"class":236,"line":302},[234,687,688],{"class":340},"      myProvider",[234,690,494],{"class":244},[234,692,387],{"class":244},[234,694,695,698,700,702,705,707,709],{"class":236,"line":321},[234,696,697],{"class":340},"        name",[234,699,494],{"class":244},[234,701,258],{"class":244},[234,703,704],{"class":261},"myProvider",[234,706,524],{"class":244},[234,708,278],{"class":244},[234,710,711],{"class":412}," \u002F\u002F optional value to overrider provider name\n",[234,713,714,717,719,721,724,726,728],{"class":236,"line":326},[234,715,716],{"class":340},"        provider",[234,718,494],{"class":244},[234,720,258],{"class":244},[234,722,723],{"class":261},"~\u002Fproviders\u002Fmy-provider.ts",[234,725,524],{"class":244},[234,727,278],{"class":244},[234,729,730],{"class":412}," \u002F\u002F Path to custom provider\n",[234,732,733,736,738],{"class":236,"line":360},[234,734,735],{"class":340},"        options",[234,737,494],{"class":244},[234,739,387],{"class":244},[234,741,742],{"class":236,"line":390},[234,743,744],{"class":412},"          \u002F\u002F ... provider options\n",[234,746,747,750,752,754,757],{"class":236,"line":409},[234,748,749],{"class":340},"          baseURL",[234,751,494],{"class":244},[234,753,258],{"class":244},[234,755,756],{"class":261},"https:\u002F\u002Fsite.com",[234,758,265],{"class":244},[234,760,761],{"class":236,"line":416},[234,762,763],{"class":244},"        }\n",[234,765,766],{"class":236,"line":442},[234,767,768],{"class":244},"      }\n",[234,770,771],{"class":236,"line":448},[234,772,445],{"class":244},[234,774,775],{"class":236,"line":453},[234,776,548],{"class":244},[234,778,779,781],{"class":236,"line":475},[234,780,554],{"class":244},[234,782,472],{"class":248},[219,784,785,786,788,789,795],{},"There are plenty of useful utilities that can be used to write providers by importing from ",[231,787,290],{},". See ",[604,790,794],{"href":791,"rel":792},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fimage\u002Ftree\u002Fmain\u002Fsrc\u002Fruntime\u002Fproviders",[793],"nofollow","src\u002Fruntime\u002Fproviders"," for more info.",[558,797,31],{"id":798},"usage",[219,800,801,802,805],{},"Set attribute ",[231,803,804],{},"provider"," as your custom provider name.",[223,807,812],{"className":808,"code":809,"filename":810,"language":811,"meta":229,"style":229},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003CNuxtImg provider=\"myProvider\" src=\"\u002Fimage.png\" >\n\u003C!-- \u003Cimg src=\"https:\u002F\u002Fsite.com\u002Fimage.png\"> -->\n","pages\u002Findex.vue","vue",[231,813,814,848],{"__ignoreMap":229},[234,815,816,819,822,825,827,830,832,834,836,838,840,843,845],{"class":236,"line":237},[234,817,818],{"class":244},"\u003C",[234,820,821],{"class":340},"NuxtImg",[234,823,824],{"class":305}," provider",[234,826,312],{"class":244},[234,828,829],{"class":244},"\"",[234,831,704],{"class":261},[234,833,829],{"class":244},[234,835,505],{"class":305},[234,837,312],{"class":244},[234,839,829],{"class":244},[234,841,842],{"class":261},"\u002Fimage.png",[234,844,829],{"class":244},[234,846,847],{"class":244}," >\n",[234,849,850],{"class":236,"line":268},[234,851,852],{"class":248},"\u003C!-- \u003Cimg src=\"https:\u002F\u002Fsite.com\u002Fimage.png\"> -->\n",[854,855,856],"style",{},"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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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 .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 .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":229,"searchDepth":268,"depth":268,"links":858},[859,863],{"id":216,"depth":268,"text":217,"children":860},[861,862],{"id":560,"depth":295,"text":561},{"id":619,"depth":295,"text":620},{"id":631,"depth":268,"text":632,"children":864},[865,866],{"id":635,"depth":295,"text":636},{"id":798,"depth":295,"text":31},"If a CDN provider is not supported, you can define it yourself.","md",null,{},{"title":201,"description":867},"tZOb1AetQMma3qdsTdgIA0sXN9aexpcI5iNm-bdaOGo",[874,876],{"title":192,"path":193,"stem":194,"description":875,"children":-1},"Optimize images with Weserv's dynamic image transformation service.",{"title":205,"path":206,"stem":207,"description":877,"children":-1},"Optimizing images for static websites.",1774955434731]