@lambo-design/shared 1.0.0-beta.282 → 1.0.0-beta.284

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.
@@ -19,19 +19,29 @@
19
19
  }
20
20
 
21
21
  .title {
22
- width: calc(100% - 240px);
22
+ width: 100%;
23
23
  font-size: 14px;
24
24
  line-height: var(--file-line-height);
25
25
  white-space: nowrap;
26
26
  overflow: hidden;
27
27
  text-overflow: ellipsis;
28
28
  }
29
+ .button-wrapper{
30
+ display: flex;
31
+ flex-shrink: 0;
32
+ }
29
33
  .preview {
30
34
  width: 80px;
31
35
  text-align: center;
32
36
  color: var(--ind-primary-color);
33
37
  cursor: pointer;
34
38
  }
39
+ .edit {
40
+ width: 80px;
41
+ text-align: center;
42
+ color: var(--ind-primary-color);
43
+ cursor: pointer;
44
+ }
35
45
  .download,
36
46
  .delete {
37
47
  display: block;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lambo-design/shared",
3
- "version": "1.0.0-beta.282",
3
+ "version": "1.0.0-beta.284",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "author": "lambo",
@@ -0,0 +1,65 @@
1
+ /**
2
+ * 禁用浏览器右键菜单
3
+ *
4
+ * 此函数会禁用整个文档的右键菜单(上下文菜单)
5
+ * 可以通过传递元素参数来限制禁用范围
6
+ *
7
+ * @param {HTMLElement} [element=document] - 要禁用右键菜单的元素,默认为整个文档
8
+ */
9
+ export function disableRightClick(element = document) {
10
+ // 添加事件监听器
11
+ element.addEventListener('contextmenu', preventRightClick);
12
+ }
13
+
14
+
15
+ /**
16
+ * 启用浏览器右键菜单
17
+ *
18
+ * 此函数会移除之前添加的右键菜单禁用
19
+ *
20
+ * @param {HTMLElement} [element=document] - 要重新启用右键菜单的元素
21
+ */
22
+ export function enableRightClick(element = document) {
23
+ // 移除事件监听器
24
+ element.removeEventListener('contextmenu', preventRightClick);
25
+ }
26
+
27
+ /**
28
+ * 禁用右键菜单的事件处理函数
29
+ * 这是一个独立的命名函数,可以被引用和移除
30
+ */
31
+ function preventRightClick(event) {
32
+ // 阻止默认的右键菜单行为
33
+ event.preventDefault();
34
+
35
+ // 可选:显示自定义提示
36
+ showNotification("右键菜单已被禁用");
37
+ }
38
+ /**
39
+ * 显示通知
40
+ *
41
+ * @param {string} message - 要显示的消息内容
42
+ */
43
+ function showNotification(message) {
44
+ const notification = document.createElement('div');
45
+ notification.className = 'notification';
46
+ notification.textContent = message;
47
+ notification.id = 'contextmenu';
48
+ let exists = document.getElementById('contextmenu')
49
+ if(!exists){
50
+ document.body.appendChild(notification);
51
+ // 显示通知
52
+ setTimeout(() => {
53
+ notification.classList.add('show');
54
+ }, 10);
55
+
56
+ // 2秒后隐藏并移除通知
57
+ setTimeout(() => {
58
+ notification.classList.remove('show');
59
+ setTimeout(() => {
60
+ document.body.removeChild(notification);
61
+ }, 500);
62
+ }, 2000);
63
+ }
64
+
65
+ }
package/utils/n/api.js CHANGED
@@ -20,3 +20,17 @@ export function getPreviewUrlApi(fileId) {
20
20
  axiosConfig,
21
21
  )
22
22
  }
23
+
24
+ /**
25
+ * 获取文档中心在线编辑URL
26
+ *
27
+ * @param fileId 文件Id
28
+ * @returns 文件内容
29
+ */
30
+ export function getEditUrlApi(fileId) {
31
+ const axiosConfig = {};
32
+ return axiosN.get(
33
+ `${location.protocol}//${location.host}${config.ucExtServerContext}/api/wps/getEditUrl/${fileId}`,
34
+ axiosConfig
35
+ );
36
+ }
package/utils/platform.js CHANGED
@@ -864,8 +864,12 @@ export const isCenterApp = (app) => {
864
864
  export const buildNavListByMenu = (permissionList,appInfo,appType,defaultHideName = '') => {
865
865
  let navList = []
866
866
  if (permissionList && appInfo && appInfo.appId) {
867
+ let hideNames = [];
868
+ if (defaultHideName && typeof defaultHideName === 'string') {
869
+ hideNames = defaultHideName.split(',').map(name => name.trim());
870
+ }
867
871
  let permissions = permissionList.filter(item => item.hasOwnProperty('pid')
868
- && item.pid == '0' && item.appId == appInfo.appId && item.name != defaultHideName)
872
+ && item.pid == '0' && item.appId == appInfo.appId && !hideNames.includes(item.name))
869
873
  for (let per of permissions) {
870
874
  if (appType && appType == 'sc') {
871
875
  let nav = {
package/utils/storage.js CHANGED
@@ -1,198 +1,198 @@
1
- /*
2
- * Copyright 2019 WeBank
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- *
16
- */
17
-
18
- /* \
19
- |*|
20
- |*| :: cookies.js ::
21
- |*|
22
- |*| A complete cookies reader/writer framework with full unicode support.
23
- |*|
24
- |*| https://developer.mozilla.org/en-US/docs/DOM/document.cookie
25
- |*|
26
- |*| This framework is released under the GNU Public License, version 3 or later.
27
- |*| http://www.gnu.org/licenses/gpl-3.0-standalone.html
28
- |*|
29
- |*| Syntaxes:
30
- |*|
31
- |*| * docCookies.setItem(name, value[, end[, path[, domain[, secure]]]])
32
- |*| * docCookies.getItem(name)
33
- |*| * docCookies.removeItem(name[, path], domain)
34
- |*| * docCookies.hasItem(name)
35
- |*| * docCookies.keys()
36
- |*|
37
- \ */
38
-
39
- let docCookies = {
40
- getItem: function(sKey) {
41
- return decodeURIComponent(document.cookie.replace(new RegExp('(?:(?:^|.*;)\\s*' + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, '\\$&') + '\\s*\\=\\s*([^;]*).*$)|^.*$'), '$1')) || null;
42
- },
43
- setItem: function(sKey, sValue, vEnd, sPath, sDomain, bSecure) {
44
- if (!sKey || /^(?:expires|max\-age|path|domain|secure)$/i.test(sKey)) {
45
- return false;
46
- }
47
- let sExpires = '';
48
- if (vEnd) {
49
- switch (vEnd.constructor) {
50
- case Number:
51
- sExpires = vEnd === Infinity ? '; expires=Fri, 31 Dec 9999 23:59:59 GMT' : '; max-age=' + vEnd;
52
- break;
53
- case String:
54
- sExpires = '; expires=' + vEnd;
55
- break;
56
- case Date:
57
- sExpires = '; expires=' + vEnd.toUTCString();
58
- break;
59
- }
60
- }
61
- document.cookie = encodeURIComponent(sKey) + '=' + encodeURIComponent(sValue) + sExpires + (sDomain ? '; domain=' + sDomain : '') + (sPath ? '; path=' + sPath : '') + (bSecure ? '; secure' : '');
62
- return true;
63
- },
64
- removeItem: function(sKey, sPath, sDomain) {
65
- if (!sKey || !this.hasItem(sKey)) {
66
- return false;
67
- }
68
- document.cookie = encodeURIComponent(sKey) + '=; expires=Thu, 01 Jan 1970 00:00:00 GMT' + (sDomain ? '; domain=' + sDomain : '') + (sPath ? '; path=' + sPath : '');
69
- return true;
70
- },
71
- hasItem: function(sKey) {
72
- return (new RegExp('(?:^|;\\s*)' + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, '\\$&') + '\\s*\\=')).test(document.cookie);
73
- },
74
- keys: /* optional method: you can safely remove it! */ function() {
75
- let aKeys = document.cookie.replace(/((?:^|\s*;)[^\=]+)(?=;|$)|^\s*|\s*(?:\=[^;]*)?(?:\1|$)/g, '').split(/\s*(?:\=[^;]*)?;\s*/);
76
- for (let nIdx = 0; nIdx < aKeys.length; nIdx++) {
77
- aKeys[nIdx] = decodeURIComponent(aKeys[nIdx]);
78
- }
79
- return aKeys;
80
- },
81
- };
82
-
83
- /**
84
- * 操作cookie、sessionStorage、localStorage、缓存
85
- */
86
-
87
- const
88
- SESSION = 'session';
89
-
90
- const LOCAL = 'local';
91
-
92
- const COOKIE = 'cookie';
93
-
94
- export default {
95
- set: function(key, value, category = SESSION, expired) {
96
- let { storage, isWebStorage = true } = this._map(category);
97
-
98
- if (isWebStorage) {
99
- storageManager.set(key, value, storage);
100
- } else {
101
- cookieManager.set(key, value, expired);
102
- }
103
- },
104
- get: function(key, category = SESSION) {
105
- let { storage, isWebStorage = true } = this._map(category);
106
-
107
- if (isWebStorage) {
108
- return storageManager.get(key, storage);
109
- } else {
110
- return cookieManager.get(key);
111
- }
112
- },
113
- clear: function(category = SESSION) {
114
- let { storage, isWebStorage = true } = this._map(category);
115
-
116
- if (isWebStorage) {
117
- storageManager.clear(storage);
118
- } else {
119
- cookieManager.clear();
120
- }
121
- },
122
- remove: function(key, category = SESSION) {
123
- let { storage, isWebStorage = true } = this._map(category);
124
-
125
- if (isWebStorage) {
126
- storageManager.remove(key, storage);
127
- } else {
128
- cookieManager.remove(key);
129
- }
130
- },
131
- _map: function(category) {
132
- let isWebStorage = true; let storage;
133
-
134
- switch (true) {
135
- case category === SESSION:
136
- storage = 'sessionStorage';
137
- break;
138
- case category === LOCAL:
139
- storage = 'localStorage';
140
- break;
141
- case category === COOKIE:
142
- storage = 'cookie';
143
- isWebStorage = false;
144
- break;
145
- default:
146
- storage = 'sessionStorage';
147
- }
148
-
149
- return { isWebStorage, storage };
150
- },
151
- };
152
-
153
- let isProd = process.env.NODE_ENV === 'production';
154
-
155
- export const storageManager = {
156
- set: function(key, value, storage) {
157
- try {
158
- window[storage].setItem(key, JSON.stringify(value));
159
- } catch (e) {
160
- !isProd && console.error(e);
161
- }
162
- },
163
- get: function(key, storage) {
164
- try {
165
- if (window[storage].getItem(key)) {
166
- return JSON.parse(window[storage].getItem(key));
167
- } else {
168
- return window[storage].getItem(key);
169
- }
170
- } catch (e) {
171
- !isProd && console.error(e, key);
172
- }
173
- },
174
- clear: function(storage) {
175
- window[storage].clear();
176
- },
177
- remove: function(key, storage) {
178
- window[storage].removeItem(key);
179
- },
180
- };
181
-
182
- export const cookieManager = {
183
- set: function(key, value, expired) {
184
- if (expired) docCookies.setItem(key, value, expired);
185
- else docCookies.setItem(key, value);
186
- },
187
- get: function(key) {
188
- return docCookies.getItem(key);
189
- },
190
- clear: function() {
191
- docCookies.keys().forEach((key) => {
192
- docCookies.removeItem(key);
193
- });
194
- },
195
- remove: function(key) {
196
- docCookies.removeItem(key);
197
- },
198
- };
1
+ /*
2
+ * Copyright 2019 WeBank
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ *
16
+ */
17
+
18
+ /* \
19
+ |*|
20
+ |*| :: cookies.js ::
21
+ |*|
22
+ |*| A complete cookies reader/writer framework with full unicode support.
23
+ |*|
24
+ |*| https://developer.mozilla.org/en-US/docs/DOM/document.cookie
25
+ |*|
26
+ |*| This framework is released under the GNU Public License, version 3 or later.
27
+ |*| http://www.gnu.org/licenses/gpl-3.0-standalone.html
28
+ |*|
29
+ |*| Syntaxes:
30
+ |*|
31
+ |*| * docCookies.setItem(name, value[, end[, path[, domain[, secure]]]])
32
+ |*| * docCookies.getItem(name)
33
+ |*| * docCookies.removeItem(name[, path], domain)
34
+ |*| * docCookies.hasItem(name)
35
+ |*| * docCookies.keys()
36
+ |*|
37
+ \ */
38
+
39
+ let docCookies = {
40
+ getItem: function(sKey) {
41
+ return decodeURIComponent(document.cookie.replace(new RegExp('(?:(?:^|.*;)\\s*' + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, '\\$&') + '\\s*\\=\\s*([^;]*).*$)|^.*$'), '$1')) || null;
42
+ },
43
+ setItem: function(sKey, sValue, vEnd, sPath, sDomain, bSecure) {
44
+ if (!sKey || /^(?:expires|max\-age|path|domain|secure)$/i.test(sKey)) {
45
+ return false;
46
+ }
47
+ let sExpires = '';
48
+ if (vEnd) {
49
+ switch (vEnd.constructor) {
50
+ case Number:
51
+ sExpires = vEnd === Infinity ? '; expires=Fri, 31 Dec 9999 23:59:59 GMT' : '; max-age=' + vEnd;
52
+ break;
53
+ case String:
54
+ sExpires = '; expires=' + vEnd;
55
+ break;
56
+ case Date:
57
+ sExpires = '; expires=' + vEnd.toUTCString();
58
+ break;
59
+ }
60
+ }
61
+ document.cookie = encodeURIComponent(sKey) + '=' + encodeURIComponent(sValue) + sExpires + (sDomain ? '; domain=' + sDomain : '') + (sPath ? '; path=' + sPath : '') + (bSecure ? '; secure' : '');
62
+ return true;
63
+ },
64
+ removeItem: function(sKey, sPath, sDomain) {
65
+ if (!sKey || !this.hasItem(sKey)) {
66
+ return false;
67
+ }
68
+ document.cookie = encodeURIComponent(sKey) + '=; expires=Thu, 01 Jan 1970 00:00:00 GMT' + (sDomain ? '; domain=' + sDomain : '') + (sPath ? '; path=' + sPath : '');
69
+ return true;
70
+ },
71
+ hasItem: function(sKey) {
72
+ return (new RegExp('(?:^|;\\s*)' + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, '\\$&') + '\\s*\\=')).test(document.cookie);
73
+ },
74
+ keys: /* optional method: you can safely remove it! */ function() {
75
+ let aKeys = document.cookie.replace(/((?:^|\s*;)[^\=]+)(?=;|$)|^\s*|\s*(?:\=[^;]*)?(?:\1|$)/g, '').split(/\s*(?:\=[^;]*)?;\s*/);
76
+ for (let nIdx = 0; nIdx < aKeys.length; nIdx++) {
77
+ aKeys[nIdx] = decodeURIComponent(aKeys[nIdx]);
78
+ }
79
+ return aKeys;
80
+ },
81
+ };
82
+
83
+ /**
84
+ * 操作cookie、sessionStorage、localStorage、缓存
85
+ */
86
+
87
+ const
88
+ SESSION = 'session';
89
+
90
+ const LOCAL = 'local';
91
+
92
+ const COOKIE = 'cookie';
93
+
94
+ export default {
95
+ set: function(key, value, category = SESSION, expired) {
96
+ let { storage, isWebStorage = true } = this._map(category);
97
+
98
+ if (isWebStorage) {
99
+ storageManager.set(key, value, storage);
100
+ } else {
101
+ cookieManager.set(key, value, expired);
102
+ }
103
+ },
104
+ get: function(key, category = SESSION) {
105
+ let { storage, isWebStorage = true } = this._map(category);
106
+
107
+ if (isWebStorage) {
108
+ return storageManager.get(key, storage);
109
+ } else {
110
+ return cookieManager.get(key);
111
+ }
112
+ },
113
+ clear: function(category = SESSION) {
114
+ let { storage, isWebStorage = true } = this._map(category);
115
+
116
+ if (isWebStorage) {
117
+ storageManager.clear(storage);
118
+ } else {
119
+ cookieManager.clear();
120
+ }
121
+ },
122
+ remove: function(key, category = SESSION) {
123
+ let { storage, isWebStorage = true } = this._map(category);
124
+
125
+ if (isWebStorage) {
126
+ storageManager.remove(key, storage);
127
+ } else {
128
+ cookieManager.remove(key);
129
+ }
130
+ },
131
+ _map: function(category) {
132
+ let isWebStorage = true; let storage;
133
+
134
+ switch (true) {
135
+ case category === SESSION:
136
+ storage = 'sessionStorage';
137
+ break;
138
+ case category === LOCAL:
139
+ storage = 'localStorage';
140
+ break;
141
+ case category === COOKIE:
142
+ storage = 'cookie';
143
+ isWebStorage = false;
144
+ break;
145
+ default:
146
+ storage = 'sessionStorage';
147
+ }
148
+
149
+ return { isWebStorage, storage };
150
+ },
151
+ };
152
+
153
+ let isProd = process.env.NODE_ENV === 'production';
154
+
155
+ export const storageManager = {
156
+ set: function(key, value, storage) {
157
+ try {
158
+ window[storage].setItem(key, JSON.stringify(value));
159
+ } catch (e) {
160
+ !isProd && console.error(e);
161
+ }
162
+ },
163
+ get: function(key, storage) {
164
+ try {
165
+ if (window[storage].getItem(key)) {
166
+ return JSON.parse(window[storage].getItem(key));
167
+ } else {
168
+ return window[storage].getItem(key);
169
+ }
170
+ } catch (e) {
171
+ !isProd && console.error(e, key);
172
+ }
173
+ },
174
+ clear: function(storage) {
175
+ window[storage].clear();
176
+ },
177
+ remove: function(key, storage) {
178
+ window[storage].removeItem(key);
179
+ },
180
+ };
181
+
182
+ export const cookieManager = {
183
+ set: function(key, value, expired) {
184
+ if (expired) docCookies.setItem(key, value, expired);
185
+ else docCookies.setItem(key, value);
186
+ },
187
+ get: function(key) {
188
+ return docCookies.getItem(key);
189
+ },
190
+ clear: function() {
191
+ docCookies.keys().forEach((key) => {
192
+ docCookies.removeItem(key);
193
+ });
194
+ },
195
+ remove: function(key) {
196
+ docCookies.removeItem(key);
197
+ },
198
+ };
package/utils/type.js CHANGED
@@ -1,102 +1,102 @@
1
- /*
2
- * Copyright 2019 WeBank
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- *
16
- */
17
-
18
- const objectToString = Object.prototype.toString;
19
- const OBJECT_STRING = '[object Object]';
20
-
21
- /**
22
- * 是否是普通对象
23
- * @param {any} obj
24
- * @return {Boolean}
25
- */
26
- export function isPlainObject(obj) {
27
- return objectToString.call(obj) === OBJECT_STRING;
28
- }
29
-
30
- /**
31
- * 是否是数字
32
- * @param {any} value
33
- * @return {Boolean}
34
- */
35
- export function isNumber(value) {
36
- return typeof value === 'number';
37
- }
38
-
39
- /**
40
- * 是否是日期
41
- * @param {any} value
42
- * @return {Boolean}
43
- */
44
- export function isDate(value) {
45
- return objectToString.call(value) === '[object Date]';
46
- }
47
-
48
- /**
49
- * 是否是函数
50
- * @param {any} value
51
- * @return {Boolean}
52
- */
53
- export function isFunction(value) {
54
- return typeof value === 'function';
55
- }
56
-
57
- /**
58
- * 是否是函数
59
- * @param {any} value
60
- * @return {Boolean}
61
- */
62
- export function isObject(value) {
63
- let type = typeof value;
64
- return !!value && (type == 'object' || type == 'function');
65
- }
66
-
67
- /**
68
- * 是否是数组
69
- * @param {any} value
70
- * @return {Boolean}
71
- */
72
- export function isArray(value) {
73
- return Array.isArray(value);
74
- }
75
-
76
- /**
77
- * 是否像对象
78
- * @param {any} value
79
- * @return {Boolean}
80
- */
81
- export function isObjectLike(value) {
82
- return !!value && typeof value == 'object';
83
- }
84
-
85
- /**
86
- * 是否是字符串
87
- * @param {any} value
88
- * @return {Boolean}
89
- */
90
- export function isString(value) {
91
- return typeof value == 'string' ||
92
- (!isArray(value) && isObjectLike(value) && objectToString.call(value) == '[object String]');
93
- }
94
-
95
- /**
96
- * 是否是空的
97
- * @param {any} value
98
- * @return {Boolean}
99
- */
100
- export function isNull(value) {
101
- return value === undefined || value === null || value === '';
102
- }
1
+ /*
2
+ * Copyright 2019 WeBank
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ *
16
+ */
17
+
18
+ const objectToString = Object.prototype.toString;
19
+ const OBJECT_STRING = '[object Object]';
20
+
21
+ /**
22
+ * 是否是普通对象
23
+ * @param {any} obj
24
+ * @return {Boolean}
25
+ */
26
+ export function isPlainObject(obj) {
27
+ return objectToString.call(obj) === OBJECT_STRING;
28
+ }
29
+
30
+ /**
31
+ * 是否是数字
32
+ * @param {any} value
33
+ * @return {Boolean}
34
+ */
35
+ export function isNumber(value) {
36
+ return typeof value === 'number';
37
+ }
38
+
39
+ /**
40
+ * 是否是日期
41
+ * @param {any} value
42
+ * @return {Boolean}
43
+ */
44
+ export function isDate(value) {
45
+ return objectToString.call(value) === '[object Date]';
46
+ }
47
+
48
+ /**
49
+ * 是否是函数
50
+ * @param {any} value
51
+ * @return {Boolean}
52
+ */
53
+ export function isFunction(value) {
54
+ return typeof value === 'function';
55
+ }
56
+
57
+ /**
58
+ * 是否是函数
59
+ * @param {any} value
60
+ * @return {Boolean}
61
+ */
62
+ export function isObject(value) {
63
+ let type = typeof value;
64
+ return !!value && (type == 'object' || type == 'function');
65
+ }
66
+
67
+ /**
68
+ * 是否是数组
69
+ * @param {any} value
70
+ * @return {Boolean}
71
+ */
72
+ export function isArray(value) {
73
+ return Array.isArray(value);
74
+ }
75
+
76
+ /**
77
+ * 是否像对象
78
+ * @param {any} value
79
+ * @return {Boolean}
80
+ */
81
+ export function isObjectLike(value) {
82
+ return !!value && typeof value == 'object';
83
+ }
84
+
85
+ /**
86
+ * 是否是字符串
87
+ * @param {any} value
88
+ * @return {Boolean}
89
+ */
90
+ export function isString(value) {
91
+ return typeof value == 'string' ||
92
+ (!isArray(value) && isObjectLike(value) && objectToString.call(value) == '[object String]');
93
+ }
94
+
95
+ /**
96
+ * 是否是空的
97
+ * @param {any} value
98
+ * @return {Boolean}
99
+ */
100
+ export function isNull(value) {
101
+ return value === undefined || value === null || value === '';
102
+ }