Importing

Read on for how to import ixfx with a URL import. Advanced users might want to install ixfx via NPM or a downloaded ZIP.

Modules

You'll mostly want to import functions as modules:

import { NameOfModule } from "https://unpkg.com/ixfx/dist/bundle.js"

The names of predefined modules are given in the list below. All of these can be imported from the main bundle or invididually. The bundle contains all the modules.

For example, to import Timers:

import { Flow } from "https://unpkg.com/ixfx/dist/bundle.js"
Flow.continuously(...);

Note the module name is capitalised, while the names in the URL are not. Also note that function names are preceded by the module name. One needs to call Timers.continuously not continuously.

If you don't want to import the whole bundle, but still want to import everything from a module, you can use this syntax:

import * as Flow from "https://unpkg.com/ixfx/dist/flow.js"
Flow.continuously(...);

This looks similar to how we started, but the difference is we're only importing the contents of flow.js and not all the ixfx code.

Functions

Most functions are housed within modules.

To import a function:

import { nameOfFunction } from "https://unpkg.com/ixfx/nameOfModule.js"

For example, to import continuously from the Flow module:

import { continuously } from "https://unpkg.com/ixfx/dist/flow.js"
continuously(...);

Note how we specify which function to import and it doesn't have the 'Flow' prefix when we imported from the bundle.

Browsing the API documentation is a good way of figuring out where to import from, if you're confused.

Module overview

This overview of available modules gives some examples of importing from unpkg.com, and each header is a link to the API docs, where there is a full list of available functions, classes, types and sub-modules.

Arrays

Eg. function

import { filterAB } from  "https://unpkg.com/ixfx/dist/arrays.js"

Collections

Sub-modules: Arrays, Iterables, Maps, Queues, Sets, Stacks, Trees

Eg. sub-module

import { Arrays } from  "https://unpkg.com/ixfx/dist/collections.js"
Arrays.average([ 1, 2, 3 ]);
import { Queues } from  "https://unpkg.com/ixfx/dist/collections.js"
let queue = Queues.immutable();

Data

Sub-modules: Correlate, Normalise, Pool

Eg. function

import { clamp } from  "https://unpkg.com/ixfx/dist/data.js"

Eg. sub-module

import { Normalise } from  "https://unpkg.com/ixfx/dist/data.js"
Normalise.array([ 1, 2, 3 ]);

Eg. class

import { IntervalTracker } from  "https://unpkg.com/ixfx/dist/data.js"
const t = new IntervalTracker();

Dom

Sub-modules: DataTable, DragDrop, Forms, Rx, Variables

Eg. function

import { setText } from  "https://unpkg.com/ixfx/dist/dom.js"

Eg. sub-module

import { Forms } from  "https://unpkg.com/ixfx/dist/data.js"
Forms.button(`#myButton`, () => { console.log(`clicked`) });

Events

Eg. function

import { eventRace } from  "https://unpkg.com/ixfx/dist/events.js"

Eg. class

import { SimpleEventEmitter } from  "https://unpkg.com/ixfx/dist/events.js"
class MyClass extends SimpleEventEmitter { ... }

Flow

Sub-modules: Elapsed, StateMachine

Eg. function

import { sleep } from  "https://unpkg.com/ixfx/dist/flow.js"
await sleep(1000);

Eg. sub-module

import { Elapsed } from  "https://unpkg.com/ixfx/dist/flow.js"
let e = Elapsed.since();

Eg. class

import { TaskQueue } from  "https://unpkg.com/ixfx/dist/flow.js"
const t = new TaskQueue();

Generators

Sub-modules: Async, Chain, Sync

Eg. function

import { count } from  "https://unpkg.com/ixfx/dist/generators.js"
for (const v of count(5, 5)) {
  ...
}

Eg. sub-module

import { Sync } from  "https://unpkg.com/ixfx/dist/generators.js"
for (const v of Sync.chunks(source, 10)) {

}

Geometry

Sub-modules: Arcs, Beziers, Circles, Compound, Convolve2d, CurveSimplification, Ellipses, Grids, Layouts, Lines, Paths, Points, Polar, QuadTree, Rects, Scaler, Shapes, Spheres, SurfacePoints, Triangles, Vectors, Waypoints

Eg. function

import { radianToDegree } from  "https://unpkg.com/ixfx/dist/geometry.js"
radianToDegree(Math.PI);

Eg. sub-module

import { Points } from  "https://unpkg.com/ixfx/dist/geometry.js"
Points.multiply({x:1,y:2},{x:0.5,y:0.5});

Immutable

Sub-modules: none

Eg. function

import { compareData } from  "https://unpkg.com/ixfx/dist/immutable.js"
compareData(a, b);

Io

Sub-modules: AudioAnalysers, AudioVisualisers, Bluetooth, Camera, Espruino, Serial, VideoFile

Eg. sub-module

import { VideoFile } from  "https://unpkg.com/ixfx/dist/io.js"
VideoFile.start(file);

Modulation

Sub-modules: Easings, Forces, Oscillators

Eg. function

import { jitter } from  "https://unpkg.com/ixfx/dist/modulation.js"
jitter({relative:0.1})(0.5);

Eg. sub-module

import { Oscillators } from  "https://unpkg.com/ixfx/dist/modulation.js"
const osc = Oscillators.saw(0.1);

Numbers

Sub-modules: none

Eg. function

import { average } from  "https://unpkg.com/ixfx/dist/numbers.js"
average(4, 2, 5);

Random

Sub-modules: none

Eg. function

import { integer } from  "https://unpkg.com/ixfx/dist/random.js"
integer(10);

Rx

Sub-modules: Dom

Eg. function

import { fromArray } from  "https://unpkg.com/ixfx/dist/rx.js"
fromArray([ 1, 2, 3 ]);

Text

Sub-modules: none

Eg. function

import { between } from  "https://unpkg.com/ixfx/dist/text.js"
between(source, start, end);

Util

Sub-modules: none

Eg. function

import { isMap } from  "https://unpkg.com/ixfx/dist/util.js"
isMap(o);

Visual

Sub-modules: BipolarView, Colour, Drawing, ImageDataGrid, Palette, Plot2, SceneGraph, Svg, Video

Eg. sub-module

import { Colour } from  "https://unpkg.com/ixfx/dist/visual.js"
Colour.interpolate(amt, from, to);