@suolun/aliyun-captcha
Version:
aliyun-captcha
159 lines (143 loc) • 5.76 kB
JavaScript
/**
* Bundle of @auraxy/aliyun-captcha
* Generated: 2019-11-06
* Version: 1.0.0
* License: MIT
* Author:
*/
import React, { forwardRef, useImperativeHandle, useEffect } from 'react';
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
/**
* Bundle of @livelybone/singleton
* Generated: 2019-08-03
* Version: 1.1.1
* License: MIT
* Author: 2631541504@qq.com
*/
/**
* 每个单例的 id
*
* The id of a singleton
* */
var ids = new Map();
/**
* @desc 返回 id 对应的一个对象
*
* Return a singleton of any object(such as Promise, Function, Object...) corresponding to the id
* */
function singletonObj(id, defaultValue) {
var k = "singleton-any-".concat(id || 'default');
if (!ids.has(k)) {
ids.set(k, defaultValue ? defaultValue() : {});
}
return ids.get(k);
}
function LoadAliyunCaptcha(name, src) {
return singletonObj(name, function () {
var dom = document.createElement('script');
dom.type = 'text/javascript';
dom.async = true;
dom.src = src;
document.head.appendChild(dom);
return new Promise(function (res) {
return dom.onload = res;
});
});
}
function LoadAliyunCaptchas() {
return LoadAliyunCaptcha('smartCaptcha', '//g.alicdn.com/sd/smartCaptcha/0.0.4/index.js').then(function () {
LoadAliyunCaptcha('quizCaptcha', '//g.alicdn.com/sd/quizCaptcha/0.0.1/index.js').then(function () {
LoadAliyunCaptcha('guide', '//g.alicdn.com/sd/nvc/1.1.112/guide.js?t=2015052012');
});
});
}
function resetAliyunCaptcha(sc) {
try {
if (sc) sc.reset();
} catch (error) {
console.warn('AliyunCaptcha reset error', error);
}
}
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
var _smartCaptchaExtendConfig = {
renderTo: 'sc',
width: 280,
height: 42,
default_txt: '点击按钮开始智能验证',
success_txt: '验证成功',
fail_txt: '验证失败,请在此点击按钮刷新',
scaning_txt: '智能检测中',
fail: function fail() {}
};
var _NVC_Opt = {
renderTo: 'captcha',
trans: {
"key1": "code0",
"nvcCode": 200
},
elements: ['//img.alicdn.com/tfs/TB17cwllsLJ8KJjy0FnXXcFDpXa-50-74.png', '//img.alicdn.com/tfs/TB17cwllsLJ8KJjy0FnXXcFDpXa-50-74.png'],
bg_back_prepared: '//img.alicdn.com/tps/TB1skE5SFXXXXb3XXXXXXXXXXXX-100-80.png',
bg_front: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABQCAMAAADY1yDdAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAADUExURefk5w+ruswAAAAfSURBVFjD7cExAQAAAMKg9U9tCU+gAAAAAAAAAIC3AR+QAAFPlUGoAAAAAElFTkSuQmCC',
obj_ok: '//img.alicdn.com/tfs/TB1rmyTltfJ8KJjy0FeXXXKEXXa-50-74.png',
bg_back_pass: '//img.alicdn.com/tfs/TB1KDxCSVXXXXasXFXXXXXXXXXX-100-80.png',
obj_error: '//img.alicdn.com/tfs/TB1q9yTltfJ8KJjy0FeXXXKEXXa-50-74.png',
bg_back_fail: '//img.alicdn.com/tfs/TB1w2oOSFXXXXb4XpXXXXXXXXXX-100-80.png',
upLang: {
"cn": {
_ggk_guide: "请摁住鼠标左键,刮出两面盾牌",
_ggk_success: "恭喜您成功刮出盾牌<br/>继续下一步操作吧",
_ggk_loading: "加载中",
_ggk_fail: ['呀,盾牌不见了<br/>请', "javascript:noCaptcha.reset()", '再来一次', '或', "http://survey.taobao.com/survey/QgzQDdDd?token=%TOKEN", '反馈问题'],
_ggk_action_timeout: ['我等得太久啦<br/>请', "javascript:noCaptcha.reset()", '再来一次', '或', "http://survey.taobao.com/survey/QgzQDdDd?token=%TOKEN", '反馈问题'],
_ggk_net_err: ['网络实在不给力<br/>请', "javascript:noCaptcha.reset()", '再来一次', '或', "http://survey.taobao.com/survey/QgzQDdDd?token=%TOKEN", '反馈问题'],
_ggk_too_fast: ['您刮得太快啦<br/>请', "javascript:noCaptcha.reset()", '再来一次', '或', "http://survey.taobao.com/survey/QgzQDdDd?token=%TOKEN", '反馈问题']
}
}
};
var AliyunCaptcha = forwardRef(function (_ref, ref) {
var appkey = _ref.appkey,
scene = _ref.scene,
success = _ref.success,
NVC_Opt = _ref.NVC_Opt,
smartCaptchaExtendConfig = _ref.smartCaptchaExtendConfig;
var ic;
useImperativeHandle(ref, function () {
return {
reset: function reset() {
ic.reset();
}
};
});
var smartConfig = _objectSpread({}, _smartCaptchaExtendConfig, {}, smartCaptchaExtendConfig);
var init = function init() {
window.NVC_Opt = _objectSpread({}, _NVC_Opt, {}, NVC_Opt, {
appkey: appkey,
scene: scene
});
ic = new smartCaptcha(_objectSpread({}, smartConfig, {}, success));
ic.init();
};
useEffect(function () {
LoadAliyunCaptchas().then(function () {
init();
});
}, []);
return React.createElement("div", {
id: smartConfig.renderTo
});
});
export default AliyunCaptcha;
export { LoadAliyunCaptcha, LoadAliyunCaptchas, resetAliyunCaptcha };