{"version":3,"sources":["jsdelivr-header.js","/npm/x-engine-core@1.0.2/src/index.js"],"names":[],"mappings":"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","file":"/npm/x-engine-core@1.0.2/src/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/x-engine-core@1.0.2/src/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","import dsbridge from \"./dsbridge\";\nconst module_names = new Set([]);\nconst patch = {}\n\nfunction isFunction(functionToCheck) {\n return functionToCheck && {}.toString.call(functionToCheck) === '[object Function]';\n}\n\nfunction isObject(val) {\n    if (val === null) { return false;}\n    return ( (typeof val === 'function') || (typeof val === 'object') );\n}\n\nfunction isString(x) {\n  return Object.prototype.toString.call(x) === \"[object String]\"\n}\n\nfunction isHybrid(){\n  return window && window._dswk===true;\n}\nlet xengine = {\n  patch   : patch,\n  platform: platform(),\n  hybrid  : true,\n  isHybrid  : isHybrid,\n  bridge  : dsbridge,\n  use     : use,\n  api     : api,\n  broadcastOn: broadcastOn,\n  broadcastOff: broadcastOff,\n  assert : xassert\n};\n\nfunction xassert(targetID,expression){\n    if(expression){\n      document.getElementById(targetID).style.backgroundColor = 'green';\n    }else{\n      document.getElementById(targetID).style.backgroundColor = 'red';\n    }\n}\nfunction api(jsimoduleId,funcname,args,cb){\n  if (args.hasOwnProperty('__event__')){\n      only_idx++;\n     let eventcb = args['__event__'];\n     if(!isFunction(eventcb)) throw('__event__ 必须为函数');\n     args['__event__']  = ns+\".\"+funcname+'.__event__'+only_idx;\n      xengine.bridge.register(args['__event__'], (res) => {\n          return eventcb(res);\n      })\n  }\n  return dsbridge.call(jsimoduleId+\".\"+funcname,args,cb)\n}\nfunction broadcastOff(){\n    xengine.bridge.unregister(\"com.zkty.module.engine.broadcast\");\n}\n\nfunction broadcastOn(eventcb){\n  //use(\"com.zkty.module.engine\",\"broadcast\")\n    xengine.bridge.register(\"com.zkty.module.engine.broadcast\", (res) => {\n        return eventcb(res);\n    })\n}\nlet only_idx=0;\nfunction use(ns,funcs){\n    if(module_names.has(ns)){\n      throw(ns+ ',注册无效,模块已存在,xengine.use(\"'+ns+'\") 只允许调用一次;')\n    }\n    module_names.add(ns)\n    console.log(ns+ ',js 注册成功')\n\n    let _call = function(funcname,args){\n        if (args.hasOwnProperty('__event__')){\n            only_idx++;\n           let eventcb = args['__event__'];\n           if(!isFunction(eventcb)) throw('__event__ 必须为函数');\n           args['__event__']  = ns+\".\"+funcname+'.__event__'+only_idx;\n            xengine.bridge.register(args['__event__'], (res) => {\n                return eventcb(res);\n            })\n        }\n        \n        if(funcname.startsWith('sync')){\n          return xengine.bridge.call(ns+\".\"+funcname,args);\n        }\n        else{\n          let p =new Promise((resolve,reject)=>{\n            const warning_msg = \"x-engine 0.1.0 将不再支持 promise,改用参数里的　__ret__做为异步返回值,以支持多次返回.或者直接调用函数同步返回\";\n            console.warn(warning_msg);\n            xengine.bridge.call(ns+\".\"+funcname, args, function (res) {\n              // only resolve once\n              resolve(res);\n              if(args['__ret__']){\n                return args['__ret__'](res)\n              }\n            })\n          });\n          return p;\n        }\n    };\n\n    return funcs.reduce((acc,cur,i)=>{\n      if(isObject(cur)){\n        acc[cur.name] = args => _call(cur.name,{...cur.default_args,...args});\n      }else if(isString(cur)){\n        acc[cur] = args => _call(cur,args);\n      }else{\n        throw(\"仅支持 string 与 {name:xxx, default_args:{...}}\")\n      }\n      return acc;\n    },{})\n}\n\nObject.defineProperty(xengine, \"bridge\", {\n  get(){\n    return dsbridge;\n  },\n  set: function () {\n    throw('dsbridge不能被修改')\n  }\n});\n\nfunction platform() {\n     var ua = navigator.userAgent,\n     isWindowsPhone = /(?:Windows Phone)/.test(ua),\n     isSymbian = /(?:SymbianOS)/.test(ua) || isWindowsPhone, \n     isAndroid = /(?:Android)/.test(ua), \n     isFireFox = /(?:Firefox)/.test(ua), \n     isChrome = /(?:Chrome|CriOS)/.test(ua),\n     isTablet = /(?:iPad|PlayBook)/.test(ua) || (isAndroid && !/(?:Mobile)/.test(ua)) || (isFireFox && /(?:Tablet)/.test(ua)),\n     isPhone = /(?:iPhone)/.test(ua) && !isTablet,\n     isPc = !isPhone && !isAndroid && !isSymbian;\n     return {\n          isTablet: isTablet,\n          isPhone: isPhone,\n          isAndroid : isAndroid,\n          isPc : isPc\n     };\n};\n\n\n// 监听输入框的软键盘弹起和收起事件\nfunction listenKeybord($input) {\n  if (judgeDeviceType.isIOS) {\n    // IOS 键盘弹起：IOS 和 Android 输入框获取焦点键盘弹起\n    $input.addEventListener(\n      \"focus\",\n      function () {\n        console.log(\"IOS 键盘弹起啦！\");\n        // IOS 键盘弹起后操作\n      },\n      false\n    );\n\n    // IOS 键盘收起：IOS 点击输入框以外区域或点击收起按钮，输入框都会失去焦点，键盘会收起，\n    $input.addEventListener(\"blur\", () => {\n      console.log(\"IOS 键盘收起啦！\");\n      // IOS 键盘收起后操作\n    });\n  }\n\n  // Andriod 键盘收起：Andriod 键盘弹起或收起页面高度会发生变化，以此为依据获知键盘收起\n  if (judgeDeviceType.isAndroid) {\n    var originHeight =\n      document.documentElement.clientHeight || document.body.clientHeight;\n\n    window.addEventListener(\n      \"resize\",\n      function () {\n        var resizeHeight =\n          document.documentElement.clientHeight || document.body.clientHeight;\n        if (originHeight < resizeHeight) {\n          console.log(\"Android 键盘收起啦！\");\n          // Android 键盘收起后操作\n        } else {\n          console.log(\"Android 键盘弹起啦！\");\n          // Android 键盘弹起后操作\n        }\n\n        originHeight = resizeHeight;\n      },\n      false\n    );\n  }\n}\n\nvar $inputs = document.querySelectorAll(\".input\");\n\nfor (var i = 0; i < $inputs.length; i++) {\n  listenKeybord($inputs[i]);\n}\n \npatch.disableDoubleTapScroll=function(ms){\n  ms = ms || 500;\n  console.log(\"禁用双击滑动,两次点击冷却时间为\"+ms+\" ms\")\n   //禁止双击时, webview 自动上移\n   //不是个好方案, 会导致快速点击按钮失效\n  var agent = navigator.userAgent.toLowerCase();\n  var iLastTouch = null;\n  if (agent.indexOf(\"iphone\") >= 0 || agent.indexOf(\"ipad\") >= 0) {\n    document.body.addEventListener(\n      \"touchend\",\n      function (event) {\n        var a = new Date().getTime();\n        iLastTouch = iLastTouch || a + 1;\n        var c = a - iLastTouch;\n        if (c < ms && c > 0) {\n          event.preventDefault();\n          return false;\n        }\n        iLastTouch = a;\n      },\n      false\n    );\n  }\n}\nexport default xengine;\n"]}