- From: <bugzilla@jessica.w3.org>
- Date: Thu, 31 Jan 2013 00:00:21 +0000
- To: public-webapps-bugzilla@w3.org
https://www.w3.org/Bugs/Public/show_bug.cgi?id=20831 Bug ID: 20831 Summary: [Custom]: Make document.register work with ES6 classes and @@create Classification: Unclassified Product: WebAppsWG Version: unspecified Hardware: PC OS: All Status: NEW Severity: normal Priority: P2 Component: Component Model Assignee: dglazkov@chromium.org Reporter: arv@chromium.org QA Contact: public-webapps-bugzilla@w3.org Blocks: 14968 http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts We need to make document.register work with ES6 classes and the ES6 @@create hook. For example: class MyButton extends HTMLButton { constructor(text) { super(); this.textContent = text; } } document.register('my-button', { class: MyButton }); Here is a rough draft/idea of how we need to modify the spec: Modify the algorithm at https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/custom/index.html#dfn-document-register. This is a bit hand wavy and it ignores fallback on using "prototype". 1. If NAME is an invalid custom element name, throw an InvalidCharacterError exception. 2. If CLASS is not a Function throw TypeError. 3. Let PROTOTYPE be [[Get]](CLASS, "prototype"). 4. If PROTOTYPE does not have Element.prototype on its prototype chain, throw a TypeError exception. ... 9?. Define CLASS.@create to be a function that creates a new element with the NAME as the tag name. TODO: Namespace from the prototype? 10. Return CLASS (for convenience?). The create function in 9? is defined by https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/custom/index.html#dfn-custom-element-instantiation I don't think we do not need the element finalization at all here since the constructor is itself the element finalization. Since ES6 classes are just pure syntactic sugar for ES5 we should be able to the same thing for ES5. The new thing in ES6 is the @@create hook. For ES5 we could return an alternative function in step 10 that creates the instance object and then calls the user provided function. -- You are receiving this mail because: You are the QA Contact for the bug.
Received on Thursday, 31 January 2013 00:00:28 UTC