[{"data":1,"prerenderedAt":1807},["ShallowReactive",2],{"docs-nav":3,"\u002Fdocs\u002Fdevelopment\u002Fevents":316},[4,9,15,19,24,28,33,37,41,45,49,53,57,60,63,67,70,74,77,81,85,89,93,97,101,105,109,113,117,121,125,129,133,137,141,145,149,153,156,159,162,165,168,171,175,178,181,184,186,189,192,195,198,201,204,207,210,213,216,219,222,225,228,231,234,237,240,244,247,250,253,257,261,264,267,270,273,276,279,282,285,287,290,293,296,299,302,305,308,311,313],{"path":5,"title":6,"section":7,"order":7,"sidebar":8},"\u002Fbrand","Brand",null,false,{"path":10,"title":11,"section":12,"order":13,"sidebar":14},"\u002Fdocs\u002Fapi\u002Fcomposables","Composables","API",2,true,{"path":16,"title":17,"section":12,"order":18,"sidebar":14},"\u002Fdocs\u002Fapi\u002Futilities","Utilities",1,{"path":20,"title":21,"section":22,"order":23,"sidebar":14},"\u002Fdocs\u002Fcli","CLI","Getting Started",9,{"path":25,"title":26,"section":22,"order":27,"sidebar":14},"\u002Fdocs\u002Fcompatibility","Compatibility",4,{"path":29,"title":30,"section":31,"order":32,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fbody","Body","Components",3,{"path":34,"title":35,"section":31,"order":36,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fbutton","Button",13,{"path":38,"title":39,"section":31,"order":40,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fcodeblock","CodeBlock",18,{"path":42,"title":43,"section":31,"order":44,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fcodeinline","CodeInline",19,{"path":46,"title":47,"section":31,"order":48,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fcolumn","Column",8,{"path":50,"title":51,"section":31,"order":52,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fcontainer","Container",5,{"path":54,"title":55,"section":31,"order":56,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Ffont","Font",11,{"path":58,"title":59,"section":31,"order":13,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fhead","Head",{"path":61,"title":62,"section":31,"order":23,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fheading","Heading",{"path":64,"title":65,"section":31,"order":66,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fhr","Hr",16,{"path":68,"title":69,"section":31,"order":18,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fhtml","Html",{"path":71,"title":72,"section":31,"order":73,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fimg","Img",14,{"path":75,"title":76,"section":31,"order":27,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Flayout","Layout",{"path":78,"title":79,"section":31,"order":80,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Flink","Link",12,{"path":82,"title":83,"section":31,"order":84,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fmarkdown","Markdown",20,{"path":86,"title":87,"section":31,"order":88,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fnotoutlook","NotOutlook",22,{"path":90,"title":91,"section":31,"order":92,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fnowidows","NoWidows",26,{"path":94,"title":95,"section":31,"order":96,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Foutlook","Outlook",21,{"path":98,"title":99,"section":31,"order":100,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Foutlookbg","OutlookBg",23,{"path":102,"title":103,"section":31,"order":104,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Foverview","Overview",0,{"path":106,"title":107,"section":31,"order":108,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fplaintext","Plaintext",31,{"path":110,"title":111,"section":31,"order":112,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fpreheader","Preheader",17,{"path":114,"title":115,"section":31,"order":116,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fqrcode","QrCode",30,{"path":118,"title":119,"section":31,"order":120,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fraw","Raw",28,{"path":122,"title":123,"section":31,"order":124,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Frow","Row",7,{"path":126,"title":127,"section":31,"order":128,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fsection","Section",6,{"path":130,"title":131,"section":31,"order":132,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fspacer","Spacer",15,{"path":134,"title":135,"section":31,"order":136,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Ftailwind","Tailwind",29,{"path":138,"title":139,"section":31,"order":140,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Ftext","Text",10,{"path":142,"title":143,"section":31,"order":144,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fvml","Vml",24,{"path":146,"title":147,"section":31,"order":148,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fwithurl","WithUrl",27,{"path":150,"title":151,"section":152,"order":128,"sidebar":14},"\u002Fdocs\u002Fdeploy\u002Faws-ses","AWS SES","Deploy",{"path":154,"title":155,"section":152,"order":124,"sidebar":14},"\u002Fdocs\u002Fdeploy\u002Fcloudflare","Cloudflare",{"path":157,"title":158,"section":152,"order":32,"sidebar":14},"\u002Fdocs\u002Fdeploy\u002Fmailgun","Mailgun",{"path":160,"title":161,"section":152,"order":18,"sidebar":14},"\u002Fdocs\u002Fdeploy\u002Fnodemailer","Nodemailer",{"path":163,"title":164,"section":152,"order":27,"sidebar":14},"\u002Fdocs\u002Fdeploy\u002Fpostmark","Postmark",{"path":166,"title":167,"section":152,"order":52,"sidebar":14},"\u002Fdocs\u002Fdeploy\u002Fresend","Resend",{"path":169,"title":170,"section":152,"order":13,"sidebar":14},"\u002Fdocs\u002Fdeploy\u002Fsendgrid","SendGrid",{"path":172,"title":173,"section":174,"order":32,"sidebar":14},"\u002Fdocs\u002Fdevelopment\u002Fconfiguration","Configuration","Development",{"path":176,"title":177,"section":174,"order":52,"sidebar":14},"\u002Fdocs\u002Fdevelopment\u002Fevents","Events",{"path":179,"title":180,"section":174,"order":128,"sidebar":14},"\u002Fdocs\u002Fdevelopment\u002Fi18n","i18n",{"path":182,"title":183,"section":174,"order":13,"sidebar":14},"\u002Fdocs\u002Fdevelopment\u002Flocal","Dev Server",{"path":185,"title":107,"section":174,"order":27,"sidebar":14},"\u002Fdocs\u002Fdevelopment\u002Fplaintext",{"path":187,"title":188,"section":174,"order":18,"sidebar":14},"\u002Fdocs\u002Fdevelopment\u002Ftemplates","Templates",{"path":190,"title":191,"section":22,"order":32,"sidebar":14},"\u002Fdocs\u002Feditor-setup","Editor Setup",{"path":193,"title":194,"section":22,"order":48,"sidebar":14},"\u002Fdocs\u002Fglossary","Glossary",{"path":196,"title":197,"section":22,"order":128,"sidebar":8},"\u002Fdocs\u002Finstallation\u002Fframeworks","Framework Guides",{"path":199,"title":200,"section":197,"order":52,"sidebar":14},"\u002Fdocs\u002Finstallation\u002Fframeworks\u002Fadonisjs","AdonisJS",{"path":202,"title":203,"section":197,"order":32,"sidebar":14},"\u002Fdocs\u002Finstallation\u002Fframeworks\u002Fastro","Astro",{"path":205,"title":206,"section":197,"order":18,"sidebar":14},"\u002Fdocs\u002Finstallation\u002Fframeworks\u002Flaravel","Laravel",{"path":208,"title":209,"section":197,"order":48,"sidebar":14},"\u002Fdocs\u002Finstallation\u002Fframeworks\u002Fnextjs","Next.js",{"path":211,"title":212,"section":197,"order":13,"sidebar":14},"\u002Fdocs\u002Finstallation\u002Fframeworks\u002Fnuxt","Nuxt",{"path":214,"title":215,"section":197,"order":124,"sidebar":14},"\u002Fdocs\u002Finstallation\u002Fframeworks\u002Fqwik","Qwik",{"path":217,"title":218,"section":197,"order":128,"sidebar":14},"\u002Fdocs\u002Finstallation\u002Fframeworks\u002Fsolid","Solid",{"path":220,"title":221,"section":197,"order":27,"sidebar":14},"\u002Fdocs\u002Finstallation\u002Fframeworks\u002Fsveltekit","SvelteKit",{"path":223,"title":224,"section":197,"order":23,"sidebar":14},"\u002Fdocs\u002Finstallation\u002Fframeworks\u002Ftanstack","TanStack Start",{"path":226,"title":227,"section":22,"order":13,"sidebar":14},"\u002Fdocs\u002Finstallation","Installation",{"path":229,"title":230,"section":22,"order":32,"sidebar":8},"\u002Fdocs\u002Finstallation\u002Fmanual","Manual Installation",{"path":232,"title":233,"section":22,"order":27,"sidebar":8},"\u002Fdocs\u002Finstallation\u002Fmonorepo","Monorepo Installation",{"path":235,"title":236,"section":22,"order":52,"sidebar":8},"\u002Fdocs\u002Finstallation\u002Fvite","Vite Plugin",{"path":238,"title":239,"section":22,"order":18,"sidebar":14},"\u002Fdocs\u002Fintroduction","What is Maizzle?",{"path":241,"title":242,"section":243,"order":13,"sidebar":14},"\u002Fdocs\u002Fmigrate\u002Fmjml","MJML","Migrate to Maizzle",{"path":245,"title":246,"section":243,"order":18,"sidebar":14},"\u002Fdocs\u002Fmigrate\u002Freact-email","React Email",{"path":248,"title":249,"section":22,"order":124,"sidebar":14},"\u002Fdocs\u002Fresources","Resources",{"path":251,"title":252,"section":22,"order":128,"sidebar":14},"\u002Fdocs\u002Fskill","Agent Skill",{"path":254,"title":255,"section":256,"order":18,"sidebar":14},"\u002Fdocs\u002Ftailwindcss","Tailwind CSS","Core Concepts",{"path":258,"title":259,"section":260,"order":13,"sidebar":14},"\u002Fdocs\u002Ftransformers\u002Fadd-attributes","Add Attributes","Transformers",{"path":262,"title":263,"section":260,"order":48,"sidebar":14},"\u002Fdocs\u002Ftransformers\u002Fattribute-to-style","Attribute to Style",{"path":265,"title":266,"section":260,"order":36,"sidebar":14},"\u002Fdocs\u002Ftransformers\u002Fbase-url","Base URL",{"path":268,"title":269,"section":260,"order":66,"sidebar":14},"\u002Fdocs\u002Ftransformers\u002Fentities","Entities",{"path":271,"title":272,"section":260,"order":80,"sidebar":14},"\u002Fdocs\u002Ftransformers\u002Ffilters","Filters",{"path":274,"title":275,"section":260,"order":112,"sidebar":14},"\u002Fdocs\u002Ftransformers\u002Fformat","Format",{"path":277,"title":278,"section":260,"order":32,"sidebar":14},"\u002Fdocs\u002Ftransformers\u002Finline-css","Inline CSS",{"path":280,"title":281,"section":260,"order":56,"sidebar":14},"\u002Fdocs\u002Ftransformers\u002Finline-link","Inline Link",{"path":283,"title":284,"section":260,"order":40,"sidebar":14},"\u002Fdocs\u002Ftransformers\u002Fminify","Minify",{"path":286,"title":103,"section":260,"order":18,"sidebar":14},"\u002Fdocs\u002Ftransformers\u002Foverview",{"path":288,"title":289,"section":260,"order":27,"sidebar":14},"\u002Fdocs\u002Ftransformers\u002Fpurge-css","Purge CSS",{"path":291,"title":292,"section":260,"order":140,"sidebar":14},"\u002Fdocs\u002Ftransformers\u002Fremove-attributes","Remove Attributes",{"path":294,"title":295,"section":260,"order":132,"sidebar":14},"\u002Fdocs\u002Ftransformers\u002Freplace-strings","Replace Strings",{"path":297,"title":298,"section":260,"order":52,"sidebar":14},"\u002Fdocs\u002Ftransformers\u002Fsafe-selectors","Safe Selectors",{"path":300,"title":301,"section":260,"order":128,"sidebar":14},"\u002Fdocs\u002Ftransformers\u002Fshorthand-css","Shorthand CSS",{"path":303,"title":304,"section":260,"order":124,"sidebar":14},"\u002Fdocs\u002Ftransformers\u002Fsix-hex","Six-digit HEX",{"path":306,"title":307,"section":260,"order":73,"sidebar":14},"\u002Fdocs\u002Ftransformers\u002Furl-parameters","URL Parameters",{"path":309,"title":310,"section":22,"order":52,"sidebar":14},"\u002Fdocs\u002Fupgrade-guide","Upgrade Guide",{"path":312,"title":236,"section":256,"order":13,"sidebar":14},"\u002Fdocs\u002Fvite-plugin",{"path":314,"title":315,"section":7,"order":7,"sidebar":8},"\u002Fprivacy","Privacy Policy",{"id":317,"title":177,"body":318,"description":1801,"extension":1802,"meta":1803,"navigation":14,"order":52,"path":176,"section":174,"seo":1804,"sidebar":14,"stem":1805,"toc":14,"__hash__":1806},"docs\u002Fdocs\u002Fdevelopment\u002Fevents.md",{"type":319,"value":320,"toc":1789},"minimark",[321,325,346,351,448,480,484,488,529,535,542,552,677,680,791,796,799,830,835,850,982,985,1045,1050,1057,1060,1189,1192,1261,1265,1268,1271,1373,1376,1440,1445,1448,1457,1469,1473,1482,1562,1578,1582,1591,1611,1621,1785],[322,323,177],"h1",{"id":324},"events",[326,327,328,329,333,334,337,338,345],"p",{},"Maizzle fires events at key points during the build. You can register handlers from ",[330,331,332],"code",{},"maizzle.config.ts"," or from a ",[330,335,336],{},"\u003Cscript setup>"," using the ",[339,340,342],"a",{"href":341},"\u002Fdocs\u002Fapi\u002Fcomposables#useevent",[330,343,344],{},"useEvent()"," composable.",[347,348,350],"h2",{"id":349},"event-scope","Event scope",[352,353,354,375],"table",{},[355,356,357],"thead",{},[358,359,360,364,368,372],"tr",{},[361,362,363],"th",{},"Event",[361,365,366],{},[330,367,332],{},[361,369,370],{},[330,371,344],{},[361,373,374],{},"Scope",[376,377,378,395,409,422,435],"tbody",{},[358,379,380,386,389,392],{},[381,382,383],"td",{},[330,384,385],{},"beforeCreate",[381,387,388],{},"✓",[381,390,391],{},"×",[381,393,394],{},"Build-once",[358,396,397,402,404,406],{},[381,398,399],{},[330,400,401],{},"beforeRender",[381,403,388],{},[381,405,391],{},[381,407,408],{},"Per-template",[358,410,411,416,418,420],{},[381,412,413],{},[330,414,415],{},"afterRender",[381,417,388],{},[381,419,388],{},[381,421,408],{},[358,423,424,429,431,433],{},[381,425,426],{},[330,427,428],{},"afterTransform",[381,430,388],{},[381,432,388],{},[381,434,408],{},[358,436,437,442,444,446],{},[381,438,439],{},[330,440,441],{},"afterBuild",[381,443,388],{},[381,445,388],{},[381,447,394],{},[449,450,451,461,469],"ul",{},[452,453,454,457,458,460],"li",{},[455,456,408],"strong",{}," handlers fire once per template. SFC handlers registered via ",[330,459,344],{}," are scoped to the template that registered them and cleared between renders so they don't leak.",[452,462,463,465,466,468],{},[455,464,394],{}," handlers fire a single time per build. SFC ",[330,467,441],{}," handlers accumulate across every template that registers one and all fire together at the end.",[452,470,471,473,474,476,477,479],{},[330,472,385],{}," and ",[330,475,401],{}," cannot fire SFC handlers because they run before — or as part of — discovering them. Register these in ",[330,478,332],{}," instead.",[347,481,483],{"id":482},"available-events","Available events",[485,486,385],"h3",{"id":487},"beforecreate",[489,490,495],"pre",{"className":491,"code":492,"language":493,"meta":494,"style":494},"language-ts shiki shiki-themes laserwave","beforeCreate({ config }) {\n  \u002F\u002F mutate config before any template is processed\n}\n","ts","",[330,496,497,518,524],{"__ignoreMap":494},[498,499,501,504,508,512,515],"span",{"class":500,"line":18},"line",[498,502,385],{"class":503},"sZNF3",[498,505,507],{"class":506},"sGGKt","({",[498,509,511],{"class":510},"sU-n2"," config",[498,513,514],{"class":506}," })",[498,516,517],{"class":506}," {\n",[498,519,520],{"class":500,"line":13},[498,521,523],{"class":522},"sVsQ9","  \u002F\u002F mutate config before any template is processed\n",[498,525,526],{"class":500,"line":32},[498,527,528],{"class":506},"}\n",[326,530,531,532],{},"Type: ",[330,533,534],{},"(params: { config: MaizzleConfig }) => void | Promise\u003Cvoid>",[326,536,537,538,541],{},"Fires once at the start of the build, before any templates are discovered or rendered. Mutate ",[330,539,540],{},"config"," here to apply build-wide overrides. Return value is ignored.",[543,544,546],"callout",{"type":545},"warning",[326,547,548,549,551],{},"Only registrable in ",[330,550,332],{},". By the time SFCs are parsed this event already fired.",[489,553,555],{"className":491,"code":554,"filename":332,"language":493,"meta":494,"style":494},"export default defineConfig({\n  beforeCreate({ config }) {\n    if (process.env.NODE_ENV === 'production') {\n      config.css ??= {}\n      config.css.purge = true\n    }\n  },\n})\n",[330,556,557,572,585,626,642,662,667,672],{"__ignoreMap":494},[498,558,559,563,566,569],{"class":500,"line":18},[498,560,562],{"class":561},"s0ZPN","export",[498,564,565],{"class":561}," default",[498,567,568],{"class":503}," defineConfig",[498,570,571],{"class":506},"({\n",[498,573,574,577,579,581,583],{"class":500,"line":13},[498,575,576],{"class":503},"  beforeCreate",[498,578,507],{"class":506},[498,580,511],{"class":510},[498,582,514],{"class":506},[498,584,517],{"class":506},[498,586,587,590,593,596,600,603,605,608,611,614,618,621,624],{"class":500,"line":32},[498,588,589],{"class":561},"    if",[498,591,592],{"class":506}," (",[498,594,595],{"class":510},"process",[498,597,599],{"class":598},"sb4Pa",".",[498,601,602],{"class":510},"env",[498,604,599],{"class":598},[498,606,607],{"class":510},"NODE_ENV",[498,609,610],{"class":598}," ===",[498,612,613],{"class":506}," '",[498,615,617],{"class":616},"sXiT_","production",[498,619,620],{"class":506},"'",[498,622,623],{"class":506},")",[498,625,517],{"class":506},[498,627,628,631,633,636,639],{"class":500,"line":27},[498,629,630],{"class":510},"      config",[498,632,599],{"class":598},[498,634,635],{"class":561},"css",[498,637,638],{"class":598}," ??=",[498,640,641],{"class":506}," {}\n",[498,643,644,646,648,650,652,655,658],{"class":500,"line":52},[498,645,630],{"class":510},[498,647,599],{"class":598},[498,649,635],{"class":510},[498,651,599],{"class":598},[498,653,654],{"class":561},"purge",[498,656,657],{"class":598}," =",[498,659,661],{"class":660},"skd8d"," true\n",[498,663,664],{"class":500,"line":128},[498,665,666],{"class":506},"    }\n",[498,668,669],{"class":500,"line":124},[498,670,671],{"class":506},"  },\n",[498,673,674],{"class":500,"line":48},[498,675,676],{"class":506},"})\n",[485,678,401],{"id":679},"beforerender",[489,681,683],{"className":491,"code":682,"language":493,"meta":494,"style":494},"beforeRender({ config, template }) {\n  \u002F\u002F 1. inject data the template will read via useConfig()…\n  config.greeting = await fetchGreeting(template.path.name)\n  \u002F\u002F 2. …and\u002For rewrite the source before it compiles\n  return template.source.replace('COMPANY_NAME', 'Acme Inc.')\n}\n",[330,684,685,703,708,745,750,787],{"__ignoreMap":494},[498,686,687,689,691,693,696,699,701],{"class":500,"line":18},[498,688,401],{"class":503},[498,690,507],{"class":506},[498,692,511],{"class":510},[498,694,695],{"class":506},",",[498,697,698],{"class":510}," template",[498,700,514],{"class":506},[498,702,517],{"class":506},[498,704,705],{"class":500,"line":13},[498,706,707],{"class":522},"  \u002F\u002F 1. inject data the template will read via useConfig()…\n",[498,709,710,713,715,718,720,723,726,729,732,734,737,739,742],{"class":500,"line":32},[498,711,712],{"class":510},"  config",[498,714,599],{"class":598},[498,716,717],{"class":561},"greeting",[498,719,657],{"class":598},[498,721,722],{"class":561}," await",[498,724,725],{"class":503}," fetchGreeting",[498,727,728],{"class":506},"(",[498,730,731],{"class":510},"template",[498,733,599],{"class":598},[498,735,736],{"class":510},"path",[498,738,599],{"class":598},[498,740,741],{"class":561},"name",[498,743,744],{"class":506},")\n",[498,746,747],{"class":500,"line":27},[498,748,749],{"class":522},"  \u002F\u002F 2. …and\u002For rewrite the source before it compiles\n",[498,751,752,755,757,759,762,764,767,769,771,774,776,778,780,783,785],{"class":500,"line":52},[498,753,754],{"class":561},"  return",[498,756,698],{"class":510},[498,758,599],{"class":598},[498,760,761],{"class":510},"source",[498,763,599],{"class":598},[498,765,766],{"class":503},"replace",[498,768,728],{"class":506},[498,770,620],{"class":506},[498,772,773],{"class":616},"COMPANY_NAME",[498,775,620],{"class":506},[498,777,695],{"class":506},[498,779,613],{"class":506},[498,781,782],{"class":616},"Acme Inc.",[498,784,620],{"class":506},[498,786,744],{"class":506},[498,788,789],{"class":500,"line":128},[498,790,528],{"class":506},[326,792,531,793],{},[330,794,795],{},"(params: { config: MaizzleConfig; template: TemplateInfo }) => string | void | Promise\u003Cstring | void>",[326,797,798],{},"Fires before each template is passed to the Vue SSR renderer. It gives you two things:",[449,800,801,820],{},[452,802,803,806,807,809,810,813,814,599],{},[455,804,805],{},"The config this template is about to compile with."," ",[330,808,540],{}," is the fully-computed config for this template, ",[455,811,812],{},"cloned per template"," — so any changes you make here are scoped to this one template and won't leak into the others. This is the common use: fetch data from an API and inject it, set a preheader, flip a transformer for a single template, and so on. The template reads the result through ",[339,815,817],{"href":816},"\u002Fdocs\u002Fapi\u002Fcomposables#useconfig",[330,818,819],{},"useConfig()",[452,821,822,825,826,829],{},[455,823,824],{},"The source about to be compiled."," Return a string to replace ",[330,827,828],{},"template.source"," (the raw SFC source) for any subsequent handlers and for the renderer. Return nothing to leave it unchanged.",[326,831,832,833,599],{},"When multiple handlers are registered, they chain: each handler's returned string becomes the next handler's ",[330,834,828],{},[543,836,837],{"type":545},[326,838,839,840,842,843,473,847,599],{},"Only registrable from ",[330,841,332],{},". SFC handlers can't be discovered until parsing happens, which is what this hook precedes — and inside a template you already have the same config via ",[339,844,845],{"href":816},[330,846,819],{},[330,848,849],{},"defineConfig()",[489,851,853],{"className":491,"code":852,"filename":332,"language":493,"meta":494,"style":494},"export default defineConfig({\n  async beforeRender({ config, template }) {\n    \u002F\u002F Per-template data, scoped to this template only\n    if (template.path.name === 'newsletter') {\n      config.posts = await fetchLatestPosts()\n      return template.source.replace('PLACEHOLDER', 'Newsletter content')\n    }\n  },\n})\n",[330,854,855,865,882,887,916,935,970,974,978],{"__ignoreMap":494},[498,856,857,859,861,863],{"class":500,"line":18},[498,858,562],{"class":561},[498,860,565],{"class":561},[498,862,568],{"class":503},[498,864,571],{"class":506},[498,866,867,870,872,874,876,878,880],{"class":500,"line":13},[498,868,869],{"class":503},"  async beforeRender",[498,871,507],{"class":506},[498,873,511],{"class":510},[498,875,695],{"class":506},[498,877,698],{"class":510},[498,879,514],{"class":506},[498,881,517],{"class":506},[498,883,884],{"class":500,"line":32},[498,885,886],{"class":522},"    \u002F\u002F Per-template data, scoped to this template only\n",[498,888,889,891,893,895,897,899,901,903,905,907,910,912,914],{"class":500,"line":27},[498,890,589],{"class":561},[498,892,592],{"class":506},[498,894,731],{"class":510},[498,896,599],{"class":598},[498,898,736],{"class":510},[498,900,599],{"class":598},[498,902,741],{"class":561},[498,904,610],{"class":598},[498,906,613],{"class":506},[498,908,909],{"class":616},"newsletter",[498,911,620],{"class":506},[498,913,623],{"class":506},[498,915,517],{"class":506},[498,917,918,920,922,925,927,929,932],{"class":500,"line":52},[498,919,630],{"class":510},[498,921,599],{"class":598},[498,923,924],{"class":561},"posts",[498,926,657],{"class":598},[498,928,722],{"class":561},[498,930,931],{"class":503}," fetchLatestPosts",[498,933,934],{"class":506},"()\n",[498,936,937,940,942,944,946,948,950,952,954,957,959,961,963,966,968],{"class":500,"line":128},[498,938,939],{"class":561},"      return",[498,941,698],{"class":510},[498,943,599],{"class":598},[498,945,761],{"class":510},[498,947,599],{"class":598},[498,949,766],{"class":503},[498,951,728],{"class":506},[498,953,620],{"class":506},[498,955,956],{"class":616},"PLACEHOLDER",[498,958,620],{"class":506},[498,960,695],{"class":506},[498,962,613],{"class":506},[498,964,965],{"class":616},"Newsletter content",[498,967,620],{"class":506},[498,969,744],{"class":506},[498,971,972],{"class":500,"line":124},[498,973,666],{"class":506},[498,975,976],{"class":500,"line":48},[498,977,671],{"class":506},[498,979,980],{"class":500,"line":23},[498,981,676],{"class":506},[485,983,415],{"id":984},"afterrender",[489,986,988],{"className":491,"code":987,"language":493,"meta":494,"style":494},"afterRender({ config, template, html }) {\n  return html.replace('\u003C!--banner-->', '\u003Cdiv class=\"banner\">…\u003C\u002Fdiv>')\n}\n",[330,989,990,1011,1041],{"__ignoreMap":494},[498,991,992,994,996,998,1000,1002,1004,1007,1009],{"class":500,"line":18},[498,993,415],{"class":503},[498,995,507],{"class":506},[498,997,511],{"class":510},[498,999,695],{"class":506},[498,1001,698],{"class":510},[498,1003,695],{"class":506},[498,1005,1006],{"class":510}," html",[498,1008,514],{"class":506},[498,1010,517],{"class":506},[498,1012,1013,1015,1017,1019,1021,1023,1025,1028,1030,1032,1034,1037,1039],{"class":500,"line":13},[498,1014,754],{"class":561},[498,1016,1006],{"class":510},[498,1018,599],{"class":598},[498,1020,766],{"class":503},[498,1022,728],{"class":506},[498,1024,620],{"class":506},[498,1026,1027],{"class":616},"\u003C!--banner-->",[498,1029,620],{"class":506},[498,1031,695],{"class":506},[498,1033,613],{"class":506},[498,1035,1036],{"class":616},"\u003Cdiv class=\"banner\">…\u003C\u002Fdiv>",[498,1038,620],{"class":506},[498,1040,744],{"class":506},[498,1042,1043],{"class":500,"line":32},[498,1044,528],{"class":506},[326,1046,531,1047],{},[330,1048,1049],{},"(params: { config: MaizzleConfig; template: TemplateInfo; html: string }) => string | void | Promise\u003Cstring | void>",[326,1051,1052,1053,1056],{},"Fires after the template renders to HTML, but ",[455,1054,1055],{},"before"," the transformer pipeline runs. Return a string to replace the HTML for subsequent handlers and for the transformer pipeline.",[326,1058,1059],{},"Use this when you want your changes to flow through the pipeline (CSS inlining, purging, minification, etc.) — anything you inject here gets processed alongside the rest of the markup.",[489,1061,1066],{"className":1062,"code":1063,"filename":1064,"language":1065,"meta":494,"style":494},"language-vue shiki shiki-themes laserwave","\u003Cscript setup>\n  useEvent('afterRender', ({ html }) => {\n    const banner = '\u003Cdiv class=\"bg-blue-500 text-white p-4 text-center\">Limited time offer!\u003C\u002Fdiv>'\n\n    return html.replace('\u003Cbody', `\u003Cbody>${banner}`)\n  })\n\u003C\u002Fscript>\n","emails\u002Fwelcome.vue","vue",[330,1067,1068,1082,1112,1131,1136,1175,1180],{"__ignoreMap":494},[498,1069,1070,1073,1076,1079],{"class":500,"line":18},[498,1071,1072],{"class":506},"\u003C",[498,1074,1075],{"class":598},"script",[498,1077,1078],{"class":503}," setup",[498,1080,1081],{"class":506},">\n",[498,1083,1084,1087,1089,1091,1093,1095,1097,1100,1104,1107,1110],{"class":500,"line":13},[498,1085,1086],{"class":503},"  useEvent",[498,1088,728],{"class":506},[498,1090,620],{"class":506},[498,1092,415],{"class":616},[498,1094,620],{"class":506},[498,1096,695],{"class":506},[498,1098,1099],{"class":506}," ({",[498,1101,1103],{"class":1102},"sLaUg"," html ",[498,1105,1106],{"class":506},"})",[498,1108,1109],{"class":598}," =>",[498,1111,517],{"class":506},[498,1113,1114,1118,1121,1123,1125,1128],{"class":500,"line":32},[498,1115,1117],{"class":1116},"sIihq","    const",[498,1119,1120],{"class":660}," banner",[498,1122,657],{"class":598},[498,1124,613],{"class":506},[498,1126,1127],{"class":616},"\u003Cdiv class=\"bg-blue-500 text-white p-4 text-center\">Limited time offer!\u003C\u002Fdiv>",[498,1129,1130],{"class":506},"'\n",[498,1132,1133],{"class":500,"line":27},[498,1134,1135],{"emptyLinePlaceholder":14},"\n",[498,1137,1138,1141,1143,1145,1147,1149,1151,1154,1156,1158,1161,1164,1167,1170,1173],{"class":500,"line":52},[498,1139,1140],{"class":561},"    return",[498,1142,1006],{"class":510},[498,1144,599],{"class":506},[498,1146,766],{"class":503},[498,1148,728],{"class":506},[498,1150,620],{"class":506},[498,1152,1153],{"class":616},"\u003Cbody",[498,1155,620],{"class":506},[498,1157,695],{"class":506},[498,1159,1160],{"class":506}," `",[498,1162,1163],{"class":616},"\u003Cbody>",[498,1165,1166],{"class":506},"${",[498,1168,1169],{"class":510},"banner",[498,1171,1172],{"class":506},"}`",[498,1174,744],{"class":506},[498,1176,1177],{"class":500,"line":128},[498,1178,1179],{"class":506},"  })\n",[498,1181,1182,1185,1187],{"class":500,"line":124},[498,1183,1184],{"class":506},"\u003C\u002F",[498,1186,1075],{"class":598},[498,1188,1081],{"class":506},[485,1190,428],{"id":1191},"aftertransform",[489,1193,1195],{"className":491,"code":1194,"language":493,"meta":494,"style":494},"afterTransform({ config, template, html }) {\n  return html.replace(\n    '\u003C\u002Fbody>',\n    '\u003Cimg src=\"https:\u002F\u002Ftrack.example.com\u002Fpixel.gif\" width=\"1\" height=\"1\" alt=\"\">\\n\u003C\u002Fbody>'\n  )\n}\n",[330,1196,1197,1217,1230,1243,1252,1257],{"__ignoreMap":494},[498,1198,1199,1201,1203,1205,1207,1209,1211,1213,1215],{"class":500,"line":18},[498,1200,428],{"class":503},[498,1202,507],{"class":506},[498,1204,511],{"class":510},[498,1206,695],{"class":506},[498,1208,698],{"class":510},[498,1210,695],{"class":506},[498,1212,1006],{"class":510},[498,1214,514],{"class":506},[498,1216,517],{"class":506},[498,1218,1219,1221,1223,1225,1227],{"class":500,"line":13},[498,1220,754],{"class":561},[498,1222,1006],{"class":510},[498,1224,599],{"class":598},[498,1226,766],{"class":503},[498,1228,1229],{"class":506},"(\n",[498,1231,1232,1235,1238,1240],{"class":500,"line":32},[498,1233,1234],{"class":506},"    '",[498,1236,1237],{"class":616},"\u003C\u002Fbody>",[498,1239,620],{"class":506},[498,1241,1242],{"class":506},",\n",[498,1244,1245,1247,1250],{"class":500,"line":27},[498,1246,1234],{"class":506},[498,1248,1249],{"class":616},"\u003Cimg src=\"https:\u002F\u002Ftrack.example.com\u002Fpixel.gif\" width=\"1\" height=\"1\" alt=\"\">\\n\u003C\u002Fbody>",[498,1251,1130],{"class":506},[498,1253,1254],{"class":500,"line":52},[498,1255,1256],{"class":506},"  )\n",[498,1258,1259],{"class":500,"line":128},[498,1260,528],{"class":506},[326,1262,531,1263],{},[330,1264,1049],{},[326,1266,1267],{},"Fires after all transformers have run on each template. Return a string to replace the final HTML before it's written to disk.",[326,1269,1270],{},"Use this when you need the post-pipeline output and don't want your insertion to be touched by transformers — for example, tracking pixels or raw markup that shouldn't be re-inlined or purged.",[489,1272,1274],{"className":491,"code":1273,"filename":332,"language":493,"meta":494,"style":494},"export default defineConfig({\n  afterTransform({ html, template }) {\n    if (template.path.name === 'promotional') {\n      return html.replace('\u003C\u002Fbody>', '\u003Cscript src=\"https:\u002F\u002Fanalytics.example.com\u002Ftrack.js\">\u003C\u002Fscript>\\n\u003C\u002Fbody>')\n    }\n  },\n})\n",[330,1275,1276,1286,1303,1332,1361,1365,1369],{"__ignoreMap":494},[498,1277,1278,1280,1282,1284],{"class":500,"line":18},[498,1279,562],{"class":561},[498,1281,565],{"class":561},[498,1283,568],{"class":503},[498,1285,571],{"class":506},[498,1287,1288,1291,1293,1295,1297,1299,1301],{"class":500,"line":13},[498,1289,1290],{"class":503},"  afterTransform",[498,1292,507],{"class":506},[498,1294,1006],{"class":510},[498,1296,695],{"class":506},[498,1298,698],{"class":510},[498,1300,514],{"class":506},[498,1302,517],{"class":506},[498,1304,1305,1307,1309,1311,1313,1315,1317,1319,1321,1323,1326,1328,1330],{"class":500,"line":32},[498,1306,589],{"class":561},[498,1308,592],{"class":506},[498,1310,731],{"class":510},[498,1312,599],{"class":598},[498,1314,736],{"class":510},[498,1316,599],{"class":598},[498,1318,741],{"class":561},[498,1320,610],{"class":598},[498,1322,613],{"class":506},[498,1324,1325],{"class":616},"promotional",[498,1327,620],{"class":506},[498,1329,623],{"class":506},[498,1331,517],{"class":506},[498,1333,1334,1336,1338,1340,1342,1344,1346,1348,1350,1352,1354,1357,1359],{"class":500,"line":27},[498,1335,939],{"class":561},[498,1337,1006],{"class":510},[498,1339,599],{"class":598},[498,1341,766],{"class":503},[498,1343,728],{"class":506},[498,1345,620],{"class":506},[498,1347,1237],{"class":616},[498,1349,620],{"class":506},[498,1351,695],{"class":506},[498,1353,613],{"class":506},[498,1355,1356],{"class":616},"\u003Cscript src=\"https:\u002F\u002Fanalytics.example.com\u002Ftrack.js\">\u003C\u002Fscript>\\n\u003C\u002Fbody>",[498,1358,620],{"class":506},[498,1360,744],{"class":506},[498,1362,1363],{"class":500,"line":52},[498,1364,666],{"class":506},[498,1366,1367],{"class":500,"line":128},[498,1368,671],{"class":506},[498,1370,1371],{"class":500,"line":124},[498,1372,676],{"class":506},[485,1374,441],{"id":1375},"afterbuild",[489,1377,1379],{"className":491,"code":1378,"language":493,"meta":494,"style":494},"afterBuild({ files, config }) {\n  console.log(`Built ${files.length} templates`)\n}\n",[330,1380,1381,1398,1436],{"__ignoreMap":494},[498,1382,1383,1385,1387,1390,1392,1394,1396],{"class":500,"line":18},[498,1384,441],{"class":503},[498,1386,507],{"class":506},[498,1388,1389],{"class":510}," files",[498,1391,695],{"class":506},[498,1393,511],{"class":510},[498,1395,514],{"class":506},[498,1397,517],{"class":506},[498,1399,1400,1403,1405,1408,1410,1413,1416,1418,1421,1423,1426,1429,1432,1434],{"class":500,"line":13},[498,1401,1402],{"class":510},"  console",[498,1404,599],{"class":598},[498,1406,1407],{"class":503},"log",[498,1409,728],{"class":506},[498,1411,1412],{"class":506},"`",[498,1414,1415],{"class":616},"Built ",[498,1417,1166],{"class":506},[498,1419,1420],{"class":510},"files",[498,1422,599],{"class":598},[498,1424,1425],{"class":616},"length",[498,1427,1428],{"class":506},"}",[498,1430,1431],{"class":616}," templates",[498,1433,1412],{"class":506},[498,1435,744],{"class":506},[498,1437,1438],{"class":500,"line":32},[498,1439,528],{"class":506},[326,1441,531,1442],{},[330,1443,1444],{},"(params: { files: string[]; config: MaizzleConfig }) => void | Promise\u003Cvoid>",[326,1446,1447],{},"Fires once after every template has been built. Receives the full list of output file paths. Return value is ignored.",[326,1449,1450,1451,1453,1454,1456],{},"When multiple templates each register an ",[330,1452,441],{}," handler via ",[330,1455,344],{},", all of them fire — useful for per-template post-build hooks (e.g. uploading the built file to a CDN).",[543,1458,1460],{"type":1459},"info",[326,1461,1462,1464,1465,1468],{},[330,1463,441],{}," only fires during ",[330,1466,1467],{},"maizzle build",". The dev server doesn't fire build events because templates are rendered on demand.",[347,1470,1472],{"id":1471},"useevent","useEvent",[326,1474,1475,1478,1479,1481],{},[330,1476,1477],{},"useEvent(name, handler)"," registers a handler from inside a template's ",[330,1480,336],{},":",[489,1483,1485],{"className":1062,"code":1484,"filename":1064,"language":1065,"meta":494,"style":494},"\u003Cscript setup>\n  useEvent('afterTransform', ({ html }) => {\n    return html.replace('\u003C\u002Fbody>', '\u003Cimg src=\"https:\u002F\u002Ftrack.example.com\u002Fp.gif\" width=\"1\" height=\"1\" alt=\"\">\\n\u003C\u002Fbody>')\n  })\n\u003C\u002Fscript>\n",[330,1486,1487,1497,1521,1550,1554],{"__ignoreMap":494},[498,1488,1489,1491,1493,1495],{"class":500,"line":18},[498,1490,1072],{"class":506},[498,1492,1075],{"class":598},[498,1494,1078],{"class":503},[498,1496,1081],{"class":506},[498,1498,1499,1501,1503,1505,1507,1509,1511,1513,1515,1517,1519],{"class":500,"line":13},[498,1500,1086],{"class":503},[498,1502,728],{"class":506},[498,1504,620],{"class":506},[498,1506,428],{"class":616},[498,1508,620],{"class":506},[498,1510,695],{"class":506},[498,1512,1099],{"class":506},[498,1514,1103],{"class":1102},[498,1516,1106],{"class":506},[498,1518,1109],{"class":598},[498,1520,517],{"class":506},[498,1522,1523,1525,1527,1529,1531,1533,1535,1537,1539,1541,1543,1546,1548],{"class":500,"line":32},[498,1524,1140],{"class":561},[498,1526,1006],{"class":510},[498,1528,599],{"class":506},[498,1530,766],{"class":503},[498,1532,728],{"class":506},[498,1534,620],{"class":506},[498,1536,1237],{"class":616},[498,1538,620],{"class":506},[498,1540,695],{"class":506},[498,1542,613],{"class":506},[498,1544,1545],{"class":616},"\u003Cimg src=\"https:\u002F\u002Ftrack.example.com\u002Fp.gif\" width=\"1\" height=\"1\" alt=\"\">\\n\u003C\u002Fbody>",[498,1547,620],{"class":506},[498,1549,744],{"class":506},[498,1551,1552],{"class":500,"line":27},[498,1553,1179],{"class":506},[498,1555,1556,1558,1560],{"class":500,"line":52},[498,1557,1184],{"class":506},[498,1559,1075],{"class":598},[498,1561,1081],{"class":506},[326,1563,1564,1565,1567,1568,1570,1571,1573,1574,1577],{},"The composable is auto-imported, so you don't need to add an import statement. Only ",[330,1566,415],{},", ",[330,1569,428],{},", and ",[330,1572,441],{}," can be registered this way — see the ",[339,1575,350],{"href":1576},"#event-scope"," table.",[347,1579,1581],{"id":1580},"execution-order","Execution order",[326,1583,1584,1585,1587,1588,1590],{},"When the same event has handlers from both ",[330,1586,332],{}," and one or more ",[330,1589,336],{}," blocks, they run in this order:",[1592,1593,1594,1602],"ol",{},[452,1595,1596,1599,1600,623],{},[455,1597,1598],{},"Config handler"," (from ",[330,1601,332],{},[452,1603,1604,1607,1608,1610],{},[455,1605,1606],{},"SFC handlers"," (registered via ",[330,1609,344],{},"), in the order they were registered",[326,1612,1613,1614,1567,1616,1567,1618,1620],{},"For events that return a value (",[330,1615,401],{},[330,1617,415],{},[330,1619,428],{},"), the returned string replaces the input for the next handler in the chain. Handlers that return nothing pass the input through untouched.",[1622,1623,1624,1697],"code-tabs",{},[1625,1626,1627],"code-tab",{"label":332},[489,1628,1630],{"className":491,"code":1629,"language":493,"meta":494,"style":494},"\u002F\u002F 1. config handler runs first\nexport default defineConfig({\n  afterTransform({ html }) {\n    return html.replace('STEP_1', 'replaced by config')\n  },\n})\n",[330,1631,1632,1637,1647,1659,1689,1693],{"__ignoreMap":494},[498,1633,1634],{"class":500,"line":18},[498,1635,1636],{"class":522},"\u002F\u002F 1. config handler runs first\n",[498,1638,1639,1641,1643,1645],{"class":500,"line":13},[498,1640,562],{"class":561},[498,1642,565],{"class":561},[498,1644,568],{"class":503},[498,1646,571],{"class":506},[498,1648,1649,1651,1653,1655,1657],{"class":500,"line":32},[498,1650,1290],{"class":503},[498,1652,507],{"class":506},[498,1654,1006],{"class":510},[498,1656,514],{"class":506},[498,1658,517],{"class":506},[498,1660,1661,1663,1665,1667,1669,1671,1673,1676,1678,1680,1682,1685,1687],{"class":500,"line":27},[498,1662,1140],{"class":561},[498,1664,1006],{"class":510},[498,1666,599],{"class":598},[498,1668,766],{"class":503},[498,1670,728],{"class":506},[498,1672,620],{"class":506},[498,1674,1675],{"class":616},"STEP_1",[498,1677,620],{"class":506},[498,1679,695],{"class":506},[498,1681,613],{"class":506},[498,1683,1684],{"class":616},"replaced by config",[498,1686,620],{"class":506},[498,1688,744],{"class":506},[498,1690,1691],{"class":500,"line":52},[498,1692,671],{"class":506},[498,1694,1695],{"class":500,"line":128},[498,1696,676],{"class":506},[1625,1698,1699],{"label":1064},[489,1700,1702],{"className":1062,"code":1701,"language":1065,"meta":494,"style":494},"\u003Cscript setup>\n  \u002F\u002F 2. SFC handler runs second, sees the config handler's output\n  useEvent('afterTransform', ({ html }) => {\n    return html.replace('STEP_2', 'replaced by SFC')\n  })\n\u003C\u002Fscript>\n",[330,1703,1704,1714,1719,1743,1773,1777],{"__ignoreMap":494},[498,1705,1706,1708,1710,1712],{"class":500,"line":18},[498,1707,1072],{"class":506},[498,1709,1075],{"class":598},[498,1711,1078],{"class":503},[498,1713,1081],{"class":506},[498,1715,1716],{"class":500,"line":13},[498,1717,1718],{"class":522},"  \u002F\u002F 2. SFC handler runs second, sees the config handler's output\n",[498,1720,1721,1723,1725,1727,1729,1731,1733,1735,1737,1739,1741],{"class":500,"line":32},[498,1722,1086],{"class":503},[498,1724,728],{"class":506},[498,1726,620],{"class":506},[498,1728,428],{"class":616},[498,1730,620],{"class":506},[498,1732,695],{"class":506},[498,1734,1099],{"class":506},[498,1736,1103],{"class":1102},[498,1738,1106],{"class":506},[498,1740,1109],{"class":598},[498,1742,517],{"class":506},[498,1744,1745,1747,1749,1751,1753,1755,1757,1760,1762,1764,1766,1769,1771],{"class":500,"line":27},[498,1746,1140],{"class":561},[498,1748,1006],{"class":510},[498,1750,599],{"class":506},[498,1752,766],{"class":503},[498,1754,728],{"class":506},[498,1756,620],{"class":506},[498,1758,1759],{"class":616},"STEP_2",[498,1761,620],{"class":506},[498,1763,695],{"class":506},[498,1765,613],{"class":506},[498,1767,1768],{"class":616},"replaced by SFC",[498,1770,620],{"class":506},[498,1772,744],{"class":506},[498,1774,1775],{"class":500,"line":52},[498,1776,1179],{"class":506},[498,1778,1779,1781,1783],{"class":500,"line":128},[498,1780,1184],{"class":506},[498,1782,1075],{"class":598},[498,1784,1081],{"class":506},[1786,1787,1788],"style",{},"html pre.shiki code .sZNF3, html code.shiki .sZNF3{--shiki-default:#EB64B9}html pre.shiki code .sGGKt, html code.shiki .sGGKt{--shiki-default:#7B6995}html pre.shiki code .sU-n2, html code.shiki .sU-n2{--shiki-default:#FFF}html pre.shiki code .sVsQ9, html code.shiki .sVsQ9{--shiki-default:#91889B}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 pre.shiki code .s0ZPN, html code.shiki .s0ZPN{--shiki-default:#40B4C4}html pre.shiki code .sb4Pa, html code.shiki .sb4Pa{--shiki-default:#74DFC4}html pre.shiki code .sXiT_, html code.shiki .sXiT_{--shiki-default:#B4DCE7}html pre.shiki code .skd8d, html code.shiki .skd8d{--shiki-default:#FFE261}html pre.shiki code .sLaUg, html code.shiki .sLaUg{--shiki-default:#FFFFFF}html pre.shiki code .sIihq, html code.shiki .sIihq{--shiki-default:#A96BC0}",{"title":494,"searchDepth":13,"depth":13,"links":1790},[1791,1792,1799,1800],{"id":349,"depth":13,"text":350},{"id":482,"depth":13,"text":483,"children":1793},[1794,1795,1796,1797,1798],{"id":487,"depth":32,"text":385},{"id":679,"depth":32,"text":401},{"id":984,"depth":32,"text":415},{"id":1191,"depth":32,"text":428},{"id":1375,"depth":32,"text":441},{"id":1471,"depth":13,"text":1472},{"id":1580,"depth":13,"text":1581},"Using lifecycle events fired during the Maizzle build pipeline to hook into the build process.","md",{},{"title":177,"description":1801},"docs\u002Fdevelopment\u002Fevents","APmRvHNwWnsCHJKWinz4Yo8UKCaHXs22N-4pqVv7J0Q",1781015461120]