{"version":3,"sources":["jsdelivr-header.js","/npm/iobroker.keyble@0.1.1/main.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,aACA,IAAI,QAAS,WAAY,QAAS,OAAQ,iBAAkB,UAAW,MAGvE,MAAQ,QAAQ,GAAG,uBAGnB,QAAU,IAAI,MAAM,QAAQ,UAG5B,OAAS,QAAQ,UAGjB,QAAU,KAGV,QAAQ,GAAG,SAAS,WAClB,QAAQ,IAAI,KAAK,8CAA8C,KAAK,UAAU,QAAQ,WACtF,YACF,IAGA,QAAQ,GAAG,eAAe,SAAS,EAAS,GAC1C,IAAI,EAEJ,QAAQ,IAAI,KAAK,eAAe,MAAO,KAAK,UAAU,MAElD,IAAW,EAAM,MACnB,EAAK,EAAQ,MAAM,QAAQ,UAAU,OAAS,GAC9C,iBAAiB,EAAI,EAAO,EAAM,IAAK,GAE3C,IAIA,QAAQ,GAAG,UAAU,SAAS,GAC5B,QAAQ,IAAI,KAAK,wCACjB,QAAQ,QAAQ,aAAa,MAAK,WAChC,QAAQ,IAAI,KAAK,4BACjB,GACF,IAAG,OAAM,SAAS,GAChB,QAAQ,IAAI,KAAK,sBACjB,GACF,GACF,IAEA,WAAa,YACX,QAAU,IAAI,OAAO,QAAQ,CAC3B,QAAS,QAAQ,OAAO,YACxB,QAAS,QAAQ,OAAO,QACxB,SAAU,QAAQ,OAAO,SACzB,qBAAsB,QAAQ,OAAO,qBACrC,mBAAoB,QAAQ,OAAO,sBAE7B,GAAG,iBAAiB,SAAS,EAAW,GAS9C,GARA,QAAQ,SAAS,SAAU,CACzB,IAAmB,IAAd,EACL,KAAK,IAEP,QAAQ,SAAS,aAAc,CAC7B,IAAK,EACL,KAAK,IAEW,IAAd,EAMF,OAJA,QAAQ,SAAS,SAAU,CACzB,IAAmB,IAAd,EACL,KAAK,IAEA,QAAQ,SAAS,WAAY,CAClC,IAAoB,IAAd,GAAmC,IAAd,EAC3B,KAAK,GAGX,IAIA,QAAQ,mBAAmB,WAAY,CACrC,KAAM,QACN,OAAQ,CACN,KAAM,WACN,KAAM,UACN,KAAM,mBACN,OAAO,GAET,OAAQ,CAAC,IAEX,QAAQ,mBAAmB,SAAU,CACnC,KAAM,QACN,OAAQ,CACN,KAAM,SACN,KAAM,UACN,KAAM,oBACN,OAAO,GAET,OAAQ,CAAC,IAEX,QAAQ,mBAAmB,SAAU,CACnC,KAAM,QACN,OAAQ,CACN,KAAM,SACN,KAAM,UACN,KAAM,mBACN,OAAO,GAET,OAAQ,CAAC,IAEX,QAAQ,mBAAmB,aAAc,CACvC,KAAM,QACN,OAAQ,CACN,KAAM,aACN,KAAM,SACN,KAAM,aACN,OAAO,EACP,OAAQ,CACN,EAAG,SACH,EAAG,SACH,EAAG,WACH,EAAG,SAGP,OAAQ,CAAC,IAGX,QAAQ,gBAAgB,IAC1B,EAEA,iBAAmB,SAAS,EAAI,EAAO,EAAO,GAC5C,OAAQ,GACN,IAAK,WACC,EACF,QAAQ,SAER,QAAQ,OAEV,MACF,IAAK,SACC,GACF,QAAQ,OAGhB,EAEA,UAAY,WAEV,OADA,QAAQ,aACD,QAAU,IACnB","file":"/npm/iobroker.keyble@0.1.1/main.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/iobroker.keyble@0.1.1/main.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict';\nvar adapter, initialize, key_ble, keyble, on_command_state, terminate, utils;\n\n// Get common adapter utils\nutils = require(`${__dirname}/lib/utils`);\n\n// Create Adapter instance\nadapter = new utils.Adapter('keyble');\n\n// Get keyble module\nkeyble = require('keyble');\n\n// Reference to the device\nkey_ble = null;\n\n// Called when the instance should be initialized\nadapter.on('ready', function() {\n  adapter.log.info(`Initializing instance using configuration: ${JSON.stringify(adapter.config)}`);\n  initialize();\n});\n\n// Called if a subscribed state changes\nadapter.on('stateChange', function(long_id, state) {\n  var id;\n  // Warning, state can be null if it was deleted\n  adapter.log.info(`stateChange ${id}: ${JSON.stringify(state)}`);\n  // you can use the ack flag to detect if it is status (true) or command (false)\n  if (state && (!state.ack)) {\n    id = long_id.slice(adapter.namespace.length + 1);\n    on_command_state(id, state, state.val, long_id);\n  }\n});\n\n// Called when the instance shall be terminated\n// Callback has to be called under any circumstances!\nadapter.on('unload', function(callback) {\n  adapter.log.info(\"Terminating instance, cleaning up...\");\n  Promise.resolve(terminate()).then(function() {\n    adapter.log.info(\"Successfully cleaned up.\");\n    callback();\n  }).catch(function(error) {\n    adapter.log.info(\"Error cleaning up!\");\n    callback();\n  });\n});\n\ninitialize = function() {\n  key_ble = new keyble.Key_Ble({\n    address: adapter.config.mac_address,\n    user_id: adapter.config.user_id,\n    user_key: adapter.config.user_key,\n    auto_disconnect_time: adapter.config.auto_disconnect_time,\n    status_update_time: adapter.config.status_update_time\n  });\n  key_ble.on('status_change', function(status_id, status_string) {\n    adapter.setState('active', {\n      val: status_id === 1,\n      ack: true\n    });\n    adapter.setState('lock_state', {\n      val: status_id,\n      ack: true\n    });\n    if (status_id !== 1) {\n      // Lock is not active\n      adapter.setState('opened', {\n        val: status_id === 4,\n        ack: true\n      });\n      return adapter.setState('unlocked', {\n        val: (status_id === 2) || (status_id === 4),\n        ack: true\n      });\n    }\n  });\n  // For every state in the system there has to be also an object of type state\n  // Here a simple keyble for a boolean variable named \"testVariable\"\n  // Because every adapter instance uses its own unique namespace variable names can't collide with other adapters variables\n  adapter.setObjectNotExists('unlocked', {\n    type: 'state',\n    common: {\n      name: 'unlocked',\n      type: 'boolean',\n      role: 'switch.lock.door',\n      write: true\n    },\n    native: {}\n  });\n  adapter.setObjectNotExists('active', {\n    type: 'state',\n    common: {\n      name: 'active',\n      type: 'boolean',\n      role: 'indicator.working',\n      write: false\n    },\n    native: {}\n  });\n  adapter.setObjectNotExists('opened', {\n    type: 'state',\n    common: {\n      name: 'opened',\n      type: 'boolean',\n      role: 'switch.lock.door',\n      write: true\n    },\n    native: {}\n  });\n  adapter.setObjectNotExists('lock_state', {\n    type: 'state',\n    common: {\n      name: 'lock_state',\n      type: 'number',\n      role: 'value.lock',\n      write: false,\n      states: {\n        0: 'LOCKED',\n        1: 'ACTIVE',\n        2: 'UNLOCKED',\n        4: 'OPEN'\n      }\n    },\n    native: {}\n  });\n  // in this keyble all states changes inside the adapters namespace are subscribed\n  adapter.subscribeStates('*');\n};\n\non_command_state = function(id, state, value, long_id) {\n  switch (id) {\n    case 'unlocked':\n      if (value) {\n        key_ble.unlock();\n      } else {\n        key_ble.lock();\n      }\n      break;\n    case 'opened':\n      if (value) {\n        key_ble.open();\n      }\n  }\n};\n\nterminate = function() {\n  key_ble.disconnect();\n  return key_ble = null;\n};\n\n\n"]}