react_hsbc_teller 2.0.5 → 2.0.6-5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/.babelrc +39 -39
  2. package/README.en.md +36 -36
  3. package/README.md +352 -52
  4. package/config/webpack.config.js +119 -119
  5. package/config/webpack.dev.js +108 -108
  6. package/config/webpack.prod.js +104 -104
  7. package/lib/hsbc.js +1 -1
  8. package/lib/hsbc.js.LICENSE.txt +24 -16
  9. package/package.json +110 -109
  10. package/packages/api/api.js +818 -570
  11. package/packages/api/server.js +50 -50
  12. package/packages/assets/img/icon_fail.jpg +0 -0
  13. package/packages/assets/img/icon_paper.png +0 -0
  14. package/packages/assets/img/icon_success.jpg +0 -0
  15. package/packages/assets/mp3/ipad_join_meeting.mp3 +0 -0
  16. package/packages/assets/mp3/ipad_leave_error.mp3 +0 -0
  17. package/packages/assets/mp3/ipad_leave_meeting.mp3 +0 -0
  18. package/packages/assets/mp3/ipad_low_power.mp3 +0 -0
  19. package/packages/assets/mp3/ipad_media_close.mp3 +0 -0
  20. package/packages/assets/mp3/media_error.mp3 +0 -0
  21. package/packages/assets/mp3/networkweak.mp3 +0 -0
  22. package/packages/assets/mp3/pip_close.mp3 +0 -0
  23. package/packages/assets/mp3/record_error.mp3 +0 -0
  24. package/packages/assets/mp3/share_stop_audio.mp3 +0 -0
  25. package/packages/common/index.esm.js +374 -374
  26. package/packages/demo/demo.js +307 -279
  27. package/packages/demo/index.js +3 -3
  28. package/packages/demo/pdf.js +94 -79
  29. package/packages/envconfig/envconfig.js +12 -12
  30. package/packages/index.js +2 -2
  31. package/packages/pages/components/step/step.jsx +25 -31
  32. package/packages/pages/foot/foot.jsx +235 -234
  33. package/packages/pages/foot/foot.less +85 -85
  34. package/packages/pages/header/header.jsx +15 -15
  35. package/packages/pages/header/header.less +51 -51
  36. package/packages/pages/index.jsx +52 -52
  37. package/packages/pages/multiModule/components/copy/agree.jsx +115 -0
  38. package/packages/pages/multiModule/components/copy/agree.less +105 -0
  39. package/packages/pages/multiModule/components/copy/copyTwo.jsx +682 -0
  40. package/packages/pages/multiModule/components/copy/copyTwo.less +180 -0
  41. package/packages/pages/multiModule/components/copy/copy_en.jsx +368 -0
  42. package/packages/pages/multiModule/components/copy/copy_en.less +145 -0
  43. package/packages/pages/multiModule/components/copy/copylist.jsx +291 -0
  44. package/packages/pages/multiModule/components/copy/copylist.less +83 -0
  45. package/packages/pages/multiModule/components/copy/risk.jsx +296 -0
  46. package/packages/pages/multiModule/components/copy/risk.less +123 -0
  47. package/packages/pages/multiModule/components/sign/signMy.jsx +308 -0
  48. package/packages/pages/multiModule/components/sign/signMy.less +128 -0
  49. package/packages/pages/multiModule/components/subscribe/subscribe.jsx +113 -0
  50. package/packages/pages/multiModule/components/subscribe/subscribe.less +82 -0
  51. package/packages/pages/multiModule/multiModule.jsx +26 -0
  52. package/packages/pages/multiModule/multiModule.less +20 -0
  53. package/packages/pages/sign/signMy.jsx +223 -221
  54. package/packages/pages/sign/signMy.less +129 -129
  55. package/packages/pages/video/video.jsx +7751 -6164
  56. package/packages/pages/video/video.less +718 -635
  57. package/packages/style/index.less +1 -1
  58. package/packages/style/reset.less +345 -345
  59. package/packages/utils/asrController.js +259 -0
  60. package/packages/utils/asyncComponent.jsx +26 -26
  61. package/packages/utils/mixin.js +27 -27
  62. package/packages/utils/setRem.js +10 -10
  63. package/packages/utils/utils.js +199 -0
  64. package/public/index.html +77 -77
  65. package/src/index.js +11 -11
  66. package/src/index.less +5 -5
  67. package/tsconfig.json +11 -11
  68. package/packages/common/JKL.js +0 -61
  69. package/packages/common/XML.js +0 -271
  70. package/packages/common/websocket.js +0 -267
  71. package/packages/utils/cell.js +0 -64
package/public/index.html CHANGED
@@ -1,77 +1,77 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8"/>
5
- <link rel="shortcut icon" href="favicon.ico">
6
- <meta content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport" />
7
- <!-- // 强制Chromium内核,作用于360浏览器、QQ浏览器等国产双核浏览器: -->
8
- <meta name="renderer" content="webkit"/>
9
- <!-- // 强制Chromium内核,作用于其他双核浏览器: -->
10
- <meta name="force-rendering" content="webkit"/>
11
- <!-- // 如果有安装 Google Chrome Frame 插件则强制为Chromium内核,否则强制本机支持的最高版本IE内核,作用于IE浏览器: -->
12
- <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"/>
13
- <!-- <script src="/mrtc1.4.7/lib/tfjs.js"></script>
14
- <script src="./mrtc1.4.7/lib/pix.js"></script>
15
- <script src="./mrtc1.4.7/lib/log4b.js"></script>
16
- <script src="./mrtc1.4.7/lib/meeting_api_util.js"></script>
17
- <script src="./mrtc1.4.7/lib/mcu.js"></script>
18
- <script src="./mrtc1.4.7/lib/client_record.js"></script>
19
- <script src="./mrtc1.4.7/lib/meeting_vod.js"></script>
20
- <script src="./mrtc1.4.7/lib/remote_record.js"></script>
21
- <script src="./mrtc1.4.7/lib/meeting_invite.js"></script>
22
- <script src="./mrtc1.4.7/lib/meeting_im.js"></script>
23
- <script src="./mrtc1.4.7/lib/meeting_camera_stream.js"></script>
24
- <script src="./mrtc1.4.7/lib/meeting_file_stream.js"></script>
25
- <script src="./mrtc1.4.7/lib/meeting_desk_stream.js"></script>
26
- <script src="./mrtc1.4.7/lib/meeting_html_stream.js"></script>
27
- <script src="./mrtc1.4.7/lib/meeting_beautify_stream.js"></script>
28
- <script src="./mrtc1.4.7/lib/stream.js"></script>
29
- <script src="./mrtc1.4.7/lib/room.js"></script>
30
- <script src="./mrtc1.4.7/lib/backgroundBlur.js"></script>
31
- <script src="./mrtc1.4.7/lib/meeting_api.js"></script>
32
- <script src="./mrtc1.4.7/lib/html2image.js"></script>
33
- <script src="./mrtc1.4.7/lib/reconnecting-websocket.min.js"></script>
34
- <script src="./mrtc1.4.7/lib/mtc_api.js"></script>
35
- <script src="./mrtc1.4.7/lib/BandwidthHandler.js"></script>
36
- <script src="./mrtc1.4.7/lib/RecordRTC.min.js"></script>
37
- <script src="./mrtc1.4.7/lib/pdf.js"></script>
38
- <script src="./mrtc1.4.7/lib/EBML.js"></script>
39
- <script src="./mrtc1.4.7/lib/adapter.js"></script>
40
- <script src="./mrtc1.4.7/lib/beauty.js"></script>
41
- <script src="./mrtc1.4.7/lib/getMediaInfo.js"></script> -->
42
- <!-- <script type="text/javascript" src="http://dns.leimon.xyz/log4b.js"></script>
43
- <script type="text/javascript" src="http://dns.leimon.xyz/meeting_api_util.js"></script>
44
- <script type="text/javascript" src="http://dns.leimon.xyz/mcu.js"></script>
45
- <script type="text/javascript" src="http://dns.leimon.xyz/client_record.js"></script>
46
- <script type="text/javascript" src="http://dns.leimon.xyz/meeting_vod.js"></script>
47
- <script type="text/javascript" src="http://dns.leimon.xyz/remote_record.js"></script>
48
- <script type="text/javascript" src="http://dns.leimon.xyz/meeting_invite.js"></script>
49
- <script type="text/javascript" src="http://dns.leimon.xyz/meeting_im.js"></script>
50
- <script type="text/javascript" src="http://dns.leimon.xyz/meeting_camera_stream.js"></script>
51
- <script type="text/javascript" src="http://dns.leimon.xyz/meeting_file_stream.js"></script>
52
- <script type="text/javascript" src="http://dns.leimon.xyz/meeting_desk_stream.js"></script>
53
- <script type="text/javascript" src="http://dns.leimon.xyz/meeting_html_stream.js"></script>
54
- <script type="text/javascript" src="http://dns.leimon.xyz/meeting_beautify_stream.js"></script>
55
- <script type="text/javascript" src="http://dns.leimon.xyz/stream.js"></script>
56
- <script type="text/javascript" src="http://dns.leimon.xyz/room.js"></script>
57
- <script type="text/javascript" src="http://dns.leimon.xyz/backgroundBlur.js"></script>
58
- <script type="text/javascript" src="http://dns.leimon.xyz/meeting_api.js"></script>
59
- <script type="text/javascript" src="http://dns.leimon.xyz/html2image.js"></script>
60
- <script type="text/javascript" src="http://dns.leimon.xyz/reconnecting-websocket.min.js"></script>
61
- <script type="text/javascript" src="http://dns.leimon.xyz/mtc_api.js"></script>
62
- <script type="text/javascript" src="http://dns.leimon.xyz/BandwidthHandler.js"></script>
63
- <script src="https://gw.alipayobjects.com/os/lib/recordrtc/5.5.9/RecordRTC.min.js"></script>
64
- <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.2"></script>
65
- <script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/body-pix@2.0"></script>
66
- <script type="text/javascript" src="http://dns.leimon.xyz/pdf.js"></script>
67
- <script type="text/javascript" src="http://dns.leimon.xyz/EBML.js"></script>
68
- <script type="text/javascript" src="http://dns.leimon.xyz/adapter.js"></script>
69
- <script type="text/javascript" src="http://dns.leimon.xyz/beauty.js"></script>
70
- <script type="text/javascript" src="http://dns.leimon.xyz/getMediaInfo.js"></script> -->
71
- <!-- <script type="text/javascript" src="http://dns.leimon.xyz/websocket.js"></script>-->
72
- <title>汇丰银行营业厅 | <%= htmlWebpackPlugin.options.title %></title>
73
- </head>
74
- <body>
75
- <div id="root"></div>
76
- </body>
77
- </html>
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8"/>
5
+ <link rel="shortcut icon" href="favicon.ico">
6
+ <meta content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport" />
7
+ <!-- // 强制Chromium内核,作用于360浏览器、QQ浏览器等国产双核浏览器: -->
8
+ <meta name="renderer" content="webkit"/>
9
+ <!-- // 强制Chromium内核,作用于其他双核浏览器: -->
10
+ <meta name="force-rendering" content="webkit"/>
11
+ <!-- // 如果有安装 Google Chrome Frame 插件则强制为Chromium内核,否则强制本机支持的最高版本IE内核,作用于IE浏览器: -->
12
+ <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"/>
13
+ <!-- <script src="/mrtc1.4.7/lib/tfjs.js"></script>
14
+ <script src="./mrtc1.4.7/lib/pix.js"></script>
15
+ <script src="./mrtc1.4.7/lib/log4b.js"></script>
16
+ <script src="./mrtc1.4.7/lib/meeting_api_util.js"></script>
17
+ <script src="./mrtc1.4.7/lib/mcu.js"></script>
18
+ <script src="./mrtc1.4.7/lib/client_record.js"></script>
19
+ <script src="./mrtc1.4.7/lib/meeting_vod.js"></script>
20
+ <script src="./mrtc1.4.7/lib/remote_record.js"></script>
21
+ <script src="./mrtc1.4.7/lib/meeting_invite.js"></script>
22
+ <script src="./mrtc1.4.7/lib/meeting_im.js"></script>
23
+ <script src="./mrtc1.4.7/lib/meeting_camera_stream.js"></script>
24
+ <script src="./mrtc1.4.7/lib/meeting_file_stream.js"></script>
25
+ <script src="./mrtc1.4.7/lib/meeting_desk_stream.js"></script>
26
+ <script src="./mrtc1.4.7/lib/meeting_html_stream.js"></script>
27
+ <script src="./mrtc1.4.7/lib/meeting_beautify_stream.js"></script>
28
+ <script src="./mrtc1.4.7/lib/stream.js"></script>
29
+ <script src="./mrtc1.4.7/lib/room.js"></script>
30
+ <script src="./mrtc1.4.7/lib/backgroundBlur.js"></script>
31
+ <script src="./mrtc1.4.7/lib/meeting_api.js"></script>
32
+ <script src="./mrtc1.4.7/lib/html2image.js"></script>
33
+ <script src="./mrtc1.4.7/lib/reconnecting-websocket.min.js"></script>
34
+ <script src="./mrtc1.4.7/lib/mtc_api.js"></script>
35
+ <script src="./mrtc1.4.7/lib/BandwidthHandler.js"></script>
36
+ <script src="./mrtc1.4.7/lib/RecordRTC.min.js"></script>
37
+ <script src="./mrtc1.4.7/lib/pdf.js"></script>
38
+ <script src="./mrtc1.4.7/lib/EBML.js"></script>
39
+ <script src="./mrtc1.4.7/lib/adapter.js"></script>
40
+ <script src="./mrtc1.4.7/lib/beauty.js"></script>
41
+ <script src="./mrtc1.4.7/lib/getMediaInfo.js"></script> -->
42
+ <!-- <script type="text/javascript" src="http://dns.leimon.xyz/log4b.js"></script>
43
+ <script type="text/javascript" src="http://dns.leimon.xyz/meeting_api_util.js"></script>
44
+ <script type="text/javascript" src="http://dns.leimon.xyz/mcu.js"></script>
45
+ <script type="text/javascript" src="http://dns.leimon.xyz/client_record.js"></script>
46
+ <script type="text/javascript" src="http://dns.leimon.xyz/meeting_vod.js"></script>
47
+ <script type="text/javascript" src="http://dns.leimon.xyz/remote_record.js"></script>
48
+ <script type="text/javascript" src="http://dns.leimon.xyz/meeting_invite.js"></script>
49
+ <script type="text/javascript" src="http://dns.leimon.xyz/meeting_im.js"></script>
50
+ <script type="text/javascript" src="http://dns.leimon.xyz/meeting_camera_stream.js"></script>
51
+ <script type="text/javascript" src="http://dns.leimon.xyz/meeting_file_stream.js"></script>
52
+ <script type="text/javascript" src="http://dns.leimon.xyz/meeting_desk_stream.js"></script>
53
+ <script type="text/javascript" src="http://dns.leimon.xyz/meeting_html_stream.js"></script>
54
+ <script type="text/javascript" src="http://dns.leimon.xyz/meeting_beautify_stream.js"></script>
55
+ <script type="text/javascript" src="http://dns.leimon.xyz/stream.js"></script>
56
+ <script type="text/javascript" src="http://dns.leimon.xyz/room.js"></script>
57
+ <script type="text/javascript" src="http://dns.leimon.xyz/backgroundBlur.js"></script>
58
+ <script type="text/javascript" src="http://dns.leimon.xyz/meeting_api.js"></script>
59
+ <script type="text/javascript" src="http://dns.leimon.xyz/html2image.js"></script>
60
+ <script type="text/javascript" src="http://dns.leimon.xyz/reconnecting-websocket.min.js"></script>
61
+ <script type="text/javascript" src="http://dns.leimon.xyz/mtc_api.js"></script>
62
+ <script type="text/javascript" src="http://dns.leimon.xyz/BandwidthHandler.js"></script>
63
+ <script src="https://gw.alipayobjects.com/os/lib/recordrtc/5.5.9/RecordRTC.min.js"></script>
64
+ <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.2"></script>
65
+ <script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/body-pix@2.0"></script>
66
+ <script type="text/javascript" src="http://dns.leimon.xyz/pdf.js"></script>
67
+ <script type="text/javascript" src="http://dns.leimon.xyz/EBML.js"></script>
68
+ <script type="text/javascript" src="http://dns.leimon.xyz/adapter.js"></script>
69
+ <script type="text/javascript" src="http://dns.leimon.xyz/beauty.js"></script>
70
+ <script type="text/javascript" src="http://dns.leimon.xyz/getMediaInfo.js"></script> -->
71
+ <!-- <script type="text/javascript" src="http://dns.leimon.xyz/websocket.js"></script>-->
72
+ <title>汇丰银行营业厅 | <%= htmlWebpackPlugin.options.title %></title>
73
+ </head>
74
+ <body>
75
+ <div id="root"></div>
76
+ </body>
77
+ </html>
package/src/index.js CHANGED
@@ -1,11 +1,11 @@
1
- import React from "react";
2
- import ReactDOM from "react-dom";
3
- import "./index.less";
4
- import '@babel/polyfill';
5
- import { HSBC } from "../lib/hsbc";
6
- // import {HSBC} from "../packages";
7
-
8
- ReactDOM.render(
9
- <div className="hsbc"><HSBC></HSBC></div>,
10
- document.getElementById("root")
11
- );
1
+ import React from "react";
2
+ import ReactDOM from "react-dom";
3
+ import "./index.less";
4
+ import '@babel/polyfill';
5
+ import { HSBC } from "../lib/hsbc";
6
+ // import {HSBC} from "../packages";
7
+
8
+ ReactDOM.render(
9
+ <div className="hsbc"><HSBC></HSBC></div>,
10
+ document.getElementById("root")
11
+ );
package/src/index.less CHANGED
@@ -1,6 +1,6 @@
1
- .hsbc {
2
- height: calc(100vh);
3
- }
4
- .hsbc>div {
5
- height: 100%;
1
+ .hsbc {
2
+ height: calc(100vh);
3
+ }
4
+ .hsbc>div {
5
+ height: 100%;
6
6
  }
package/tsconfig.json CHANGED
@@ -1,12 +1,12 @@
1
- {
2
- "compilerOptions": {
3
- "experimentalDecorators": true,
4
- "outDir": "./dist/",
5
- "sourceMap": true,
6
- "noImplicitAny": true,
7
- "module": "es6",
8
- "target": "es5",
9
- "jsx": "react",
10
- "allowJs": true
11
- }
1
+ {
2
+ "compilerOptions": {
3
+ "experimentalDecorators": true,
4
+ "outDir": "./dist/",
5
+ "sourceMap": true,
6
+ "noImplicitAny": true,
7
+ "module": "es6",
8
+ "target": "es5",
9
+ "jsx": "react",
10
+ "allowJs": true
11
+ }
12
12
  }
@@ -1,61 +0,0 @@
1
- const JKL = {};
2
-
3
- JKL.Dumper = function () {
4
- return this;
5
- };
6
-
7
- // Dump the data into JSON format
8
-
9
- JKL.Dumper.prototype.dump = function (data, offset) {
10
- if (typeof (offset) === 'undefined') offset = '';
11
- const nextoff = `${offset} `;
12
- switch (typeof (data)) {
13
- case 'string':
14
- return `"${this.escapeString(data)}"`;
15
- break;
16
- case 'number':
17
- return data;
18
- break;
19
- case 'boolean':
20
- return data ? 'true' : 'false';
21
- break;
22
- case 'undefined':
23
- return 'null';
24
- break;
25
- case 'object':
26
- if (data == null) {
27
- return 'null';
28
- } if (data.constructor == Array) {
29
- var array = [];
30
- for (let i = 0; i < data.length; i++) {
31
- array[i] = this.dump(data[i], nextoff);
32
- }
33
- return `[\n${nextoff}${array.join(`,\n${nextoff}`)}\n${offset}]`;
34
- }
35
- var array = [];
36
- for (let key in data) {
37
- const val = this.dump(data[key], nextoff);
38
- // if ( key.match( /[^A-Za-z0-9_]/ )) {
39
- key = `"${this.escapeString(key)}"`;
40
- // }
41
- array[array.length] = `${key}: ${val}`;
42
- }
43
- if (array.length == 1 && !array[0].match(/[\n\{\[]/)) {
44
- return `{ ${array[0]} }`;
45
- }
46
- return `{\n${nextoff}${array.join(`,\n${nextoff}`)}\n${offset}}`;
47
-
48
- break;
49
- default:
50
- return data;
51
- // unsupported data type
52
- break;
53
- }
54
- };
55
-
56
- // escape '\' and '"'
57
-
58
- JKL.Dumper.prototype.escapeString = function (str) {
59
- return str.replace(/\\/g, '\\\\').replace(/\"/g, '\\"');
60
- };
61
- export default JKL;
@@ -1,271 +0,0 @@
1
- /* eslint-disable no-undef */
2
- // ========================================================================
3
- // XML.ObjTree -- XML source code from/to JavaScript object like E4X
4
- // ========================================================================
5
-
6
- import JKL from './JKL';
7
-
8
- const XML = {};
9
-
10
- XML.ObjTree = function () {
11
- return this;
12
- };
13
-
14
- // class variables
15
-
16
- XML.ObjTree.VERSION = '0.23';
17
-
18
- // object prototype
19
-
20
- XML.ObjTree.prototype.xmlDecl = '<?xml version="1.0" encoding="UTF-8" ?>\n';
21
- XML.ObjTree.prototype.attr_prefix = '-';
22
-
23
- // method: parseXML( xmlsource )
24
-
25
- XML.ObjTree.prototype.parseXML = function (xml) {
26
- let xmldom;
27
- let root;
28
- if (window.DOMParser) {
29
- xmldom = new DOMParser();
30
- // xmldom.async = false; // DOMParser is always sync-mode
31
- const dom = xmldom.parseFromString(xml, 'application/xml');
32
- if (!dom) return;
33
- root = dom.documentElement;
34
- } else if (window.ActiveXObject) {
35
- xmldom = new ActiveXObject('Microsoft.XMLDOM');
36
- xmldom.async = false;
37
- xmldom.loadXML(xml);
38
- root = xmldom.documentElement;
39
- }
40
- if (!root) return;
41
- return this.parseDOM(root);
42
- };
43
-
44
- // method: parseHTTP( url, options, callback )
45
-
46
- XML.ObjTree.prototype.parseHTTP = function (url, options, callback) {
47
- const myopt = {};
48
- for (const key in options) {
49
- myopt[key] = options[key]; // copy object
50
- }
51
- if (!myopt.method) {
52
- if (typeof (myopt.postBody) === 'undefined'
53
- && typeof (myopt.postbody) === 'undefined'
54
- && typeof (myopt.parameters) === 'undefined') {
55
- myopt.method = 'get';
56
- } else {
57
- myopt.method = 'post';
58
- }
59
- }
60
- if (callback) {
61
- myopt.asynchronous = true; // async-mode
62
- const __this = this;
63
- const __func = callback;
64
- const __save = myopt.onComplete;
65
- myopt.onComplete = function (trans) {
66
- let tree;
67
- if (trans && trans.responseXML && trans.responseXML.documentElement) {
68
- tree = __this.parseDOM(trans.responseXML.documentElement);
69
- }
70
- __func(tree, trans);
71
- if (__save) __save(trans);
72
- };
73
- } else {
74
- myopt.asynchronous = false; // sync-mode
75
- }
76
- let trans;
77
- if (typeof (HTTP) !== 'undefined' && HTTP.Request) {
78
- myopt.uri = url;
79
- var req = new HTTP.Request(myopt); // JSAN
80
- if (req) trans = req.transport;
81
- } else if (typeof (Ajax) !== 'undefined' && Ajax.Request) {
82
- var req = new Ajax.Request(url, myopt); // ptorotype.js
83
- if (req) trans = req.transport;
84
- }
85
- if (callback) return trans;
86
- if (trans && trans.responseXML && trans.responseXML.documentElement) {
87
- return this.parseDOM(trans.responseXML.documentElement);
88
- }
89
- };
90
-
91
- // method: parseDOM( documentroot )
92
-
93
- XML.ObjTree.prototype.parseDOM = function (root) {
94
- if (!root) return;
95
-
96
- this.__force_array = {};
97
- if (this.force_array) {
98
- for (let i = 0; i < this.force_array.length; i++) {
99
- this.__force_array[this.force_array[i]] = 1;
100
- }
101
- }
102
-
103
- let json = this.parseElement(root); // parse root node
104
- if (this.__force_array[root.nodeName]) {
105
- json = [json];
106
- }
107
- if (root.nodeType != 11) { // DOCUMENT_FRAGMENT_NODE
108
- const tmp = {};
109
- tmp[root.nodeName] = json; // root nodeName
110
- json = tmp;
111
- }
112
- return json;
113
- };
114
-
115
- // method: parseElement( element )
116
-
117
- XML.ObjTree.prototype.parseElement = function (elem) {
118
- // COMMENT_NODE
119
- if (elem.nodeType == 7) {
120
- return;
121
- }
122
-
123
- // TEXT_NODE CDATA_SECTION_NODE
124
- if (elem.nodeType == 3 || elem.nodeType == 4) {
125
- const bool = elem.nodeValue.match(/[^\x00-\x20]/);
126
- if (bool == null) return; // ignore white spaces
127
- return elem.nodeValue;
128
- }
129
-
130
- let retval;
131
- const cnt = {};
132
-
133
- // parse attributes
134
- if (elem.attributes && elem.attributes.length) {
135
- retval = {};
136
- for (var i = 0; i < elem.attributes.length; i++) {
137
- var key = elem.attributes[i].nodeName;
138
- if (typeof (key) !== 'string') continue;
139
- var val = elem.attributes[i].nodeValue;
140
- if (!val) continue;
141
- key = this.attr_prefix + key;
142
- if (typeof (cnt[key]) === 'undefined') cnt[key] = 0;
143
- cnt[key]++;
144
- this.addNode(retval, key, cnt[key], val);
145
- }
146
- }
147
-
148
- // parse child nodes (recursive)
149
- if (elem.childNodes && elem.childNodes.length) {
150
- let textonly = true;
151
- if (retval) textonly = false; // some attributes exists
152
- for (var i = 0; i < elem.childNodes.length && textonly; i++) {
153
- const ntype = elem.childNodes[i].nodeType;
154
- if (ntype == 3 || ntype == 4) continue;
155
- textonly = false;
156
- }
157
- if (textonly) {
158
- if (!retval) retval = '';
159
- for (var i = 0; i < elem.childNodes.length; i++) {
160
- retval += elem.childNodes[i].nodeValue;
161
- }
162
- } else {
163
- if (!retval) retval = {};
164
- for (var i = 0; i < elem.childNodes.length; i++) {
165
- var key = elem.childNodes[i].nodeName;
166
- if (typeof (key) !== 'string') continue;
167
- var val = this.parseElement(elem.childNodes[i]);
168
- if (!val) continue;
169
- if (typeof (cnt[key]) === 'undefined') cnt[key] = 0;
170
- cnt[key]++;
171
- this.addNode(retval, key, cnt[key], val);
172
- }
173
- }
174
- }
175
- return retval;
176
- };
177
-
178
- // method: addNode( hash, key, count, value )
179
-
180
- XML.ObjTree.prototype.addNode = function (hash, key, cnts, val) {
181
- if (this.__force_array[key]) {
182
- if (cnts == 1) hash[key] = [];
183
- hash[key][hash[key].length] = val; // push
184
- } else if (cnts == 1) { // 1st sibling
185
- hash[key] = val;
186
- } else if (cnts == 2) { // 2nd sibling
187
- hash[key] = [hash[key], val];
188
- } else { // 3rd sibling and more
189
- hash[key][hash[key].length] = val;
190
- }
191
- };
192
-
193
- // method: writeXML( tree )
194
-
195
- XML.ObjTree.prototype.writeXML = function (tree) {
196
- const xml = this.hash_to_xml(null, tree);
197
- return this.xmlDecl + xml;
198
- };
199
-
200
- // method: hash_to_xml( tagName, tree )
201
-
202
- XML.ObjTree.prototype.hash_to_xml = function (name, tree) {
203
- const elem = [];
204
- const attr = [];
205
- for (const key in tree) {
206
- if (!tree.hasOwnProperty(key)) continue;
207
- const val = tree[key];
208
- if (key.charAt(0) != this.attr_prefix) {
209
- if (typeof (val) === 'undefined' || val == null) {
210
- elem[elem.length] = `<${key} />`;
211
- } else if (typeof (val) === 'object' && val.constructor == Array) {
212
- elem[elem.length] = this.array_to_xml(key, val);
213
- } else if (typeof (val) === 'object') {
214
- elem[elem.length] = this.hash_to_xml(key, val);
215
- } else {
216
- elem[elem.length] = this.scalar_to_xml(key, val);
217
- }
218
- } else {
219
- attr[attr.length] = ` ${key.substring(1)}="${this.xml_escape(val)}"`;
220
- }
221
- }
222
- const jattr = attr.join('');
223
- let jelem = elem.join('');
224
- if (typeof (name) === 'undefined' || name == null) {
225
- // no tag
226
- } else if (elem.length > 0) {
227
- if (jelem.match(/\n/)) {
228
- jelem = `<${name}${jattr}>\n${jelem}</${name}>\n`;
229
- } else {
230
- jelem = `<${name}${jattr}>${jelem}</${name}>\n`;
231
- }
232
- } else {
233
- jelem = `<${name}${jattr} />\n`;
234
- }
235
- return jelem;
236
- };
237
-
238
- // method: array_to_xml( tagName, array )
239
-
240
- XML.ObjTree.prototype.array_to_xml = function (name, array) {
241
- const out = [];
242
- for (let i = 0; i < array.length; i++) {
243
- const val = array[i];
244
- if (typeof (val) === 'undefined' || val == null) {
245
- out[out.length] = `<${name} />`;
246
- } else if (typeof (val) === 'object' && val.constructor == Array) {
247
- out[out.length] = this.array_to_xml(name, val);
248
- } else if (typeof (val) === 'object') {
249
- out[out.length] = this.hash_to_xml(name, val);
250
- } else {
251
- out[out.length] = this.scalar_to_xml(name, val);
252
- }
253
- }
254
- return out.join('');
255
- };
256
-
257
- // method: scalar_to_xml( tagName, text )
258
-
259
- XML.ObjTree.prototype.scalar_to_xml = function (name, text) {
260
- if (name == '#text') {
261
- return this.xml_escape(text);
262
- }
263
- return `<${name}>${this.xml_escape(text)}</${name}>\n`;
264
- };
265
-
266
- // method: xml_escape( text )
267
-
268
- XML.ObjTree.prototype.xml_escape = function (text) {
269
- return text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
270
- };
271
- export default XML;