npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

fullib-js

v2.0.40

Published

Full Javascript Animation Library

Downloads

102

Readme

FULLIB-JS

Pres

Multiple animation Library Only native JS

https://dev-florian.github.io/fullib-js/

FUTURE... ( priority )

  • THREE JS ANIMATION ( 3D )
  • Optimisations
  • New anim options ( trigger elem on the top / middle / bottom )

News 2.0.4

  • [Carousel] Fixed error on load and add readme to handle errors

News 2.0.3

  • [Animation] Replace checking isScrollMobile by typeof

News 2.0.2

  • [Animation] Removed .tostring() to avoid errors
  • [Animation] Added dynamic example in readme

News 2.0.1

  • [Animation] Added elem option to the animation function ( able to anim only one HTML element in a foreach for example )

News 2.0.0

  • Simple and light slider with threejs shaders
  • Lighter and faster loading
  • Rewrited, optimized as classes
  • 'classNames' : new call => 'elems' for all classes
  • Removed : buttons, menus, splittext, reveals, generateBulb, drawsvg, parallax
  • New doc
  • [Animation] Added skewX and SkewY

News 1.6.22

  • [Animation] Correc bug opacity when scroll = false

News 1.6.2

  • [Animation] Rewrite calc of animation function

News 1.6.1

  • [Animation] Added data attributes to HTML and new options

News 1.6.0

  • [Animation] Detection scroll now take full height of element ( don't stop at the top of the element )
  • [Animation] Added new function for choosing transition
  • [generateBulb] Correction of bulb was not totally in the div
  • [lottieweb] Remove depedency
  • [createAnimationTo] Remove function ( old was with gsap )
  • [loadSplitText] Remove function ( old was with gsap )
  • [loadScrollAnimation] Remove function ( old was with gsap )
  • [share button] Remove function

News 1.5.4

  • [Menu] Added direction
  • [Menu3] This Menu has been removed
  • [Cursor] Placement is now on the middle of the cursor ( it was on top-left )
  • [Cursor] Added new options : removeOriginalCursor ( true / false ) to force not removing the default cursor

News 1.5.3

  • [Animation] Correction bug when scroll option was set to false
  • [Animation] Correction bug when animation was finished and the position was not clean ( eg: finish on -2px )
  • [General improvment] New better function to trigger ViewPort element

News 1.5.1

  • [Animation] Correction bug where the current scroll position was not loaded on pageLoad

News 1.5

###[ new function : animation ] ###[ new function : customScrollBar ]

  • Correction generate-bulb
  • Added options for cursor
  • Correction bugs

News 1.4.0

###[ new : custom scrollBar ]

  • Correction bugs
  • Rewrite splittext

###[ Update : splitText ]

  • New effect : hover
  • New variables :
    • delayBetweenIteration
    • delayBeforeFirstStart ( replace old : delay )
    • delayBetweenletters

###[ Update : cursor ]

  • Added hoverSize variable
  • 'type' now accept custom radius ( 'round' / 'square' / '35%', '36%' etc )

Installation

Use yarn :

yarn add fullib-js

3D transitions carousel Creation

How To use ?


//BASIC EXAMPLE animation on scroll
import Carousel from "fullib-js/src/js/3D/Carousel";

new Carousel({
    elem: '.carousel-3d', //default is carousel-3d
    autoplay: true, //default is true
    speed: 500, //default is 750, transition between slides
    pause: 3000, //default is 3000, pause between slides when autoplay
    beforeTransition: true, //default is false, add class to the current slide before or after transition
});

//AUTOMATIC HANDLE OF ARROW RIGHT WHEN CLASS .next
//AUTOMATIC HANDLE OF ARROW LEFT WHEN CLASS .prev

<div class="carousel-3d">
        <svg class="next" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" fill="#ffffff">
            <path d="M0 0h24v24H0z" fill="none"/>
            <path d="M9.29 6.71a.996.996 0 0 0 0 1.41L13.17 12l-3.88 3.88a.996.996 0 1 0 1.41 1.41l4.59-4.59a.996.996 0 0 0 0-1.41L10.7 6.7c-.38-.38-1.02-.38-1.41.01z"/>
        </svg>
        <svg class="prev" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" fill="#ffffff" style="transform: scale(-1)">
            <path d="M0 0h24v24H0z" fill="none"/>
            <path d="M9.29 6.71a.996.996 0 0 0 0 1.41L13.17 12l-3.88 3.88a.996.996 0 1 0 1.41 1.41l4.59-4.59a.996.996 0 0 0 0-1.41L10.7 6.7c-.38-.38-1.02-.38-1.41.01z"/>
        </svg>

        <div class="slide slide-1" data-media="https://images.unsplash.com/photo-1718095744838-dace5469b218?q=80&w=2071&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"></div>
        <div class="slide slide-2" data-media="https://plus.unsplash.com/premium_photo-1716975574438-e816527cb415?q=80&w=2062&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"></div>
        <div class="slide slide-3" data-media="https://images.unsplash.com/photo-1718524767488-10ee93e05e9c?q=80&w=2071&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"></div>
</div>

//ADVANCED BEG
//THERE ARE 7 PRESETS FULL CUSTOMISABLE
new Carousel({
    elem: '.carousel-3d', //default is carousel-3d
    autoplay: true, //default is true
    speed: 500, //default is 750, transition between slides
    pause: 3000, //default is 3000, pause between slides when autoplay
    vertex: `varying vec2 vUv;void main() {vUv = uv;gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);}`,
    fragment: `
uniform float time;
uniform float progress;
uniform float intensity;
uniform float width;
uniform float scaleX;
uniform float scaleY;
uniform float transition;
uniform float radius;
uniform float swipe;
uniform sampler2D texture1;
uniform sampler2D texture2;
uniform sampler2D displacement;
uniform vec4 resolution;
varying vec2 vUv;
mat2 rotate(float a) {
    float s = sin(a);
    float c = cos(a);
    return mat2(c, -s, s, c);
}
const float PI = 3.1415;
const float angle1 = PI *0.25;
const float angle2 = -PI *0.75;


void main(){
    vec2 newUV = (vUv - vec2(0.5))*resolution.zw + vec2(0.5);

    vec2 uvDivided = fract(newUV*vec2(intensity,0));


    vec2 uvDisplaced1 = newUV + rotate(3.1415926/10.)*uvDivided*progress*0.1;
    vec2 uvDisplaced2 = newUV + rotate(3.1415926/10.)*uvDivided*(1. - progress)*0.1;

    vec4 t1 = texture2D(texture1,uvDisplaced1);
    vec4 t2 = texture2D(texture2,uvDisplaced2);

    gl_FragColor = mix(t1, t2, progress);

}
`,
    uniforms: {
        intensity: {value: 50, type:'f', min:0, max:2},
        width: {value: 0, type:'f', min:0, max:10},
        scaleX: {value: 0, type:'f', min:0.1, max:60},
        scaleY: {value: 0, type:'f', min:0.1, max:60},
        radius: {value: 0, type:'f', min:0.1, max:2},
    },
});

Errors lit

WEBPACK
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
Install those packages
        "glslify": "^7.1.1",
        "glslify-import-loader": "^0.1.2",
        "glslify-loader": "^2.0.0",
        "raw-loader": "^4.0.2",

And configure :

WEBPACK ENCORE
Encore
    .addRule({
        test: /\.(glsl|frag|vert)$/,
        use: ['glslify-import-loader', 'raw-loader', 'glslify-loader']
    })
    
SIMPLE WEBPACK
module.exports = {
    .....
    module: {
        rules: [
            {
                test: /\.(glsl|frag|vert)$/,
                exclude: /node_modules/,
                use: [
                    'raw-loader',
                    {
                        loader: 'glslify-loader',
                        options: {
                            transform: [
                                ['glslify-hex', { 'option-1': true, 'option-2': 42 }]
                            ]
                        }
                    }
                ]
            },
        ]
    },
};

animation Creation

How To use ?

import Animation from "fullib-js/src/js/Basic/Animation";

//BASIC EXAMPLE animation on scroll
new Animation({
    elems: '.scroll-lefttoright',
    scroll: true, //default true
    start: '0%', //default 0%
    end: '100%', //default 100%
    measure: 'px', //default px
    transition: 'all .2s ease', //default all .1s linear
    from: {
        x: -100
    },
    to: {
        x: 0,
    }
});

<div class="scroll-lefttoright">I AM A TEST</div>

Other example ( anim without scroll trigger but on viewport )

import Animation from "fullib-js/src/js/Basic/Animation";

//BASIC EXAMPLE
new Animation({
    elems: '.scroll-lefttoright',
    scroll: false,
    delay: 0, //default 0
    duration: 500, //default 500
    measure: 'px', //default px
    isScrollMobile: false, //default value as 'scroll'
    mobileBreakpoint: 991, //default 991
    from: {
        x: -100
    },
    to: {
        x: 0,
    }
});

<div class="scroll-lefttoright">I AM A TEST</div>

Options :
x
y
rotate
opacity
scaleX
scaleY
skewX
skewY

Dynamic example, with HTML element and data-attributes :

<h2 class="auto-animate" data-scroll="true" data-scroll-mobile="false" data-start="25%" data-end="75%" data-from-x="-50" data-to-x="-150" data-from-x-mobile="-25" data-to-x-mobile="-50" data-from-y="-50" data-to-y="0">
    auto-anim
</h2>

let windowWidth = window.innerWidth;
let breakpoint = 991;
let autoAnimateDivs = document.querySelectorAll('.auto-animate');
autoAnimateDivs.forEach(autoAnimateDiv => {

    let yFromDesktop = autoAnimateDiv.getAttribute('data-from-y') ? autoAnimateDiv.getAttribute('data-from-y') : 0;
    let yFromMobile = autoAnimateDiv.getAttribute('data-from-y-mobile') ? autoAnimateDiv.getAttribute('data-from-y-mobile') : yFromDesktop;
    let yToDesktop = autoAnimateDiv.getAttribute('data-to-y') ? autoAnimateDiv.getAttribute('data-to-y') : 0;
    let yToMobile = autoAnimateDiv.getAttribute('data-to-y-mobile') ? autoAnimateDiv.getAttribute('data-to-y-mobile') : yToDesktop;

    let xFromDesktop = autoAnimateDiv.getAttribute('data-from-x') ? autoAnimateDiv.getAttribute('data-from-x') : 0;
    let xFromMobile = autoAnimateDiv.getAttribute('data-from-x-mobile') ? autoAnimateDiv.getAttribute('data-from-x-mobile') : xFromDesktop;
    let xToDesktop = autoAnimateDiv.getAttribute('data-to-x') ? autoAnimateDiv.getAttribute('data-to-x') : 0;
    let xToMobile = autoAnimateDiv.getAttribute('data-to-x-mobile') ? autoAnimateDiv.getAttribute('data-to-x-mobile') : xToDesktop;

    let start = autoAnimateDiv.getAttribute('data-start') ? autoAnimateDiv.getAttribute('data-start') : '0%';
    let end = autoAnimateDiv.getAttribute('data-end') ? autoAnimateDiv.getAttribute('data-end') : '100%';

    let scroll = autoAnimateDiv.getAttribute('data-scroll') === 'false' ? false : true;
    let isScrollMobile = autoAnimateDiv.getAttribute('data-scroll-mobile') === 'false' ? false : true;


    new Animation({
        elem: autoAnimateDiv,
        scroll: scroll,
        isScrollMobile: isScrollMobile,
        start: start,
        end: end,
        measure: 'px', /** default px */
        from: {
            y: windowWidth > breakpoint ? parseFloat(yFromDesktop) : parseFloat(yFromMobile),
            x: windowWidth > breakpoint ? parseFloat(xFromDesktop) : parseFloat(xFromMobile),
        },
        to: {
            y: windowWidth > breakpoint ? parseFloat(yToDesktop) : parseFloat(yToMobile),
            x: windowWidth > breakpoint ? parseFloat(xToDesktop) : parseFloat(xToMobile),
        }
    });

customScrollBar

How To use ?

import ScrollBar from "fullib-js/src/js/Basic/ScrollBar";

//BASIC EXAMPLE
new ScrollBar({
    elem: '*', //default .scrollbar
    width: 8, //default as 'auto'
    border: '1px solid #000', //ONLY WORK ON WEBKIT : chrome / edge
    borderRadius: '25%', //ONLY WORK ON WEBKIT : chrome / edge
    scrollbarBackground: 'gray', //default black
    scrollbarColor: 'white', //default white
});

MOUSEMOOVE

When mooving the mouse, it mooves the content ( related to mouse position )

How to use ?

Easy example

import Mousemoove from "fullib-js/src/js/Basic/Mousemoove";

new Mousemoove({
  elems: '.test', //default .mousemove
  force: 100, //default 100
  speed: 3, //default 3
  inverse: false, //default false
  breakpoint: 767, //default 320
});

<div class="firstcard test">
  <img width="50" height="50" src="https://images.freeimages.com/images/large-previews/08e/up-close-personal-2-1359478.jpg">
</div>


Or another example, simplier :

import Mousemoove from "fullib-js/src/js/Basic/Mousemoove";

new Mousemoove();

<div class="firstcard mousemove" data-speed="3" data-force="50">
  <img width="50" height="50" src="https://images.freeimages.com/images/large-previews/08e/up-close-personal-2-1359478.jpg">
</div>

CURSOR

Display a custom cursor

How To use ?

import Cursor from "fullib-js/src/js/Basic/Cursor";
new Cursor({
    elems: 'body', //needed
    imagePath: './img/cursor.jpg', //needed
    position: 'top right', //default center center : top left; top right; bottom left; bottom right
    imageWidth: 200, //optional
    imageHeight: 300, //optional
    offsetY: -50, //optional
    offsetX: 50, //optional
    imageCover: false, // default true
    keepCursor: false, // default false
});

Change color of bg if in viewport

change-background

How to use ?

Easy example

import DynamicBackground from "fullib-js/src/js/Basic/DynamicBackground";
new DynamicBackground({
    elems: ".change-background", //default .dynamic-background
    backgroundColor: "#ffd5ce", //bgColor
    animation: "1s linear" //Animation
});

//WHEN ENTER IN DIV, CHANGE THE BODY BACKGROUND
<div class='change-background' style='height: 100vh'>
  My content 100vh
</div>

Or another example

import DynamicBackground from "fullib-js/src/js/Basic/DynamicBackground";

new DynamicBackground();

<div class='dynamic-background' data-background-color='#000000' style='height: 100vh'>
  My content 100vh
</div>

LOTTIE

https://lottiefiles.com/community

How to use ?

Easy example

import LottieHelper from "fullib-js/src/js/Basic/LottieHelper";
new LottieHelper({
  'elems': '.lottie-helper' // default .lottie-helper
});

<div class="mt-5 mb-5 lottie-helper" data-lottie-scroll="false" data-lottie-click="true" data-lottie-hover="false" data-lottie-file="../../lottie/button.json" style="width: 150px;"></div>

renderer: 'svg' / 'canvas' / 'html' //DEFAULT IS CANVAS

IMAGEBLOB

Add a round blob effect to your image

How to use ?

Easy example

import ImageBlob from "fullib-js/src/js/Basic/ImageBlob";
new ImageBlob();

<img class="blobed" alt="blob" width="400" height="400" src="https://outsmartlabs.com/medias/images/redcharlie-fCRFjmM8Ll4-unsplash.jpg">

Warning : Don't forget to add with and height attribute ( default take 400 x 400 )

ORBIT

Add an orbit on your page !

How to use ?

Easy example

import Orbit from "fullib-js/src/js/Basic/Orbit";
new Orbit({
    elems: '.circlewhite',
    position: 'right-top', //right-top right-bottom left-top left-bottom
    indexPixel: 150,
    inverseRotation: true,
    line: {
        display: true,
        borderColor: "#ffffff",
        borderSize: 3,
        size: 400
    },
    bulb: {
        display: true,
        backgroundColor: '#ffffff',
        color: '#ffffff',
        size: 50
    }
});

<div class="circlewhite"></div>

UTILS

Need some usefull tools?

How to use ?

Easy example

import Utils from "fullib-js/src/js/Utils/Utils";
let utils = new Utils();

list : 
- utils.isElementInViewport(div); //CHECK IF IN VIEWPORT
- utils.validNumber(numberOrString); //CHECK IF IS A NUMBER
- utils.addElement(type, classes, options); //ADDING DIV TO DOM

Example :

let parentElem = document.querySelector('body');
let higther = this.addElement('div', 'myClass', {
    id: 'myId',
    addTo: parentElem,
})

higther.style.backgroundColor = 'red';
higther.style.height = '100vh';
higther.style.width = '100vw';

List options :
- text ( innerHtml )
- id ( #id )
- href ( link )
- rel ( eg : noopener noreferer )
- target ( eg : _blank )
- type ( eg : button )
- src ( eg : media )