Don’t let that smile fool you, this is a weapon of war.
Photo: HBO
This post was originally published at the beginning of House of the Dragon season two. It has been updated following the battle at Rook’s Rest in episode four, “The Red Dragon and the Gold.”
In fantasy combat, dragons are a difference-maker. Aegon the Conqueror and his sister-queens Visenya and Rhaenys united six out of seven quarreling kingdoms by lighting entire castles and armies on fire from the backs of their beasts. Daenerys Targaryen effortlessly torched the forces of House Lannister — then of the people of King’s Landing — with a single surviving dragon at the end of Game of Thrones. If you wanna get really nerdy, none other than Gandalf the Grey reveals in the appendices of The Lord of the Rings that he helped Thorin, Bilbo, and company kill Smaug the Golden so that a revived Sauron could never use him as city-killer against the Elven kingdoms he himself couldn’t touch. From middle-earth to Westeros, these creatures are no joke.
That’s what makes the prospect of a full-scale Targaryen civil war in season two of House of the Dragon so frightening — not just to the defenseless small folk but to the wiser members of the opposing Team Black and Team Green themselves. It also makes the question of who controls what dragons as crucial to the conflict as sizing up your enemy’s nuclear stockpile. A dragon’s size, age, temperament, temperature, combat experience, rider, and perhaps even their relationships with other dragons all play a part in determining their effectiveness in battle.
So as we watch the carnage unfold in season two, here are all the dragons in play in the so-called Dance of the Dragons, the civil war between the Blacks, led by Queen Rhaenyra Targaryen and her king-consort Prince Daemon, and the Greens, ruled (sort of) by King Aegon II Targaryen and his mother, Queen Alicent Hightower. Each side boasts its own dragons, while some are still up for grabs. Considering the magic and might of these monsters, this could wind up as important as knowing the Targaryen family tree itself.
Rider: Prince Aemond Targaryen In terms of size, power, and even her saurian appearance, Vhagar is the closest thing Westeros has to Godzilla. The oldest, largest, deadliest dragon in the known world at the time of the Dance, Vhagar was originally the mount of Queen Visenya, one of the two Targaryen sister-wives who helped Aegon the Conqueror earn his nickname. But Visenya was far more brutal and ruthless than either of her siblings, a reputation that continues to follow her dragon.
Vhagar is ridden, though not fully controlled, by Prince Aemond One-Eye, who earned his nickname in a scuffle over his right to ride the beast. Aemond’s rashness in playing aerial chicken with his nephew Lucerys Velaryon — the same kid who put his eye out years earlier — led to a brief battle between Luke’s dragon, Arrax, and the much larger Vhagar. The fight, the first of its kind in the Targaryen civil war, ended abruptly (and to Aemond’s obvious horror) when the Vhagar effortlessly tore Arrax apart, killing Luke in the process.
The last of the three dragons with which Aegon conquered Westeros, Vhagar is the only living being that saw the doomed empire of Valyria at its height, making her old even for a dragon. But her bulk, cunning, ferocity, experience in battle, and sheer ability to burn — like Aegon’s legendary dragon Balerion the Black Dread, her fire is hot enough to melt stone — make her the most dangerous weapon of war in the world. This in turn makes her already dangerous rider one of the most pivotal figures in the conflict.
.
Sunfyre
Photo: HBO
Rider: King Aegon II Targaryen To nickname the mount of the usurper king, author George R.R. Martin borrowed a sobriquet from fiction’s most famous dragon, The Hobbit’s Smaug: Sunfyre the Golden. Considered the most beautiful of all the dragons, Sunfyre directly inspired the golden coloring of House Targaryen’s three-headed sigil on the green banners flown by his side of the civil war. Though flying a beast this magnificent provides Aegon with good PR, Sunfyre is the youngest of Team Green’s three adult dragons and had no combat experience prior to Rook’s Rest.
.
Dreamfyre
Photo: HBO
Rider: Queen Helaena Targaryen Perhaps the most aptly named beast of the bunch, Dreamfyre belongs to Helaena, whose dreamy demeanor conceals actual prophetic “dreams,” an occasional side effect of the Targaryen bloodline. (Aegon the Conqueror’s so-called dream of the future war between dragons and White Walkers, the Song of Ice and Fire, plays a major role in Rhaenyra’s decision to press for the crown.) A beautiful silvery blue in the books, she appears to be more silver-gray during her brief appearance in season one, when she nearly scorches a young Prince Aemond in the Dragonpit in King’s Landing. Older than Sunfyre, Dreamfyre has witnessed Targaryen-on-Targaryen conflict before, when the infamous King Maegor the Cruel usurped the throne. While she wound up on the winning side, that of the future King Jaehaerys, she did not participate in battle.
.
Tessarion
Rider: Prince Daeron Targaryen I know what you’re thinking: Who? Though unmentioned during season one, Daeron is the youngest child of King Viserys and Queen Alicent; he’s been absent from King’s Landing because he’s been living with Alicent’s family, House Hightower, in their home base of Oldtown. Showrunner Ryan Condal has confirmed, however, that Daeron is a presence in the show. His dragon, called the Blue Queen, has lovely cobalt-and-copper coloring, like if Maxfield Parrish illustrated her. However, during the season-one finale, Prince Daemon said Team Green’s complement of dragons includes only “three adults,” making Tessarion’s status for the coming war unclear.
.
Shrykos and Morghul
Riders: none (paired with Prince Jaehaerys Targaryen and Princess Jaehaera Targaryen) Daemon counted three adult dragons for Team Green. Whether they wind up on the show or not, that wouldn’t include Shrykos and Morghul, the young dragons bound to Aegon and Helaena’s young twins.
Team Black
.
Caraxes
Photo: HBO
Rider: Prince Daemon Targaryen In many ways, Caraxes is the Blacks’ answer to the Greens’ ultimate weapon, Vhagar. Nicknamed the Blood Wyrm for his color, sinewy build, and taste for violence, Caraxes is significantly younger and smaller than his counterpart. However, he’s more recently tested in battle, having helped the rogue prince Daemon win victory in the long war for the strategically significant stretch of islands called the Stepstones. Caraxes’s serpentine body, wing-like appendages on his hind legs, and high-pitched chirps and trills make him the most distinctive dragon in the franchise so far.
.
Syrax
Photo: HBO
Rider: Queen Rhaenyra Targaryen If the Targaryen dragons available at the start of the Dance were Mario Kart racers, Syrax would be in the Mario/Peach/Luigi zone. Neither too old nor too young, too large nor too small, too spectacular nor too drab, this yellow-scaled beast has had an enthusiastic rider in Rhaenyra since she was just a girl. Like most dragons of the era, however, she’s never seen battle. Syrax is unique among the dragons in one respect, though: She’s been actively laying eggs.
.
Meleys
Photo: HBO
Rider: Princess Rhaenys Targaryen Befitting the stature of her rider, “The Queen Who Never Was,” Meleys was second only to Vhagar in size. In the books, she’s also the fastest dragon in the heavyweight class. On the show, the crimson-colored beast known as the Red Queen is best remembered for not lighting Team Green on fire when given the chance, a show of restraint that demonstrates the depth of the bond between the creature and Princess Rhaenys, her restrained rider, who fell alongside Meleys at Rook’s Rest after their fatal confrontation with Vhagar.
.
Vermax
Photo: HBO
Rider: Prince Jacaerys Velaryon Vermax is the mount of Jace Velaryon, heir to the Iron Throne via his mother, Rhaenyra. As of the end of season one, the olive-green dragon is headed north with Jacaerys on board, so he can negotiate with the Lord of Winterfell and the Lady of the Vale. Vermax’s gender is unclear, which actually factors into the larger Song of Ice and Fire saga: myths, legends, and hard-to-interpret sightings of dragons in the North hinge largely on whether or not Vermax laid eggs during the voyage.
.
Moondancer
Photo: HBO
Rider: Lady Baela Targaryen Only one of Prince Daemon’s two daughters with his second wife has been successfully bonded with a dragon. That would be older daughter Lady Baela, whose young, pale green dragon Moondancer is the envy of her kid sister, Rhaena. Although Moondancer is barely rideable at the start of the Dance in the books, in the series she’s been aged up enough to accompany Baela on surveillance missions.
.
Tyraxes
Rider: Prince Joffrey Velaryon Little has been revealed at this point about the dragon bonded to the youngest of Queen Rhaenyra’s sons by the late Ser Harwin Strong, other than that he exists.
Currently Unaffiliated
.
Seasmoke
Photo: HBO
Rider: Ser Laenor Velaryon* With a color that matches his name, Seasmoke is, along with Caraxes, the only dragon in the dance to have seen combat in recent memory. He and Laenor played a critical role in Daemon Targaryen and Corlys Velaryon’s war for the Stepstones during season one. Laenor, however, has since fled Westeros to live a free life with his boyfriend in Essos. Will he return for the war and reunite with his dragon? Will Seasmoke seek him out? Will a new rider claim him? Since Laenor is unequivocally dead in the books, leaving the creature free to be claimed, the source material provides little guidance here.
.
Vermithor
Photo: HBO
Rider: none A bronze-colored beast in the Vhagar/Meleys size range, Vermithor was once ridden by no less than King Jaehaerys the Conciliator himself, helping him preside over decades of peace and prosperity. Since then, he’s taken up residence in the Dragonmont, the hollow volcanic mountain at the heart of Dragonstone. He has no rider and no bonded partner, though Daemon manages to sing to and soothe him in a memorable scene during the season one finale.
.
Silverwing
Rider: none Silverwing — you can probably guess how she got that name — was the mount of Good Queen Alysanne, Jaehaerys’s queen, friend, and adviser. Fittingly, she winds up in the Dragonmont with Vermithor after the passing of the two monarchs. The books suggest the two dragons are themselves as close as their riders the king and queen were.
.
Grey Ghost, Sheepstealer, and the Cannibal
Riders: none Daemon mentions “the three wild dragons” who live on Dragonstone when tallying up Team Black’s fire-breathing options. What makes them wild, rather than just riderless? These three dragons have never been linked to or ridden by a human in their lives. In the books, they’re Grey Ghost, a shy creature who mostly eats fish; Sheepstealer, a mud-brown enemy to Dragonstone’s shepherds and their flocks; and the Cannibal, a coal-black beast known for eating dead dragons, and even some of the smaller live ones.
.
Stormcloud
Rider: none (Paired to Prince Aegon the Younger) Daemon lists 13 Dragonstone dragons in the season one finale. So far we’ve covered 12; Arrax, the mount of Lucerys Targaryen, was the unlucky 13th. This leaves the status of Stormcloud, the dragon of Rhaenyra and Daemon’s son Aegon (not to be confused with Alicent and Viserys’s son Aegon), uncertain.
By submitting your email, you agree to our
Terms and Privacy Notice
and to receive email correspondence from us. This site is protected by reCAPTCHA and the Google
Privacy Policy and
Terms of Service apply.
or
Already a subscriber?
What is your email?
This email will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
Password must be at least 8 characters and contain:
Lower case letters (a-z)
Upper case letters (A-Z)
Numbers (0-9)
Special Characters (!@#$%^&*)
This password will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
You’re in!
As part of your account, you’ll receive occasional updates and offers from New York, which you can opt out of anytime.
or
Already a subscriber?
What is your email?
This email will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
Password must be at least 8 characters and contain:
Lower case letters (a-z)
Upper case letters (A-Z)
Numbers (0-9)
Special Characters (!@#$%^&*)
This password will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
You’re in!
As part of your account, you’ll receive occasional updates and offers from New York, which you can opt out of anytime.
Already a subscriber?
Already a subscriber?
`;
// integrate Sub(x) scripts and elements
if (hostname !== 'subs.nymag.com') { // do not integrate on this subdomain
document.head.appendChild(trackingScript);
document.body.insertAdjacentHTML('beforeend', subXAnimationElements);
}
There was an error processing the request. Please try again later."}).catch(e=>console.error("Error verifying email: ",e)))(r.querySelector(".content"),o.bannerCTAVerification)})):(l.remove(),s.remove()),o.dismissable||n.remove(),o.useAlertIcon||a.remove(),r.classList.add("show"),n.addEventListener("click",()=>{u(),r.classList.remove("show")})}else r.remove()}});
}, {"1":1,"6":6,"12":12,"35":35,"40":40}];
window.modules["global-nav.client"] = [function(require,module,exports){"use strict";const dom=require(4),auth=require(12),signInButton=dom.find(".user-signin"),signOutButton=dom.find(".user-signout"),globalNav=dom.find('[class^="global-nav"]'),body=dom.find("body"),dropdownItems=dom.findAll(".dropdown-wrap"),gtm=require(1),appendLandingPageParams=require(135),pageUri=require(124).getPageUri(),subscriptionPromoLinks=dom.findAll(".persist-params"),searchString=window.location.search||"";function closeDropdowns(e){let n=globalNav.querySelectorAll(".dropdown.open");dropdownItems.forEach(function(t){let o=t.querySelector(".dropdown");!n||t.contains(e.target)&&27!==e.keyCode||o.classList.remove("open")})}function gtmSendReport(e,n,t){let o={eventCategory:"ecommerce",eventAction:"componentClick",brand:e,dimension23:"global-nav",list:pageUri,pageZone:"header",variant:"nav-link"};"global-nav-link"===t&&(o.eventLabel=n.href),gtm.reportNow(o)}function updateElementTargetUrlsIfQueryStrings(e){if(searchString){const n=new URLSearchParams(searchString);let t=e.href;if(t.includes("?")){const o=t.split("?"),i=new URLSearchParams(o[1]);for(let e of n.entries())i.set(e[0],e[1]);t=`${o[0]}?${i.toString()}`,e.href=t}else e.href=`${t}?${n.toString()}`}}function init(e){const n=e.querySelectorAll(".to-landing-page");window.addEventListener("auth:init",()=>{signInButton.addEventListener("click",function(e){e.preventDefault(),auth.showEmbeddedLoginFlow("top navigation")}),signOutButton.addEventListener("click",function(e){e.preventDefault(),gtmSendReport("Sign Out",e.target,"user-info-link"),auth.logout()}),auth.isAuthenticated()&&e.classList.add("signed-in"),auth.isSubscriber()&&e.classList.add("subscribed"),e.querySelectorAll(".user-link").forEach(e=>{e.classList.add("active")}),subscriptionPromoLinks.forEach(e=>{updateElementTargetUrlsIfQueryStrings(e)}),appendLandingPageParams(n)})}dropdownItems.forEach(function(e){e.addEventListener("click",function(){e.querySelector(".dropdown").classList.toggle("open")})}),body.addEventListener("click",closeDropdowns),document.addEventListener("keydown",closeDropdowns),globalNav.addEventListener("click",function(e){let n=e.target;n.classList.contains("global-nav-track")&>mSendReport(n.text,n,"global-nav-link")}),module.exports=init;
}, {"1":1,"4":4,"12":12,"124":124,"135":135}];
window.modules["aaa-module-mounting.legacy"] = [function(require,module,exports){"use strict";const _pickBy=require(221),_each=require(406),Fingerprint2=require(408),DS=require(407),Eventify=require(246);function registerGlobals(){window.DS=DS,window.Eventify=Eventify,window.Fingerprint2=Fingerprint2,DS.value("Eventify",Eventify),DS.value("Fingerprint2",Fingerprint2),DS.value("$document",window.document),DS.value("$window",window)}function mountDollarSliceComponents(){DS.service("components",["$document","$module",function(e,n){var o=_pickBy(n.definitions,e=>e.providerStrategy===n.providers.controller),r=Object.keys(o);function t(e){return o=>{try{n.get(e,o)}catch(e){logMountError(o,e)}}}_each(r,n=>{var o=e.querySelectorAll('[data-uri*="/_components/'+n+'/"]'),r=e.querySelectorAll('[data-uri$="/_components/'+n+'"]');_each(o,t(n)),_each(r,t(n))}),this.components=r}]),DS.get("components")}function logMountError(e,n){const o=e.outerHTML.slice(0,e.outerHTML.indexOf(e.innerHTML));console.error("Error attaching controller to "+o,n)}registerGlobals(),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{mountDollarSliceComponents()}):mountDollarSliceComponents();
}, {"221":221,"246":246,"406":406,"407":407,"408":408}];
window.modules["ads.legacy"] = [function(require,module,exports){"use strict";const _map=require(118),_forEach=require(107),_isString=require(268),_intersectionWith=require(409),_isEqual=require(274),_each=require(406),_debounce=require(182),_sortBy=require(205),page=require(124),visit=require(114);DS.service("adService",["Eventify","$cid","$document","$window",function(e,t,a,i){var o,n,s,r,d,c,u,l,g={},p=this,h=[],f=visit.getQueryParamsObject(["utm_campaign"]),m=document.querySelector('script[data-type="ad-a9"]'),b=[],w=!1,v=[],y=document.querySelector('script[data-name="ad-doubleverify"]');document.querySelector('script[data-name="concert-ads"]')||(i.NYM={},i.NYM.analytics={},i.NYM.analytics.adStartTime=i.performance.now(),i.googletag=i.googletag||{},i.googletag.cmd=i.googletag.cmd||[],u=i.googletag,(m||y)&&(i.googletag.cmd=i.googletag.cmd||[],i.googletag.cmd.push(function(){i.googletag.pubads().disableInitialLoad()})),m&&(l=i.setInterval(function(){void 0!==window.apstag&&void 0!==window.apstag.timeout&&(i.clearInterval(l),window.apstag.cleared=!0,l=null)},10),setTimeout(function(){l&&(i.clearInterval(l),i.googletag.pubads().refresh(),window.apstag||console.log("MESSAGE: Timeout for A9 load exceeded, aborting"))},500)),y&&(b.push(new Promise(function(e){w?e():v.push(e)})),c=i.setTimeout(T,2500)),o=function(e){var t,a,o=e.data,n=[];return o.loaded?e:(o.loaded=!0,t=null,(t=o.sizes?u.defineSlot(o.name,o.sizes,o.id).addService(u.pubads()):u.defineOutOfPageSlot(o.name,o.id).addService(u.pubads())).setTargeting("adid",o.id),f.hasOwnProperty("utm_campaign")&&t.setTargeting("utmcamp",f.utm_campaign),a=p.getAdCount(o.label),t.setTargeting("label",o.label+"_"+o.site+"-"+a),u.display(o.id),u.pubads().addEventListener("slotOnload",function(){i.NYM.analytics.firstAdLoadTime||(i.NYM.analytics.firstAdLoadTime=i.performance.now(),i.NYM.analytics.firstAdLoadLabel=e.data.label)}),n=_(o),Promise.all(b).then(function(){n?window.apstag&&window.apstag.cleared?window.apstag.fetchBids({slots:[n],timeout:window.apstag.timeout},function(){u.cmd.push(function(){window.apstag.setDisplayBids(),u.pubads().refresh([t],{changeCorrelator:!1})})}):y&&u.pubads().refresh([t],{changeCorrelator:!1}):u.pubads().refresh([t],{changeCorrelator:!1})}),e.slot=t,e)},n=function(e){var a,i,o,n=t(),s=e.getAttribute("data-name"),r=e.getAttribute("data-sizes"),d=e.getAttribute("data-label"),c=e.getAttribute("data-site");n=e.id,r&&r.length?(r=r.split(","),a=[],_map(r,function(e){e=e.split("x"),i=parseInt(e[0]),o=parseInt(e[1]),a.push([i,o])})):(e.classList.add("oop"),a=!1),this.data={id:n,name:s,sizes:a,loaded:!1,label:d,site:c},g[n]=this},r=function(e){u.cmd.push(function(){var t=o(e);g[e.data.id]=t})},s=function(e){var t=[];e.slot?(t=_(e))&&window.apstag&&window.apstag.cleared&&window.apstag.fetchBids({slots:[t],timeout:window.apstag.timeout},function(){u.cmd.push(function(){window.apstag.setDisplayBids(),u.pubads().refresh([e.slot],{changeCorrelator:!1})})}):e&&r(e)},u.cmd.push(function(){var e,t,o,n=page.getMeta("article:tag"),s=page.getMeta("author"),r=i.location.href,d=(e=a.head.querySelector(".head-gtm"),t=a.body.querySelector(".gtm"),e&&"top"===e.getAttribute("data-gtm")?"gtmtop":t&&"bottom"===t.getAttribute("data-gtm")?"gtmbottom":"");o=[],_forEach([n,s,d],function(e){_forEach(e.split(","),function(e){(e=e.trim().toLowerCase().replace(/\s/g,"-").replace(/\'|\’/g,"")).length&&o.push(e)})}),u.pubads().setTargeting("kw",o),u.pubads().setTargeting("entry_group",o),r=r.slice(r.lastIndexOf("/")+1),u.pubads().setTargeting("pn",r),u.companionAds().setRefreshUnfilledSlots(!0),u.pubads().enableAsyncRendering(),u.enableServices()}),this.load=r,this.create=function(e){return new n(e)},this.refresh=function(e){var t;_isString(e)?(t=this.getById(e),s(t)):s(e)},this.remove=function(e){var t=e.data.id;a.getElementById(t).innerHTML=""},this.getAdCount=function(e){var t,a=0,i=Object.keys(g);return _each(i,function(i){(t=g[i]).data.loaded&&t.data.label===e&&a++}),a},this.getById=function(e){return g[e]},d=_debounce(function(){var e={TopLeaderboard:1,RightColTopMPU:2,outOfPage:99,"homepageTakeover/TopLeaderboard":1},t=_sortBy(h,function(t){return e[t.data.label]||10});_forEach(t,function(e){return e.data.sizes?r(e):i.setTimeout(function(){r(e)},2e3)}),y&&window.PQ.cmd.push(()=>{try{window.PQ.loadSignals(["ids","bsc","vlp"],T)}catch(e){T(),console.error(`There has been an error loading Double Verify signals: ${e}`)}}),h=[]},10),this.addToPageLoadQueue=function(e){h.push(e),d()});function _(e){var t,a=e.sizes;return a=_intersectionWith(a,[[970,250],[970,90],[728,90],[300,600],[300,250],[320,100],[320,50]],_isEqual),e.sizes&&e.sizes.length&&(t={slotID:e.id,sizes:a,slotName:e.label}),t}function T(){i.clearTimeout(c),w=!0,_forEach(v,function(e){e()})}}]);
}, {"107":107,"114":114,"118":118,"124":124,"182":182,"205":205,"268":268,"274":274,"406":406,"409":409}];
window.modules["cid.legacy"] = [function(require,module,exports){"use strict";DS.service("$cid",function(){var r=Math.floor(100*Math.random());return function(){return"cid-"+ ++r}});
}, {}];
window.modules["client.legacy"] = [function(require,module,exports){"use strict";require("cid.legacy"),require("ads.legacy"),require("facebook.legacy"),require("aaa-module-mounting.legacy");
}, {"cid.legacy":"cid.legacy","ads.legacy":"ads.legacy","facebook.legacy":"facebook.legacy","aaa-module-mounting.legacy":"aaa-module-mounting.legacy"}];
window.modules["facebook.legacy"] = [function(require,module,exports){"use strict";DS.service("facebook",[function(){this.fb=function(i){window.FB&&window.FB[i].apply(this,Array.prototype.slice.call(arguments,1))}}]);
}, {}];
require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o typeof key === 'string' && key.match(/\.legacy$/)).forEach(key => window.require(key));
}
function tryToMount(fn, el, name) {
try {
fn(el); // init the controller
} catch (e) {
const elementTag = el.outerHTML.slice(0, el.outerHTML.indexOf(el.innerHTML));
console.error(`Error initializing controller for "${name}" on "${elementTag}"`, e);
}
}
/**
* mount client.js component controllers
*/
function mountComponentModules() {
Object.keys(window.modules).filter(key => typeof key === 'string' && key.match(/\.client$/)).forEach(key => {
let controllerFn = window.require(key);
if (typeof controllerFn === 'function') {
const name = key.replace('.client', ''),
instancesSelector = `[data-uri*="_components/${name}/"]`,
defaultSelector = `[data-uri$="_components${name}"]`,
instances = document.querySelectorAll(instancesSelector),
defaults = document.querySelectorAll(defaultSelector);
for (let el of instances) {
tryToMount(controllerFn, el, name);
}
for (let el of defaults) {
tryToMount(controllerFn, el, name);
}
}
});
}
// Make sure that a `window.process.env.NODE_ENV` is available in the client for any dependencies,
// services, or components that could require it
// note: the `` value is swapped for the actual environment variable in /lib/cmd/compile/scripts.js
window.process = window.process || {};
window.process.env = window.process.env || {};
if (!window.process.env.NODE_ENV) {
window.process.env.NODE_ENV = '';
}
// note: legacy controllers that require legacy services (e.g. dollar-slice) must
// wait for DOMContentLoaded to initialize themselves, as the files themselves must be mounted first
mountLegacyServices();
mountComponentModules();
// ]]