Re: [csswg-drafts] [css-shadow-parts] Make `::slotted()` a combinator (#7922)

The CSS Working Group just discussed ``[css-shadow-parts] Make `::slotted()` a combinator``.

<details><summary>The full IRC log of that discussion</summary>
&lt;ntim> leaverou: making ::slotted a pseudo created a couple of issues<br>
&lt;ntim> leaverou: I linked to a couple of them<br>
&lt;astearns> [lists issues]<br>
&lt;ntim> leaverou: we already discussed of making it a pseudo class<br>
&lt;ntim> leaverou: it seems possible to make it a combinator<br>
&lt;fantasai> scribenick: fantasai<br>
&lt;fantasai> lea: which would address all of these issues<br>
&lt;fantasai> lea: proposed syntax for a named combinator /slotted/<br>
&lt;fantasai> lea: which follows a plan we had for named combinators so they're not all weird ascii<br>
&lt;emilio> q?<br>
&lt;astearns> ack emilio<br>
&lt;Zakim> emilio, you wanted to say that reduced-motion has various side effects in Firefox<br>
&lt;fantasai> lea: ::part() has similar issues, but more complicated, so figure out later<br>
&lt;fantasai> lea: question is can we spec this combinator without giving too much access, without leaking info about shadows to the outside<br>
&lt;fantasai> lea: There are lots of reactions in the issue (31 thumbs up 17 hearts) so at least positive reaction from some people<br>
&lt;emilio> q+<br>
&lt;futhark> q+<br>
&lt;astearns> zakim, open queue<br>
&lt;Zakim> ok, astearns, the speaker queue is open<br>
&lt;fantasai> [note for the audience, very few CSSWG issue have that many reactions]<br>
&lt;astearns> q+ futhark<br>
&lt;fantasai> emilio: This potentially makes it possible to style things that are not slotted from inside the shadow tree, right?<br>
&lt;fantasai> emilio: if you have /slotted/ + something else<br>
&lt;fantasai> lea: we'll need to provide some kind of limitation<br>
&lt;westbrook> q+<br>
&lt;fantasai> emilio: how would that work?<br>
&lt;fantasai> lea: that's the question<br>
&lt;bkardell_> q+<br>
&lt;fantasai> lea: we need limitation on grammar of what comes after slotted combinator<br>
&lt;fantasai> emilio: seems hard to do<br>
&lt;fantasai> lea: we could start by allowing the same grammar as argument of ::slotted() and expand from there<br>
&lt;fantasai> lea: I disagree with "small benefit", it does seem to solve a buch of issues<br>
&lt;fantasai> emilio: wrt targetting siblings<br>
&lt;fantasai> emilio: [didn't hear]<br>
&lt;fantasai> lea: right<br>
&lt;astearns> s/[didn’t hear]/is the thing we cannot do<br>
&lt;fantasai> lea: the issue is asking to style siblings that are also slotted<br>
&lt;fantasai> emilio: we don't have a great way of distinguishing slotted vs unslotted<br>
&lt;fantasai> westbrook: if a sibling isn't slotted, it isn't visible.<br>
&lt;fantasai> emilio: could be in a different slot<br>
&lt;fantasai> westbrook: if these are slotted, incredibly low specificity<br>
&lt;lea> q?<br>
&lt;lea> q+<br>
&lt;fantasai> westbrook: majority of custom element devs would expect, to have control over that at low specificity<br>
&lt;fantasai> westbrook: customer could override using standard mechanics of light DOM<br>
&lt;fantasai> emilio: would that change nature of sibling combinator after slotted combinator in a way that ignores slotted things? Otherwie no way to make it work<br>
&lt;fantasai> emilio: not in the DOM tree, not slotted<br>
&lt;fantasai> lea: a few questions here<br>
&lt;fantasai> lea: 1. can we define something like this, is it implementable<br>
&lt;fantasai> lea: 2. what kind of restrictions do we need to prevent breaking encapsulation<br>
&lt;fantasai> lea: I think we should resolve on these separately<br>
&lt;fantasai> emilio: if you have combinator that does same thing as pseudo, then why not not have a combinator?<br>
&lt;bkardell_> s/ do we need to prevent breaking encapsulation/ do we need to prevent breaking encapsulation (that's a whole other set of discussions)<br>
&lt;fantasai> emilio: seems hard to imagine non-problematic expansions of pseudo<br>
&lt;fantasai> lea: some obvious expansions that clearly don't break<br>
&lt;fantasai> lea: e.g. pseudo-classes or pseudo-elements that depend on that selector<br>
&lt;fantasai> lea: and room for expansions not posisble inside pseudo-element<br>
&lt;fantasai> emilio: expansions are allowed, see ::part()<br>
&lt;fantasai> lea: it would solve query selector out of the box<br>
&lt;fantasai> lea: also targetting descendants and pseudo-elements<br>
&lt;fantasai> lea: only question is targetting siblings<br>
&lt;astearns> ack fantasai<br>
&lt;Zakim> fantasai, you wanted to ask about order of slotting or order in light dom<br>
&lt;astearns> ack futhark<br>
&lt;lea> q-<br>
&lt;fantasai> futhark: This is same as content shadow DOM [missed]<br>
&lt;emilio> q+<br>
&lt;fantasai> futhark: thinking about limitations, if you add :is() and :where(), you can walk up ancestry of slotted element which is almost like :host-context() which has been turned down before<br>
&lt;fantasai> futhark: I would also like to point out that we support pseudo-elements on ::slotted() today, can expand the list<br>
&lt;astearns> ack westbrook<br>
&lt;emilio> q-<br>
&lt;fantasai> westbrook: Westbrook, Adobe, Web Components CG<br>
&lt;futhark> It's probably implementable in Blink since this is basically the same as ::content from Shadow DOM v0<br>
&lt;fantasai> westbrook: It's likely that many of us in the CG that were enthusastic in the issue, because as Web Component devs we're very excited about the possibilities of /slotted/ combinator<br>
&lt;fantasai> westbrook: both for reasons listed in the issue, but also for being able to leverage :has() to style based on what has been slotted<br>
&lt;fantasai> westbrook: this currently requires JS, and JS has to be context-dependent<br>
&lt;fantasai> westbrook: so this would simplify JS and open up capabilities we've not had in the past<br>
&lt;astearns> ack bkardell_<br>
&lt;fantasai> bkardell_: Complicated feelings about this proposal<br>
&lt;fantasai> bkardell_: on the one hand, find both ::slotted() to be awkward<br>
&lt;fantasai> bkardell_: and not powerful enough<br>
&lt;fantasai> bkardell_: but also know why we have them, and what emilio says probably true<br>
&lt;westbrook> Examples of JS for Slot Content Detection: https://github.com/w3c/webcomponents-cg/discussions/72<br>
&lt;fantasai> bkardell_: around 2012-ish, we had 2 combinators proposed to cross the shadow boundaries<br>
&lt;fantasai> bkardell_: and we did that, and it was implemented in Chrome, and then it was removed<br>
&lt;astearns> (like /deep/)<br>
&lt;fantasai> bkardell_: I thought that was a hasty decision, and I really do support revisiting combinators that help wiht these cases<br>
&lt;fantasai> bkardell_: people are building in userspace querySelector that can cross shadow boundaries, because sometimes you want that<br>
&lt;fantasai> bkardell_: so totally support revisiting with good use cases<br>
&lt;fantasai> bkardell_: also make sure we don't create something bad<br>
&lt;rniwa> q+<br>
&lt;fantasai> bkardell_: but currently I don't think it's bad, do more in this proposal to get there<br>
&lt;astearns> ack fantasai<br>
&lt;TabAtkins> Scribe+<br>
&lt;TabAtkins> fantasai: first question, when you say you want to target siblings, do you mean in the slotted subtree?<br>
&lt;lea> q?<br>
&lt;TabAtkins> fantasai: If so, sibling relationships as slotted, or as originally in the light dom?<br>
&lt;TabAtkins> (I think the answer is as slotted)<br>
&lt;fantasai> lea: Definitely siblings within the subtree of slotted should be accessible, one of the main use cases<br>
&lt;TabAtkins> fantasai: I mean like if you slot all the even children, are you seeing siblings as they're slotted, or as they were in the original light dom<br>
&lt;fantasai> lea: Only looking at slotted elements would break encapsulation less, but might be harder to implement<br>
&lt;emilio> westbrook: it seems that use case could be solved by a `slot` pseudo-class or so?<br>
&lt;fantasai> lea: but this is going in the weeds<br>
&lt;fantasai> lea: more important to see if consensus to pursue this if we can find restrictions<br>
&lt;astearns> q+<br>
&lt;TabAtkins> Basing on the slot relationships is what the use-cases want - letting you select *as if* the slotted elements were always in the position they ended up being slotted into.<br>
&lt;TabAtkins> fantasai: Details can matter. This suggest that you're not necessarily using a combinator, but rather looking thru a pseudo-element into a new structure.<br>
&lt;fantasai> lea: Not necessarily needed, not a major use case<br>
&lt;fantasai> lea: they need pseudo-classes, descendants, access to subtree of the slotted element itself<br>
&lt;fantasai> lea: but if we could restrict to access only the element itself and its subtree<br>
&lt;westbrook> emilio: there are definitely other paths to solving that situation, why we called it "Slot Content Detection" rather than any specific API or syntax.<br>
&lt;emilio> q+<br>
&lt;fantasai> lea: that would still solve a lot of the problems today<br>
&lt;fantasai> s/emilio:/emilio,/<br>
&lt;astearns> ack rniwa<br>
&lt;fantasai> rniwa: As implementer, I think short answer is no, we don't want to make this supported as a combinator<br>
&lt;fantasai> rniwa: because it poses significant implementation complexity<br>
&lt;fantasai> rniwa: I question the proposition that these are actual use cases that need solving<br>
&lt;fantasai> rniwa: it's often the case that when someone wants to style slotted content based on their descendants or siblings, it's often a mistake made in the DOM structure itself<br>
&lt;westbrook> q+<br>
&lt;fantasai> rniwa: at least in the cases I've seen, you need a different DOM structure, not a combinator<br>
&lt;lea> q?<br>
&lt;fantasai> astearns: Challenge that assertion<br>
&lt;fantasai> astearns: I think there are valid use cases that are not achievable, this is why ppl are writing JS to do it<br>
&lt;fantasai> astearns: and it's a lot easier to restructure DOM in your component than to write JS to achieve the right effect<br>
&lt;fantasai> astearns: but we are talking about a combinator that's different from other combinators, and will require safety restrictions<br>
&lt;fantasai> astearns: we have three implementers saying "I don't want to do this"<br>
&lt;fantasai> astearns: Pseudo-element doesn't do everything we want it to do<br>
&lt;lea> q+ another use case that came up that is addressed by this is that pepple are asking for a :has-slotted pseudo-class that applies to slots — with this, this would simply become `:has(/slotted/ *)` (can't find it now but astearns has a link to it)<br>
&lt;fantasai> astearns: what if we make pseudo-elements do things other pseudos don't do? And enable some of these effects?<br>
&lt;astearns> ack astearns<br>
&lt;bkardell_> s/pepple/people<br>
&lt;lea> q?<br>
&lt;lea> q+<br>
&lt;fantasai> emilio: asking a slot whether it has content seems useful<br>
&lt;fantasai> emilio: but combinator...<br>
&lt;fantasai> emilio: pseudo-class of a slot that says whether it's got content is a lot more straightforward<br>
&lt;fantasai> emilio: and that's trivially implementable<br>
&lt;fantasai> emilio: some use cases, like querySelector, that's a no-go to me<br>
&lt;astearns> ack emilio<br>
&lt;fantasai> emilio: same reason why ?? in shadow trees<br>
&lt;fantasai> emilio: the compelling use case I see here is whether or not slot has content, and that's much simpler to fix<br>
&lt;astearns> ack westbrook<br>
&lt;fantasai> westbrook: To respond to two things<br>
&lt;emilio> s/??/document.querySelector doesn't return stuff stuff inside shadow trees<br>
&lt;fantasai> westbrook: rniwa says maybe DOM structure should change<br>
&lt;fantasai> westbrook: but HTML parser requires certain DOM structures<br>
&lt;fantasai> westbrook: if user wants UL in its content, and want to manage the LIs, we can't just change the DOM structure<br>
&lt;fantasai> westbrook: the second use case Lea mentioned is most important<br>
&lt;rniwa> q+<br>
&lt;fantasai> westbrook: whether UL, or TABLE, or any places where DOM structures can't be change<br>
&lt;fantasai> westbrook: these are where we most need ability to reach into the child of the element<br>
&lt;fantasai> westbrook: wrt emilio's point about knowing slotted content or not is easier, yes of course<br>
&lt;keithamus> q?<br>
&lt;fantasai> westbrook: that's a second situation, not the same as the issues listed here (just you can use what lea proposes to do the same thing)<br>
&lt;fantasai> westbrook: but we don't think that's the center of what she's proposing<br>
&lt;fantasai> lea: I agree, we could add combinators and pseudo-classes and allow to be querySelector and maybe add some ad-hoc specificity rules to fix that problem<br>
&lt;fantasai> lea: but as we start to add these, we're just re-inventing combinators<br>
&lt;fantasai> lea: might be useful if implementors could elaborate what makes the combinator hard to implement<br>
&lt;emilio> q+<br>
&lt;fantasai> lea: so we can understand what we need to restrict<br>
&lt;astearns> ack lea<br>
&lt;fantasai> emilio: scenario where WebKit and Gecko differe from Blink<br>
&lt;fantasai> emilio: we store our data for shadow trees in the shadow root<br>
&lt;fantasai> emilio: there's a perf benefit to that<br>
&lt;fantasai> emilio: you don't add rules from inside the shadow tree<br>
&lt;bkardell_> to emilio's point about queryselector not crossing shadow root: by default, yes, that's the whole idea of it.  That doesn't mean there shouldn't be an explcit way to do it that isn't "re-write queryselector in user space, but to cross boundaries".  Any way.<br>
&lt;fantasai> emilio: wrt implementation complexity, things outside the shadow tree  that are super far related from tehs shadow tree cannot affect styles inside it<br>
&lt;keithamus> q+<br>
&lt;fantasai> emilio: and can't match rules inside it<br>
&lt;fantasai> emilio: let's say you have combinator and descendant selector<br>
&lt;fantasai> emilio: inside shadow root you have stylsheet with .myslot /slotted/ div, can reach deep inside the slotted subtree<br>
&lt;fantasai> emilio: now any time anything changes in that element, we need to go find the shadow tree where that may have been<br>
&lt;fantasai> emilio: in order to invalidate style<br>
&lt;bramus> q+<br>
&lt;fantasai> lea: doesn't this already apply to ::slotted()?<br>
&lt;fantasai> emilio: yes, but only askes about the slotted element itself<br>
&lt;fantasai> emilio: wherease if you do it on any random element, then ...<br>
&lt;fantasai> emilio: And now I'm sad, you need to do a whole tree-walk to find where the rule came from<br>
&lt;fantasai> lea: would restricting the combinators allowed after /slotted/ help?<br>
&lt;fantasai> emilio: but then you can select slotted content<br>
&lt;fantasai> lea: basically same as nesting, first we resolve on limited syntax<br>
&lt;fantasai> lea: and then eventually opened up to syntax we actually wanted<br>
&lt;fantasai> lea: so even if almost as restricted as pseudo-element, can expand<br>
&lt;fantasai> lea: if we add that, then we have a hybrid between pseudo-elements and combinators<br>
&lt;fantasai> lea: with weird syntax<br>
&lt;fantasai> lea: as we figure out how to implement things, we relax restrictions<br>
&lt;fantasai> astearns: sounds like you would be OK with /slotted/ combinator with massive restrictions to begin with<br>
&lt;fantasai> astearns: you would hope that they can be lifted, but OK if not possible<br>
&lt;fantasai> emilio: lifting those restrictions is similar to allowign slotted pseudo<br>
&lt;fantasai> emilio: you may end up poking outside the shadow tree<br>
&lt;fantasai> emilio: not super positive that we would be able to address perf<br>
&lt;astearns> q?<br>
&lt;fantasai> emilio: and has a lot of other questions, like DOM APIs<br>
&lt;fantasai> emilio: what does .matches() do?<br>
&lt;fantasai> emilio: whether slotted matches depends on where the rule comes from<br>
&lt;fantasai> emilio: ? would allow you to poke inside the shadow tree structure<br>
&lt;fantasai> emilio: which is not anything we want<br>
&lt;fantasai> emilio: we don't want to expose shadow tree structure to the outside<br>
&lt;lea> q?<br>
&lt;astearns> ack rniwa<br>
&lt;fantasai> rniwa: agree with emilio<br>
&lt;emilio> s/?/.matches("foo /slotted/ div")<br>
&lt;lea> emilio: how did /deep/ work around these issues? I seem to remember that implementability was not the reason for removing it (but I could be wrong)<br>
&lt;fantasai> rniwa: challenge as implmenter is, the use cases you want are exactly the ones with perf problems<br>
&lt;fantasai> rniwa: consider :has(), devs really want it<br>
&lt;fantasai> rniwa: eventually we added it, but at great cost<br>
&lt;lea> q?<br>
&lt;lea> q+<br>
&lt;fantasai> rniwa: cost of adding something like this is extremely high, and benefit extremely questionable<br>
&lt;emilio> ack emilio<br>
&lt;fantasai> astearns: I'm not confident all the examples have perf problems<br>
&lt;astearns> ack keithamus<br>
&lt;fantasai> keithamus: seems use cases around built-ins, and those like UL styling LI, is this the wrong forum and do we need to think about some way to customize built-ins<br>
&lt;fantasai> keithamus: or do we need something other than combinator that can represent similar trees<br>
&lt;fantasai> keithamus: e.g. styling LI inside UL inside custom element<br>
&lt;fantasai> keithamus: want to slot the LIs<br>
&lt;fantasai> keithamus: [missed]<br>
&lt;astearns> ack bramus<br>
&lt;fantasai> bramus: we seem to be stuck on this pseudo-element selector scope it somehow, which comes to @scope<br>
&lt;fantasai> bramus: we have other way sto contain where your selectors reach into<br>
&lt;fantasai> bramus: if you could @scope onto slotted UL, your selection is contained<br>
&lt;rniwa> q+<br>
&lt;fantasai> bramus: I don't think @scope pseudo-elements are allowed, but maybe pseudo-state idk<br>
&lt;astearns> ack lea<br>
&lt;fantasai> lea: I wanted to challenge what rniwa said, if you look at the actual proposal<br>
&lt;fantasai> lea: he said :has() has a high cost, but also big benefit<br>
&lt;fantasai> lea: if you look at actual issue, lots of excitement from web components community about it<br>
&lt;fantasai> lea: I understand that there are challenges, but not like benefit is marginal either<br>
&lt;fantasai> rniwa: we can continue to disagree on this point<br>
&lt;astearns> ack rniwa<br>
&lt;westbrook> q+<br>
&lt;fantasai> rniwa: another point, some of the use cases could b resolved by having [missed] child descendant to a slot<br>
&lt;fantasai> rniwa: we've been saying we should be able to slot a non-direct descendant<br>
&lt;bkardell_> q+<br>
&lt;fantasai> rniwa: havne't pursued because of priorities, but we would support doing this<br>
&lt;astearns> ack westbrook<br>
&lt;fantasai> westbrook: if there's a link to that conversation, woudl be really awesome to see<br>
&lt;ntim> s/[missed]/non-direct child ?<br>
&lt;fantasai> westbrook: wanted to take a pass on bramus's posit, what if we could create an @scope on a slot element that talked to the light DOM tree of that slotted element represnts?<br>
&lt;fantasai> westbrook: seems like some of the conflict here is about capabilities of a combinator<br>
&lt;bkardell_> https://github.com/whatwg/html/issues/3534#issuecomment-371716571 I believe is the issue (or one of) that rniwa was referring to westbrook<br>
&lt;fantasai> westbrook: but if scope is on track to land, but if could say scope of a slot is the light DOM, and could control all the children of that, could we leverage those capabilities<br>
&lt;fantasai> westbrook: to style things<br>
&lt;fantasai> westbrook: and leverage growing syntax of CSS to this issue<br>
&lt;astearns> ack fantasai<br>
&lt;Zakim> fantasai, you wanted to respond to that<br>
&lt;rniwa> q+<br>
&lt;emilio> fantasai: I don't think @scope is what you want if you want to just "trap" it inside<br>
&lt;ntim> more precisely: https://github.com/WICG/webcomponents/issues/574<br>
&lt;emilio> ... has some interesting cascade implications<br>
&lt;fantasai> .shadowroot::slotted slotted-descendant<br>
&lt;emilio> ... we want a pseudo with tree structure inside<br>
&lt;fantasai> .shadowroot::slotted(slotted-child) > more stuff<br>
&lt;emilio> ... or if we want to restrict the jumping we could do ^<br>
&lt;astearns> ack rniwa<br>
&lt;fantasai> s/we want/better to use/<br>
&lt;fantasai> rniwa: @scope doens't solve the perf issue, because even then you have problem that some shadow root could affect your style<br>
&lt;fantasai> rniwa: that's the challenge that we don't want to take on without extremely high benefit<br>
&lt;astearns> ack bkardell_<br>
&lt;lea> q?<br>
&lt;fantasai> emilio: you need to go from a random DOM element, to the shadow tree where the style may have come from<br>
&lt;fantasai> emilio: if you want random elements to be styled by random slots, to find the right shadow tree you have to do arbitrary shadow tree walks<br>
&lt;lea> q+<br>
&lt;fantasai> &lt;fantasai> OK, thanks, that helps<br>
&lt;fantasai> astearns: [missed]<br>
&lt;fantasai> emilio: pseudo-element is easier<br>
&lt;bkardell_> q+<br>
&lt;fantasai> emilio: [missed this]<br>
&lt;astearns> s/[missed]/is that the case for all solutions (combinator, pseudo, @scope)/<br>
&lt;fantasai> bkardell_: some of the things, I had similar questions about what exactly those combinators were doing exactly<br>
&lt;astearns> ack bkardell_<br>
&lt;fantasai> bkardell_: I'm not sure that I agree when you said that a non-direct chid would solve that<br>
&lt;fantasai> bkardell_: but I aso wanted to just publicly cheer that use case<br>
&lt;lea> +1 slotting non direct children wouldn't solve anyt of my use cases<br>
&lt;fantasai> bkardell_: because I think that use case is way beyond this one<br>
&lt;astearns> s/[missed this]/is that the case for all solutions (combinator, pseudo, @scope)/<br>
&lt;fantasai> bkardell_: would love to see it solved<br>
&lt;astearns> ack lea<br>
&lt;fantasai> lea: we've gone back into discussing other combinators and subtrees<br>
&lt;fantasai> lea: I think there's value in having it be a combinator even if all it does is the same thing current syntax does<br>
&lt;emilio> q+<br>
&lt;fantasai> lea: first, niceer syntax. Don't have to manage parens<br>
&lt;fantasai> lea: it works with querySelectorAll<br>
&lt;fantasai> lea: it has specificity<br>
&lt;fantasai> lea: even if no other extenion, it's still useful<br>
&lt;fantasai> lea: if ppl agree with that, we could go from there<br>
&lt;fantasai> lea: it wouldn't be exactly the same as pseudo-element, just a little bit more<br>
&lt;fantasai> lea: even if no combinators are allowed after slotted combinator, still some value -- and easier to implement<br>
&lt;fantasai> emilio: that still has open question<br>
&lt;fantasai> astearns: open questions different from blocking concerns<br>
&lt;fantasai> emilio: do you want shadow root to be able to query things outside the shadow tree?<br>
&lt;fantasai> emilio: people want it, but not normally how it works<br>
&lt;rniwa> q+<br>
&lt;fantasai> emilio: can argue about syntax<br>
&lt;astearns> q+<br>
&lt;astearns> ack emilio<br>
&lt;fantasai> lea: wrt DOM APIs, you can access anything if the shadow tree is open<br>
&lt;fantasai> emilio: but first of all, this would give you a new capability if we make :matches (???) actually follow this combinator<br>
&lt;fantasai> emilio: exposes shadow tree structure<br>
&lt;ntim> I think he meant Element.prototype.matches()<br>
&lt;fantasai> emilio: we can say doesn't match if you call it from outside shadow tree where the slot lives<br>
&lt;fantasai> lea: I suspect we have to answer these questions in general<br>
&lt;fantasai> lea: can't just make everything a pseudo-element<br>
&lt;fantasai> emilio: yes we can<br>
&lt;astearns> ack rniwa<br>
&lt;fantasai> rniwa: once again, I agree with emilio<br>
&lt;emilio> s/:matches/.matches()/<br>
&lt;fantasai> rniwa: DOM API, entire whole point of shadow DOM is [missed]<br>
&lt;ntim> encapsulation?<br>
&lt;fantasai> rniwa: so idea of finding the element that's not in your tree from another tree fundamentally goes against the design of shadow DOM<br>
&lt;bkardell_> q+<br>
&lt;fantasai> rniwa: this is such a highly important aspect of design<br>
&lt;fantasai> rniwa: I don't think we should introduce any API that violates it<br>
&lt;fantasai> astearns: not sure that creating a combinator with such a radical deviation from other combinators is easy to explain<br>
&lt;fantasai> astearns: limitations in some contexts where we use selectors...<br>
&lt;astearns> ack astearns<br>
&lt;fantasai> astearns: register that concern<br>
&lt;fantasai> bkardell_: what should be in or out wrt shadow DOM<br>
&lt;rniwa> q+<br>
&lt;fantasai> bkardell_: but disagree that we should be against<br>
&lt;fantasai> bkardell_: you *can* walk across, reasonable to have convenience to select across<br>
&lt;fantasai> bkardell_: see it in the wild<br>
&lt;fantasai> bkardell_: closed vs open shadow DOM exists<br>
&lt;fantasai> bkardell_: I think there are use cases<br>
&lt;lea> q?<br>
&lt;lea> q+<br>
&lt;astearns> ack bkardell_<br>
&lt;astearns> ack rniwa<br>
&lt;fantasai> rniwa: I think we can continue to disagree with you on the point, this is not the venue<br>
&lt;fantasai> rniwa: as far as I'm concerned as an implementer, we wouldn't consider this as a possible path<br>
&lt;astearns> ack lea<br>
&lt;fantasai> lea: rniwa, you said against the model of shadow trees<br>
&lt;fantasai> lea: philosophically between elements under a slotted subtree vs light DOM anywhere<br>
&lt;fantasai> lea: I think slotted elements should be fair game<br>
&lt;fantasai> lea: we know from dev surveys that the encapsulation of shadow DOM is one of the reaosns devs don't use shadow DOM<br>
&lt;fantasai> lea: citing that as a reason not to give devs what they need, not a good path forward<br>
&lt;fantasai> lea: priority of constituencies<br>
&lt;fantasai> astearns: Lots of discussion, but no consensus on moving forward, so suggest we take back to the issue<br>
&lt;fantasai> astearns: come up with some alternate approaches, work through the pros and cons of each<br>
&lt;fantasai> astearns: particularly from author perspective<br>
&lt;fantasai> astearns: and discuss this later<br>
&lt;fantasai> ntim: I would add looking at which use case [no audio] so we can agree on more specific syntax that addresses the perf footguns<br>
&lt;fantasai> astearns: so ranking the use cases, looking at most improtant first, and maybe adding for those not in the issue?<br>
&lt;fantasai> s/[no audio]/are perf footguns and which are not/<br>
&lt;fantasai> s/agree/converge/<br>
&lt;fantasai> s/the perf/the non-perf/<br>
&lt;fantasai> astearns: thanks for the discussion, we'll talk later<br>
</details>


-- 
GitHub Notification of comment by css-meeting-bot
Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/7922#issuecomment-1721286352 using your GitHub account


-- 
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config

Received on Friday, 15 September 2023 13:29:40 UTC