var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; (function (factory) { if (typeof module === "object" && typeof module.exports === "object") { var v = factory(require, exports); if (v !== undefined) module.exports = v; } else if (typeof define === "function" && define.amd) { define(["require", "exports", "../types/graphql.v2"], factory); } })(function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateRandomString = exports.convertObjectToKeyValueList = exports.convertKeyValueListToObject = exports.uploadFile = exports.xhrUpload = exports.generateUidKey = exports.formatAuthorizedResources = exports.isWechatBrowser = exports.convertUdvToKeyValuePair = exports.convertUdv = exports.objectToQueryString = exports.serialize = exports.createCssClassStyleSheet = exports.popupCenter = exports.deepEqual = exports.encrypt = void 0; var graphql_v2_1 = require("../types/graphql.v2"); // import { JSEncrypt } from 'jsencrypt'; // 兼容 JSEncrypt if (typeof window === 'undefined' && global) { // @ts-ignore global.window = {}; } var JSEncrypt = require('jsencrypt/bin/jsencrypt'); exports.encrypt = function (plainText, publicKey) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) { return [2 /*return*/, new Promise(function (resolve, reject) { var jsencrypt = new JSEncrypt({}); jsencrypt.setPublicKey(publicKey); // 设置公钥 var encrypted = jsencrypt.encrypt(plainText); if (encrypted) { resolve(encrypted); } else { reject(encrypted); } })]; }); }); }; function buildTree(nodes) { /* nodes structure [ {"id": "1", "children": ["2"], "root": true}, {"id": "2", "children": ["3", "4"], "root": false}, {"id": "3", "children": [], "root": false}, {"id": "4", "children": [], "root": false}, ] 转换成 -> { id: 1, children: [ { id: 2, children: [ { id: 3, children: [] }, { id: 4, children: [] } ] } ] } */ var rootNodes = [nodes.find(function (x) { return x.root === true; })]; var mapChildren = function (childId) { var node = nodes.find(function (x) { return x.id === childId; }) || null; if (Array.isArray(node.children) && node.children.length > 0) { node.children = node.children .map(mapChildren) .filter(function (node) { return node !== null; }); } return node; }; var tree = rootNodes.map(function (node) { node.children = node.children .map(mapChildren) .filter(function (node) { return node !== null; }); return node; }); return tree[0]; } exports.default = buildTree; exports.deepEqual = function (x, y) { if (x === y) { return true; } else if (typeof x == 'object' && x != null && typeof y == 'object' && y != null) { if (Object.keys(x).length != Object.keys(y).length) return false; for (var prop in x) { if (y.hasOwnProperty(prop)) { if (!exports.deepEqual(x[prop], y[prop])) return false; } else return false; } return true; } else return false; }; exports.popupCenter = function (url, _a) { var _b = _a === void 0 ? { w: 585, h: 649 } : _a, w = _b.w, h = _b.h; // Fixes dual-screen position Most browsers Firefox var dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : window.screenX; var dualScreenTop = window.screenTop !== undefined ? window.screenTop : window.screenY; var width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : window.screen.width; var height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : window.screen.height; var systemZoom = width / window.screen.availWidth; var left = (width - w) / 2 / systemZoom + dualScreenLeft; var top = (height - h) / 2 / systemZoom + dualScreenTop; var newWindow = window.open(url, '_blank', "\n toolbar=no,\n menubar=no,\n scrollbars=no,\n resizable=no,\n location=no,\n status=no\n width=" + w / systemZoom + ",\n height=" + h / systemZoom + ",\n top=" + top + ",\n left=" + left + "\n "); newWindow === null || newWindow === void 0 ? void 0 : newWindow.focus(); }; exports.createCssClassStyleSheet = function (className, styleSheet) { var styleTag = document.createElement('style'); var styleText = "\n ." + className + " {\n " + styleSheet + "\n }\n "; var textNode = document.createTextNode(styleText); styleTag.appendChild(textNode); document.head.appendChild(styleTag); }; exports.serialize = function (obj) { var str = []; for (var p in obj) if (obj.hasOwnProperty(p)) { str.push(encodeURIComponent(p) + '=' + encodeURIComponent(obj[p])); } return str.join('&'); }; exports.objectToQueryString = function (queryParameters) { return queryParameters ? Object.entries(queryParameters).reduce(function (queryString, _a) { var key = _a[0], val = _a[1]; var symbol = queryString.length === 0 ? '?' : '&'; queryString += typeof val === 'string' ? "" + symbol + key + "=" + val : ''; return queryString; }, '') : ''; }; exports.convertUdv = function (data) { for (var _i = 0, data_1 = data; _i < data_1.length; _i++) { var item = data_1[_i]; var dataType = item.dataType, value = item.value; if (dataType === graphql_v2_1.UdfDataType.Number) { item.value = JSON.parse(value); } else if (dataType === graphql_v2_1.UdfDataType.Boolean) { item.value = JSON.parse(value); } else if (dataType === graphql_v2_1.UdfDataType.Datetime) { item.value = new Date(parseInt(value)); } else if (dataType === graphql_v2_1.UdfDataType.Object) { item.value = JSON.parse(value); } } return data; }; exports.convertUdvToKeyValuePair = function (data) { for (var _i = 0, data_2 = data; _i < data_2.length; _i++) { var item = data_2[_i]; var dataType = item.dataType, value = item.value; if (dataType === graphql_v2_1.UdfDataType.Number) { item.value = JSON.parse(value); } else if (dataType === graphql_v2_1.UdfDataType.Boolean) { item.value = JSON.parse(value); } else if (dataType === graphql_v2_1.UdfDataType.Datetime) { item.value = new Date(parseInt(value)); } else if (dataType === graphql_v2_1.UdfDataType.Object) { item.value = JSON.parse(value); } } var ret = {}; for (var _a = 0, data_3 = data; _a < data_3.length; _a++) { var item = data_3[_a]; ret[item.key] = item.value; } return ret; }; exports.isWechatBrowser = function () { return /MicroMessenger/i.test(navigator === null || navigator === void 0 ? void 0 : navigator.userAgent); }; exports.formatAuthorizedResources = function (resources) { return resources.map(function (resource) { for (var key in resource) { if (!resource[key]) { delete resource[key]; } } return resource; }); }; function generateUidKey(number) { var map = []; for (var i = 97; i < 123; i++) { map.push(String.fromCharCode(i)); } var arr = []; while (number--) { var rand = Math.floor(Math.random() * 16); arr.push(map[rand]); } return arr.join(''); } exports.generateUidKey = generateUidKey; exports.xhrUpload = function (file, url) { return new Promise(function (resolve, reject) { var formData = new FormData(); formData.append('file', file, file instanceof Blob ? 'personal.jpeg' : undefined); var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function () { // 上传成功 if (this.readyState === 4) { try { var res = JSON.parse(this.responseText); var code = res.code, message = res.message, data = res.data; if (code !== 200) { reject({ code: code, message: message }); } resolve(data); } catch (error) { var code = 500; var message = "\u4E0A\u4F20\u56FE\u7247\u5931\u8D25, error = " + error.message; reject({ code: code, message: message }); } } }; xhr.open('POST', url); xhr.send(formData); }); }; function uploadFile(opts) { var url = opts.url, accept = opts.accept, multiple = opts.multiple; return new Promise(function (resolve, reject) { var inputElem = document.createElement('input'); inputElem.type = 'file'; inputElem.accept = accept; inputElem.multiple = multiple; inputElem.onchange = function () { var files = inputElem.files; if (!multiple) { var file = files[0]; exports.xhrUpload(file, url) .then(function (res) { return resolve(res); }) .catch(function (error) { return reject(error); }); } else { var promises = []; var i = 0; while (i < files.length) { promises.push(exports.xhrUpload(files[i], url)); i++; } Promise.all(promises) .then(function (res) { return resolve(res); }) .catch(function (error) { return reject(error); }); } }; inputElem.click(); }); } exports.uploadFile = uploadFile; exports.convertKeyValueListToObject = function (data) { var ret = {}; for (var _i = 0, data_4 = data; _i < data_4.length; _i++) { var _a = data_4[_i], key = _a.key, value = _a.value; ret[key] = value; } return ret; }; exports.convertObjectToKeyValueList = function (data) { var ret = []; for (var _i = 0, _a = Object.keys(data); _i < _a.length; _i++) { var key = _a[_i]; ret.push({ key: key, value: data[key] }); } return ret; }; function generateRandomString(length) { if (length === void 0) { length = 30; } var result = ''; var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; var charactersLength = characters.length; for (var i = 0; i < length; i++) { result += characters.charAt(Math.floor(Math.random() * charactersLength)); } return result; } exports.generateRandomString = generateRandomString; }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUNBLGtEQUFrRDtJQUNsRCx5Q0FBeUM7SUFFekMsZUFBZTtJQUNmLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLE1BQU0sRUFBRTtRQUMzQyxhQUFhO1FBQ2IsTUFBTSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7S0FDcEI7SUFDRCxJQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUV4QyxRQUFBLE9BQU8sR0FBRyxVQUFPLFNBQWlCLEVBQUUsU0FBaUI7O1lBQ2hFLHNCQUFPLElBQUksT0FBTyxDQUFTLFVBQUMsT0FBTyxFQUFFLE1BQU07b0JBQ3pDLElBQU0sU0FBUyxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNwQyxTQUFTLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTztvQkFFMUMsSUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFFL0MsSUFBSSxTQUFTLEVBQUU7d0JBQ2IsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO3FCQUNwQjt5QkFBTTt3QkFDTCxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7cUJBQ25CO2dCQUNILENBQUMsQ0FBQyxFQUFDOztTQWdCSixDQUFDO0lBRUYsU0FBd0IsU0FBUyxDQUFDLEtBQVk7UUFDNUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQTJCRTtRQUVGLElBQU0sU0FBUyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFmLENBQWUsQ0FBQyxDQUFD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