Hi, Yosi–

On 10/6/15 9:30 PM, Yoshifumi Inoue wrote:
It's exciting!

Thanks!


For Shadow DOM, current Blink implementation traverses composed tree
rather than DOM tree. We introduced a concept position in composed
tree and ephemeral range in composed tree; "ephemeral" means range in
composed tree isn't live. Ephemeral range objects aren't update at
DOM mutation.

A continuation position, e.g. highlight find result, is specified by
composed tree position but implemented in collapsed range, since
positions in composed tree can be represented by DOM node position.

Makes sense.


From implementation, FindText.cursor is very expensive, UA needs to
serialize DOM nodes to plain text to get DOM node and offset. Note:
Blink has an implementation for this called PlainTextRange for IME
API.

I would like to proposed FindText API to be defined top on Text
Iteration API or Plain Text Serialization API, both of them aren't
specified yet, instead of Node.textContent. These API can define
HTMLElement.innerText, not standard but most of UA have it and
causes interoperability issue, and plain text format of clipboard.

Sure, I definitely want to do this in the most efficient way possible.

I'm happy to help define a Text Iteration API or Plain Text Serialization API; I'm no expert in that, but I can help with the editing work. Do you have any more information about those?


Just FYI: Here is a presentation from Yandex presented on last November
on Blink On conference:
*
https://docs.google.com/presentation/d/18UHSNEqkFW2toj7Qfo5CcuTuQsFLOibbAMq2VSWoE4I/edit?usp=sharing
*
https://docs.google.com/document/d/1HlPDpwXzzuKp0n5qkKaIL9mYkjtlQHD37OF5pHQuXtE/edit?usp=sharing

Cool, thanks for sharing that! Looks like Konstantin and Andrey from Yandex would be good people to get in on this discussion. I'll point them to this thread.

Regards–
–Doug


2015年10月7日(水) 7:55 Doug Schepers <schep...@w3.org
<mailto:schep...@w3.org>>:

    Hi, Tab–

    Thanks for the correction. I assumed that Houdini would expose more of
    the underpinnings of the ::selection pseudo-element [1] and its ilk.
    Maybe that hasn't surfaced (and maybe it won't). It does seem to be more
    magic, though, which I'd thought we were trying to demystify.

    But if there's no good story in Shadow DOM for things that explicitly
    deal with Range, I think that needs a solution.


    FWIW, JavaScript source-maps can comfortably deal with a similar
    problem, with minified/cached versions of multiple source documents
    (though I guess not multiple instantiations of the same source
    document). Still, I'd expect there's a non-terrible solution for
    serializing and expanding Shadow DOMs and pinpointing specific
    instantiations.

    (This makes me wonder how Shadow DOM is dealing with accessibility APIs;
    I'm assuming there's a good story there, and maybe something we can draw
    upon.)

    [1] https://drafts.csswg.org/css-pseudo-4/#highlight-selectors

    Regards–
    –Doug

    On 10/6/15 6:38 PM, Tab Atkins Jr. wrote:
     > On Tue, Oct 6, 2015 at 3:34 PM, Doug Schepers <schep...@w3.org
    <mailto:schep...@w3.org>> wrote:
     >> Hi, Eliott–
     >>
     >> Good question.
     >>
     >> I don't have a great answer yet, but this is something that will
    need to be
     >> worked out with Shadow DOM, not just for this spec, but for
    Selection API
     >> and others, as well as to CSS, which has some Range-like styling.
     >
     > CSS doesn't care about this, because it doesn't expose its selections
     > to the wider DOM; it can freely style whatever it wants, including
     > ranges that span into shadows.
     >
     > This is indeed equivalent to the problem that the generic Selection
     > API has with Shadow DOM, tho.
     >
     > ~TJ
     >


Reply via email to