\mainpage
# WEBELO
An HTML Visualizer & DOM Library
## DOM
A `Document Object Model` for storing and working of tree for HTML and XML documents.
Alongside, it consists of an `HTML Visualizer` to visualize how your html looks to the browser.
It defines a complex tree of classes with preorder depth first traversal order.
### What exactly is it ??
Basically, it is a very complex tree implementation strictly abiding to the rules of the [DOM STANDARD](https://dom.spec.whatwg.org/) defined by an organization named [WhatWG](https://whatwg.org/).
It is the most crucial part of a browser & they basically depend on this.
The functions you use `addEventListener()`, `dipatchEvent()`, `document.write()`, etc.. are all written in this library :)
It is the `intermediate` which is created when `HTML` is parsed.
So let's understand this clearly ! In broader sense:-
When we load a website, its HTML, CSS and JS is fetched and every component is parsed.
- First `HTML` is parsed and `DOM` ( Document Object Model ) tree is created !
- Then `CSS` is parsed and `CSSOM` ( CSS Object Model ) is created !
- Both the `DOM` and `CSSOM` are combined to create the `Render Tree` !
- Finally using the `Render Tree`, we see the website on the screen after
some processes of layout, painting , compositing, etc..
> This repository implements the `DOM tree` for the HTML parsing !
### Interesting Fact
There are so many browsers in the world like Google Chrome, Brave, Microsoft Edge, Firefox,etc.. but how is it that a website looks the same on all of them ???
`Reason`
This is possible because of the `standards` that all browsers or specifically rendering engines follow !
And that's what we are doing here, following the [DOM Standard](https://dom.spec.whatwg.org/) by [WhatWG](https://whatwg.org/) !
### Running
There are 2 parts:
1) HTML Visualizer - Running executables from [Releases]("https://github.com/YogyaChugh/Webelo/release/latest") - (It runs the library using bindings too, but mainly written in Python)
2) DOM Library - Just clone this repository and include the `src/Webelo.cpp` in your file and you are set yo go !!
> You can run the examples [here](https://github.com/YogyaChugh/Webelo/tree/master/examples) to test bro/sis !!
### Documentation
Docs are available at https://webelo.onrender.com for DOM Library
### Contributing
Yup ! Anyone can contribute, just know c++ and dive into the documentation ! But don't get bored, there's HTML Parser and browser coming up after that ! It's a chain !
### Bindings
Bindings for Python, Rust and JS will be available after initial release.