From e4d7e4f61bfa128aaf0227d8b7a42151fd6b9737 Mon Sep 17 00:00:00 2001 From: Jake Jarvis Date: Wed, 4 Aug 2021 15:19:54 -0400 Subject: [PATCH] =?UTF-8?q?remove=20unnecessary=20deps=20(now=20zero=20?= =?UTF-8?q?=F0=9F=98=8E)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 7 ++++++- package.json | 4 +--- src/index.js | 16 +++++++++++++++- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 7fb5ab6..40ae823 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [![npm (scoped)](https://img.shields.io/npm/v/@jakejarvis/dark-mode)](https://www.npmjs.com/package/@jakejarvis/dark-mode) [![GitHub](https://img.shields.io/github/license/jakejarvis/dark-mode?color=violet)](LICENSE) -Very simple CSS dark/light mode toggler with saved preference via local storage & dynamic OS setting detection. Only ~700 bytes gzipped! +Very simple CSS dark/light mode toggler with saved preference via local storage & dynamic OS setting detection. Zero dependencies and only ~700 bytes gzipped! - [View the example.](https://jakejarvis.github.io/dark-mode-example/) - [Read the blog post.](https://jarv.is/notes/dark-mode/) @@ -64,6 +64,11 @@ darkMode.init({ }); ``` +## To-Do + +- [ ] Support more than two themes +- [ ] Add callback function `onChange` (or `onToggle` etc.) passed in as an option + ## License MIT diff --git a/package.json b/package.json index b75bab4..514bf38 100644 --- a/package.json +++ b/package.json @@ -19,9 +19,7 @@ "lint": "eslint src/**/*.js", "prepublishOnly": "run-s lint build" }, - "dependencies": { - "storage-available": "^1.1.0" - }, + "dependencies": {}, "devDependencies": { "copy-webpack-plugin": "^9.0.1", "eslint": "^7.32.0", diff --git a/src/index.js b/src/index.js index 37f42ca..99ceb5a 100644 --- a/src/index.js +++ b/src/index.js @@ -1,4 +1,4 @@ -const storageAvailable = require("storage-available"); +"use strict"; const initializeDarkMode = function (options) { // { toggle, classes: { light, dark }, default, storageKey } @@ -88,4 +88,18 @@ const initializeDarkMode = function (options) { } }; +// recommended method (by MDN) to detect localStorage availability: +// https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API#feature-detecting_localstorage +const storageAvailable = function (type) { + try { + var storage = window[type]; + var x = "__storage_test__"; + storage.setItem(x, x); + storage.removeItem(x); + return true; + } catch (e) { + return false; + } +}; + module.exports.init = initializeDarkMode;