@lambo-design/shared 1.0.0-beta.361 → 1.0.0-beta.362

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.
@@ -78,6 +78,9 @@
78
78
  display: none !important;
79
79
  background-color: unset !important;
80
80
  }
81
+ .cell-span {
82
+ z-index: 2 !important;
83
+ }
81
84
  .ag-row.replicate-selected-row {
82
85
  // 当 .ag-row 包含 .replicate-selected-row 子元素时,为 .ag-row 添加 ::before
83
86
  &::after {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lambo-design/shared",
3
- "version": "1.0.0-beta.361",
3
+ "version": "1.0.0-beta.362",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "author": "lambo",
package/utils/base64.js CHANGED
@@ -1,126 +1,126 @@
1
- let Base64 = {
2
- Base64Chars:
3
- "abcdefghijklmnopqrstuv" +
4
- "wxyzABCDEFGHIJKLMNOP" +
5
- "QRSTUVWXYZ0123456789@*-",
6
- /**
7
- * Encode a string to a Base64 string follow Bse64 regular.
8
- * @param s, a normal string
9
- * @return a Base64 string
10
- */
11
- encode: function (s) {
12
- if (!s || s.length == 0) return s;
13
-
14
- var d = "";
15
- var b = this.ucs2_utf8(s);
16
- var b0, b1, b2, b3;
17
- var len = b.length;
18
- var i = 0;
19
- while (i < len) {
20
- var tmp = b[i++];
21
- b0 = (tmp & 0xfc) >> 2;
22
- b1 = (tmp & 0x03) << 4;
23
- if (i < len) {
24
- tmp = b[i++];
25
- b1 |= (tmp & 0xf0) >> 4;
26
- b2 = (tmp & 0x0f) << 2;
27
- if (i < len) {
28
- tmp = b[i++];
29
- b2 |= (tmp & 0xc0) >> 6;
30
- b3 = tmp & 0x3f;
31
- } else {
32
- b3 = 64; // 1 byte "-" is supplement
33
-
34
- }
35
- } else {
36
- b2 = b3 = 64; // 2 bytes "-" are supplement
37
-
38
- }
39
-
40
- d += this.Base64Chars.charAt(b0);
41
- d += this.Base64Chars.charAt(b1);
42
- d += this.Base64Chars.charAt(b2);
43
- d += this.Base64Chars.charAt(b3);
44
- }
45
-
46
- return d;
47
-
48
- },
49
-
50
- /**
51
- * Encodes a ucs2 string to a utf8 integer array.
52
- * @param s, a string
53
- * @return an integer array
54
- */
55
- ucs2_utf8: function (s) {
56
- if (!s) return null;
57
- var d = new Array();
58
- if (s == "") return d;
59
-
60
- var c = 0, i = 0, j = 0;
61
- var len = s.length;
62
- while (i < len) {
63
- c = s.charCodeAt(i++);
64
- if (c <= 0x7f) {
65
- // 1 byte
66
-
67
- d[j++] = c;
68
- } else if ((c >= 0x80) && (c <= 0x7ff)) {
69
- // 2 bytes
70
-
71
- d[j++] = ((c >> 6) & 0x1f) | 0xc0;
72
- d[j++] = (c & 0x3f) | 0x80;
73
- } else {
74
- // 3 bytes
75
-
76
- d[j++] = (c >> 12) | 0xe0;
77
- d[j++] = ((c >> 6) & 0x3f) | 0x80;
78
- d[j++] = (c & 0x3f) | 0x80;
79
- }
80
- }
81
-
82
- return d;
83
- },
84
- /**
85
- * Encodes a utf8 integer array to a ucs2 string.
86
- * @param s, an integer array
87
- * @return a string
88
- */
89
- utf8_ucs2: function (s) {
90
- if (!s) return null;
91
- var len = s.length;
92
- if (len == 0) return "";
93
-
94
- var d = "";
95
- var c = 0, i = 0, tmp = 0;
96
- while (i < len) {
97
- c = s[i++];
98
- if ((c & 0xe0) == 0xe0) {
99
- // 3 bytes
100
-
101
- tmp = (c & 0x0f) << 12;
102
- c = s[i++];
103
- tmp |= ((c & 0x3f) << 6);
104
- c = s[i++];
105
- tmp |= (c & 0x3f);
106
- } else if ((c & 0xc0) == 0xc0) {
107
- // 2 bytes
108
-
109
- tmp = (c & 0x1f) << 6;
110
- c = s[i++];
111
- tmp |= (c & 0x3f);
112
- } else {
113
- // 1 byte
114
-
115
- tmp = c;
116
- }
117
-
118
- d += String.fromCharCode(tmp);
119
- }
120
-
121
- return d;
122
- }
123
- };
124
- export {
125
- Base64
126
- }
1
+ let Base64 = {
2
+ Base64Chars:
3
+ "abcdefghijklmnopqrstuv" +
4
+ "wxyzABCDEFGHIJKLMNOP" +
5
+ "QRSTUVWXYZ0123456789@*-",
6
+ /**
7
+ * Encode a string to a Base64 string follow Bse64 regular.
8
+ * @param s, a normal string
9
+ * @return a Base64 string
10
+ */
11
+ encode: function (s) {
12
+ if (!s || s.length == 0) return s;
13
+
14
+ var d = "";
15
+ var b = this.ucs2_utf8(s);
16
+ var b0, b1, b2, b3;
17
+ var len = b.length;
18
+ var i = 0;
19
+ while (i < len) {
20
+ var tmp = b[i++];
21
+ b0 = (tmp & 0xfc) >> 2;
22
+ b1 = (tmp & 0x03) << 4;
23
+ if (i < len) {
24
+ tmp = b[i++];
25
+ b1 |= (tmp & 0xf0) >> 4;
26
+ b2 = (tmp & 0x0f) << 2;
27
+ if (i < len) {
28
+ tmp = b[i++];
29
+ b2 |= (tmp & 0xc0) >> 6;
30
+ b3 = tmp & 0x3f;
31
+ } else {
32
+ b3 = 64; // 1 byte "-" is supplement
33
+
34
+ }
35
+ } else {
36
+ b2 = b3 = 64; // 2 bytes "-" are supplement
37
+
38
+ }
39
+
40
+ d += this.Base64Chars.charAt(b0);
41
+ d += this.Base64Chars.charAt(b1);
42
+ d += this.Base64Chars.charAt(b2);
43
+ d += this.Base64Chars.charAt(b3);
44
+ }
45
+
46
+ return d;
47
+
48
+ },
49
+
50
+ /**
51
+ * Encodes a ucs2 string to a utf8 integer array.
52
+ * @param s, a string
53
+ * @return an integer array
54
+ */
55
+ ucs2_utf8: function (s) {
56
+ if (!s) return null;
57
+ var d = new Array();
58
+ if (s == "") return d;
59
+
60
+ var c = 0, i = 0, j = 0;
61
+ var len = s.length;
62
+ while (i < len) {
63
+ c = s.charCodeAt(i++);
64
+ if (c <= 0x7f) {
65
+ // 1 byte
66
+
67
+ d[j++] = c;
68
+ } else if ((c >= 0x80) && (c <= 0x7ff)) {
69
+ // 2 bytes
70
+
71
+ d[j++] = ((c >> 6) & 0x1f) | 0xc0;
72
+ d[j++] = (c & 0x3f) | 0x80;
73
+ } else {
74
+ // 3 bytes
75
+
76
+ d[j++] = (c >> 12) | 0xe0;
77
+ d[j++] = ((c >> 6) & 0x3f) | 0x80;
78
+ d[j++] = (c & 0x3f) | 0x80;
79
+ }
80
+ }
81
+
82
+ return d;
83
+ },
84
+ /**
85
+ * Encodes a utf8 integer array to a ucs2 string.
86
+ * @param s, an integer array
87
+ * @return a string
88
+ */
89
+ utf8_ucs2: function (s) {
90
+ if (!s) return null;
91
+ var len = s.length;
92
+ if (len == 0) return "";
93
+
94
+ var d = "";
95
+ var c = 0, i = 0, tmp = 0;
96
+ while (i < len) {
97
+ c = s[i++];
98
+ if ((c & 0xe0) == 0xe0) {
99
+ // 3 bytes
100
+
101
+ tmp = (c & 0x0f) << 12;
102
+ c = s[i++];
103
+ tmp |= ((c & 0x3f) << 6);
104
+ c = s[i++];
105
+ tmp |= (c & 0x3f);
106
+ } else if ((c & 0xc0) == 0xc0) {
107
+ // 2 bytes
108
+
109
+ tmp = (c & 0x1f) << 6;
110
+ c = s[i++];
111
+ tmp |= (c & 0x3f);
112
+ } else {
113
+ // 1 byte
114
+
115
+ tmp = c;
116
+ }
117
+
118
+ d += String.fromCharCode(tmp);
119
+ }
120
+
121
+ return d;
122
+ }
123
+ };
124
+ export {
125
+ Base64
126
+ }
package/utils/getChild.js CHANGED
@@ -1,87 +1,87 @@
1
- /**
2
- * 获取所有子菜单 - 优化版
3
- * 使用 Map 缓存 + 迭代,复杂度从 O(n²×depth) 降到 O(n×depth)
4
- * @param {Array} permissionList 权限列表
5
- * @param {string|number} pid 父级ID
6
- * @param {Object} appInfo 应用信息
7
- * @returns {Array} 所有子节点
8
- */
9
- export const getChildPermissions = (permissionList, pid, appInfo) => {
10
- if (!permissionList || !pid) return [];
11
-
12
- // 建立 id -> permission 的 Map,O(n)
13
- const permissionMap = new Map();
14
- for (const permission of permissionList) {
15
- if (permission && permission.hasOwnProperty('permissionId')) {
16
- permissionMap.set(permission.permissionId, permission);
17
- }
18
- }
19
-
20
- // 使用迭代检查是否为子节点,避免递归栈溢出
21
- const isChildOf = (permission) => {
22
- let current = permission;
23
- const visited = new Set(); // 防止循环引用
24
-
25
- while (current && current.pid) {
26
- // 循环引用检测
27
- if (visited.has(current.permissionId)) return false;
28
- visited.add(current.permissionId);
29
-
30
- if (current.pid == pid) return true;
31
- current = permissionMap.get(current.pid); // O(1) 查找
32
- }
33
- return false;
34
- };
35
-
36
- const res = [];
37
- for (const permission of permissionList) {
38
- if (isChildOf(permission)) {
39
- const per2 = deepCopy(permission);
40
- per2.appId = pid;
41
- if (per2.pid == pid) {
42
- per2.pid = "0";
43
- }
44
- per2.appInfo = deepCopy(appInfo);
45
- res.push(per2);
46
- }
47
- }
48
-
49
- return res;
50
- }
51
-
52
-
53
- export const getRootPermission = (permissionList, permission) => {
54
- if (!permissionList || !permission) return permission;
55
-
56
- // 构建 Map,O(n)
57
- const permissionMap = new Map();
58
- for (const item of permissionList) {
59
- if (item && item.permissionId != null) {
60
- const key = `${item.permissionId}|${item.appId || ''}`;
61
- permissionMap.set(key, item);
62
- }
63
- }
64
-
65
- // 迭代向上查找根节点
66
- let current = permission;
67
- const visited = new Set();
68
-
69
- while (current) {
70
- if (!current.pid || current.pid === '0') {
71
- return current;
72
- }
73
-
74
- // 循环引用检测
75
- const key = `${current.permissionId}|${current.appId || ''}`;
76
- if (visited.has(key)) return permission;
77
- visited.add(key);
78
-
79
- // O(1) 查找父节点
80
- const parentKey = `${current.pid}|${current.appId || ''}`;
81
- current = permissionMap.get(parentKey);
82
-
83
- if (!current) return permission;
84
- }
85
-
86
- return permission;
87
- }
1
+ /**
2
+ * 获取所有子菜单 - 优化版
3
+ * 使用 Map 缓存 + 迭代,复杂度从 O(n²×depth) 降到 O(n×depth)
4
+ * @param {Array} permissionList 权限列表
5
+ * @param {string|number} pid 父级ID
6
+ * @param {Object} appInfo 应用信息
7
+ * @returns {Array} 所有子节点
8
+ */
9
+ export const getChildPermissions = (permissionList, pid, appInfo) => {
10
+ if (!permissionList || !pid) return [];
11
+
12
+ // 建立 id -> permission 的 Map,O(n)
13
+ const permissionMap = new Map();
14
+ for (const permission of permissionList) {
15
+ if (permission && permission.hasOwnProperty('permissionId')) {
16
+ permissionMap.set(permission.permissionId, permission);
17
+ }
18
+ }
19
+
20
+ // 使用迭代检查是否为子节点,避免递归栈溢出
21
+ const isChildOf = (permission) => {
22
+ let current = permission;
23
+ const visited = new Set(); // 防止循环引用
24
+
25
+ while (current && current.pid) {
26
+ // 循环引用检测
27
+ if (visited.has(current.permissionId)) return false;
28
+ visited.add(current.permissionId);
29
+
30
+ if (current.pid == pid) return true;
31
+ current = permissionMap.get(current.pid); // O(1) 查找
32
+ }
33
+ return false;
34
+ };
35
+
36
+ const res = [];
37
+ for (const permission of permissionList) {
38
+ if (isChildOf(permission)) {
39
+ const per2 = deepCopy(permission);
40
+ per2.appId = pid;
41
+ if (per2.pid == pid) {
42
+ per2.pid = "0";
43
+ }
44
+ per2.appInfo = deepCopy(appInfo);
45
+ res.push(per2);
46
+ }
47
+ }
48
+
49
+ return res;
50
+ }
51
+
52
+
53
+ export const getRootPermission = (permissionList, permission) => {
54
+ if (!permissionList || !permission) return permission;
55
+
56
+ // 构建 Map,O(n)
57
+ const permissionMap = new Map();
58
+ for (const item of permissionList) {
59
+ if (item && item.permissionId != null) {
60
+ const key = `${item.permissionId}|${item.appId || ''}`;
61
+ permissionMap.set(key, item);
62
+ }
63
+ }
64
+
65
+ // 迭代向上查找根节点
66
+ let current = permission;
67
+ const visited = new Set();
68
+
69
+ while (current) {
70
+ if (!current.pid || current.pid === '0') {
71
+ return current;
72
+ }
73
+
74
+ // 循环引用检测
75
+ const key = `${current.permissionId}|${current.appId || ''}`;
76
+ if (visited.has(key)) return permission;
77
+ visited.add(key);
78
+
79
+ // O(1) 查找父节点
80
+ const parentKey = `${current.pid}|${current.appId || ''}`;
81
+ current = permissionMap.get(parentKey);
82
+
83
+ if (!current) return permission;
84
+ }
85
+
86
+ return permission;
87
+ }