http://www.w3.org/TR/DOM-Level-2-Traversal-Range/
Precisamos encontrar / escrever um conjunto de testes.
ugh, essa especificação fez meus olhos sangrarem
sim, eu teria muito medo de implementá-lo sem um conjunto de testes w3c
O que descobri até agora:
Isso parece promissor: https://github.com/w3c/web-platform-tests/tree/master/dom
Observe que eles testam o "DOM sem versão" em http://dom.spec.whatwg.org/ e não no nível 2 especificamente. Porém, é mais provável que reflitam navegadores reais.
Basicamente, terminei a funcionalidade principal, mas tenho alguns problemas para manter os intervalos ativos. Preciso explorar basicamente todas as mutações DOM e não tenho certeza sobre a melhor maneira de fazer isso. Em alguns casos, usei os eventos de mutação; em outros, envolvi os métodos correspondentes no protótipo.
No momento, estou me perguntando como fazer a remoção do suppress observers flag
definido, o evento não seria emitido, mas os intervalos ainda precisam ser atualizados. Alguém tem alguma idéia? Acho que talvez devêssemos ter um sistema de eventos internos muito simples em todo o DOM para essas coisas; também poderia ser usado para _attrModified
, por exemplo.
@adrianlang isso é incrível!
Parece que isso está relacionado ao nosso desejo antigo de deixar de usar eventos de mutação internamente e, em vez disso, ter um protocolo privado que nunca pode ser desativado. Veja # 295. Eu sei que é pedir muito, mas consertar isso pode ser o caminho a percorrer para isso?
Os comentários de spam +1 fazem com que os recursos sejam movidos para o final da lista de pendências. Em vez disso, use os botões de votação. Excluindo os + 1s recentes.
Eu ainda estou lá, assim como meu código pela metade. Espero fazer isso eventualmente.
@adrianheine A implementação do TreeWalker que pousou o ajuda a ficar mais perto de terminar sua implementação?
Eu uso às vezes Range#createContextualFragment
, mas eu realmente não sei por que esse método útil existe (ele mereceria estar diretamente no documento ou DocumentFragment)
então acabei fazendo isso para testes
global.document.createRange = () => ({
createContextualFragment: str => JSDOM.fragment(str)
});
Mas toda a API Range seria muito mais
@domenic Acho que o que @acusti estava perguntando é quais são os próximos passos para verificar isso?
Estou tentando usar isto:
https://github.com/PrismJS/prism/issues/896
Alguém pode recomendar um caminho alternativo? Eu gosto da ideia de ter um diff realçado e um realce de sintaxe com o Prism. Pode até sair melhor do que o marcador do Github.
Eu estaria disposto a https://www.patreon.com/ por mais um motivo para nunca usar o SourceTree novamente.
@adrianheine Posso estar interessado em ajudar se você compartilhar seu WIP.
Erros obtidos em testes de brincadeira.
TypeError: document.createRange is not a function
at createRange (node_modules/popper.js/src/utils/findCommonOffsetParent.js:27:26)
at findCommonOffsetParent (node_modules/popper.js/src/utils/getReferenceOffsets.js:16:85)
at Popper.getReferenceOffsets (node_modules/popper.js/src/methods/update.js:29:28)
at Popper.call (node_modules/popper.js/src/index.js:94:19)
at node_modules/popper.js/dist/umd/popper.js:51:7
Encontre o link aqui
Olá, algum progresso com isso?
Quando isso será lançado? Assim, jest pode atualizar para a versão mais recente.
Comentários muito úteis
https://mobile.twitter.com/slicknet/status/782274190451671040