{"version":3,"sources":["jsdelivr-header.js","/npm/@chirimen/grove-light@1.0.4/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,CCNC,SAAU,EAAQ,GACE,iBAAZ,SAA0C,oBAAX,OAAyB,OAAO,QAAU,IAC9D,mBAAX,QAAyB,OAAO,IAAM,OAAO,IACnD,EAA+B,oBAAf,WAA6B,WAAa,GAAU,MAAa,WAAa,GACjG,CAJA,CAIE,MAAM,WAAe,aAIrB,IAAI,EAAa,SAAU,EAAS,GAClC,KAAK,QAAU,EACf,KAAK,SAAW,KAChB,KAAK,aAAe,EACpB,KAAK,IAAM,KACX,KAAK,IAAM,IACb,EAiHA,OA/GA,EAAW,UAAY,CACrB,MAAO,SAAS,GACd,OAAO,IAAI,SAAQ,IACjB,WAAW,EAAS,EAAG,GAE3B,EACA,KAAM,WACJ,OAAO,IAAI,SAAQ,CAAC,EAAS,KAC3B,KAAK,QAAQ,KAAK,KAAK,cAAc,MACnC,UACE,KAAK,SAAW,QACV,KAAK,SAAS,OAAO,IAAM,SAC3B,KAAK,SAAS,OAAO,IAAM,SAC3B,KAAK,SAAS,OAAO,IAAM,SAC3B,KAAK,SAAS,OAAO,IAAM,GACjC,GAAS,IAEX,IACE,EAAO,EAAI,GAEd,GAEL,EACA,aAAc,WACZ,MAAM,EAAU,OA6BhB,IAAI,EAAY,KAAK,IAAM,GA3BV,GA4Bb,EAAY,KAAK,IAAM,GA5BV,GA8Bb,EAAS,EACG,GAAZ,IAAe,GAAU,GAAY,IAAqB,GAC9D,IAEI,EAAG,EAFH,EAAS,EAAS,GAAM,EAGxB,GAAS,GAAK,GAjCN,IAkCV,EAjCU,IAkCV,EAjCU,KAkCD,GAjCC,KAkCV,EAjCU,IAkCV,EAjCU,KAkCD,GAjCC,KAkCV,EAjCU,IAkCV,EAjCU,KAkCD,GAjCC,KAkCV,EAjCU,IAkCV,EAjCU,MAkCD,GAjCC,KAkCV,EAjCU,IAkCV,EAjCU,KAkCD,GAjCC,KAkCV,EAjCU,IAkCV,EAjCU,KAkCD,GAjCC,KAkCV,EAjCU,GAkCV,EAjCU,IAkCD,EAjCC,MAkCV,EAjCU,EAkCV,EAjCU,GAoCZ,IAAI,EAAO,EAAW,EAAI,EAAW,EAIrC,OAHI,EAAO,IAAG,EAAO,IACrB,GAAQ,OAhEU,EAmEpB,EACA,KAAM,iBACJ,GAAqB,MAAjB,KAAK,SACP,MAAM,IAAI,MAAM,6BAOlB,SAJM,KAAK,SAAS,OAAO,IAAM,SAC3B,KAAK,MAAM,IACjB,KAAK,UAAY,KAAK,SAAS,OAAO,KACtC,KAAK,UAAY,KAAK,SAAS,OAAO,KAClC,KAAK,IAAM,KAAK,IAAM,GAAK,KAAK,IAAM,KACxC,MAAM,IAAI,MAAM,qBAElB,IAAI,EAAQ,KAAK,eAEjB,aADM,KAAK,SAAS,OAAO,IAAM,GAC1B,CACT,GAGK,CAER","file":"/npm/@chirimen/grove-light@1.0.4/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/@chirimen/grove-light@1.0.4/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.GROVELIGHT = factory());\n}(this, (function () { 'use strict';\n\n  // @ts-check\n\n  var GROVELIGHT = function (i2cPort, slaveAddress) {\n    this.i2cPort = i2cPort;\n    this.i2cSlave = null;\n    this.slaveAddress = slaveAddress;\n    this.ch0 = null;\n    this.ch1 = null;\n  };\n\n  GROVELIGHT.prototype = {\n    sleep: function(ms) {\n      return new Promise(resolve => {\n        setTimeout(resolve, ms);\n      });\n    },\n    init: function() {\n      return new Promise((resolve, reject) => {\n        this.i2cPort.open(this.slaveAddress).then(\n          async i2cSlave => {\n            this.i2cSlave = i2cSlave;\n            await this.i2cSlave.write8(0x80, 0x03);\n            await this.i2cSlave.write8(0x81, 0x00);\n            await this.i2cSlave.write8(0x86, 0x00);\n            await this.i2cSlave.write8(0x80, 0x00);\n            resolve();\n          },\n          err => {\n            reject(err);\n          }\n        );\n      });\n    },\n    calculateLux: function() {\n      const chScale = 0x7517 << 4;\n      const LUX_SCALE = 14;\n      const CH_SCALE = 10;\n      const RATIO_SCALE = 9;\n      const K1T = 0x0040; // 0.125 * 2^RATIO_SCALE\n      const B1T = 0x01f2; // 0.0304 * 2^LUX_SCALE\n      const M1T = 0x01be; // 0.0272 * 2^LUX_SCALE\n      const K2T = 0x0080; // 0.250 * 2^RATIO_SCA\n      const B2T = 0x0214; // 0.0325 * 2^LUX_SCALE\n      const M2T = 0x02d1; // 0.0440 * 2^LUX_SCALE\n      const K3T = 0x00c0; // 0.375 * 2^RATIO_SCALE\n      const B3T = 0x023f; // 0.0351 * 2^LUX_SCALE\n      const M3T = 0x037b; // 0.0544 * 2^LUX_SCALE\n      const K4T = 0x0100; // 0.50 * 2^RATIO_SCALE\n      const B4T = 0x0270; // 0.0381 * 2^LUX_SCALE\n      const M4T = 0x03fe; // 0.0624 * 2^LUX_SCALE\n      const K5T = 0x0138; // 0.61 * 2^RATIO_SCALE\n      const B5T = 0x016f; // 0.0224 * 2^LUX_SCALE\n      const M5T = 0x01fc; // 0.0310 * 2^LUX_SCALE\n      const K6T = 0x019a; // 0.80 * 2^RATIO_SCALE\n      const B6T = 0x00d2; // 0.0128 * 2^LUX_SCALE\n      const M6T = 0x00fb; // 0.0153 * 2^LUX_SCALE\n      const K7T = 0x029a; // 1.3 * 2^RATIO_SCALE\n      const B7T = 0x0018; // 0.00146 * 2^LUX_SCALE\n      const M7T = 0x0012; // 0.00112 * 2^LUX_SCALE\n      const K8T = 0x029a; // 1.3 * 2^RATIO_SCALE\n      const B8T = 0x0000; // 0.000 * 2^LUX_SCALE\n      const M8T = 0x0000; // 0.000 * 2^LUX_SCALE\n\n      var channel0 = (this.ch0 * chScale) >> CH_SCALE;\n      var channel1 = (this.ch1 * chScale) >> CH_SCALE;\n\n      var ratio1 = 0;\n      if (channel0 != 0) ratio1 = (channel1 << (RATIO_SCALE + 1)) / channel0;\n      var ratio = (ratio1 + 1) >> 1;\n\n      var b, m;\n      if (ratio >= 0 && ratio <= K1T) {\n        b = B1T;\n        m = M1T;\n      } else if (ratio <= K2T) {\n        b = B2T;\n        m = M2T;\n      } else if (ratio <= K3T) {\n        b = B3T;\n        m = M3T;\n      } else if (ratio <= K4T) {\n        b = B4T;\n        m = M4T;\n      } else if (ratio <= K5T) {\n        b = B5T;\n        m = M5T;\n      } else if (ratio <= K6T) {\n        b = B6T;\n        m = M6T;\n      } else if (ratio <= K7T) {\n        b = B7T;\n        m = M7T;\n      } else if (ratio > K8T) {\n        b = B8T;\n        m = M8T;\n      }\n\n      var temp = channel0 * b - channel1 * m;\n      if (temp < 0) temp = 0;\n      temp += 1 << (LUX_SCALE - 1);\n      var lux = temp >> LUX_SCALE;\n      return lux;\n    },\n    read: async function () {\n      if (this.i2cSlave == null) {\n        throw new Error(\"i2cSlave is not open yet.\");\n      }\n\n      await this.i2cSlave.write8(0x80, 0x03);\n      await this.sleep(14);\n      this.ch0 = await this.i2cSlave.read16(0xac);\n      this.ch1 = await this.i2cSlave.read16(0xae);\n      if (this.ch0 / this.ch1 < 2 && this.ch0 > 4900) {\n        throw new Error(\"value range error\");\n      }\n      var value = this.calculateLux();\n      await this.i2cSlave.write8(0x80, 0x00);\n      return (value);\n    }\n  };\n\n  return GROVELIGHT;\n\n})));\n"]}