* Now - (x) Documentation - (x) string concatenation/interpolation - (x) some way to de-quotify values? - (x) re-quotify value - (x) analog + digital clock example - (x) error handling try - (x) Scoped catch on try - (x) `do` expression - (x) `let` expression - ( ) `has-class` - ( ) `add-class` & `remove-class` should use self if id is not specified? - ( ) Update `--cssx-text` on update * Later - ( ) keyboard events - ( ) Code cleanup - ( ) Additional events - ( ) Improve parser error messages - ( ) Improve eval error messages - ( ) filter for on update on specific properties - ( ) FFI interface to declare functions * Maybe - ( ) `--cssx-use-properties: --parent-prop;` to trigger nested property update - ( ) Evaluate `calc` - ( ) *server-side css*? Why the fuck not!? * Done - (x) Hydrate existing elements instead of re-creating - (x) `load-cssx` functions - (x) `get-variable` - (x) `update-variable` - (x) Use css units for `delay` function - (x) Specify node type - `button(id)` or `button#id` - (x) attributes - (x) `--cssx-text` (and maybe `--cssx-html`?) - (x) dom tests - (x) `attr` function - (x) `set-attr` should allow specifying id? - (x) `set-attr` + remove attribute? - (x) `pair` parsing - (x) `selector` parsing - (x) `map` data structure - (x) component system (with variables. `instance(button#my-btn)`) - (x) More complex selector support for cssx-children - (x) `add-element` & `remove-element` - (x) conditionals - (x) on update - (x) access child from an instance (update checkbox) - (x) access instance from child (delete task) - (x) focus blur events - (x) Refactor eval to return EvalValue - (x) Functions. `--my-func: func(if(get-var(--x), get-var(--y), ""))`. - (x) Function calls. `call(get-var(--my-func), --x: 6, --y: 2)`