Re: [webcomponents]: Declarative Custom Elements Take Umpteen, The Karate Kid Edition

On Tue, May 14, 2013 at 2:31 PM, Scott Miles <sjmiles@google.com> wrote:

> And to be clear, we also have to be able to do this (not that anybody said
> anything to the contrary)
>
> <element ...>
>   <script src="..."></script>
> </element>
>
> If there is more than once <script>, I assume the last one 'wins'?
>
>
If that's the case then authors could end each component with
<script>MyComponentClass</script>, setting the final completion value
without forcing extra parens or a looks-like-a-noop-but-isn't expression
(a-la Perl) at the end of the component source.


> On Tue, May 14, 2013 at 2:30 PM, Scott Miles <sjmiles@google.com> wrote:
>
>> So, I don't love the extra punctuation, but there are other good things
>> here. We do away with duplication of tag name and the magic
>> [something].register call.
>>
>> Presumably I can still set up private members in a closure, like this (?):
>>
>> <script>
>>   var privateStack = [];
>>   (class XFoo: HTMLElement { readyCallback() { privateStack.push(...); }
>> });
>> </script>
>>
>> The last critical bit is some way to access our <element>. We could have
>> another callback which is essentially a static, called once per <element>
>> to allow access to the <element> itself, but I don't know where we'd put it
>> other than on the prototype itself.
>>
>> Scott
>>
>>
>>
>> On Tue, May 14, 2013 at 2:09 PM, Elliott Sprehn <esprehn@gmail.com>wrote:
>>
>>>
>>>
>>>
>>> On Tue, May 14, 2013 at 2:04 PM, Daniel Buchner <daniel@mozilla.com>wrote:
>>>
>>>>
>>>> On Tue, May 14, 2013 at 1:58 PM, Erik Arvidsson <arv@chromium.org>wrote:
>>>>
>>>>>
>>>>> <element name="foo-bar">
>>>>>    ...
>>>>>    <script>
>>>>>        class FooBar {
>>>>>            ...
>>>>>        };
>>>>>    </script>
>>>>> </element>
>>>>
>>>>
>>>> Is it then possible to explicitly return the class after definition?
>>>> I'm asking because <script> return value is something I was not aware of.
>>>>
>>>
>>> Yes, by wrapping it in parenthesis. The spec
>>> http://people.mozilla.org/~jorendorff/es6-draft.html#sec-13.5 seems to
>>> say that (class X { }) returns X but class X { } at the top level returns
>>> undefined.
>>>
>>> Thankfully it's not too gross, you'd just have:
>>>
>>> <script>
>>> (class MyCustomWidget : HTMLElement {
>>>   // ...
>>> })
>>> </script>
>>>
>>> ...   ...
>>>>    <script>
>>>>        class FooBar {
>>>>            ...
>>>>        };
>>>>
>>>>        return FooBar;
>>>>
>>>>
>>>>
>>> "return" isn't valid in the top level execution block which sucks. It
>>> would nice if we relaxed that restriction and allowed a return up there.
>>>
>>> - E
>>>
>>>
>>
>

Received on Tuesday, 14 May 2013 22:39:40 UTC