I want you to implement all of the missing Event classes drived from the "Interfaces based on Event" list in the Event MDN page: https://developer.mozilla.org/en-US/docs/Web/API/Event#interfaces_based_on_event
First start by analyzing GenDOM.Event in lib/gen_dom/event.ex, GenDOM.UIEvent in lib/gen_dom/ui_event.ex, GenDOM.MouseEvent in lib/gen_dom/mouse_event.ex and GenDOM.PointerEvent in lib/gen_dom/pointer_event.ex see how they inherit from one another using GenObject who's docs are at: https://hexdocs.pm/gen_object/index.html
when converting from the spec to Elixir you convert camelcased named like fooBar
into snakecase like foo_bar
.
any unused variables in a function from the function defintion should have a leading underscore to prevent warnings
use the list from the Interfaces based on Event list and find all of the unimplemented classes. Then create elixir files for each in lib/gen_dom corresponding to the name'd class and create modules in each file nested under GenDOM.
I want you to visit the MDN page for each class in the list and derivce the instance properties, instance methods, and documentation from that page
implemente the proper module to inherit from using GenObject's inheritance model. Implement all of the instance properties in the fields of the use statement.
Analyze and implement all of the instance methods for the class being implementedMDN DOM specification locatated at: camel-cased functions should be converted to snake case soo fooBar converts to foo_bar. Because this is using GenObject it means that all functions should take the event_pid as the first argument. Documentation for each function should be taken from each function defintion defined in the MDN specification linked previously. Do not implement any of the functions. Just leave them return :not_implemented and ensure the unused function arguments start with an
I want you to ensure the documentation written for each module matches the style of documentation in the GenDOM.UIEvent, GenDOM.MouseEvent, and GenDOM.PointerEvent modules. Analyze the documentation in each and including the GenDom.Element module and make the documentation in elixir modules you're writing at the same quality along with linking out to the orginal MDN url for each function