escompose

Npm package version
Npm package monthly downloads
License: AGPL v3
Discord

ES Components is a standard for transforming ES Modules into standardized Web Components to simplify the process of authoring composable web applications.

The escompose library uses graphscript to compile ES Components into Web Components that respond to each other.

escompose is a core library of the Brains@Play Framework

The Specification

Each Component contains one default export and any number of named exports.

export let nExecutions = 0

export default function(){
    this.nExecutions++
    return this.nExecutions
}

As such, this specification treats namespace imports (which access default and named exports) as first-class citizens.

Default Exports

The default export defines the behavior of the Component.

Named Exports

named exports define the states of the Component.

However, multiple named exports without a default function may also be passed. These are transformed into individual Components within the same graph.

## Special Properties

Cross-File Properties

esComponents

This is a registry of ESC that you'd like to transform into Web Components.

  • Note: This has to be loaded
esCompose

This is a key that allows you to specify how this ESC inherits from another.

esDOM

This is a tree of ESC instances that determine how they will be displayed on the screen—as well as how they're referenced in listener scope.

esListeners

This is a collection of configuration objects that specify how ESC will listen to each other.

JSON / HTML Properties

esTrigger

This allows you to run the default function of an ESC using the arguments specified here.

{
    "esTrigger": [true],
    "esCompose": "./components/trigger.js'
}

esAnimate

This allows you to specify an animation loop for your component.

{
    "esAnimate": 10, // Runs 10 times every second
    // "esAnimate": true, // Runs on the default animation loop
    "esCompose": "./components/time.js'
}

Acknowledgments

This library is maintained by Garrett Flynn and Joshua Brewster, who use contract work and community contributions through Open Collective to support themselves.

Backers

Support us with a monthly donation and help us continue our activities!






























Sponsors

Become a sponsor and get your logo here with a link to your site!