0.0.3 • Published 7 months ago
reactive-primitives v0.0.3
reactive-primitives
A collection of utilities for helping applications be more reactive.
This library intends to provide convinence utilities for allow derived data patterns and easy reactivity to be added to applications.
Compatibility
- Ember.js v4.8 or above
- Embroider or ember-auto-import v2
Installation
pnpm add reactive-primitives
Usage
ReactiveImage
Usage in a component
import { ReactiveImage } from 'reactive-primitives/image';
<template>
{{#let (ReactiveImage 'https://path.to.image') as |state|}}
{{#if imgState.isResolved}}
<img src={{imgState.value}}>
{{/if}}
{{/let}}
</template>
Usage in a class
import { use } from 'ember-resources';
import { ReactiveImage } from 'reactive-primitives/image';
class Demo {
@use imageState = ReactiveImage('https://path.to.image');
}
Reactive usage in a class
import { tracked } from '@glimmer/tracking';
import { use } from 'ember-resources';
import { ReactiveImage } from 'reactive-primitives/image';
class Demo {
@tracked url = '...';
@use imageState = ReactiveImage(() => this.url);
}
WaitUntil
Usage in a component
import { WaitUntil } from 'reactive-primitives/wait-until';
<template>
{{#let (WaitUntil 500) as |delayFinished|}}
{{#if delayFinished}}
text displayed after 500ms
{{/if}}
{{/let}}
</template>
Usage in a class
import { use } from 'ember-resources';
import { WaitUntil } from 'reactive-primitives/wait-until';
class Demo {
@use delayFinished = WaitUntil(500);
get isFinished() {
return this.delayFinished; // true after 500ms
}
}
Reactive usage in a class
import { tracked } from '@glimmer/tracking';
import { use } from 'ember-resources';
import { ReactiveImage } from 'reactive-primitives/image';
class Demo {
@tracked delay = 500;
@use delayFinished = WaitUntil(() => this.delay);
get isFinished() {
return this.delayFinished; // true after this.delay ms
}
}
Contributing
See the Contributing guide for details.
License
This project is licensed under the MIT License.