Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
ember-curry-component
Advanced tools
Like Ember's builtin `(component)` helper, but with dynamic arguments, and JS compatibility
Like Ember's builtin (component)
helper, but with dynamic arguments, and JS compatibility.
ember install ember-curry-component
import Component from "@glimmer/component";
import { getOwner } from "@ember/owner";
import { curryComponent } from "ember-curry-component";
import SomeOtherComponent from "./some-other-component";
class extends MyComponent {
get curriedComponent(){
const args = { name: "David" };
return curryComponent(SomeOtherComponent, args, getOwner(this))
}
<template>
<this.curriedComponent />
</template>
}
import Component from "@glimmer/component";
import { getOwner } from "@ember/owner";
import { curryComponent } from "ember-curry-component";
import SomeOtherComponent from "./some-other-component";
class extends MyComponent {
@tracked name = "David";
get curriedComponent() {
const args = { get name() { return this.name } };
return curryComponent(SomeOtherComponent, args, getOwner(this));
}
<template>
<this.curriedComponent />
</template>
}
When this.name
is reassigned, the @name
argument on the curried component will be invalidated. The getter will not be re-evaluated.
import Component from "@glimmer/component";
import { getOwner } from "@ember/owner";
import { curryComponent } from "ember-curry-component";
import SomeOtherComponent from "./some-other-component";
class extends MyComponent {
@tracked name = "David";
get curriedComponent(){
const args = { name: this.name };
return curryComponent(SomeOtherComponent, args, getOwner(this))
}
<template>
<this.curriedComponent />
</template>
}
When this.name
is reassigned, the getter will be invalidated, and the curried component will be completely rerendered.
In .gjs
/.gjs
files, the curryComponent helper can be used directly in a template. In this case, the owner does not need to be passed explicitly.
import SomeOtherComponent from "./some-other-component";
const args = { name: "david" }
<template>
{{#let (curryComponent MyComponent args) as |curriedComponent|}}
<curriedComponent />
{{/let}}
</templates>
In <template>
, curried components cannot be rendered from the local scope. This will fail:
// Do not copy!
const curried = curryComponent(MyComponent, args, owner)
<template><curried /></template>
You must wrap the invocation in {{#let}}
instead:
// Do not copy!
const curried = curryComponent(MyComponent, args, owner)
<template>
{{#let curried as |myComponent|}}
<myComponent />
{{/let}}
</template>
See the Contributing guide for details.
This project is licensed under the MIT License.
FAQs
Like Ember's builtin `(component)` helper, but with dynamic arguments, and JS compatibility
We found that ember-curry-component demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.