JSPM

  • Created
  • Published
  • Downloads 5
  • Score
    100M100P100Q53893F
  • License MIT

Web Utilities

Package Exports

  • tomorrow_web
  • tomorrow_web/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (tomorrow_web) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Web Utils

Debug

import debug from 'tomorrow_web/utils/debug';
const params = {
    seconds: 0,
    options: ['A', 'B', 'C'],
    clickCount: 0
};
debug.addInput(undefined, params, 'seconds', {
    label: 'Seconds'
}).listen();
debug.addOptions(undefined, params, 'options', params.options, (value: any, index: number) => {
    console.log(`Option: #${index}, ${value}');
});
debug.addButton(undefined, 'Click', () => {
    params.clickCount++;
    console.log(`Button clicked: ${params.clickCount}`);
});

DOM

import {
    isiPad,
    isiPhone,
    isiOS,
    isChrome,
    isSafari,
    isFirefox,
    isOpera,
    isMobile,
    hasUserMedia,
    supportsWebp,
    delay,
    fileName,
    guid
} from 'tomorrow_web/utils/dom';
console.log(
    'test browser support:\n',
    `isiPad: ${isiPad}\n`,
    `isiPhone: ${isiPhone}\n`,
    `isiOS: ${isiOS}\n`,
    `isChrome: ${isChrome}\n`,
    `isSafari: ${isSafari}\n`,
    `isFirefox: ${isFirefox}\n`,
    `isOpera: ${isOpera}\n`,
    `isMobile: ${isMobile}\n`,
    `hasUserMedia: ${hasUserMedia}\n`,
    `supportsWebp: ${supportsWebp}`
);
console.log(
    'test strings:\n',
    `fileName: ${fileName('http://www.website.com/myImage.png')}\n`,
    `guid: ${guid()}`
);

Loader

import loader from 'tomorrow_web/utils/loader';
import {
    GLTF,
    GLTFLoader
} from 'three/examples/jsm/loaders/GLTFLoader';

// Custom loading function
const loadGLTF = (path: string) => {
    return new Promise<GLTF>((resolve, reject) => {
        const modelLoader = new GLTFLoader();
        modelLoader.load(
            path,
            (gltf: GLTF) => {
                resolve(gltf);
            },
            (event: ProgressEvent) => { },
            () => {
                reject();
            }
        );
    });
};

loader.supportsBlob = false;
loader.loadAssets(
    [
        {
            'type': 'json',
            'file': 'files/data.json'
        },
        {
            'type': 'image',
            'file': 'files/logo.png'
        },
        {
            'type': 'custom',
            'file': 'files/figure.glb',
            'load': loadGLTF
        }
    ],
    (progress: number) => {
        console.log(`load progress: ${Math.round(progress * 100)}`);
    }
).then((files: any) => {
    console.log('loaded', files);
}).catch((reason: any) => {
    console.log('error with load:', reason);
});

Math

import {
    DEGREES,
    RADIANS,
    TWO_PI,
    HALF_PI,
    between,
    clamp,
    normalize,
    mix,
    map,
    roundTo,
    distance,
    distance2,
    distance3,
    random,
    getAngle,
    toRad,
    toDeg,
    cubicBezier,
    mixArrays
} from 'tomorrow_web/utils/math';
console.log(
    'test math:\n',
    `DEGREES: ${DEGREES}\n`,
    `RADIANS: ${RADIANS}\n`,
    `TWO_PI: ${TWO_PI}\n`,
    `HALF_PI: ${HALF_PI}\n`,
    `between: ${between(0, 100, 50)}\n`,
    `clamp: ${clamp(0, 100, 150)}\n`,
    `normalize: ${normalize(0, 100, 50)}\n`,
    `mix: ${mix(100, 200, 0.5)}\n`,
    `map: ${map(100, 200, 0, 10, 150)}\n`,
    `roundTo: ${roundTo(0.123456789, 3)}\n`,
    `distance: ${distance(50, 150)}\n`,
    `distance2: ${distance2(0, 0, 100, 100)}\n`,
    `distance3: ${distance3(0, 0, 0, 100, 100, 100)}\n`,
    `random: ${random(100, 200)}\n`,
    `getAngle: ${getAngle(0, 0, 100, 100)}\n`,
    `toRad: ${toRad(180)}\n`,
    `toDeg: ${toDeg(Math.PI)}\n`,
    `cubicBezier: ${cubicBezier(0.25, 0.19, 1, 0.22, 1)}\n`,
    `mixArrays: ${mixArrays([0, 0, 0], [10, 20, 30], 0.5)}`
);

RAF

import debug from 'tomorrow_web/utils/debug';
import raf from 'tomorrow_web/utils/raf';
raf.add(() => {
    debug.begin();
    // Update animation / render calls
    debug.end();
});
raf.play();