ByDiana Budds,
a design writer who has covered architecture, urbanism, and culturesince 2010
Bec Brittan’s Aries Rising Capricorn, Barbora Žilinskaitė’s Storyteller cabinet, Ellen Pong’s Golden Teacher, and Ian Collings’s Stone Object 56 (background detail) were exhibited during New York’s 2021 design week.
Photo-Illustration: Curbed; Photos: Courtesy David Mitchell, Bungalow, Friedman Benda, and The Future Perfect
Bec Brittan’s Aries Rising Capricorn, Barbora Žilinskaitė’s Storyteller cabinet, Ellen Pong’s Golden Teacher, and Ian Collings’s Stone Object 56 (background detail) were exhibited during New York’s 2021 design week.
Photo-Illustration: Curbed; Photos: Courtesy David Mitchell, Bungalow, Friedman Benda, and The Future Perfect
NYCxDesign this year was unusually timed, split between a handful of virtual events and self-directed tours in May followed by in-person fairs and gallery shows in November, a way of hedging against the uncertain reality of the pandemic but also insisting that the show must go on. Because of that, ICFF and Wanted Design were significantly smaller this year and coincided with the collector-focused Salon Art & Design, which normally takes place in November. For many people, it was the first time in two years that they’ve hosted exhibitions or presented work publicly. “Whenever there are revolutions in technology, science, or in the political and cultural spheres, designers transform these revolutions into life,” says Paola Antonelli in At a Distance, a new book from The Slowdown and Apartamento that reflects on the past year and a half. For all of those reasons, I felt even more curious about this year’s Design Week presentations. What would emerge on the other side of all this?
Despite the smaller scale and quieter presence — the next NYCxDesign is scheduled just six months from now, and I expect that edition to be more “normal” — there was a palpable enthusiasm in the air as designers and gallerists were finally able to share their work in person. Gone are all those cute and comforting jet-puffed silhouettes and audacious Memphis colors and patterns. I was excited to see that design has become more wild, inward, and intuitive. The work exhibited during design week didn’t seem as concerned with having a sweeping (and insular) dialogue within the discipline of design. Instead, much of it explored relationships between people and the environment and borrowed the shapes, textures, and materials of the natural world to do so.
Ashwini Bhat’s Sky Trail, Julian Watts’s Tree, Ian Collings’s BLK Basalt table, and Simon Johns’s Ledge dry bar (background detail).
Photo-Illustration: Curbed; Photos: Courtesy The Future Perfect, Patrick Parrish Gallery, Simon Johns, and Shoshana Wayne Gallery
My first taste of this would come from Liam Lee’s sculptural felted furniture, which I wrote about ahead of their debut in Patrick Parrish’s Salon Art & Design exhibition. Lee, who is interested in how someone’s home mirrors their psyche, didn’t leave his house for weeks during lockdown. His home was like a seal against the outside world, and the furniture — which riffs on the shape of bacteria and seed pods — resembled things he didn’t think belonged in his home. I was drawn to the free-flowing intuitive shapes of his hand-felted chairs, which seemed to embody the feeling of uncertainty and loss of control many of us felt during the pandemic. The only option was to go with the flow.
A couple of feet away from Liam Lee’s chairs at Salon was Julian Watts’s Tree, a sculpture the Oregon-based woodworker made from twigs he found around his studio. Tree is composed of hand-carved and chiseled knobs, paddles, and tubes made from maple, walnut, oak, redwood, ash, pine, and fir that protrude from an eight-foot-tall bleached totem. (It sort of reminded me of Bruce Lee’s wooden dummy.) Some featured dimpled surfaces, others were polished smooth; they protruded from the central column like fungi on a log. During the pandemic, he began to read poetry from the 13th-century Buddhist Shiwu, which changed how he engaged with his five-acre plot of forested land where he foraged for wood. He thought about the shapes he saw in nature that repulsed him yet made him want to touch them and about the weirdness he found there. His Moon sculpture — of wood knobs erupting from an undulating surface — has that effect as well, of simultaneously repelling and attracting a closer look. It triggered trypophobia while also reminding me of an acorn woodpecker’s grotesque-looking granary tree.
A sculptural tray from Silvia Furmanovich’s new home collection, Jenna Lyons’s Ladditable lamp for Roll & Hill, Amber Cowan’s Visions of the Night Muse in Jade, and Lizan Freijsen’s mold-inspired carpet (background detail).
Photo-Illustration: Curbed; Photos: Courtesy Roll and Hill, Heller Gallery, Silvia Furmanovich, and Lizan Freijsen
There were also many direct references to mushrooms, mold, and fungi, a continuation of a trend that’s already been extremely popular in décor and has taken over social media the same way Memphis did a few years ago. Reaching peak mushroom seems like an apt metaphor for the past couple of years — they’re ephemeral, strangely beautiful, and emerge from decay. (And for a mental escape, well, just eat a few.) I enjoyed seeing how designers who have a more abstract sensibility went beyond the familiar toadstool. Faye Toogood’s latest addition to her Puffball series of lights for Matter Made, exhibited in the gallery’s new project space, actually looks like one of those puffballs that have been going viral on TikTok. The jewelry designer Silvia Furmanovich launched a new home-goods line with wooden platters that looked like turkey tail fungi, and some veered into the grotesque. Bungalow, a new art and design gallery, exhibited Ellen Pong’s Golden Teacher, a floor light (shown earlier this year in Pink Essay’s extremely excellent “Home Around You” exhibition) with a maitake-esque shade and a thorny stem. Even Jenna Lyons (yes, that Jenna Lyons) riffed on a shroom for a lamp in her first furniture collection, produced in collaboration with Roll & Hill. Glass artist Amber Cowan’s fantastical and surreal sculpture Visions of the Night Muse in Jade, at Heller Gallery’s Salon booth, featured what looked (to me) like dozens of little button mushrooms bursting through an overgrowth of flowers.
The works I relished the most captured the unruliness of the natural world: the irregular shapes and contours of something worn down or cracked by the elements. Simon Johns, a furniture designer based a few hours’ drive from Montreal, looked to the sandstone landscape around his studio for source material. The cracks and fissures in the sandstone influenced the jagged carved-wood doors of his Ledge dry bar, which earned him an ICFF award for best new designer. I was enchanted by Ian Collings’s ambitious series of stone sculptures at the Future Perfect’s Salon booth, which showed his mastery of the material and his development as a designer since he left the furniture brand Fort Standard, which he co-founded in 2018. His Stone Object 56, a slab of onyx left raw on one side and polished down to a rippling surface on the other, presented a dichotomy of the markings left by the natural world and his own hand. For Collings, the stone pieces represent his preoccupation with impermanence, transformation, and “images of time,” as he writes in his artist’s statement. BLK Basalt table — a chunky gray base with a smooth black top — had subtle contours that reminded me of a bird’s-eye view of Isamu Noguchi’s California Scenario sculpture garden. Ashwini Bhat abstracted the natural world in Sky Trail, a sculpture presented by Shoshana Wayne Gallery at Salon Art & Design. It’s from a series named Assembling California, a body of work inspired by the state’s landscape and geological field surveys by John McPhee. Bhat, who is trained in the Bharatanatyam style of dance, was able to capture the precariousness of California’s wilderness in this twisted and crumpled meandering clay object adorned with a wisp of lace lichen. Though it was made in 2019 and appeared earlier this year in R & Company’s Objects 2020 show, its appearance at Salon felt especially apt: The piece harnesses the frenetic energy I’ve felt during the past couple of years so strikingly.
A copper chair by Soren Ferguson, Max McInnis’s Ray chair, Jaeyeon Park’s Jimmy chair, and Barbora Žilinskaitė’s Storyteller (background detail).
Photo-Illustration: Curbed; Photos: Courtesy Jaeyeon Park, Fran Parente, Jonald Dudd, and Friedman Benda
To achieve work that felt more naturalistic, designers often left surfaces a little rougher, revealing the marks of human hands. Barbora Žilinskaitė’s lumpy Storytellercabinet was one such piece. Sculpted from denim-blue wood-based resin, the anthropomorphic cabinet featured two folded hands as doors and a blobby silhouette for the shelves above it. The copper benches and chairs by Soren Ferguson at Matter’s sprawling new showroom above its Broome street gallery had rough edges and patinated surfaces that look like a serendipitous accident from the welding process. At Wanted, Jaeyeon Park, a recent Cranbrook graduate, exhibited Jimmy, a series of two mangled and twisted resin chairs painted in neon yellow and orange. They were inspired by “La Ballade de Jim,” an uptempo cover by the French synth-pop group Paradis of Alain Souchon’s 1985 song about a man who gets drunk and crashes his car after his girlfriend breaks up with him. One of the stranger and ultimately more fascinating works I saw was Max McInnis’sRay chair at Jonald Dudd, a show that is always design week’s most conceptual exhibition. McInnis usually works with found objects that are Frankensteined together with an industrial binding material. With the Ray chair, McInnis used rough pea gravel to bind French-style chair legs to a folding chair adorned with Swarovski crystals, velvet upholstery, and a yellow chain — a completely unexpected mix.
Another Human’s Doodle table, Hiroko Takeda’s Social Fabric weaving, Paul Simon’s Loop light, and Bec Brittain’s Aries Rising Capricorn (background detail).
Photo-Illustration: Curbed; Photos: Courtesy Jonald Dudd, David Mitchell
This year, many artists and designers whose trademark is meticulous and precise craft also broke away into something more unrestrained. Another Human’s frenetic Doodle table at Jonald Dudd’s installation in Canal Street Market — a tangle of metal supporting a resin top — was a departure from designer Leah Ring’s Mattise cutout and Memphis-inspired pieces. At Colony’s first group show in two years, I got lost in Hiroko Takeda’s Social Fabric weaving. Her sculptural works are usually quite intricate and feature repetitive patterns, but for Social Fabric, she sporadically deviated from a geometric overshot pattern with improvisational weaves, resulting in a glitchy, blurry motif. The lighting designer Bec Brittan let go of the idea of perfection with Aries Rising Capricorn, a new lighting series inspired by a Keith Riley drawing of an overflowing urn and fiber optics. Brittain, whose work is typically planar, didn’t want to “design” the series and instead free-form twisted acrylic rods to come up with lights that look like 3-D hand drawings.
While there were so many brilliant and exhilarating works in this year’s strange edition of NYCxDesign, it was Palais des Glaces, a collaborative installation by Lambert & Fils and Atelier Zébulon Perron, that transported me most of all. The atmospheric installation at Lambert & Fils newish Tribeca showroom was composed of pillar candles hanging off steel structures that riffed on New York’s scaffolding and set atop tall monolithic candlesticks. Mirrors reflected the flickering light and the flow of people in the room. The Montreal-based lighting company opened its space last year but wasn’t able to host a housewarming until now. The candles had been burning for hours by the time I entered the dark showroom, and trails of melted wax careened down the side of the candlesticks, hardening into oozing shapes that morphed throughout the evening. The ephemerality of the installation, changing at each moment, felt hauntingly beautiful. The other side of it all is a thrilling place to be.
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()}});
}, {"3":3,"6":6,"17":17,"35":35,"40":40}];
window.modules["global-nav.client"] = [function(require,module,exports){"use strict";const dom=require(4),auth=require(17),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(3),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 i=t.querySelector(".dropdown");!n||t.contains(e.target)&&27!==e.keyCode||i.classList.remove("open")})}function gtmSendReport(e,n,t){let i={eventCategory:"ecommerce",eventAction:"componentClick",brand:e,dimension23:"global-nav",list:pageUri,pageZone:"header",variant:"nav-link"};"global-nav-link"===t&&(i.eventLabel=n.href),gtm.reportNow(i)}function updateElementTargetUrlsIfQueryStrings(e){if(searchString){const n=new URLSearchParams(searchString);let t=e.href;if(t.includes("?")){const i=t.split("?"),o=new URLSearchParams(i[1]);for(let e of n.entries())o.set(e[0],e[1]);t=`${i[0]}?${o.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()||auth.isMobileAppRequest())&&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;
}, {"3":3,"4":4,"17":17,"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();
// ]]