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);