# The Big Box of Javascript ## Polyfills - [Fake IndexedDB](https://github.com/dumbmatter/fakeIndexedDB) - A pure JS in-memory implementation of the IndexedDB API ## Net - [jsRequest](https://github.com/danilo-valente/jsRequest) - Fast and easy asynchronous JavaScript files loading. - [frameSync](https://github.com/activenode/frameSync) - Synchonise ultiple different browser windows that are displaying content from the same domain - [offline](http://github.hubspot.com/offline/docs/welcome/) - Capture AJAX requests made when the user is offline and send them off when the connection is restored. Also notifies the user that their internet connection has gone down. - [UpUp](https://www.talater.com/upup/) - Make your website available offline using service workers. ## Searching - [lunr.js](http://lunrjs.com/) - A lightweight search engine to use - [Defiant.js](http://www.defiantjs.com/) - Search JSON structures with XPath expressions - [Awesomplete](https://leaverou.github.io/awesomplete/) - Ultra lightweight autocomplete engine with no dependencies - [horsey](http://bevacqua.github.io/horsey/) - An alternative autocomplete engine. Doesn't support getting entries from HTML, but does support fetching options asynchronously (i.e. AJAX). - [Olly.js](https://github.com/abeisgreat/Olly.js) - Rich snippets engine - [Jets.js](http://nexts.github.io/Jets.js/) - A superfast native CSS client side search engine. *Much* faster than writing a searchfiltering system yourself. ## Saving - [localStorage Bridge](https://github.com/krasimir/lsbridge) - A really cool library that lets you send & receive messages via localStorage. Useful to let all the pages a user has open communicate with each other. ## Media - [audiosynth](http://keithwhor.github.io/audiosynth/) - A wonderfully simple (albeit underdocumented) library for synthesising notes from various instruments. Not the most powerful, but easy to use. - [textgen.js](https://github.com/mrdoob/texgen.js) - A procedural texture generator written in pure javascript. - [Popmotion](http://popmotion.io/) - A 12kb motion / input engine. - [ClickSpark.js](http://www.ymc.ch/sandbox/clickspark/demo.html) - Add particle effects on mouse click. - [Photo Sphere Viewer](http://photo-sphere-viewer.js.org/) - A JS library to display your photo spheres. ## Display - [ramjet](http://www.rich-harris.co.uk/ramjet/) - Lets you transform one DOM element into another with a smooth transisition - [ifvisible.js](https://github.com/serkanyersen/ifvisible.js) - Super simple library to detect if the user is actually looking at your page at a given moment - [marklib](http://bowlingx.github.io/marklib/) - Highlight any text on a web page. - [spin.js](http://fgnass.github.io/spin.js/) - Generate your loading spinners dynamically. - [ItemSlide.js](http://itemslide.github.io/) - A mobile friendly carousel of cards. ### 3D - [WebGLStudio.js](http://webglstudio.org/) - A seriously interesting looking platform that lets create and / or edit webgl scenes. ## Popup Boxes - [NanoModal](https://github.com/kylepaulsen/NanoModal) - Display those modals dialogs easily - [basicContext](https://github.com/electerious/basicContext) - Create custom right click menus easily - [Headhesive](https://markgoodyear.com/labs/headhesive/) - Create customiseable fixed headers that appear at certain points on a page - [Ply](http://rubaxa.github.io/Ply/) - Similar to nanoModal. Display modern looking dialog boxes easily, with transition effects too! ## Progress bars - [Mprogress.js](https://lightningtgc.github.io/MProgress.js/) - A progress bar based on material design - [ProgressBar.js](https://kimmobrunfeldt.github.io/progressbar.js/) - Another progress bar library - [Elevator.js](http://tholman.com/elevator.js/) - An awesome script that "solves those awkward scroll to top moments the old fashioned way" :D - [layzr.js](https://github.com/callmecavs/layzr.js) - A lightweight library that makes lazy loading ridiculously easy ## Input tools - [Keypress](https://dmauro.github.io/Keypress/) - Simple but powerful keyboard input library - [Squire](https://neilj.github.io/Squire/) - Turn a simple `