Re: [webcomponents]: Re-imagining shadow root as Element

I made an attempt to describe how these things can be non-lossy here:
https://gist.github.com/sjmiles/5358120


On Wed, Apr 10, 2013 at 12:19 PM, Scott Miles <sjmiles@google.com> wrote:

> input/video would have intrinsic Shadow DOM, so it would not ever be part
> of outerHTML.
>
> I don't have a precise way to differentiate intrinsic Shadow DOM from
> non-intrinsic Shadow DOM, but my rule of thumb is this: 'node.outerHTML'
> should produce markup that parses back into 'node' (assuming all
> dependencies exist).
>
>
> On Wed, Apr 10, 2013 at 12:15 PM, Erik Arvidsson <arv@chromium.org> wrote:
>
>> Once again, how would this work for input/video?
>>
>> Are you suggesting that `createShadowRoot` behaves different than when
>> you create the shadow root using markup?
>>
>>
>> On Wed, Apr 10, 2013 at 3:11 PM, Scott Miles <sjmiles@google.com> wrote:
>>
>>> I think we all agree that node.innerHTML should not reveal node's
>>> ShadowDOM, ever.
>>>
>>> What I am arguing is that, if we have <shadow-root> element that you can
>>> use to install shadow DOM into an arbitrary node, like this:
>>>
>>> <div>
>>>   <shadow-root>
>>>     Decoration --> <content></content> <-- Decoration
>>>   <shadow-root>
>>>   Light DOM
>>> </div>
>>>
>>>
>>> Then, as we agree, innerHTML is
>>>
>>> LightDOM
>>>
>>>
>>> but outerHTML would be
>>>
>>> <div>
>>>   <shadow-root>
>>>     Decoration --> <content></content> <-- Decoration
>>>   <shadow-root>
>>>   Light DOM
>>> </div>
>>>
>>>
>>> I'm suggesting this outerHTML only for 'non-intrinsic' shadow DOM, by
>>> which I mean Shadow DOM that would never exist on a node unless you hadn't
>>> specifically put it there (as opposed to Shadow DOM intrinsic to a
>>> particular element type).
>>>
>>> With this inner/outer rule, all serialization cases I can think of work
>>> in a sane fashion, no lossiness.
>>>
>>> Scott
>>>
>>>
>>>
>>> On Wed, Apr 10, 2013 at 12:05 PM, Erik Arvidsson <arv@chromium.org>wrote:
>>>
>>>> Maybe I'm missing something but we clearly don't want to include
>>>> <shadowroot> in the general innerHTML getter case. If I implement
>>>> input[type=range] using custom elements + shadow DOM I don't want innerHTML
>>>> to show the internal guts.
>>>>
>>>>
>>>> On Wed, Apr 10, 2013 at 2:30 PM, Scott Miles <sjmiles@google.com>wrote:
>>>>
>>>>> I don't see any reason why my document markup for some div should not
>>>>> be serializable back to how I wrote it via innerHTML. That seems just plain
>>>>> bad.
>>>>>
>>>>> I hope you can take a look at what I'm saying about outerHTML. I
>>>>> believe at least the concept there solves all cases.
>>>>>
>>>>>
>>>>>
>>>>> On Wed, Apr 10, 2013 at 11:27 AM, Brian Kardell <bkardell@gmail.com>wrote:
>>>>>
>>>>>>
>>>>>> On Apr 10, 2013 1:24 PM, "Scott Miles" <sjmiles@google.com> wrote:
>>>>>> >
>>>>>> > So, what you quoted are thoughts I already deprecated mysefl in
>>>>>> this thread. :)
>>>>>> >
>>>>>> > If you read a bit further, see that  I realized that <shadow-root>
>>>>>> is really part of the 'outer html' of the node and not the inner html.
>>>>>> >
>>>>>> Yeah sorry, connectivity issue prevented me from seeing those until
>>>>>> after i sent i guess.
>>>>>>
>>>>>> > >> I think that is actually a feature, not a detriment and easily
>>>>>> explainable.
>>>>>> >
>>>>>> > What is actually a feature? You mean that the shadow root is
>>>>>> invisible to innerHTML?
>>>>>> >
>>>>>>
>>>>>>
>>>>>> Yes.
>>>>>>
>>>>>> > Yes, that's true. But without some special handling of Shadow DOM
>>>>>> you get into trouble when you start using innerHTML to serialize DOM into
>>>>>> HTML and transfer content from A to B. Or even from A back to itself.
>>>>>> >
>>>>>>
>>>>>> I think Dimiti's implication iii is actually intuitive - that is what
>>>>>> I am saying... I do think that round-tripping via innerHTML would be lossy
>>>>>> of declarative markup used to create the instances inside the shadow... to
>>>>>> get that it feels like you'd need something else which I think he also
>>>>>> provided/mentioned.
>>>>>>
>>>>>> Maybe I'm alone on this, but it's just sort of how I expected it to
>>>>>> work all along... Already, roundtripping can differ from the original
>>>>>> source, If you aren't careful this can bite you in the hind-quarters but it
>>>>>> is actually sensible.  Maybe I need to think about this a little deeper,
>>>>>> but I see nothing at this stage to make me think that the proposal and
>>>>>> implications are problematic.
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> erik
>>>>
>>>>
>>>>
>>>
>>
>>
>> --
>> erik
>>
>>
>>
>

Received on Wednesday, 10 April 2013 20:34:47 UTC