Necessary to parse, traverse, and reformat Liquid templates. Uses the _Visitor Pattern_ to walk the template document to inspect and transform each node as appropriate. Each change is stored in the `buffer` by mutating it each time.
Milestone: minor
Necessary to provide a manifest of dependencies to be resolved via the container for further processing. Will soon be used by the template transform.
Milestone: minor
Necessary to consistent with changes introduced when adding import support so that the top level form key is `design` instead of `template`.
Milestone: patch
Necessary to import an exported (zip file) design. The full implementation is included as a single commit to capture the details of how this works. Here's the breakdown:
* *Import Action*: Creates a new screen template based on the model ID and associated zip file content that is uploaded.
* *Import Partial*: The `_import` partial provides the form within a popover via the index page to collect details from the user. This is also why the `index` template has been updated to link to the popover and also why the index view supplies the models.
In the future, reduce the responsibility of loading the models on the index view and use a import new action instead.
Milestone: minor
Necessary to validate a zip attachment before importing content. This also requires the model ID to be supplied as a starting point since the same template can be used for any model.
Milestone: minor
Necessary to generate attributes for Liquid templates. Will soon be used during extension import of TRMNL Recipes in order to supply device information.
Milestone: minor
We need access to this information via the struct for building Liquid attributes instead of at the view layer. With this change, the part will automatically delegate to the struct instead.
Milestone: patch