JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 4
  • Score
    100M100P100Q53828F
  • License MIT

Extended Lifecycles and Recycling for Ember Components

Package Exports

  • @html-next/flexi-sustain

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@html-next/flexi-sustain) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Flexi

npm version Ember Observer Score Build Status Code Climate Test Coverage dependencies devDependency Status

Changelog

Installation

ember install flexi-sustain

Support, Questions, Collaboration

Join the flexi channel on Slack.

Slack Status

Sustain

Sustain allows you to recycle a component instance across layout and route boundaries.

A sustain is essentially a "marker" for where a particular component instance is able to be reused. It allows you to explicitly declare what features of your app can be "recycled".

Sustain improves the performance of your app by reducing the amount of work your app needs to do. Instead of tearing down one instance and creating an entirely new instance, sustain seamlessly swaps a component instance's location as layouts and routes transition from one position to the next.

{{sustain <path-to-sustain> model}}

Only one instance of the sustainable is alive and rendered at a time, but if you are animating from one location to another you can choose to leave behind a copy.

{{sustain <path-to-sustain> model copy=true}}

By default, a sustain is destroyed when it has gone unused for one minute. You can alter this expiration. A value of 0 will cause the sustain to live forever.

{{sustain <path-to-sustain> expires=<time-in-ms>}}

If you would like to use the same layout for multiple sustain instances, on the same page, you can specify a label. This allows unique instances of the same layout, which update from route to route or layout to layout, but do not overwrite previous sustains in the same template.

{{sustain my-path label='foo'}}
{{sustain my-path label='bar'}}

Contributing

  • Open an Issue for discussion first if you're unsure a feature/fix is wanted.
  • Branch off of master (default branch)
  • Use descriptive branch names (e.g. <type>/<short-description>)
  • Use Angular Style Commits
  • PR against develop (default branch).

Commmits

Angular Style commit messages have the full form:

<type>(<scope>): <title>

<body>

<footer>

But the abbreviated form (below) is acceptable and often preferred.

<type>(<scope>): <title>

Examples:

  • chore(deps): bump deps in package.json and bower.json
  • docs(component): document the fast-action component

Thanks

A special thanks goes out to @ebryn for the inspiration to pursue a solution for explicit layouts, and IsleofCode for providing the time to build it.