vue2-client 1.5.22 → 1.5.24

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 (102) hide show
  1. package/CHANGELOG.md +525 -522
  2. package/index.js +30 -30
  3. package/package.json +78 -78
  4. package/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox.vue +225 -225
  5. package/src/base-client/components/common/CreateQuery/CreateQuery.vue +667 -667
  6. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQueryItem.vue +508 -508
  7. package/src/base-client/components/common/FormGroupEdit/FormGroupEdit.vue +140 -140
  8. package/src/base-client/components/common/FormGroupQuery/FormGroupQuery.vue +165 -165
  9. package/src/base-client/components/common/JSONToTree/jsontotree.vue +275 -275
  10. package/src/base-client/components/common/XCard/XCard.vue +64 -64
  11. package/src/base-client/components/common/XFormTable/XFormTable.vue +2 -1
  12. package/src/base-client/components/common/XTreeOne/XTreeOne.vue +109 -109
  13. package/src/base-client/components/system/QueryParamsDetailsView/QueryParamsDetailsView.vue +281 -281
  14. package/src/base-client/components/ticket/TicketDetailsView/TicketDetailsView.vue +807 -807
  15. package/src/base-client/components/ticket/TicketDetailsView/index.md +29 -29
  16. package/src/base-client/components/ticket/TicketDetailsView/part/TicketDetailsFlow.vue +260 -260
  17. package/src/base-client/components/ticket/TicketSubmitSuccessView/TicketSubmitSuccessView.vue +532 -532
  18. package/src/base-client/components/ticket/TicketSubmitSuccessView/index.md +29 -29
  19. package/src/base-client/plugins/AppData.js +1 -0
  20. package/src/base-client/plugins/GetLoginInfoService.js +179 -179
  21. package/src/base-client/plugins/PagedList.js +177 -177
  22. package/src/base-client/plugins/compatible/LoginServiceOA.js +20 -20
  23. package/src/base-client/plugins/i18n-extend.js +32 -32
  24. package/src/components/Ellipsis/Ellipsis.vue +65 -65
  25. package/src/components/Ellipsis/index.md +38 -38
  26. package/src/components/NumberInfo/index.md +43 -43
  27. package/src/components/STable/README.md +341 -341
  28. package/src/components/STable/index.js +318 -318
  29. package/src/components/Trend/index.md +45 -45
  30. package/src/components/checkbox/ColorCheckbox.vue +157 -157
  31. package/src/components/checkbox/ImgCheckbox.vue +163 -163
  32. package/src/components/exception/ExceptionPage.vue +70 -70
  33. package/src/components/form/FormRow.vue +52 -52
  34. package/src/components/index.js +36 -36
  35. package/src/components/menu/SideMenu.vue +62 -62
  36. package/src/components/menu/menu.js +273 -273
  37. package/src/components/page/header/index.less +40 -40
  38. package/src/components/setting/Setting.vue +235 -235
  39. package/src/components/table/StandardTable.vue +141 -141
  40. package/src/components/table/advance/ActionColumns.vue +158 -158
  41. package/src/components/table/advance/SearchArea.vue +355 -355
  42. package/src/components/tool/AStepItem.vue +60 -60
  43. package/src/components/tool/AvatarList.vue +68 -68
  44. package/src/components/tool/Drawer.vue +142 -142
  45. package/src/components/tool/TagSelect.vue +83 -83
  46. package/src/components/transition/PageToggleTransition.vue +97 -97
  47. package/src/config/default/admin.config.js +18 -18
  48. package/src/config/default/setting.config.js +44 -44
  49. package/src/config/replacer/resolve.config.js +67 -67
  50. package/src/layouts/AdminLayout.vue +174 -174
  51. package/src/layouts/CommonLayout.vue +42 -42
  52. package/src/layouts/ComponentLayoutOne.vue +47 -47
  53. package/src/layouts/PageLayout.vue +151 -151
  54. package/src/layouts/SinglePageView.vue +111 -111
  55. package/src/layouts/footer/PageFooter.vue +49 -49
  56. package/src/layouts/header/AdminHeader.vue +104 -104
  57. package/src/layouts/header/HeaderAvatar.vue +64 -64
  58. package/src/layouts/header/HeaderNotice.vue +176 -176
  59. package/src/layouts/header/HeaderSearch.vue +67 -67
  60. package/src/layouts/header/InstitutionDetail.vue +181 -181
  61. package/src/layouts/header/index.less +92 -92
  62. package/src/layouts/tabs/TabsHead.vue +190 -190
  63. package/src/layouts/tabs/TabsView.vue +379 -379
  64. package/src/mock/goods/index.js +108 -108
  65. package/src/pages/exception/404.vue +25 -25
  66. package/src/pages/login/Login.vue +363 -363
  67. package/src/pages/report/ReportTable.js +124 -124
  68. package/src/pages/report/ReportTableHome.vue +28 -28
  69. package/src/pages/resourceManage/orgListManage.vue +98 -98
  70. package/src/pages/system/dictionary/index.vue +43 -43
  71. package/src/pages/system/file/index.vue +317 -317
  72. package/src/pages/system/monitor/loginInfor/index.vue +36 -36
  73. package/src/pages/system/monitor/operLog/index.vue +36 -36
  74. package/src/pages/system/queryParams/index.vue +43 -43
  75. package/src/pages/system/settings/index.vue +126 -126
  76. package/src/pages/system/settings/modifyPassword.vue +109 -109
  77. package/src/router/async/config.async.js +28 -28
  78. package/src/router/async/router.map.js +68 -68
  79. package/src/router/index.js +27 -27
  80. package/src/services/api/DictionaryDetailsViewApi.js +6 -6
  81. package/src/services/api/LogDetailsViewApi.js +10 -10
  82. package/src/services/api/QueryParamsDetailsViewApi.js +6 -6
  83. package/src/services/api/TicketDetailsViewApi.js +34 -34
  84. package/src/services/api/cas.js +79 -79
  85. package/src/services/api/commonTempTable.js +10 -10
  86. package/src/services/api/index.js +17 -17
  87. package/src/services/api/logininfor/index.js +6 -6
  88. package/src/services/api/manage.js +8 -8
  89. package/src/services/apiService.js +14 -14
  90. package/src/services/user.js +64 -64
  91. package/src/store/modules/index.js +4 -4
  92. package/src/theme/default/nprogress.less +76 -76
  93. package/src/theme/default/style.less +47 -47
  94. package/src/utils/colors.js +107 -107
  95. package/src/utils/excel/Blob.js +180 -180
  96. package/src/utils/excel/Export2Excel.js +141 -141
  97. package/src/utils/formatter.js +68 -68
  98. package/src/utils/i18n.js +80 -80
  99. package/src/utils/theme-color-replacer-extend.js +91 -91
  100. package/src/utils/themeUtil.js +100 -100
  101. package/src/utils/util.js +230 -230
  102. package/vue.config.js +106 -106
@@ -1,107 +1,107 @@
1
- const varyColor = require('webpack-theme-color-replacer/client/varyColor')
2
- const { generate } = require('@ant-design/colors')
3
- const { ADMIN, ANTD } = require('../config/default')
4
- const Config = require('../config')
5
-
6
- const themeMode = ADMIN.theme.mode
7
-
8
- // 获取 ant design 色系
9
- function getAntdColors (color, mode) {
10
- const options = mode && (mode === themeMode.NIGHT) ? { theme: 'dark' } : undefined
11
- return generate(color, options)
12
- }
13
-
14
- // 获取功能性颜色
15
- function getFunctionalColors (mode) {
16
- const options = mode && (mode === themeMode.NIGHT) ? { theme: 'dark' } : undefined
17
- let { success, warning, error } = ANTD.primary
18
- const { success: s1, warning: w1, error: e1 } = Config.theme
19
- success = success && s1
20
- warning = success && w1
21
- error = success && e1
22
- const successColors = generate(success, options)
23
- const warningColors = generate(warning, options)
24
- const errorColors = generate(error, options)
25
- return {
26
- success: successColors,
27
- warning: warningColors,
28
- error: errorColors
29
- }
30
- }
31
-
32
- // 获取菜单色系
33
- function getMenuColors (color, mode) {
34
- if (mode === themeMode.NIGHT) {
35
- return ANTD.primary.night.menuColors
36
- } else if (color === ANTD.primary.color) {
37
- return ANTD.primary.dark.menuColors
38
- } else {
39
- if (color === '#507CAD') {
40
- return [varyColor.darken(color, 0.33), color, color]
41
- } else {
42
- return [varyColor.darken(color, 0.93), varyColor.darken(color, 0.83), varyColor.darken(color, 0.73)]
43
- }
44
- }
45
- }
46
-
47
- // 获取主题模式切换色系
48
- function getThemeToggleColors (color, mode) {
49
- // 主色系
50
- const mainColors = getAntdColors(color, mode)
51
- const primary = mainColors[5]
52
- // 辅助色系,因为 antd 目前没针对夜间模式设计,所以增加辅助色系以保证夜间模式的正常切换
53
- const subColors = getAntdColors(primary, themeMode.LIGHT)
54
- // 菜单色系
55
- const menuColors = getMenuColors(color, mode)
56
- // 内容色系(包含背景色、文字颜色等)
57
- const themeCfg = ANTD.theme[mode]
58
- let contentColors = Object.keys(themeCfg)
59
- .map(key => themeCfg[key])
60
- .map(color => isHex(color) ? color : toNum3(color).join(','))
61
- // 内容色去重
62
- contentColors = [...new Set(contentColors)]
63
- // rgb 格式的主题色
64
- const rgbColors = [toNum3(primary).join(',')]
65
- const functionalColors = getFunctionalColors(mode)
66
- return { primary, mainColors, subColors, menuColors, contentColors, rgbColors, functionalColors }
67
- }
68
-
69
- function toNum3 (color) {
70
- if (isHex(color)) {
71
- return varyColor.toNum3(color)
72
- }
73
- let colorStr = ''
74
- if (isRgb(color)) {
75
- colorStr = color.slice(5, color.length)
76
- } else if (isRgba(color)) {
77
- colorStr = color.slice(6, color.lastIndexOf(','))
78
- }
79
- const rgb = colorStr.split(',')
80
- const r = parseInt(rgb[0])
81
- const g = parseInt(rgb[1])
82
- const b = parseInt(rgb[2])
83
- return [r, g, b]
84
- }
85
-
86
- function isHex (color) {
87
- return color.length >= 4 && color[0] === '#'
88
- }
89
-
90
- function isRgb (color) {
91
- return color.length >= 10 && color.slice(0, 3) === 'rgb'
92
- }
93
-
94
- function isRgba (color) {
95
- return color.length >= 13 && color.slice(0, 4) === 'rgba'
96
- }
97
-
98
- module.exports = {
99
- isHex,
100
- isRgb,
101
- isRgba,
102
- toNum3,
103
- getAntdColors,
104
- getMenuColors,
105
- getThemeToggleColors,
106
- getFunctionalColors
107
- }
1
+ const varyColor = require('webpack-theme-color-replacer/client/varyColor')
2
+ const { generate } = require('@ant-design/colors')
3
+ const { ADMIN, ANTD } = require('../config/default')
4
+ const Config = require('../config')
5
+
6
+ const themeMode = ADMIN.theme.mode
7
+
8
+ // 获取 ant design 色系
9
+ function getAntdColors (color, mode) {
10
+ const options = mode && (mode === themeMode.NIGHT) ? { theme: 'dark' } : undefined
11
+ return generate(color, options)
12
+ }
13
+
14
+ // 获取功能性颜色
15
+ function getFunctionalColors (mode) {
16
+ const options = mode && (mode === themeMode.NIGHT) ? { theme: 'dark' } : undefined
17
+ let { success, warning, error } = ANTD.primary
18
+ const { success: s1, warning: w1, error: e1 } = Config.theme
19
+ success = success && s1
20
+ warning = success && w1
21
+ error = success && e1
22
+ const successColors = generate(success, options)
23
+ const warningColors = generate(warning, options)
24
+ const errorColors = generate(error, options)
25
+ return {
26
+ success: successColors,
27
+ warning: warningColors,
28
+ error: errorColors
29
+ }
30
+ }
31
+
32
+ // 获取菜单色系
33
+ function getMenuColors (color, mode) {
34
+ if (mode === themeMode.NIGHT) {
35
+ return ANTD.primary.night.menuColors
36
+ } else if (color === ANTD.primary.color) {
37
+ return ANTD.primary.dark.menuColors
38
+ } else {
39
+ if (color === '#507CAD') {
40
+ return [varyColor.darken(color, 0.33), color, color]
41
+ } else {
42
+ return [varyColor.darken(color, 0.93), varyColor.darken(color, 0.83), varyColor.darken(color, 0.73)]
43
+ }
44
+ }
45
+ }
46
+
47
+ // 获取主题模式切换色系
48
+ function getThemeToggleColors (color, mode) {
49
+ // 主色系
50
+ const mainColors = getAntdColors(color, mode)
51
+ const primary = mainColors[5]
52
+ // 辅助色系,因为 antd 目前没针对夜间模式设计,所以增加辅助色系以保证夜间模式的正常切换
53
+ const subColors = getAntdColors(primary, themeMode.LIGHT)
54
+ // 菜单色系
55
+ const menuColors = getMenuColors(color, mode)
56
+ // 内容色系(包含背景色、文字颜色等)
57
+ const themeCfg = ANTD.theme[mode]
58
+ let contentColors = Object.keys(themeCfg)
59
+ .map(key => themeCfg[key])
60
+ .map(color => isHex(color) ? color : toNum3(color).join(','))
61
+ // 内容色去重
62
+ contentColors = [...new Set(contentColors)]
63
+ // rgb 格式的主题色
64
+ const rgbColors = [toNum3(primary).join(',')]
65
+ const functionalColors = getFunctionalColors(mode)
66
+ return { primary, mainColors, subColors, menuColors, contentColors, rgbColors, functionalColors }
67
+ }
68
+
69
+ function toNum3 (color) {
70
+ if (isHex(color)) {
71
+ return varyColor.toNum3(color)
72
+ }
73
+ let colorStr = ''
74
+ if (isRgb(color)) {
75
+ colorStr = color.slice(5, color.length)
76
+ } else if (isRgba(color)) {
77
+ colorStr = color.slice(6, color.lastIndexOf(','))
78
+ }
79
+ const rgb = colorStr.split(',')
80
+ const r = parseInt(rgb[0])
81
+ const g = parseInt(rgb[1])
82
+ const b = parseInt(rgb[2])
83
+ return [r, g, b]
84
+ }
85
+
86
+ function isHex (color) {
87
+ return color.length >= 4 && color[0] === '#'
88
+ }
89
+
90
+ function isRgb (color) {
91
+ return color.length >= 10 && color.slice(0, 3) === 'rgb'
92
+ }
93
+
94
+ function isRgba (color) {
95
+ return color.length >= 13 && color.slice(0, 4) === 'rgba'
96
+ }
97
+
98
+ module.exports = {
99
+ isHex,
100
+ isRgb,
101
+ isRgba,
102
+ toNum3,
103
+ getAntdColors,
104
+ getMenuColors,
105
+ getThemeToggleColors,
106
+ getFunctionalColors
107
+ }
@@ -1,180 +1,180 @@
1
- /* eslint-disable */
2
- /* Blob.js
3
- * A Blob implementation.
4
- * 2014-05-27
5
- *
6
- * By Eli Grey, http://eligrey.com
7
- * By Devin Samarin, https://github.com/eboyjr
8
- * License: X11/MIT
9
- * See LICENSE.md
10
- */
11
-
12
- /*global self, unescape */
13
- /*jslint bitwise: true, regexp: true, confusion: true, es5: true, vars: true, white: true,
14
- plusplus: true */
15
-
16
- /*! @source http://purl.eligrey.com/github/Blob.js/blob/master/Blob.js */
17
-
18
- (function (view) {
19
- "use strict";
20
-
21
- view.URL = view.URL || view.webkitURL;
22
-
23
- if (view.Blob && view.URL) {
24
- try {
25
- new Blob;
26
- return;
27
- } catch (e) {
28
- }
29
- }
30
-
31
- // Internally we use a BlobBuilder implementation to base Blob off of
32
- // in order to support older browsers that only have BlobBuilder
33
- const BlobBuilder = view.BlobBuilder || view.WebKitBlobBuilder || view.MozBlobBuilder || (function (view) {
34
- const get_class = function (object) {
35
- return Object.prototype.toString.call(object).match(/^\[object\s(.*)]$/)[1];
36
- }
37
- , FakeBlobBuilder = function BlobBuilder() {
38
- this.data = [];
39
- }
40
- , FakeBlob = function Blob(data, type, encoding) {
41
- this.data = data;
42
- this.size = data.length;
43
- this.type = type;
44
- this.encoding = encoding;
45
- }
46
- , FBB_proto = FakeBlobBuilder.prototype
47
- , FB_proto = FakeBlob.prototype
48
- , FileReaderSync = view.FileReaderSync
49
- , FileException = function (type) {
50
- this.code = this[this.name = type];
51
- }
52
- , file_ex_codes = (
53
- "NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR "
54
- + "NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR"
55
- ).split(" ")
56
- ;let file_ex_code = file_ex_codes.length
57
- ;const real_URL = view.URL || view.webkitURL || view
58
- , real_create_object_URL = real_URL.createObjectURL
59
- , real_revoke_object_URL = real_URL.revokeObjectURL
60
- ;let URL = real_URL
61
- ;const btoa = view.btoa
62
- , atob = view.atob
63
-
64
- , ArrayBuffer = view.ArrayBuffer
65
- , Uint8Array = view.Uint8Array
66
- ;
67
- FakeBlob.fake = FB_proto.fake = true;
68
- while (file_ex_code--) {
69
- FileException.prototype[file_ex_codes[file_ex_code]] = file_ex_code + 1;
70
- }
71
- if (!real_URL.createObjectURL) {
72
- URL = view.URL = {};
73
- }
74
- URL.createObjectURL = function (blob) {
75
- let type = blob.type
76
- , data_URI_header
77
- ;
78
- if (type === null) {
79
- type = "application/octet-stream";
80
- }
81
- if (blob instanceof FakeBlob) {
82
- data_URI_header = "data:" + type;
83
- if (blob.encoding === "base64") {
84
- return data_URI_header + ";base64," + blob.data;
85
- } else if (blob.encoding === "URI") {
86
- return data_URI_header + "," + decodeURIComponent(blob.data);
87
- }
88
- if (btoa) {
89
- return data_URI_header + ";base64," + btoa(blob.data);
90
- } else {
91
- return data_URI_header + "," + encodeURIComponent(blob.data);
92
- }
93
- } else if (real_create_object_URL) {
94
- return real_create_object_URL.call(real_URL, blob);
95
- }
96
- };
97
- URL.revokeObjectURL = function (object_URL) {
98
- if (object_URL.substring(0, 5) !== "data:" && real_revoke_object_URL) {
99
- real_revoke_object_URL.call(real_URL, object_URL);
100
- }
101
- };
102
- FBB_proto.append = function (data/*, endings*/) {
103
- const bb = this.data;
104
- // decode data to a binary string
105
- if (Uint8Array && (data instanceof ArrayBuffer || data instanceof Uint8Array)) {
106
- let str = ""
107
- ;const buf = new Uint8Array(data)
108
- ;let i = 0
109
- ;const buf_len = buf.length
110
- ;
111
- for (; i < buf_len; i++) {
112
- str += String.fromCharCode(buf[i]);
113
- }
114
- bb.push(str);
115
- } else if (get_class(data) === "Blob" || get_class(data) === "File") {
116
- if (FileReaderSync) {
117
- const fr = new FileReaderSync;
118
- bb.push(fr.readAsBinaryString(data));
119
- } else {
120
- // async FileReader won't work as BlobBuilder is sync
121
- throw new FileException("NOT_READABLE_ERR");
122
- }
123
- } else if (data instanceof FakeBlob) {
124
- if (data.encoding === "base64" && atob) {
125
- bb.push(atob(data.data));
126
- } else if (data.encoding === "URI") {
127
- bb.push(decodeURIComponent(data.data));
128
- } else if (data.encoding === "raw") {
129
- bb.push(data.data);
130
- }
131
- } else {
132
- if (typeof data !== "string") {
133
- data += ""; // convert unsupported types to strings
134
- }
135
- // decode UTF-16 to binary string
136
- bb.push(unescape(encodeURIComponent(data)));
137
- }
138
- };
139
- FBB_proto.getBlob = function (type) {
140
- if (!arguments.length) {
141
- type = null;
142
- }
143
- return new FakeBlob(this.data.join(""), type, "raw");
144
- };
145
- FBB_proto.toString = function () {
146
- return "[object BlobBuilder]";
147
- };
148
- FB_proto.slice = function (start, end, type) {
149
- const args = arguments.length;
150
- if (args < 3) {
151
- type = null;
152
- }
153
- return new FakeBlob(
154
- this.data.slice(start, args > 1 ? end : this.data.length)
155
- , type
156
- , this.encoding
157
- );
158
- };
159
- FB_proto.toString = function () {
160
- return "[object Blob]";
161
- };
162
- FB_proto.close = function () {
163
- this.size = this.data.length = 0;
164
- };
165
- return FakeBlobBuilder;
166
- }(view));
167
-
168
- view.Blob = function Blob(blobParts, options) {
169
- const type = options ? (options.type || "") : "";
170
- const builder = new BlobBuilder();
171
- if (blobParts) {
172
- let i = 0;
173
- const len = blobParts.length;
174
- for (; i < len; i++) {
175
- builder.append(blobParts[i]);
176
- }
177
- }
178
- return builder.getBlob(type);
179
- };
180
- }(typeof self !== "undefined" && self || typeof window !== "undefined" && window || this.content || this));
1
+ /* eslint-disable */
2
+ /* Blob.js
3
+ * A Blob implementation.
4
+ * 2014-05-27
5
+ *
6
+ * By Eli Grey, http://eligrey.com
7
+ * By Devin Samarin, https://github.com/eboyjr
8
+ * License: X11/MIT
9
+ * See LICENSE.md
10
+ */
11
+
12
+ /*global self, unescape */
13
+ /*jslint bitwise: true, regexp: true, confusion: true, es5: true, vars: true, white: true,
14
+ plusplus: true */
15
+
16
+ /*! @source http://purl.eligrey.com/github/Blob.js/blob/master/Blob.js */
17
+
18
+ (function (view) {
19
+ "use strict";
20
+
21
+ view.URL = view.URL || view.webkitURL;
22
+
23
+ if (view.Blob && view.URL) {
24
+ try {
25
+ new Blob;
26
+ return;
27
+ } catch (e) {
28
+ }
29
+ }
30
+
31
+ // Internally we use a BlobBuilder implementation to base Blob off of
32
+ // in order to support older browsers that only have BlobBuilder
33
+ const BlobBuilder = view.BlobBuilder || view.WebKitBlobBuilder || view.MozBlobBuilder || (function (view) {
34
+ const get_class = function (object) {
35
+ return Object.prototype.toString.call(object).match(/^\[object\s(.*)]$/)[1];
36
+ }
37
+ , FakeBlobBuilder = function BlobBuilder() {
38
+ this.data = [];
39
+ }
40
+ , FakeBlob = function Blob(data, type, encoding) {
41
+ this.data = data;
42
+ this.size = data.length;
43
+ this.type = type;
44
+ this.encoding = encoding;
45
+ }
46
+ , FBB_proto = FakeBlobBuilder.prototype
47
+ , FB_proto = FakeBlob.prototype
48
+ , FileReaderSync = view.FileReaderSync
49
+ , FileException = function (type) {
50
+ this.code = this[this.name = type];
51
+ }
52
+ , file_ex_codes = (
53
+ "NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR "
54
+ + "NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR"
55
+ ).split(" ")
56
+ ;let file_ex_code = file_ex_codes.length
57
+ ;const real_URL = view.URL || view.webkitURL || view
58
+ , real_create_object_URL = real_URL.createObjectURL
59
+ , real_revoke_object_URL = real_URL.revokeObjectURL
60
+ ;let URL = real_URL
61
+ ;const btoa = view.btoa
62
+ , atob = view.atob
63
+
64
+ , ArrayBuffer = view.ArrayBuffer
65
+ , Uint8Array = view.Uint8Array
66
+ ;
67
+ FakeBlob.fake = FB_proto.fake = true;
68
+ while (file_ex_code--) {
69
+ FileException.prototype[file_ex_codes[file_ex_code]] = file_ex_code + 1;
70
+ }
71
+ if (!real_URL.createObjectURL) {
72
+ URL = view.URL = {};
73
+ }
74
+ URL.createObjectURL = function (blob) {
75
+ let type = blob.type
76
+ , data_URI_header
77
+ ;
78
+ if (type === null) {
79
+ type = "application/octet-stream";
80
+ }
81
+ if (blob instanceof FakeBlob) {
82
+ data_URI_header = "data:" + type;
83
+ if (blob.encoding === "base64") {
84
+ return data_URI_header + ";base64," + blob.data;
85
+ } else if (blob.encoding === "URI") {
86
+ return data_URI_header + "," + decodeURIComponent(blob.data);
87
+ }
88
+ if (btoa) {
89
+ return data_URI_header + ";base64," + btoa(blob.data);
90
+ } else {
91
+ return data_URI_header + "," + encodeURIComponent(blob.data);
92
+ }
93
+ } else if (real_create_object_URL) {
94
+ return real_create_object_URL.call(real_URL, blob);
95
+ }
96
+ };
97
+ URL.revokeObjectURL = function (object_URL) {
98
+ if (object_URL.substring(0, 5) !== "data:" && real_revoke_object_URL) {
99
+ real_revoke_object_URL.call(real_URL, object_URL);
100
+ }
101
+ };
102
+ FBB_proto.append = function (data/*, endings*/) {
103
+ const bb = this.data;
104
+ // decode data to a binary string
105
+ if (Uint8Array && (data instanceof ArrayBuffer || data instanceof Uint8Array)) {
106
+ let str = ""
107
+ ;const buf = new Uint8Array(data)
108
+ ;let i = 0
109
+ ;const buf_len = buf.length
110
+ ;
111
+ for (; i < buf_len; i++) {
112
+ str += String.fromCharCode(buf[i]);
113
+ }
114
+ bb.push(str);
115
+ } else if (get_class(data) === "Blob" || get_class(data) === "File") {
116
+ if (FileReaderSync) {
117
+ const fr = new FileReaderSync;
118
+ bb.push(fr.readAsBinaryString(data));
119
+ } else {
120
+ // async FileReader won't work as BlobBuilder is sync
121
+ throw new FileException("NOT_READABLE_ERR");
122
+ }
123
+ } else if (data instanceof FakeBlob) {
124
+ if (data.encoding === "base64" && atob) {
125
+ bb.push(atob(data.data));
126
+ } else if (data.encoding === "URI") {
127
+ bb.push(decodeURIComponent(data.data));
128
+ } else if (data.encoding === "raw") {
129
+ bb.push(data.data);
130
+ }
131
+ } else {
132
+ if (typeof data !== "string") {
133
+ data += ""; // convert unsupported types to strings
134
+ }
135
+ // decode UTF-16 to binary string
136
+ bb.push(unescape(encodeURIComponent(data)));
137
+ }
138
+ };
139
+ FBB_proto.getBlob = function (type) {
140
+ if (!arguments.length) {
141
+ type = null;
142
+ }
143
+ return new FakeBlob(this.data.join(""), type, "raw");
144
+ };
145
+ FBB_proto.toString = function () {
146
+ return "[object BlobBuilder]";
147
+ };
148
+ FB_proto.slice = function (start, end, type) {
149
+ const args = arguments.length;
150
+ if (args < 3) {
151
+ type = null;
152
+ }
153
+ return new FakeBlob(
154
+ this.data.slice(start, args > 1 ? end : this.data.length)
155
+ , type
156
+ , this.encoding
157
+ );
158
+ };
159
+ FB_proto.toString = function () {
160
+ return "[object Blob]";
161
+ };
162
+ FB_proto.close = function () {
163
+ this.size = this.data.length = 0;
164
+ };
165
+ return FakeBlobBuilder;
166
+ }(view));
167
+
168
+ view.Blob = function Blob(blobParts, options) {
169
+ const type = options ? (options.type || "") : "";
170
+ const builder = new BlobBuilder();
171
+ if (blobParts) {
172
+ let i = 0;
173
+ const len = blobParts.length;
174
+ for (; i < len; i++) {
175
+ builder.append(blobParts[i]);
176
+ }
177
+ }
178
+ return builder.getBlob(type);
179
+ };
180
+ }(typeof self !== "undefined" && self || typeof window !== "undefined" && window || this.content || this));