Re: [w3c/webcomponents] [idea] Allowing custom element registrations on per-shadow-root basis. (#488)

Just some more brain-storming, but not necessarily a solution:

Maybe a registry can be an instantiable?

```js
let myRegistry = new ElementRegistry
myRegistry.define('my-form', MyForm)

let shadowRoot = someEl.createShadowRoot(myRegistry)
let frag = document.createDocumentFragment(myRegistry)

let form = frag.createElement('my-form')

shadowRoot.appendChild(form)
frag.appendChild(new MyForm) //  works based on supplied registry

let div = frag.createElement('div')
div.innerHTML = '<my-form></my-form>' // uses myRegistry to find class
div.querySelector('my-form')
```

In the case that`div` is removed and attached to a new tree, then perhaps lookup is reversed: a name is looked up by class. If the new node tree where `div` is connected to has a name associated with `MyForm`, then maybe that element in `div`'s tree takes that new name? If the name isn't registered, then it takes the name `<unknown-element>` and has a property `class` to reference the class.

... Or, what if registries are used to specify context?

```js
div.querySelector('my-form', myRegistry) // find nodes that are instance of whatever is mapped in the registry.
someElement.innerHTML('<my-form></my-form>', myRegistry)
```

Any other ideas on how to possibly scope elements? Until this is possible, I can't foresee stopping to use JS libraries to achieve this (for example using scoped variables in React).

---
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/w3c/webcomponents/issues/488#issuecomment-228996224

Received on Tuesday, 28 June 2016 09:18:10 UTC