00:28:09  * keith_mi_quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
00:37:11  * bpaytonquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
00:49:00  * akirosejoined
00:50:16  * aki_quit (Ping timeout: 265 seconds)
01:08:35  * keith_mi_joined
01:12:40  * keith_mi_quit (Client Quit)
01:16:11  * keith_m__joined
01:41:43  * cloudshuquit (Quit: Connection closed for inactivity)
02:06:59  * not-an-aardvarkjoined
02:47:51  * keith_m__quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
02:54:42  * aki_joined
02:55:39  * akirosequit (Ping timeout: 256 seconds)
04:01:43  * jwaldenquit (Quit: ChatZilla 0.9.92-rdmsoft [XULRunner 35.0.1/20150122214805])
04:16:45  * not-an-aardvarkquit (Quit: Connection closed for inactivity)
04:49:17  * bpaytonjoined
05:01:27  * akirosejoined
05:02:46  * aki_quit (Ping timeout: 264 seconds)
05:05:21  * jmdyckquit (Remote host closed the connection)
05:24:54  * gibson042quit (Ping timeout: 260 seconds)
05:58:14  * bpaytonquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
06:03:51  * bpaytonjoined
06:04:23  * keith_mi_joined
06:09:22  * bpaytonquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
06:13:23  * bpaytonjoined
06:39:34  * M-IvanSanchezquit (Ping timeout: 260 seconds)
06:41:43  * M-IvanSanchezjoined
07:06:42  * bpaytonquit (Quit: Textual IRC Client: www.textualapp.com)
07:07:20  * aki_joined
07:08:17  * akirosequit (Ping timeout: 248 seconds)
07:41:44  * keith_mi_quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
08:46:20  * pandemquit (Ping timeout: 260 seconds)
08:53:39  * pandemjoined
09:12:49  * akirosejoined
09:14:09  * aki_quit (Ping timeout: 264 seconds)
10:25:10  * mylesborinsquit (Quit: farewell for now)
10:25:19  * mylesborinsjoined
10:54:31  * AtumTjoined
11:00:56  * PlasmaStarquit (Read error: Connection reset by peer)
11:01:21  * PlasmaStarjoined
11:18:32  * aki_joined
11:19:34  * akirosequit (Ping timeout: 260 seconds)
12:30:03  * jmdyckjoined
13:24:39  * akirosejoined
13:25:45  * aki_quit (Ping timeout: 260 seconds)
13:45:35  * stpeterjoined
15:31:25  * aki_joined
15:32:30  * akirosequit (Ping timeout: 260 seconds)
16:21:55  * stpeterquit (Quit: stpeter)
17:24:23  * keith_mi_joined
17:37:35  * akirosejoined
17:38:58  * aki_quit (Ping timeout: 260 seconds)
17:40:16  * keith_mi_quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
17:41:15  * keith_mi_joined
18:24:12  * AtumT_joined
18:27:12  * AtumTquit (Ping timeout: 260 seconds)
18:28:39  * bpaytonjoined
18:33:48  * jwaldenjoined
18:36:49  * AtumTjoined
18:38:14  * AtumT_quit (Ping timeout: 260 seconds)
18:39:16  * keith_mi_quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
18:58:43  * coolreader18joined
18:59:15  <coolreader18>What would anybody think about a dynamic class expression name syntax?
18:59:29  <coolreader18>Something like class ['hey'] {}
18:59:36  <coolreader18>Only for expressions
19:00:04  <coolreader18>It's not like it would introduce anything new, necessarily
19:00:28  <coolreader18>Cause you can already set anonymous class names
19:00:36  * keith_mi_joined
19:00:39  <coolreader18>Object.defineProperty(class {}, 'name
19:01:00  <coolreader18>woops, Object.defineProperty(class {}, 'name', { value: 'x' })
19:01:30  <coolreader18>This would basically be syntactic sugar
19:02:33  <coolreader18>class [name] { a() { return 'hey'; } } -> Object.defineProperty(class { a() { return 'hey'; } }, 'name', { value: name })
19:14:41  * PlasmaStarquit (Ping timeout: 248 seconds)
19:43:21  * aki_joined
19:44:30  * akirosequit (Ping timeout: 260 seconds)
20:07:59  <ljharb>coolreader18: would that create a binding, like class declarations do? or would it only work in expression position
20:09:04  <coolreader18>Only work as an expression, yeah
20:09:20  <coolreader18>cause you can't do `let [a]`
20:09:32  <coolreader18>oh wait that's iterable destructuring
20:10:19  <coolreader18>I don't know if it would throw a a syntax error in a statement position, like `function(){}` does, but probably, to avoid confusion
20:11:19  <coolreader18>actually this could also apply to a standard function expression as well, even though no one uses them
20:18:00  <ljharb>it seems subpar to have expressions have an ability declarations lack
20:35:49  * bpaytonquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
20:48:39  <coolreader18>(function() {}) /* okay */; function() {} /* SyntaxError */;
20:49:24  <coolreader18>I don't know if anonymous functions/classes/whatever is an ability, but expressions do have it
20:54:16  <coolreader18>Also, expressions and declarations have different use cases, kinda
20:54:28  <coolreader18>You could think of an object as a kind of scope
20:54:59  <coolreader18>but because it's an expression, it can have stuff like { [key]: val }
20:55:36  <coolreader18>expressions are more dynamic then declarations/statements, kind of inherently
20:56:03  <coolreader18>so I think it's fine that expressions would have a feature like that that declarations lack
21:07:03  * keith_mi_quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
21:07:15  <devsnek>you can name it by setting it as a property
21:07:27  <devsnek>`{ 'some weird name': class {} }`
21:11:50  * keith_mi_joined
21:12:38  <ljharb>coolreader18: right but in that case, the name is required in declaration form
21:13:20  <ljharb>coolreader18: given that when class fields hits stage 4, you can do `class { static name = 'whatever'; }` i'm not sure it warrants extra syntax
21:15:36  * keith_mi_quit (Client Quit)
21:27:45  <IgnoredAmbience>That won't bind it in the scope as well though, will it?
21:31:29  <coolreader18>ljharb: huh, I didn't know that that works, that's pretty cool
21:32:23  <coolreader18>However, it still would feel more intuitive to do class [''] {}
21:32:49  <coolreader18>and if you wanted to do it with a function() {} expression, you'd still have to set it manually
21:33:51  <coolreader18>IgnoredAmbience: it's not really the point to bind it in the scope, just to give it name dynamically rather than an anonymous (class {})
21:38:34  <ljharb>IgnoredAmbience: it wouldn't be able to bind it in the scope regardless, since it's not a statically guaranteed identifiername
21:39:16  <coolreader18>Oh I thought you were replying to devsnek originally
21:39:20  <coolreader18>yeah, of course
21:41:14  <coolreader18>I'm just going to say my use case for this: I have a utility function in my react app that turns a functional component into a PureComponent
21:42:10  <devsnek>static name feels pretty natural to me
21:42:14  <devsnek>i'm surprised that works though
21:43:02  <coolreader18>and it'd be more idiomatic I feel to do something like (name, funcComponent) => class [name] extends React.PureComponent {render() {return funcComponent(this.props}}
21:43:32  <coolreader18>rather than doing defineProperty and stuff
21:44:11  <devsnek>`const factory = (name) => (class { static name = name })`
21:44:11  * stpeterjoined
21:44:14  <coolreader18>but I feel it's still relevant beyond my specific use case because in ES classes are values, not compile-time concepts like Java or C# or whatever
21:44:52  <coolreader18>And some libraries, like React and I'm sure many others use classes as opposed to other forms of Components/whatever
21:46:13  <coolreader18>So I think it's because ES is so dynamic with classes and functions that this proposal is justified
21:46:37  <coolreader18>Sorry I was just typing
21:47:58  <ljharb>coolreader18: that's not necessarily a good idea, btw
21:48:09  <ljharb>coolreader18: overly making things PureComponents can make rendering much slower
21:48:31  <coolreader18>devsnek: that doesn't feel very idiomatic, it depends on you knowing properties of the function prototype and their functions [heh]
21:48:50  <devsnek>agree to disagree :P
21:49:38  <coolreader18>ljharb: well I'm not passing very many props to it, so PureComponent's shouldComponentUpdate works well enough for me
21:49:55  * akirosejoined
21:50:08  <devsnek>now a truly useful thing would be a way to access the function you're currently in
21:50:21  <devsnek>so you don't have to save a function to a variable to unregister it from an event target
21:50:28  <coolreader18>ljharb: and componentizing that away from its parent's render function really did speed up performance
21:50:54  <ljharb>coolreader18: right but if you're not passing many props to it, rerendering the SFC is often faster than the comparison
21:50:59  * aki_quit (Ping timeout: 255 seconds)
21:51:08  <ljharb>devsnek: that already exists; just give it a lexical name
21:51:20  <devsnek>muh arrow functions
21:51:24  <coolreader18>devsnek: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode#Making_eval_and_arguments_simpler
21:51:55  <coolreader18>devsnek: that was arguments.callee, but it was removed in strict mode to make the arguments object less "magical"
21:52:16  <devsnek>bring back arguments.callee in arrow functions
21:52:54  * bpaytonjoined
21:52:55  <bradleymeck>no
21:53:00  <ljharb>devsnek: also no
21:53:07  <devsnek>lol
21:53:11  <coolreader18>ljharb: But it's rendering a lot of stuff, something like 100-200 children, so it's a lot faster
21:53:20  <bradleymeck>function.callee *maybe*?
21:53:28  <coolreader18>ljharb: I basically needed the shouldComponentUpdate lifecycle method
21:53:32  <bradleymeck>but meh, just assign to some variable
21:53:33  <ljharb>coolreader18: lol that's a pretty large SFC. any reason it's not an actual PureComponent in the code?
21:53:35  <devsnek>bradleymeck: if it makes you feel better, i was joking about arguments.callee
21:54:06  <bradleymeck>i would kind of like function.callee for recursion on rare occasions where I don't want to make variables.
21:54:35  <coolreader18>ljharb: it only needs just the render function, it controls a modal in the parent component, so the logic for that is all there
21:54:52  <coolreader18>ljharb: in the parent component
21:56:51  <coolreader18>ljharb: the code is here https://github.com/coolreader18/homebrew-desktop/blob/master/src/renderer/Apps/Apps.tsx#L43 and here https://github.com/coolreader18/homebrew-desktop/blob/master/src/renderer/Apps/AppsGrid.tsx#L29 if you want to see it
21:57:29  <devsnek>what is `<>` short for
21:57:35  <coolreader18>React.Fragment
21:57:41  <devsnek>what is React.Fragment short for
21:58:01  <ljharb>devsnek: it lets you group elements without forcing you to add a div
21:58:01  <bradleymeck>~ document.createDocumentFragment
21:58:08  <devsnek>ic
21:58:35  <devsnek>didn't people used to do parenthesis for that
21:58:54  <coolreader18>not really, it kinda turns <div> <a/> <React.Fragment> <b/> <c/> </React.Fragment> <d/> </div> to <div> <a/> <b/> <c/> <d/> </div>
21:59:24  <coolreader18>even if the React.Fragment is from a different component
22:00:29  <coolreader18>like with const FragDemo = () => <> <a/> <b/> </>; <div> <FragDemo /> </div> is like <div> <a/> <b/> </div>
22:00:43  <coolreader18>it's pretty powerful imo
22:00:59  <coolreader18>you don't need wrapper divs for too much if you use them instead
22:04:05  * keith_mi_joined
22:05:15  <ljharb>devsnek: no, parens in jsx don't do anything
22:06:13  * bpaytonquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
22:06:52  * bpaytonjoined
22:18:34  <ljharb>mathiasbynens: any chance you have some character expertise for https://github.com/eslint/eslint/issues/10535#issuecomment-401177560 ? (i know it's about safari and not v8 but you still seem like the right person to ask)
22:22:09  <IgnoredAmbience>(why am I reading this channel after 5 pints in the pub, but deary no, not callee)!!)
22:23:33  <IgnoredAmbience>(i also just went to re-read the current class name binding spec to remind myself how it works before/after the class fields proposal)
22:26:39  * bpaytonquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
22:32:46  * bpaytonjoined
22:42:01  * keith_mi_quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
22:42:34  * keith_mi_joined
22:42:46  * keith_mi_quit (Client Quit)
22:48:49  * keith_mi_joined
22:49:51  * keith_m__joined
22:53:30  * keith_mi_quit (Ping timeout: 260 seconds)
23:33:42  * bpaytonquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
23:44:33  * stpeterquit (Quit: stpeter)
23:49:53  * AtumTquit (Remote host closed the connection)
23:56:44  * aki_joined
23:58:11  * akirosequit (Ping timeout: 256 seconds)
23:59:14  * bpaytonjoined