13:58:04 RRSAgent has joined #css 13:58:04 logging to https://www.w3.org/2021/09/29-css-irc 13:58:06 RRSAgent, make logs Public 13:58:07 Meeting: Cascading Style Sheets (CSS) Working Group Teleconference 13:58:35 dholbert has joined #css 13:59:42 jfkthame has joined #css 14:00:57 flackr has joined #css 14:01:24 oriol has joined #css 14:02:22 present+ 14:02:35 dgrogan has joined #css 14:02:40 present+ 14:02:52 present+ 14:02:53 present+ 14:02:54 present+ 14:02:59 present+ 14:03:03 xfq_ has joined #css 14:03:11 present+ 14:03:15 present+ 14:03:17 present+ 14:03:26 present+ 14:03:30 present+ 14:04:59 present+ 14:05:16 present+ 14:05:18 fremy has joined #css 14:05:34 present+ 14:05:53 present+ 14:06:11 present+ 14:06:48 present+ 14:07:07 https://github.com/w3c/csswg-drafts/issues/499#issuecomment-926122734 14:07:18 topic: Decorative grid-cell pseudo-elements 14:07:29 github: https://github.com/w3c/csswg-drafts/issues/499#issuecomment-926122734 14:07:37 eeeps has joined #css 14:08:14 eugene has joined #css 14:08:26 @fantasai This is largely prompting from @jensimmons going over use-cases for this 14:08:45 @fantasai There was a syntax in the original context that was grid-area pseudo element as the grid area shorthand 14:08:57 @fantasai so we asked what are the questions we need to answer in the spec to have somethign that works 14:09:07 s/@fantasai/fantasai:/ 14:09:08 +1 14:09:53 fantasai: (summarized comment) 14:09:55 [ fantasai summarizes comment https://github.com/w3c/csswg-drafts/issues/499#issuecomment-926122734 ] 14:10:25 fantasai: would not accept the grid-placement properties 14:12:26 fantasai : ...a whole pile of details that we think makes this into something we can possibly spec up 14:12:32 :) 14:12:38 q+ 14:12:45 q+ 14:12:54 chris has joined #css 14:12:54 jensimmons : the goal here is to create a pseudo element without having to place empty divs in a cell; 14:12:57 q+ 14:13:01 present+ 14:13:03 q+ 14:13:09 rrsagent, here 14:13:09 See https://www.w3.org/2021/09/29-css-irc#T14-13-09 14:13:14 jensimmons : this really is about creating a way to target a track an area or a cell directly and not need empty divs 14:13:35 jensimmons : this felt like the simplest approach without having all the craziness 14:14:19 Rossen_ : we'll go through the queue, circle back to the specifics and knock out some of the bullets 14:14:31 ack emilio 14:14:55 emilio : are they tree-abiding pseudo elements? 14:14:58 fantasai : yes 14:15:14 dholbert_ has joined #css 14:15:25 emilio : seems a bit weird, imagine you have a bunch of conditions ... 14:15:32 (sorry missed some parts) 14:15:45 emilio : need to go through all the grid area selectors independent of all the 14:15:48 emilio: concerned about creating multiple boxes per selector 14:16:10 emilio : it can possibly work, it's just weird to do that 14:16:30 emilio : you can have a first-line style, if the page doesn't use them at all, just skip this mess 14:16:38 emilio : I need to work out all the details 14:16:43 i/emilio : it can/fantasai: Not sure, but are you referring to how you need to do placement before deciding which/how many boxes you have? 14:17:04 emilio : multiple of these selectors can match ; the fact that this happens before box construction 14:17:16 iank_ this would invalidate layout potentially right? 14:17:25 fantasai : placement first but then layout second 14:17:35 fantasai just impacts box-tree and auto-placement 14:17:46 s/match/match, and their declarations need to cascade/ 14:18:17 s/fantasai/fantasai:/ 14:18:19 @emilio: you mean like table backgrounds and borders ^_^ 14:18:22 jensimmons there are use-cases where it could be helpful to do more than borders and backgrounds 14:18:39 q 14:18:49 jensimmons if there's a hard limit, that would make things too many paints, too many cycles; then bring it in. I'd like to see if we can not limit it right out of the gate 14:18:56 q+ 14:19:01 s/jensimmons/jensimmons:/ 14:20:19 Rossen_ : feedback is creating grid cells starts off with this very simple and seemingly very easy expectation that oh we'll just put a background 14:20:51 Rossen_ : then as soon as you go down the rabbit hole, you're talking about having user expectations that are matching that of focus-handling, all kinds of eventing and capabilities 14:21:16 Rossen_ : for example focus and app development management that make sense, especially in the grid layout which can vary vastly 14:21:34 q? 14:21:41 Rossen_ : as we approach this kind of solution, it is in a way that we are not ignoring everything coming down the line in expectations 14:21:43 ack Rossen 14:21:59 Rossen_ : multi-column columns where people want to be able to target and style individual columns 14:22:03 bkardell_ has joined #css 14:22:09 ntim has joined #css 14:22:11 Rossen_ : the difference there is that multi-column is a scoped use-case to grid 14:22:16 smfr has joined #css 14:22:43 Rossen_ : if we start going down the path again, if we don't have great answers from the get-go for the use-cases I enumerated, then all we are doing here is solving the easy use-case of "let's put a little bit of background" 14:23:05 Rossen_ : I'm concerned about trying to fit functionality and user expectations of elements into pseudo-elements 14:23:05 q? 14:24:10 q? 14:24:22 rachelandrew : I like the idea of being able to do this; my concern if we don't solve the borders on grid-cells issues first 14:24:30 rachelandrew : authors will use this to style the gaps 14:24:36 Rossen's concerns all sound like separate issues to raise on spec text that we need to write - yes, this will be complicated, we shouldn’t minimize the effort. But it will be worth the work 14:24:50 ack rachelandrew 14:25:08 rachelandrew : I kind of like this idea, I understand where Rossen_ is coming from 14:25:27 rachelandrew : We add all these pseduo-elements and authors use it to add borders because authors want to use them to style the gaps 14:25:42 rachelandrew : that comes up for me far more often than trying to s tyle the grid 14:25:53 I agree with rachelandrew 's point — let's make sure we spec styling gaps before finishing this... and encourage implementors to ship gap styling before or with cell styling. 14:25:56 rachelandrew : if people can do this grid, why can't we do this with multi-column? 14:26:15 rachelandrew : it's the same in their minds; is this not something we'll need to do in multi-column too? 14:26:21 rachelandrew : for authors, it could reduce mental load 14:26:31 ack fantasai 14:26:31 fantasai, you wanted to react to rachelandrew to respond to the concern about gaps 14:26:35 fantasai : +1 to rachelandrew 14:26:41 fantasai : gaps issue is coming 14:26:52 fantasai: I agree with the prioritization of shipping order 14:27:06 chrishtr : it sounds like this is a feature that allows you to do something you can already do in a more convenient way 14:27:24 q+ 14:27:29 chrishtr : it sounds like it would be quite - in addition to the issues Rossen_ mentioned, could be quite complicated - could slow down interactions on implementation in the browser 14:27:35 chrishtr : does this use-case justify complexity 14:27:36 ack chrishtr 14:27:48 jensimmons : I think there are quite a few use-cases that this could solve for 14:27:57 I'm not sure what would slow things down more than adding those elements as real HTML 14:28:02 Rossen_ : you can do that if you add elements there 14:28:16 chrishtr : you can do all this with adding the elements 14:28:25 ack iank_ 14:28:27 jensimmons : there's a big difference between having the space and targeting the space with CSS 14:28:36 iank_ : I want to bring up how this interacts with a11y 14:28:47 @TabAtkins: you have to add them during layout, and their order in the "DOM" depends on the grid placement which can change depending on container queries etc... 14:28:52 s/having the space/having elements in the tree/ 14:28:58 iank_ : currently we have before and after markup, depending on the context 14:29:10 iank_ : I'd be concerned that people would use the content property 14:29:15 q? 14:29:18 iank_ : to add more content in CSS 14:29:21 Don't pseudo-elements affect layout and take up space? 14:29:37 ack florian 14:29:38 yeah, that's my understanding 14:29:47 florian : from an author standpoint, this syntax seems spot-on 14:29:55 florian : this makes it extremely learnable 14:30:15 s/spot-on/spot-on, once I've seen it can't think of anything else/ 14:30:19 florian : when you start thinking about pointer events, etc. - on the one hand yes, on the other, we're overdue on discussing these issues 14:30:50 florian : I'd like to hear from jensimmons about use-cases that go beyond border and background 14:30:58 florian : without needing a subtree or a pseduo-element 14:31:01 q? 14:31:34 jensimmons : 14:31:57 jensimmons : I feel unprepared to answer this question 14:32:31 jensimmons : it would be great to allow an element to tilt without an nth-child 14:32:39 q+ 14:32:43 q+ 14:32:43 jensimmons : there's this idea that content can flow automatically, especially with responsive design 14:33:04 q? 14:33:25 jensimmons : not wanting to write a bunch of breakpoints; need a way to separate particular areas on the grid without manipulating the way content is flowing 14:33:36 jensimmons : this is not about creating more content, this is about styling 14:33:49 GameMaker has joined #css 14:34:26 ack emilio 14:34:45 emilio : the example shared jensimmons, I thought the idea was creating boxes / grid-items and being able to style them 14:35:02 emilio : what you showed was that these items would exist inside the grid 14:35:17 fantasai : I don't think we can do that example in the proposal that we have 14:35:31 fantasai : we could possibly do that if you didn't want the content to rotate 14:35:42 fantasai : you could do that with the pseudo-items and have the grid-item on top of that 14:35:51 emilio : if I understand, then you can do this with regular elements 14:36:03 fantasai : the problem is that with a regular element, you would have to inject a bunch of empty divs 14:36:10 https://github.com/w3c/csswg-drafts/issues/1943 is more like that first use case 14:36:11 emilio : i agree, I just wanted to wrap my head around it 14:36:25 emilio : a syntax to inject a bunch of elements onto the grid in a particular order to style them 14:36:40 fantasai : if we could select things by their placement in the grid, that would also be awesome 14:36:59 q- 14:37:01 fantasai : that has a problem of the selection being dependent on a layout 14:37:09 tantek has joined #css 14:37:12 fantasai : change as the size of the page changes 14:37:18 present+ 14:37:37 fantasai : part of what this is trying to solve is a handful of cases that don't involve styling the element itself 14:38:08 iank_ : variable content types, want content on a diagonal, how does this work for that case? It seems like you want to insert pseudo-elements based on the size of the grid 14:38:28 present+ 14:38:31 fantasai : block out the cells you want to block out by making them 14:38:42 iank_ : wouldn't that expand out the grid 14:38:55 fantasai : yes, you wouldn't use that when you only have a few items 14:39:24 fantasai : a lot of these are cases where the author knows the minimum and maybe the maximum but doesn't know the number of columns because that depends on how wide the screen is 14:39:42 iank_ : I'm a little suspicious of the "knows how many items". For that use-case where you want to skip grid areas 14:39:54 iank_ : It seems like it's actually easier to inject DOM 14:40:04 iank_ : Or a grid property that says, skip this grid area 14:40:32 iank_ : dynamic size of content didn't mesh in my mind 14:40:51 fantasai : I agree in that use-case it would be better to inject DOM 14:41:06 s/inject DOM/specify skipped cells in a property/ 14:41:07 s/inject DOM/specify skipped cells in a property/ 14:41:27 astearns : Next steps to draw out use-cases and corner-cases so we can talk through code examples 14:41:43 astearns : it doesn't sound like we're ready to say yes let's put this in a working draft 14:41:45 q+ 14:42:04 iank_ : I don't think we need an editor's draft, just writing down the examples in the issue 14:42:17 astearns : I think this is getting too complicated for an issue 14:42:34 astearns : spec text would be helpful; we wouldn't have to adopt the draft if we weren't happy with it 14:42:59 jensimmons : if folks are willing to explore this area, this seems like something we want to solve 14:43:20 jensimmons : yes, an editor's draft with real-world use-cases 14:43:30 PeterCon has joined #css 14:43:34 jensimmons : then we can point at items and identify what n eeds to be better 14:43:34 ack florian 14:43:47 florian : I support this for those who feel this is a bit early 14:44:02 florian : I came in really liking it and wondering if it's an uncanny valley of too much and not enough 14:44:18 florian : Want to see more examples to see if this comes close enough 14:44:44 iank_ : use-cases written down clearly would be really useful; there might be multiple avenues we can explore 14:45:01 iank_ : we've talked about styling columns and gaps, that could be a different selector 14:45:07 iank_ : multiple avenues we could go down 14:45:11 s/those who feel this is a bit early/those who feel this is a bit early, think of that early spec as an explainer/ 14:45:16 s/that could/the rotated item case, that/ 14:45:28 astearns : makes sense 14:45:49 jensimmons I will help make use-cases 14:45:54 jensimmons I can't help write the spec 14:46:00 rachelandrew happy to help with this 14:46:03 s/jensimmons/jensimmons:/ 14:46:04 s/jensimmons/jensimmons:/ 14:46:10 s/rachelandrew/rachelandrew:/ 14:46:40 astearns : task jensimmons and rachelandrew to work through examples and syntax 14:46:54 astearns: Resolved 14:48:17 RESOLVED: jensimmons and rachelandrew to write up use cases, examples, and syntax for this proposal 14:54:28 vmpstr has joined #css 14:57:39 ScribeNick: TabAtkins 14:58:31 Topic: effect of inert on hit testing 14:58:34 github: https://github.com/w3c/csswg-drafts/issues/6685 14:58:59 smfr: There has been a history of impls of `inert` that haven't matched 14:59:15 smfr: Chrome and Gecko already mismatch, now WebKit is implementing and want a spec that is clear 14:59:26 smfr: Historically, Chrome's was mor ein terms of DOM propagation 14:59:37 smfr: If an event hit an inert node it woudl skip up to an ancestor 14:59:41 present+ 14:59:55 smfr: Gecko was in terms of pointer-events; it woudl ignore the inert element so clicks could go to underneath it 15:00:14 present+ 15:00:16 smfr: On a call a few weeks ago chrishtr said he'd talk to Google folks and see if they're okay with doing Gecko's behavior 15:00:26 smfr: Also questions about whether inert effects APIs like elementFromPoint() 15:00:31 smfr: And some keyboard interactions 15:01:01 chrishtr: I did not unfortunatley get to talk to a11y team in Chrome, but I did review the discussions again. 15:01:25 chrishtr: I think there are pros and cons to both; I think we could just discuss Tim's proposal point-by-point and see if it's okay to everyone 15:01:42 chrishtr: Also no browsers publicly ship the attribute yet, so all browsers are still changeable right now 15:01:54 q+ 15:02:08 smfr: Dialog and Fullscreen specs refer to inert and say it should be applied to the document, with the dialog/fullscreen excepted from the effect 15:02:20 smfr: So even if the attribute ahsn't shipped, there are implications on those features 15:02:31 chrishtr: I didn't look at the code for dialog/fullscreen, did anyone else 15:02:54 chrishtr: I assume it ignores hit-test events in the dialog 15:03:46 chrishtr: So I think we can discuss this holistically and probably dialog impl coudl be changed in Chromium, unless someone knows about compat problems 15:04:08 emilio: I doubt the set order issue is going to be a problem for fullscreen/dialog, because they're on the top layer and thus always on top of everything else 15:04:43 emilio: In terms of impl, Gecko's has an internal CSS property called 'inert', and we apply it to everything and reset it on the dialog, that has effects on pointer-events and such 15:04:51 ack bkardell_ 15:05:19 bkardell_: Interesting bc dialog was defined with the terms of top-layer and inertness, but didn't expose them or refer to them elsewhere. They're two separate but related problems, and depending on what you do with the top layer it helps answer the other questions 15:05:52 bkardell_: The way libraries today make dialogs is to create a pseudo-top-layer that's a top-level child of body, so they can make everything else inert 15:06:10 bkardell_: When we define that, and Alice did the initial impl and we did the polyfill, some of the things around top layer are a little wonky maybe 15:06:33 bkardell_: There ahs been an incredible amount of discussion on this topic. Before Alice left on sabbatical, she agreed there were things in Chrome to work on. 15:06:46 bkardell_: So I think it's worth talking about top-layer first to set up the questions about inert, imo 15:06:48 q+ 15:07:06 chrishtr: I see now that Tim did put some comments on Chrome's behavior and quirks 15:07:16 ack smfr 15:07:42 smfr: One fo the fundamental difficulties is the inert spec says you can't make a descendant of an inert node non-inert, and yet the dialog spec says the document is inert and then the dialog (a child of the document) is non-inert... 15:08:02 smfr: And if the impl is pointer-events based, youa re allowed to make a descendant of a pointer-events:none node pointer-events:normal 15:08:45 ntim: WebKit recently implemented a pointer-events-based approach, similar to Firefox 15:09:13 astearns: So bkardell_ suggested starting with top layer 15:09:24 bkardell_: So let's discuss how it's defined and how it works 15:09:46 bkardell_: If it works something like existing impls in libraries, so it's effectively projected to a sibling of the document, we can think about it one way 15:09:51 q+ 15:10:02 bkardell_: If talking about the tree itself and where it lives normally in the tree, things get a lot more complicated 15:10:07 q+ 15:10:21 ack smfr 15:10:32 smfr: I think we're happy with the way top-layer is specified; it renders z-ordered above the rest of the doc 15:10:36 q+ 15:10:41 smfr: I think Chrome/WEbKit do that now 15:10:51 smfr: If there are implications for event propagation, maybe they're not clear enough 15:11:00 scribe+ 15:11:11 ack TabAtkins 15:11:15 TabAtkins: IIRC, the way we've described top layer is that it get reparented in the layer tree sense 15:11:24 TabAtkins: being a direct child of the top-level document/canvas/thing 15:11:33 TabAtkins: That way nothing can interfere with its positioning 15:11:44 TabAtkins: That's how we specced it, are we doing something different now? 15:11:50 chrishtr: No, that's what spc and impl do 15:12:02 chrishtr: reparent into new stacking context that is z-indexed above everything else 15:12:06 chrishtr: It's well-specified, afaict 15:12:15 TabAtkins: Shouldn't have any effect on events, that works normally 15:12:23 smfr: https://fullscreen.spec.whatwg.org/#rendering 15:12:26 chrishtr: My guess is chromium, hit testing happens on the layout box tree 15:12:39 chrishtr: so the impl probably sees the dialog element and then fails to look up the tree to see the inert attribute above it 15:12:49 chrishtr: If you see an inert node, stop at that node, but don't check ancestors 15:13:01 chrishtr: I think that's how impl, and not consistent with spec 15:13:23 chrishtr: Maybe we should discuss directly, should the impl just be exactly what Firefox and WebKit have already implemented? 15:13:38 chrishtr: Seems the difference is "?? cannot be iner, except when ... dialog" 15:13:42 emilio: That's a Gecko bug 15:13:49 emilio: Dialog is inert, we use the same mechanism 15:13:55 emilio: should be fixable 15:14:07 emilio: Rest of document is inert so can't do anything 15:14:11 emilio: but that seems like Gecko bug 15:14:18 emilio: other is, does this affect computed value of pointer-events? 15:14:21 emilio: In Gecko it does 15:14:28 futhark has joined #css 15:14:35 emilio: The alternative was to have an internal property and check that everywhere you check pointer-events: none 15:14:46 emilio: This way clearer for implementers and authors 15:14:50 present+ 15:15:03 emilio: And less likely to accidentally cause divergence in the future 15:15:16 s/authors/more useful to authors/ 15:15:20 chrishtr: UA style sheet? 15:15:23 emilio: A bit more magic than that 15:15:44 emilio: It's like an inherited property, which causes a bunch of other properties to compute differently 15:15:52 emilio: It's conceptually same as UA rule 15:16:13 emilio: In practice, we made an internal property to handle the inheritance. 15:16:35 emilio: Anything in subtree will have pointer-events: none forever, unless inert value is changed on descendant 15:17:17 [discussion of the implementation detail and how it's not visible to authors] 15:17:26 bkardell_: ??? 15:17:29 emilio: ???? 15:17:32 chrishtr: What about dialog? 15:17:33 https://searchfox.org/mozilla-central/source/layout/style/res/ua.css#171 15:17:38 https://searchfox.org/mozilla-central/source/layout/style/res/html.css#836 15:17:39 emilio: Sets the internal bit on the document element 15:17:53 emilio: and then dialog has a UA rule that applies this inert property to the default when modal 15:18:00 s/???/does that also affect the accessibility bits?// ans: yes 15:18:02 chrishtr: So special exception not accessible to developers 15:18:04 emilio: right 15:18:21 emilio: There's no way, spec-wise, for devs to override that 15:18:28 emilio: we could add that capability, unsure how it would look 15:18:38 emilio: Spec says anything under inert subtree is inert, and no way to un-inert a node 15:18:51 flackr: I think it'd get complicated for anything other than top-layer to override 15:18:57 bkardell_: That's why top layer is important here 15:19:04 bkardell_: if you are in top layer, can reason about things 15:19:14 bkardell_: some details that are observable that we need to agree on and document 15:19:41 bkardell_: I believe that back in April, Alice suggested that she might want to take a look at revamping some of Chrome's internals to use a pointer-events-like behavior 15:19:53 bkardell_: There was some hesitance to say the magic *was* pointer-events 15:19:59 bkardell_: because seemed architecturally unfortunate 15:20:01 emilio: why? 15:20:13 emilio: pointer-events shouldn't really be a CSS property, but we're way past that point now 15:20:28 emilio: So given that, I'm happy to say that inert is managed via pointer-events 15:20:36 chrishtr: In the Intent to Ship that didn't complete for this feature 15:20:43 chrishtr: Alice tried it and didn't like it 15:21:00 chrishtr: Didn't like that not targettable from getElementsFromPoint 15:21:09 bkardell_: makes inspector break 15:21:17 emilio: yeah, but that's an issue with inspector 15:21:19 q+ 15:21:29 chrishtr: It doesn't make sense to have pointer-events: none; and then ... 15:21:34 chrishtr: UA can special-case inspector 15:21:43 bkardell_: we have problem with top layer already, can't inspect stuff underneath 15:21:52 ack chrishtr 15:21:55 ack smfr 15:22:01 smfr: We could always add an options dictionary to getElementsFromPoint 15:22:29 smfr: To let it include pointer-events:none or inert if we wanted to 15:22:57 bkardell_: And then devtools would use that by defualt 15:23:12 chrishtr: and we could do that as a feature enhancement and devtools can just use magic 15:23:24 chrishtr: asking tim/simon, is what Emilio said consistent with what WebKit does? 15:23:41 chrishtr: You do some magic thing that makes descendants of inert p-e:none and the dialog is exempted? 15:23:55 ntim: It's mostly the same yeah, we just don't hcange the computed styles for pointer-events 15:24:24 emilio: I slightly prefer actually changing the computed style, for the reasons i described before, but don't feel super strongly. 15:24:39 emilio: Would just be a little unfortunate and easy to make mistakes in the future for authors 15:25:04 ntim: Not changing computed styles gives us flexibility to change inert in the future or not be fully consistent with the p-e:none value, but don't feel strongly either 15:25:19 bkardell_: I have a slight pref for Apple's because it makes the impl detail visible 15:25:51 emilio: We do specify some things in terms of UA style, and other things in terms of "behaves as", so I don't have a strong opinion, it's just a slight pref toward reflecting it in the computed style 15:25:59 s/makes the impl detail visible/ff's makes the implementation details observable 15:26:16 chrishtr: So it sounds like what's already in WK/Gecko is fine, and Chrome can change and the WG can agree on that in spec 15:26:23 chrishtr: So next is whether pointer-events:none is okay 15:26:39 astearns: Do we want to resolve on that first? 15:26:45 chrishtr: Talk about the next first 15:27:20 chrishtr: So Chrome originates the event up the tree to the first non-inert ancestor, Gecko just hit-tests down to the next non-inert in the stacking layer 15:27:36 chrishtr: I see why Gecko does this - it's easy to reuse behavior - but do we think it's the right semantic choice? 15:27:49 emilio: No strong opinion, but if there is a better choice it shoudl be a pointer-events value 15:28:14 ntim: Makes sense to me because you can have non-inerts inside of inert trees 15:28:54 chrishtr: But that's non web-exposed as a feature, just for this thing 15:29:11 TabAtkins: But it's a reasonable use-case that authors would want to do similar things with; why would we treat it as a special case they can't use? 15:29:30 chrishtr: Right. I think the question of mixed inertness is separate from whether you hit-test below it. 15:29:35 emilio: Yes, orthogonal 15:29:49 q+ 15:29:52 chrishtr: So argument ot make is that p-e:none is already there and sky isn't falling, so maybe it's fine 15:30:07 emilio: Yeah, and if we did it another way anyway, we should just add a new p-e value to it 15:30:31 flackr: I think hit-testing behidn the thing works well for a lot of use-cases where you have an event handler on an ancestor 15:30:59 TabAtkins: That works either way tho - Chrome's behavior will walk the 15:31:37 smfr: But that could mean an element gets the event even if you're lcicking elsewhere, if the clicked child is positioned outside 15:31:48 TabAtkins: Yeah, but it would have gotten the element if the child weren't inert 15:32:13 smfr: [missed about backdrop] 15:32:19 ntim: You can display:none the ::backdrop 15:32:28 ntim: Question was if we can pierce the top-layer, yes we can 15:32:36 chrishtr: Visually yes, but not hit-testing 15:32:41 ntim: Because everything else is inert, yes 15:32:47 q+ 15:32:54 ack smfr 15:33:01 q+ 15:33:22 emilio: Lacking a strong use-case to pursue a new p-e value, I suggest we just stick with none, and maybe change in the future if we feel it's needed 15:33:37 emilio: I'm okay on blocking on the new value if people think it's useful, but unless there's a strong reason to do it... 15:34:01 flackr: And there are a lot of use-case for *not* hitting an ancestor, which is p-e:none today, so we should stick with that by default 15:34:03 ack chrishtr 15:34:07 ack emilio 15:34:21 chrishtr: Agree with emilio and rob that we don't have a strong reasons to *not* use p-e:none, so we should just use that 15:34:25 chrishtr: So that allows us to resolve 15:34:47 chrishtr: I propose we resolve on the webkit behavior - don't expose the computed style (for the reason brian mentioned) and use p-e:none behavior 15:35:07 chrishtr: And when inert is set, force p-e, focus, etc in a user-agent way that's not exposed to devs 15:35:15 chrishtr: And elementFromPoint() skips the inert elements 15:35:30 astearns: I'm a little concerned about having this magic UA behavior... 15:35:56 astearns: If it's not *expressible* by authors; I want to make sure that what the UA does is something all the engines can implement in an interoperable way 15:36:03 astearns: Usually that means we have a property with the behavior 15:36:11 astearns: I'm concerned that magic means we might not get the details right 15:36:25 chrishtr: emilio, am I right that the Gecko impl just sets a UA-internal prop? 15:36:27 emilio: Yeah 15:36:46 flackr: And I think it's equivalent to a descendant selector with p-e:none in the UA, and equivalent rule for modals, etc 15:36:58 emilio: Not quite there becuase of shadow dom, it's actually inherited, but close enough 15:37:10 astearns: I don't think we've done a feature as a magic property 15:37:32 TabAtkins: We've never *specified* one as such, but several features are implemented as such 15:37:44 +1 I'm not concerned about speccing this 15:37:49 +1 15:38:02 bkardell_: I kinda agree with everyone else; if we can come up with a demonstrable reason to expose this, that should be a separate discussion 15:38:58 ack fantasai 15:38:58 Proposed resolution: Resolve on WK behavior. Use pointer-events:none, but don't reflect into computed style (use "behaves as" wording); same with user-select and related focus behavior 15:39:16 ntim: question about interaction of inert and modals, what if you have an inert node as ancestor of modal? 15:39:35 emilio: depends on details of how we spec, maybe modal dialogs are just always non-inert 15:40:07 bkardell_: The direct descendant of a top-layer should never be inert, right? 15:40:20 ntim: We could let people explicitly opt out of inert 15:40:28 emilio: I agree this is a different issue 15:40:47 emilio: If we decide that inert works this way, they can still spec it how they want 15:41:05 emilio: I do think that a modal dialog should never be inert unless exlicitly given inert 15:41:11 bkardell_: Do we need to talk about isInert()? 15:41:32 ntim: That's internal 15:42:03 ntim: What about ? 15:42:10 emilio: We should let HTML decide on that 15:42:29 emilio: I think it's edge-casey and we should just deal with the general problems here 15:42:50 astearns: So punt on explicitly-inert dialog question for now. 15:42:53 astearns: Any other discussion? 15:43:05 smfr: Where are we writing this? No spec for hit-testing yet 15:43:42 chrishtr: Should it live in HTML? 15:43:57 TabAtkins: We've got other hit-testing things that we need to define in CSS 15:44:12 chrishtr: But for this it just needs to define that something "behaves as..." 15:44:24 ntim: And there's already an HTML heading for it 15:44:44 florian: Do we need a spec for this with a "Hit Testing: TBD" section? 15:44:55 chrishtr: Yes, I took an action item to find someone for that two weeks ago. 15:45:07 chrishtr: Would be useful to make an empty spec with a TODO 15:45:22 fantasai: Maybe useful for a subsection in UI-4? 15:45:22 s/with a "Hit Testing: TBD" section?/with a "Hit Testing: TBD" section, and the rest of the spec being a copy of the relevant part of CSS2?/ 15:45:52 florian: pointer-events:none is not really specified 15:45:56 https://html.spec.whatwg.org/multipage/interaction.html#inert-subtrees 15:46:16 chrishtr: Oh yeah jeez, we should add a paragraph saying p-e:none means you're not hit-tested 15:46:47 top layer is very intuitively in fullscreen 15:47:08 RESOLVED: Resolve on WK behavior. Use pointer-events:none, but don't reflect into computed style (use "behaves as" wording); same with user-select and related focus behavior 15:47:16 RESOLVED: Add definition of p-e:none, at least, to UI 4 15:47:27 @smfr what was the top layer stuff that needed specifying that tab just mentioned? 15:47:53 chrishtr: see https://fullscreen.spec.whatwg.org/#rendering 15:48:18 Yeah they want us to steal that section 15:48:20 So we should 15:48:54 [disussing who should draft spec text] 15:49:07 TabAtkins: Also, should we steal the rendering section of fullscreen and import into csswg? 15:49:38 smfr: We might already ahve a resolution for specifying top-level 15:49:56 astearns: so proposed resolution is to put top layer into Positioning if we don't already have a resolution for it 15:50:16 bkardell_: There were some PRs about top layer in HTML itself. 15:50:39 astearns: I imagine we can steal the current spec text as-is and the inherit any issues from Fullscreen and HTML 15:50:43 astearns: objections? 15:50:59 RESOLVED: Steal the top-layer spec from Fullscreen, put it into Position 3. 15:51:13 \o/ for making progress on `inert` 15:51:18 topic: end 15:51:34 emilio: we should write WPT :) 15:51:43 yes :) 15:51:50 present+ 15:52:13
15:56:04 Rossen_ has joined #css 15:56:19 dholbert has joined #css 16:01:41 Topic: Rethinking delarative scroll-based animations syntax 16:01:43 github: https://github.com/w3c/csswg-drafts/issues/6674 16:01:43 github: https://github.com/w3c/csswg-drafts/issues/6674 16:02:04 miriam: So we were looking at scroll-linked animations (sla) as part of a bigger thing 16:02:27 miriam: Was looking at container-based interpolations, and ideally being able to interpolate values *in* the cascade rather than juming out to animations which override everything 16:02:39 See full discussion at https://wiki.csswg.org/ideas/timelines ; this crosses multiple issues 16:02:47 miriam: current sla proposal seems JS focused and later ported to CSS, so we wanted to discuss this 16:02:56 (into which we posted pieces of that overal proposal) 16:03:04 miriam: Rethinking how we could make sure SLAs, already in prototype, fit into our future plans for animations/inteprolation 16:03:09 miriam: several parts 16:03:15 SLA = Scroll-Linked Animation 16:03:20 miriam: Animations based on where you are in the scroll position of a container 16:03:41 miriam: So 0% - 100%, linked to an animation progress 16:04:02 miriam: Proposal is thus for an animation-timeline property (already in the SLA proposal), defaults to auto, but can be given a scroll() function. 16:04:24 miriam: Defaults to looking at nearest scrollable ancestor, you can specify what direction you want to listen to. 16:04:41 miriam: And can opt to look at root scroller, or a given container's name (specified in another property) 16:04:45 q? 16:05:08 miriam: An alt to that syntax is that instead of a scroll() function, could break out scroll-timeline-* properties 16:05:12 s/another property/container-name property, re-using from the @container query proposal/ 16:05:25 miriam: Using the function in animation-timeline seemed like a an extensible way to do more timeline types in the same property 16:05:32 Present+ dbaron 16:05:49 flackr: Is there a functional difference there? You could specify scroll() or a timeline name in animation-timeline? 16:05:52 miriam: right 16:06:11 flackr: So even if it is a function, we have the ability to specify other timeline types with a timeline name 16:06:29 miriam: So I think that's all handled by the larger proposal for SLA 16:06:38 q+ 16:06:53 miriam: Another thing - wanting to naimate on elements coming in or out of view. These element-based timelines work a little differently 16:07:04 miriam: Proposing view-timeline-* properties 16:07:19 miriam: view-timeline-name specifies the name of the timeline corresponding to the element coming in or out of view 16:07:31 miriam: view-timeline-inset to adjust how quickly it considers itself in view 16:07:51 miriam: and view-timeline-fit gives the baseline for where 0% is - start when they start to come into view, or start when fully into view 16:08:12 miriam: Also a question for if we need a timeline for that in-between space, between when it start to come into view and is fully in view 16:08:46 miriam: In terms of scroll-linnked timelines, were thinking these timelines would be visible to descendants and siblings; scope is attached to descendants of the parent 16:08:52 fantasai: One suggestion was to expose it to the whole document 16:08:56 fantasai: Coudl do this 16:09:11 fantasai: But it's important to resolve name conflicts with closer in the tree, not later in stylesheet or tree 16:09:25 q+ 16:09:28 fantasai: Multiple elements styled with the same timeline name should animate independently 16:09:39 ack flackr 16:09:40 s/elements/subtrees/ 16:09:52 https://github.com/w3c/csswg-drafts/issues/4912 16:09:59 flackr: We did have use-cases initially with scroll-timeline where author wanted to specify for a certain numer of pixels of scroll (largely for parallax effects, but we had others) 16:10:17 flackr: I assume that to do this with the new proposal you'd need an element that corresponded to the number of pixels you want to animate over? 16:10:30 flackr: Because the scroll() function is always from 0 to max scroll 16:10:40 flackr: And specifying in terms of %s is dependent on layout which is complicated 16:10:49 miriam: I don't think we covered that use-case, we'll have to think abou tit 16:10:59 smfr: A few things 16:11:12 smfr: For animations that run when an element comes into view, there's subtlety what designers want 16:11:19 ack smfr 16:11:37 smfr: Possibly some hysteresis; if you wobble it around the trigger point you want a looser organic feel 16:11:51 smfr: So feel designers will want more specific control 16:12:01 fantasai: I think you're mixing up scroll-linked and scroll-triggered animations 16:12:19 fantasai: SLA, the scroll position *is* the timeline. if you move the scroller it scrubs the animations backwards 16:12:27 fantasai: scroll-triggered is a timed animation that triggers when it comes into view 16:12:36 fantasai: the SLA in general is not targetting that use-case 16:12:53 smfr: I think I've seen examples that are scroll-linked but do have hysteresis 16:13:09 smfr: Some Apple pages have things that are linked to scroll position but still not precisely linked 16:13:14 smfr: Some time delay 16:13:34 flackr: I've seen this too, some examples of animations that are specifically lagged behind the timeline to provide some extra smoothness 16:14:03 smfr: So my problem is just making sure it's rich enough to address designer use-cases, or else they'll still just write JS 16:14:25 Rossen_: So are your examples addressed more if you have some sort of easing function that is part of the change? 16:14:31 Rossen_: So you have some easing between hops? 16:14:41 smfr: I don't think easing is enough; I think there has to be some time-based aspect 16:14:57 https://www.apple.com/iphone-13-pro/ 16:15:01 flackr: Could just be a lot of scroll triggers with easing... 16:15:06 smfr: Here's an example 16:15:38 smfr: There's an image showing the camera bumps, it's somewhat scroll-linked, but then it's sticky... 16:15:49 fantasai: We do have the *-inset property, which gives a *spatial* delay 16:16:19 flackr: Further down where it says "shoot it, cut it, ship it" seems to be the effect Simon's talkinga bout 16:16:42 Rossen_: So we can record Simon's concern in the issue, but I want to kepe the convo moving 16:17:03 smfr: Is it possible for an SLA to affect the size of the scrolled content, so we get circularity? 16:17:16 flackr: Yes, this has always been the case. We choose to handle it similar to :hover examples 16:17:34 flackr: You get the scroll position at the start of the frame, and if you change the size, the next frame will get an updated animation progress. 16:17:46 smfr: So that'll be specified in terms of the HTML event loop 16:17:57 +1 to what florian just said, I was about to say the same 16:18:13 florian: ... 16:18:27 TabAtkins: Nothing in the spec to that effect, could have it flicker madly under the cursor 16:18:33 q? 16:18:56 s/.../seems a little worse than :hover, as it can loop without further user interaction/ 16:19:04 flackr: Back to the lag thing, we could have something like transitions where the animation progress eases over time rather than immediately updates. WE'd have to look into it 16:19:34 https://drafts.csswg.org/scroll-animations-1/ 16:19:39 fantasai: Worth reminding that there is a SLA ED that was already adopted 16:19:50 fantasai: Our issue was just about redesigning how the declarative syntax works 16:19:51 q+ 16:20:12 ack flackr 16:20:14 fantasai: question is, do we want to make changes going in this direction 16:20:27 flackr: Overall I think this is a nice change. There's some use-cases we shoudl consider that we might be dropping, but I'm supportive of this overall direction. 16:20:34 argyle has joined #css 16:21:06 flackr: We should probably change the JS API to roughly match the proposed CSS timelines; view-timeline and scroll-timeline as things you con construct, but also keep the arbitrary-element selection that the JS API can allow 16:21:08 ack flackr 16:21:21 fantasai: Yeah we didn't review the JS part at all; figured we'd hash this out and bring it back to JS 16:21:36 s/bring/then bring 16:22:08 Rossen_: Last comments or objections? 16:22:38 RESOLVED: Adopt fantasai/miriam's new direction for the declarative side of scroll-linked animations 16:23:40 RESOLVED: Add flackr as editor to scroll-animations, move Majid to Former 16:24:05 [other editors are all still fine] 16:24:30 Topic: interpolating values between breakpoints 16:24:38 github: https://github.com/w3c/csswg-drafts/issues/6245 16:24:53 https://github.com/w3c/csswg-drafts/issues/6245#issuecomment-926351855 16:25:40 miriam: This is building on that same idea, but creating timelines out of MQ/CQs 16:25:57 miriam: In this caes you're more often doing interpolated values based on the timeline, not animations specifically 16:26:00 q+ 16:26:06 miriam: We want to be able to create timelines off the size of the container 16:26:18 miriam: So for defining the query timeline, we have an @timeline syntax. 16:26:18 q+ 16:26:35 miriam: Give it a name, say what we're querying, what feature we're querying 16:26:48 miriam: And give it a from/to value to offset that range 16:27:07 miriam: So interp between a container being 100px and 40em to define the timeline 16:27:14 miriam: If it's a CQ we give the name of the container 16:27:28 miriam: If there are multiple CQs with that name this'll apply to all of them 16:27:41 miriam: Kids will look at their appropriate ancestor container 16:27:51 miriam: And we can use the timeline name in an animation-timeline 16:28:06 miriam: But more often we'll want a value that interps in the cascade instead, so we can override it if we need to 16:28:15 miriam: A generic interpolate() function has been discussed for a long time 16:28:21 miriam: We called in mix() here, named TBD 16:28:43 miriam: Idea is it could be generic, taking a %, or take a timeline which resolves to a %. Could invoke scroll timelines too, etc. 16:28:55 miriam: And then it takes an easing function and two values to interp between 16:29:13 miriam: In some cases this'll get more complex with multiple values, maybe get quite long 16:29:24 miriam: Wondered if mix() could ref keyframes 16:29:37 miriam: So you could pull out the value details into keyframes for more detailed control 16:29:44 fantasai: I wanted to point out the cascade effects 16:29:54 q+ to wonder about once more doing piecewise functions with no continuity 16:29:56 fantasai: We considered putting query-based timelines as a value of aniamtion-timeline 16:30:08 fantasai: That ends up applyin all the props at once, and at an overriding level of the cascade 16:30:21 fantasai: Usually you don't want that, you just want to specify a value at a normal cascade spot, but *based on* a timeline 16:30:45 fantasai: So my font-size timeline can just spec an interpolated normal font size, and then have an overriding rule setting the font-size to a specific value as normal. 16:30:57 ack fantasai 16:30:57 fantasai, you wanted to react to flackr to point out cascade effects 16:31:00 ack flackr 16:31:03 s/as normal/as usual in the cascade/ 16:31:08 flackr: I think what fantasai just said might change my q... 16:31:15 flackr: So this isn't an animation timeline, it only exists for the mix() function? 16:31:19 fantasai: We were debating that. 16:31:28 fantasai: We definitely want it for mix(). Whether it's available for animation-timeline is an open question 16:31:43 fantasai: We've asked brian for feedback and he pointed out there were a lot of complexities, so we might not want to do it 16:31:52 fantasai: Not the most important; mix() is the primary case 16:32:15 flackr: Yeah was gonna raise the same complexities; if it's animation, we have to have the animation progress update in the middle of the cascade. 16:32:32 flackr: Anders said it would be a huge technical burden to have anims update as part of the cascade due to the cascade 16:32:40 smfr: This feels like calc() to me 16:32:41 ack smfr 16:32:48 smfr: We could have one that interps with easing funcs 16:32:58 smfr: Missing piece is input from media features, could come in as env() 16:33:12 smfr: And so with a calc easing function thing 16:33:35 TabAtkins: not quite, implies only doing calc()-able things 16:33:40 TabAtkins: not all things that can be interpolated 16:33:45 TabAtkins: which includes colors, etc. 16:34:05 smfr: Can we make calc() accept these things? 16:34:10 TabAtkins: I don't want to but we can talk about it? 16:34:21 ack chris 16:34:21 chris, you wanted to wonder about once more doing piecewise functions with no continuity 16:34:24 chris: So this is unpopular 16:34:31 chris: We start by lerping two values 16:34:36 chris: Then we add more values and lerp them 16:34:48 chris: And if you draw that it's jaggy on a graph because slopes are different 16:35:03 chris: And then we add easings, and you can maybe fake it to look continuous 16:35:16 chris: But we never get to a thing that smoothly interpolates thru N values 16:35:29 chris: Is that something we want to do or just continue keeping it pairwise? 16:35:45 flackr: Is this not having easing on the mix function? 16:35:55 chris: That requires the author to figure out C1 continuity on their own 16:36:44 fantasai: This seems compatible with what keyframes do right now, we could default to smooth interp 16:37:54 TabAtkins: So chris's request is for the abilty to spec an animation with N values and have it automatically smoothly interp, rather than only having pairwise interp control that needs manual adjustment 16:37:56 chris: yes 16:38:03 TabAtkins: c1 continuity, to be specific 16:38:11 fantasai: We specced multi-stop animations using @keyframes, see last section of proposal 16:38:15 q? 16:38:33 TabAtkins: I suspect that's something we can handle at a higher level 16:38:45 TabAtkins: we have a default for pairwise interpolation, default to ? 16:38:51 TabAtkins: could do smarter things in animations 16:39:00 TabAtkins: fits within existing syntax structure of animations 16:39:04 flackr: It will be challenging, though 16:39:13 flackr: easing function per keyframe is just between those endpoints 16:39:21 flackr: easin function on animation is just input time to output time 16:39:30 TabAtkins: animation-easing-function is the default between frames 16:39:42 flackr: that's correct for CSS. Web Animations also adds an easing curve to the timeline 16:39:55 TabAtkins: you're easing time into massaged version, that's separate from this 16:40:10 ack fantasai 16:40:23 fantasai: i think we could easily have a "tweak the time"-based version, we could add that into the rule as well 16:41:11 s/rule/@timeline rule/ 16:41:19 fantasai: Intention of mix() argument was the default easing between frames 16:41:35 fantasai: If we want to default to doing continuous magic, or adding a keyword to opt into it, that's fine 16:41:40 flackr: Yeah it would be like combining adjacent pairs that have the same value into one continuous timing function 16:42:08 fantasai: I want to point out we dont' ahve a resolution on the form of the generic interp function 16:42:18 fantasai: So our proposal is to have it accept %s and two values 16:42:33 https://github.com/w3c/csswg-drafts/issues/581#issuecomment-926353789 16:42:34 fantasai: So this would be a function that replaces the % with a timeline that computes to a % 16:42:50 fantasai: We have a resolution to *add* a mix() function but didn't settle on the syntax 16:42:56 Rossen_: So what can we resolve on? 16:43:03 s/this would be/this proposal is/ 16:43:39 fantasai: resolution the first: generic interpolate function is called mix(). Takes %, then start value, then end value. Values are separated with semicolons to avoid ambiguity with comma-containing values 16:43:55 (you can interp a comma-separated list, for example) 16:44:24 TabAtkins: Simon had some thoughts about this in calc(), do you want to continue talkinga bout this? 16:44:35 smfr: I'm not quite sold on @timeline yet, but I don't want to stall this 16:45:04 https://github.com/w3c/csswg-drafts/issues/581 16:45:06 fantasai: Right now it's just mix() 16:45:14 smfr: Would this be like a calc()? 16:45:19 fantasai: Like, but wider. 16:45:36 fantasai: It has to be able to interpolate every possible computed value in the entire space of CSS 16:46:24 smfr: It requires UAs to have a parallel version of calc trees, for every possible value 16:46:49 fantasai: You kinda already have that since everything can interp 16:47:12 fantasai: Like, how do you interp between currentcolor and blue? No way to represent that right now. (color-mix() is coming, but this is a wider issue) 16:47:31 fantasai: So we have lots of places where we want to interp things that don't have intermediate values 16:47:44 smfr: That makes sense, we also invented cross-fade() to hit the image case 16:48:03 smfr: I'd like to hear from other impls about their thoughts on impl complexity, and whether it makes sense to think of it in terms of calc() 16:48:30 TabAtkins: I don't have problem of thinking about it in terms of calc(), can re-use machinery there 16:48:34 TabAtkins: but I think that's an internal detail 16:48:48 fantasai: Note that we *resolved* to add the function years ago but didn't resolve on the syntax 16:49:10 see also https://github.com/w3c/csswg-drafts/issues/2854 16:49:27 RESOLVED: Accept mix() function into Values 5 16:49:45 s/Accept mix() function into Values 5/Accept mix() function into Values 4/ 16:49:59 fantasai: So next is do we want mix() to accept a timeline+easing function instead of a % 16:50:43 fantasai: If no, I don't need to go into details. If yes, we'd use the @timeline rule discussed previously. 16:51:06 TabAtkins: This just got proposed last week, it's a little big. I'd like more time to review on it. 16:51:13 fantasai: And this would def go into level 5 16:52:20 ScribeNick: fantasai 16:52:26 Topic: Achromatic color conversion 16:52:28 github: https://github.com/w3c/csswg-drafts/issues/6107 16:52:35 github: https://github.com/w3c/csswg-drafts/issues/6107 16:52:47 chris: Several situations where polar color can have undefined hue 16:52:56 chris: e.g. gray, it doesn't have a chroma so it doesn't have a hue angle 16:52:58 proposal: https://github.com/w3c/csswg-drafts/issues/6107#issuecomment-929390142 16:52:59 chris: this can occur quite a bit 16:53:07 chris: in code this is often represented as Not A Number 16:53:24 chris: if interpolating, ifyou don't have a hue and the other color has a hue, then you take that hue 16:53:33 chris: so it's not the same as picking a random hue 16:53:38 chris: There was a bunch of discussion 16:53:44 chris: and the agreement was to do it like that 16:53:53 chris: which has knock-on effects in OM 16:54:01 chris: but the question is, what do we return 16:54:06 chris: is it NaN or missing or what 16:54:15 TabAtkins: Proposed that a color can be missing any of its components 16:54:23 TabAtkins: Author can specify with 'none' 16:54:35 TabAtkins: if interpolating between two colors and one has 'none', it takes the other side's value the entire time 16:54:42 TabAtkins: this is similar to behavior with premultiplied alpha 16:54:56 TabAtkins: if you either transition between two colors that are missing a channel 16:55:02 TabAtkins: treat that as an error 16:55:11 TabAtkins: reflecting this, in CSS syntax it's a keyword 16:55:15 TabAtkins: typedOM reflects that keyword 16:55:25 TabAtkins: in color API, unclear whether we want to reflect as null or NaN 16:55:35 TabAtkins: null is more ideomatic in WebPlatform 16:55:43 TabAtkins: but in other color APIs tend to use NaN 16:56:17 TabAtkins: Nan is more infectious 16:56:32 TabAtkins: so if trying to combine NaN with other number, get Nan 16:56:41 TabAtkins: I think Chris and Lea prefer NaN 16:56:53 TabAtkins: so proposal is to go with that for the missing color channel 16:57:29 fantasai: So what happens if you specify none for a channel that can't handle it? 16:57:31 TabAtkins: set to zero 16:57:38 Rossen_: any objections? 16:57:52 RESOLVED: Accept proposal to have 'none' / NaN represent missing channel 16:58:31 smfr: Do we have to parse NaN in context? 16:58:37 TabAtkins: no, it's only useful as a keyword in calc() 16:58:47 TabAtkins: math functions can see NaN along with infinity, e, and pi 16:58:57 smfr: So no need to construct NaN as color input anywhere? 16:59:07 TabAtkins: if NaN tries to escape calc(), it gets censored into infinity 16:59:13 TabAtkins: which gets clamped by the range of that context 16:59:18 TabAtkins: so no HSL with NaN 16:59:41 hsl(calc(NaN * 1deg), 50%, 100%) 17:00:03 ^^^ just renders as an arbitrary hue, whatever the largest angle you can hold is 17:00:13 Rossen_: OK, let's end here. Thanks everyone for attending. 17:00:44 Topic: none 17:00:46 futhark has left #css 17:00:46 Meeting closed. 17:02:05 Zakim, end meeting 17:02:05 As of this point the attendees have been Rossen_, miriam, emilio, oriol, jfkthame, astearns, castastrophe, dgrogan, xfq_, florian, rachelandrew, dholbert, chrishtr, dandclark, 17:02:08 ... fremy, brandon, fantasai, jensimmons, chris, tantek, GameMaker, flackr, eugene, futhark, plinss, dbaron 17:02:08 RRSAgent, please draft minutes v2 17:02:08 I have made the request to generate https://www.w3.org/2021/09/29-css-minutes.html Zakim 17:02:10 I am happy to have been of service, Rossen_; please remember to excuse RRSAgent. Goodbye 17:02:14 Zakim has left #css 17:03:07 fwiw, something occurred to me this week. could SLAs be special cased with a element? such that animation's progress could be reflected in min/max/current...which are reflected in a11y values, thereby making the animation progress accessible. 17:04:11 guess it would rely on % decision 17:09:35 For what it's worth, it's allegedly possible to subscribe to one's W3C calendar via the "Export" tab of https://www.w3.org/users/myprofile/calendar , although mine is currently empty, which might be because past events are excluded (I filed https://github.com/w3c/calendar/issues/66 ). 17:13:39 present+ 17:34:41 Seirdy has joined #css 17:36:35 vmpstr has joined #css 18:01:45 present+ 18:17:08 Seirdy has joined #css 19:11:19 jensimmons has joined #css 19:13:25 aja: Can you file that use case as an issue? It's not really SLA related, but maybe we can do something about it. 19:15:04 sure...this evening 19:52:59 eeeps has joined #css 20:27:19 eeeps has joined #css 20:40:00 eeeps has joined #css 20:53:27 Seirdy has joined #css 22:29:01 vmpstr has joined #css 22:47:19 dauwhe has joined #css 23:19:27 dauwhe has joined #css 23:35:28 dauwhe has joined #css 23:36:25 plh has joined #css 23:48:35 dauwhe has joined #css