CHANGELOG.md

# Changelog

## v0.2.0
This release add some new features to keep the code in your application tidy. The doc 
section also received a much welcome [Guides](https://hexdocs.pm/phoenix_live_favicon/guides.html) page.

### Features
#### Create and restore snapshots
Store the result of multiple operations under a chosen `name` and restore it
at a later time using `snap` and `restore`.

* `snap` - Takes a snapshot of all attribute values.
* `restore` - Applies a snapshot to selected elements.

**Usage example**
In the Live Favicon Example application it is used to send all changes required to switch
between an dynamic SVG counter and static PNG message-icon once, and toggle the
state between them; creating a flashing notification. As it also makes a snapshot of the state
*before* the favicon begins to flash, the icon on the page can be restored to it's
value as soon as the user read the unread messages.

#### Use multiple placeholders
You can now use multiple custom named placeholders, instead of only one `{dynamic}` per attribute.

```diff
<link [...] 
   data-dynamic-href="data:image/svg+xml,
     <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'> 
       <circle cx='50' cy='50' r='50' fill='{counter_background}' />
       <text x='50%' y='50%' [...]>
         {counter}
       </text>
     </svg>
   "
>
```

### Fixes
* Unstable order of change execution when using multiple queries / libs.

### BREAKING
* the attribute value of `dynamic` is now used as name for the target placeholder. As a result, it is not
possible anymore to target a specific attribute. Migration is as easy as using different names per attribute
when necessary.

## v0.1.1

* Breaking: `remove_attr/3` has been replaced by `remove_attr/2`
* Require Phoenix Live Head ~> 0.1.2

## v0.0.1
Initial commit