zcw-shared 1.32.0 → 1.32.2

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 (143) hide show
  1. package/README.md +2 -2
  2. package/dist/functions/platform/tencent-cloud/deploy.tcb.d.ts +13 -0
  3. package/dist/functions/platform/tencent-cloud/deploy.tcb.js +46 -0
  4. package/dist/functions/platform/tencent-cloud/deploy.tcb.js.map +1 -0
  5. package/dist/functions/platform/tencent-cloud/getSecret.d.ts +4 -0
  6. package/dist/functions/platform/tencent-cloud/getSecret.js +19 -0
  7. package/dist/functions/platform/tencent-cloud/getSecret.js.map +1 -0
  8. package/dist/functions/platform/uniapp/app-plus/buildAndroidApp.d.ts +27 -0
  9. package/dist/functions/platform/uniapp/app-plus/buildAndroidApp.js +287 -0
  10. package/dist/functions/platform/uniapp/app-plus/buildAndroidApp.js.map +1 -0
  11. package/dist/functions/platform/uniapp/build.d.ts +21 -0
  12. package/dist/functions/platform/uniapp/build.js +83 -0
  13. package/dist/functions/platform/uniapp/build.js.map +1 -0
  14. package/dist/functions/platform/uniapp/detectAndroidProjectStructure.d.ts +11 -0
  15. package/dist/functions/platform/uniapp/detectAndroidProjectStructure.js +30 -0
  16. package/dist/functions/platform/uniapp/detectAndroidProjectStructure.js.map +1 -0
  17. package/dist/functions/platform/uniapp/detectProjectType.d.ts +20 -0
  18. package/dist/functions/platform/uniapp/detectProjectType.js +68 -0
  19. package/dist/functions/platform/uniapp/detectProjectType.js.map +1 -0
  20. package/dist/functions/platform/uniapp/parseManifest.d.ts +18 -0
  21. package/dist/functions/platform/uniapp/parseManifest.js +49 -0
  22. package/dist/functions/platform/uniapp/parseManifest.js.map +1 -0
  23. package/dist/functions/platform/uniapp/waitForPages.d.ts +7 -0
  24. package/dist/functions/platform/uniapp/waitForPages.js +20 -0
  25. package/dist/functions/platform/uniapp/waitForPages.js.map +1 -0
  26. package/dist/functions/string/visualizeRegexSteps.d.ts +39 -0
  27. package/dist/functions/string/visualizeRegexSteps.js +446 -0
  28. package/dist/functions/string/visualizeRegexSteps.js.map +1 -0
  29. package/dist/functions/utils/createI18n.d.ts +2 -0
  30. package/dist/functions/utils/createI18n.js +97 -0
  31. package/dist/functions/utils/createI18n.js.map +1 -0
  32. package/dist/functions/utils/formatString.d.ts +5 -0
  33. package/dist/functions/utils/formatString.js +9 -0
  34. package/dist/functions/utils/formatString.js.map +1 -0
  35. package/dist/hooks/usePermission.d.ts +7 -0
  36. package/dist/hooks/usePermission.js +123 -0
  37. package/dist/hooks/usePermission.js.map +1 -0
  38. package/dist/vue-hooks/dom/useKeyboard.d.ts +29 -0
  39. package/dist/vue-hooks/dom/useKeyboard.js +129 -0
  40. package/dist/vue-hooks/dom/useKeyboard.js.map +1 -0
  41. package/dist/vue-hooks/state/useFileUpload.d.ts +23 -0
  42. package/dist/vue-hooks/state/useFileUpload.js +93 -0
  43. package/dist/vue-hooks/state/useFileUpload.js.map +1 -0
  44. package/package.json +2 -5
  45. package/dist/functions/algorithm/lcsVisual.d.ts +0 -6
  46. package/dist/functions/algorithm/lcsVisual.js +0 -88
  47. package/dist/functions/algorithm/lcsVisual.js.map +0 -1
  48. package/dist/functions/algorithm/mergeSortVisual.d.ts +0 -5
  49. package/dist/functions/algorithm/mergeSortVisual.js +0 -103
  50. package/dist/functions/algorithm/mergeSortVisual.js.map +0 -1
  51. package/dist/functions/algorithm/nQueensVisual.d.ts +0 -14
  52. package/dist/functions/algorithm/nQueensVisual.js +0 -94
  53. package/dist/functions/algorithm/nQueensVisual.js.map +0 -1
  54. package/dist/functions/algorithm/numIslandsVisual.d.ts +0 -17
  55. package/dist/functions/algorithm/numIslandsVisual.js +0 -102
  56. package/dist/functions/algorithm/numIslandsVisual.js.map +0 -1
  57. package/dist/functions/algorithm/quickSortVisual.d.ts +0 -18
  58. package/dist/functions/algorithm/quickSortVisual.js +0 -104
  59. package/dist/functions/algorithm/quickSortVisual.js.map +0 -1
  60. package/dist/functions/browser/detectDevice.d.ts +0 -10
  61. package/dist/functions/browser/detectDevice.js +0 -49
  62. package/dist/functions/browser/detectDevice.js.map +0 -1
  63. package/dist/functions/cookie/getCookie.d.ts +0 -5
  64. package/dist/functions/cookie/getCookie.js +0 -14
  65. package/dist/functions/cookie/getCookie.js.map +0 -1
  66. package/dist/functions/cookie/removeCookie.d.ts +0 -8
  67. package/dist/functions/cookie/removeCookie.js +0 -12
  68. package/dist/functions/cookie/removeCookie.js.map +0 -1
  69. package/dist/functions/cookie/setCookie.d.ts +0 -11
  70. package/dist/functions/cookie/setCookie.js +0 -23
  71. package/dist/functions/cookie/setCookie.js.map +0 -1
  72. package/dist/functions/data-structures/EventEmitter.d.ts +0 -32
  73. package/dist/functions/data-structures/EventEmitter.js +0 -108
  74. package/dist/functions/data-structures/EventEmitter.js.map +0 -1
  75. package/dist/functions/data-structures/MyPromise.d.ts +0 -32
  76. package/dist/functions/data-structures/MyPromise.js +0 -254
  77. package/dist/functions/data-structures/MyPromise.js.map +0 -1
  78. package/dist/functions/reactive/useReactiveCookie.d.ts +0 -19
  79. package/dist/functions/reactive/useReactiveCookie.js +0 -84
  80. package/dist/functions/reactive/useReactiveCookie.js.map +0 -1
  81. package/dist/hooks/useClickOutside.d.ts +0 -12
  82. package/dist/hooks/useClickOutside.js +0 -16
  83. package/dist/hooks/useClickOutside.js.map +0 -1
  84. package/dist/hooks/useClipboard.d.ts +0 -20
  85. package/dist/hooks/useClipboard.js +0 -33
  86. package/dist/hooks/useClipboard.js.map +0 -1
  87. package/dist/hooks/useCounter.d.ts +0 -19
  88. package/dist/hooks/useCounter.js +0 -44
  89. package/dist/hooks/useCounter.js.map +0 -1
  90. package/dist/hooks/useEventListener.d.ts +0 -14
  91. package/dist/hooks/useEventListener.js +0 -18
  92. package/dist/hooks/useEventListener.js.map +0 -1
  93. package/dist/hooks/useInterval.d.ts +0 -19
  94. package/dist/hooks/useInterval.js +0 -33
  95. package/dist/hooks/useInterval.js.map +0 -1
  96. package/dist/hooks/useTimeout.d.ts +0 -20
  97. package/dist/hooks/useTimeout.js +0 -40
  98. package/dist/hooks/useTimeout.js.map +0 -1
  99. package/dist/hooks/useToggle.d.ts +0 -15
  100. package/dist/hooks/useToggle.js +0 -23
  101. package/dist/hooks/useToggle.js.map +0 -1
  102. package/dist/reactive/createGlobalState.d.ts +0 -2
  103. package/dist/reactive/createGlobalState.js +0 -11
  104. package/dist/reactive/createGlobalState.js.map +0 -1
  105. package/dist/reactive/createSharedComposable.d.ts +0 -2
  106. package/dist/reactive/createSharedComposable.js +0 -13
  107. package/dist/reactive/createSharedComposable.js.map +0 -1
  108. package/dist/reactive/errorManager.d.ts +0 -63
  109. package/dist/reactive/errorManager.js +0 -199
  110. package/dist/reactive/errorManager.js.map +0 -1
  111. package/dist/reactive/i18n.d.ts +0 -27
  112. package/dist/reactive/i18n.js +0 -119
  113. package/dist/reactive/i18n.js.map +0 -1
  114. package/dist/reactive/permission.d.ts +0 -40
  115. package/dist/reactive/permission.js +0 -189
  116. package/dist/reactive/permission.js.map +0 -1
  117. package/dist/reactive/pinia.d.ts +0 -52
  118. package/dist/reactive/pinia.js +0 -183
  119. package/dist/reactive/pinia.js.map +0 -1
  120. package/dist/reactive/useAltool.d.ts +0 -39
  121. package/dist/reactive/useAltool.js +0 -350
  122. package/dist/reactive/useAltool.js.map +0 -1
  123. package/dist/reactive/useCache.d.ts +0 -18
  124. package/dist/reactive/useCache.js +0 -82
  125. package/dist/reactive/useCache.js.map +0 -1
  126. package/dist/reactive/useLocalStorage.d.ts +0 -8
  127. package/dist/reactive/useLocalStorage.js +0 -101
  128. package/dist/reactive/useLocalStorage.js.map +0 -1
  129. package/dist/reactive/usePluginSystem.d.ts +0 -11
  130. package/dist/reactive/usePluginSystem.js +0 -34
  131. package/dist/reactive/usePluginSystem.js.map +0 -1
  132. package/dist/reactive/useSessionStorage.d.ts +0 -8
  133. package/dist/reactive/useSessionStorage.js +0 -101
  134. package/dist/reactive/useSessionStorage.js.map +0 -1
  135. package/dist/reactive/useStorage.d.ts +0 -13
  136. package/dist/reactive/useStorage.js +0 -62
  137. package/dist/reactive/useStorage.js.map +0 -1
  138. package/dist/reactive/useStorageWithIndexedDB.d.ts +0 -8
  139. package/dist/reactive/useStorageWithIndexedDB.js +0 -132
  140. package/dist/reactive/useStorageWithIndexedDB.js.map +0 -1
  141. package/dist/vue-hooks/state/useToken.d.ts +0 -36
  142. package/dist/vue-hooks/state/useToken.js +0 -121
  143. package/dist/vue-hooks/state/useToken.js.map +0 -1
@@ -1,88 +0,0 @@
1
- export function lcsVisual(str1, str2) {
2
- const steps = [];
3
- let stepNumber = 0;
4
- const m = str1.length;
5
- const n = str2.length;
6
- const dp = Array.from({ length: m + 1 }, () => Array(n + 1).fill(0));
7
- steps.push({
8
- stepNumber: stepNumber++,
9
- description: '初始化DP表',
10
- dpTable: dp.map(row => [...row])
11
- });
12
- for (let i = 1; i <= m; i++) {
13
- for (let j = 1; j <= n; j++) {
14
- steps.push({
15
- stepNumber: stepNumber++,
16
- description: `处理 str1[${i - 1}]='${str1[i - 1]}' 和 str2[${j - 1}]='${str2[j - 1]}'`,
17
- dpTable: dp.map(row => [...row]),
18
- currentCell: { row: i, col: j }
19
- });
20
- if (str1[i - 1] === str2[j - 1]) {
21
- dp[i][j] = dp[i - 1][j - 1] + 1;
22
- steps.push({
23
- stepNumber: stepNumber++,
24
- description: `字符相同!dp[${i}][${j}] = dp[${i - 1}][${j - 1}] + 1 = ${dp[i][j]}`,
25
- dpTable: dp.map(row => [...row]),
26
- currentCell: { row: i, col: j },
27
- dependencies: [{ row: i - 1, col: j - 1 }],
28
- currentValue: dp[i][j]
29
- });
30
- }
31
- else {
32
- dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);
33
- steps.push({
34
- stepNumber: stepNumber++,
35
- description: `字符不同,取最大值: dp[${i}][${j}] = max(${dp[i - 1][j]}, ${dp[i][j - 1]}) = ${dp[i][j]}`,
36
- dpTable: dp.map(row => [...row]),
37
- currentCell: { row: i, col: j },
38
- dependencies: [{ row: i - 1, col: j }, { row: i, col: j - 1 }],
39
- currentValue: dp[i][j]
40
- });
41
- }
42
- }
43
- }
44
- let i = m, j = n;
45
- const lcs = [];
46
- while (i > 0 && j > 0) {
47
- if (str1[i - 1] === str2[j - 1]) {
48
- lcs.unshift(str1[i - 1]);
49
- steps.push({
50
- stepNumber: stepNumber++,
51
- description: `回溯: 字符'${str1[i - 1]}'是LCS的一部分`,
52
- dpTable: dp.map(row => [...row]),
53
- currentCell: { row: i, col: j }
54
- });
55
- i--;
56
- j--;
57
- }
58
- else if (dp[i - 1][j] > dp[i][j - 1]) {
59
- steps.push({
60
- stepNumber: stepNumber++,
61
- description: `回溯: 向上移动`,
62
- dpTable: dp.map(row => [...row]),
63
- currentCell: { row: i, col: j }
64
- });
65
- i--;
66
- }
67
- else {
68
- steps.push({
69
- stepNumber: stepNumber++,
70
- description: `回溯: 向左移动`,
71
- dpTable: dp.map(row => [...row]),
72
- currentCell: { row: i, col: j }
73
- });
74
- j--;
75
- }
76
- }
77
- steps.push({
78
- stepNumber: stepNumber++,
79
- description: `LCS构建完成: "${lcs.join('')}", 长度 ${dp[m][n]}`,
80
- dpTable: dp.map(row => [...row])
81
- });
82
- return {
83
- steps,
84
- length: dp[m][n],
85
- sequence: lcs.join('')
86
- };
87
- }
88
- //# sourceMappingURL=lcsVisual.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lcsVisual.js","sourceRoot":"","sources":["../../../src/functions/algorithm/lcsVisual.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import type { ArrayVisualStep } from '../../../types/algorithm-visual';
2
- export declare function mergeSortVisual(arr: number[]): {
3
- steps: ArrayVisualStep[];
4
- result: number[];
5
- };
@@ -1,103 +0,0 @@
1
- export function mergeSortVisual(arr) {
2
- const steps = [];
3
- let stepNumber = 0;
4
- const result = [...arr];
5
- steps.push({
6
- stepNumber: stepNumber++,
7
- description: '开始归并排序',
8
- array: [...result],
9
- highlights: {}
10
- });
11
- function merge(arr, left, mid, right) {
12
- const leftArr = arr.slice(left, mid + 1);
13
- const rightArr = arr.slice(mid + 1, right + 1);
14
- steps.push({
15
- stepNumber: stepNumber++,
16
- description: `合并两个已排序数组: [${left}..${mid}] 和 [${mid + 1}..${right}]`,
17
- array: [...arr],
18
- highlights: { primary: [mid], secondary: Array.from({ length: right - left + 1 }, (_, i) => left + i) },
19
- range: { left, right }
20
- });
21
- let i = 0, j = 0, k = left;
22
- while (i < leftArr.length && j < rightArr.length) {
23
- steps.push({
24
- stepNumber: stepNumber++,
25
- description: `比较 ${leftArr[i]} 和 ${rightArr[j]}`,
26
- array: [...arr],
27
- highlights: { comparing: [left + i, mid + 1 + j] },
28
- range: { left, right }
29
- });
30
- if (leftArr[i] <= rightArr[j]) {
31
- arr[k] = leftArr[i];
32
- steps.push({
33
- stepNumber: stepNumber++,
34
- description: `选择 ${leftArr[i]},放入位置 ${k}`,
35
- array: [...arr],
36
- highlights: { completed: [k] },
37
- range: { left, right }
38
- });
39
- i++;
40
- }
41
- else {
42
- arr[k] = rightArr[j];
43
- steps.push({
44
- stepNumber: stepNumber++,
45
- description: `选择 ${rightArr[j]},放入位置 ${k}`,
46
- array: [...arr],
47
- highlights: { completed: [k] },
48
- range: { left, right }
49
- });
50
- j++;
51
- }
52
- k++;
53
- }
54
- while (i < leftArr.length) {
55
- arr[k] = leftArr[i];
56
- steps.push({
57
- stepNumber: stepNumber++,
58
- description: `复制剩余元素 ${leftArr[i]} 到位置 ${k}`,
59
- array: [...arr],
60
- highlights: { completed: [k] },
61
- range: { left, right }
62
- });
63
- i++;
64
- k++;
65
- }
66
- while (j < rightArr.length) {
67
- arr[k] = rightArr[j];
68
- steps.push({
69
- stepNumber: stepNumber++,
70
- description: `复制剩余元素 ${rightArr[j]} 到位置 ${k}`,
71
- array: [...arr],
72
- highlights: { completed: [k] },
73
- range: { left, right }
74
- });
75
- j++;
76
- k++;
77
- }
78
- }
79
- function mergeSortHelper(arr, left, right) {
80
- if (left >= right)
81
- return;
82
- const mid = Math.floor((left + right) / 2);
83
- steps.push({
84
- stepNumber: stepNumber++,
85
- description: `分割数组 [${left}..${right}] 为 [${left}..${mid}] 和 [${mid + 1}..${right}]`,
86
- array: [...arr],
87
- highlights: { primary: [mid] },
88
- range: { left, right }
89
- });
90
- mergeSortHelper(arr, left, mid);
91
- mergeSortHelper(arr, mid + 1, right);
92
- merge(arr, left, mid, right);
93
- }
94
- mergeSortHelper(result, 0, result.length - 1);
95
- steps.push({
96
- stepNumber: stepNumber++,
97
- description: '归并排序完成!',
98
- array: [...result],
99
- highlights: { completed: result.map((_, i) => i) }
100
- });
101
- return { steps, result };
102
- }
103
- //# sourceMappingURL=mergeSortVisual.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mergeSortVisual.js","sourceRoot":"","sources":["../../../src/functions/algorithm/mergeSortVisual.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- import type { BacktrackVisualStep } from '../../../types/algorithm-visual';
2
- export interface NQueensVisualStep extends BacktrackVisualStep {
3
- board: string[][];
4
- currentRow: number;
5
- tryingCol?: number;
6
- conflicts?: Array<{
7
- row: number;
8
- col: number;
9
- }>;
10
- }
11
- export declare function nQueensVisual(n: number): {
12
- steps: NQueensVisualStep[];
13
- solutions: string[][];
14
- };
@@ -1,94 +0,0 @@
1
- export function nQueensVisual(n) {
2
- const steps = [];
3
- let stepNumber = 0;
4
- const solutions = [];
5
- const board = Array.from({ length: n }, () => Array(n).fill('.'));
6
- const cols = new Set();
7
- const diag1 = new Set();
8
- const diag2 = new Set();
9
- steps.push({
10
- stepNumber: stepNumber++,
11
- description: `开始解决${n}皇后问题`,
12
- path: [],
13
- board: board.map(r => [...r]),
14
- currentRow: 0
15
- });
16
- function backtrack(row) {
17
- if (row === n) {
18
- solutions.push(board.map(r => r.join('')));
19
- steps.push({
20
- stepNumber: stepNumber++,
21
- description: `找到一个解决方案!(第${solutions.length}个)`,
22
- path: Array.from({ length: n }, (_, i) => board[i].indexOf('Q')),
23
- board: board.map(r => [...r]),
24
- currentRow: row,
25
- isBacktracking: false
26
- });
27
- return;
28
- }
29
- for (let col = 0; col < n; col++) {
30
- steps.push({
31
- stepNumber: stepNumber++,
32
- description: `第${row}行: 尝试在第${col}列放置皇后`,
33
- path: Array.from({ length: row }, (_, i) => board[i].indexOf('Q')),
34
- board: board.map(r => [...r]),
35
- currentRow: row,
36
- tryingCol: col
37
- });
38
- const hasConflict = cols.has(col) || diag1.has(row - col) || diag2.has(row + col);
39
- if (hasConflict) {
40
- const conflicts = [];
41
- for (let i = 0; i < row; i++) {
42
- const queenCol = board[i].indexOf('Q');
43
- if (queenCol === col || i - queenCol === row - col || i + queenCol === row + col) {
44
- conflicts.push({ row: i, col: queenCol });
45
- }
46
- }
47
- steps.push({
48
- stepNumber: stepNumber++,
49
- description: `冲突!该位置会与已放置的皇后冲突`,
50
- path: [],
51
- board: board.map(r => [...r]),
52
- currentRow: row,
53
- tryingCol: col,
54
- conflicts
55
- });
56
- continue;
57
- }
58
- board[row][col] = 'Q';
59
- cols.add(col);
60
- diag1.add(row - col);
61
- diag2.add(row + col);
62
- steps.push({
63
- stepNumber: stepNumber++,
64
- description: `在(${row}, ${col})放置皇后,继续下一行`,
65
- path: Array.from({ length: row + 1 }, (_, i) => board[i].indexOf('Q')),
66
- board: board.map(r => [...r]),
67
- currentRow: row
68
- });
69
- backtrack(row + 1);
70
- board[row][col] = '.';
71
- cols.delete(col);
72
- diag1.delete(row - col);
73
- diag2.delete(row + col);
74
- steps.push({
75
- stepNumber: stepNumber++,
76
- description: `回溯:移除(${row}, ${col})的皇后`,
77
- path: Array.from({ length: row }, (_, i) => board[i].indexOf('Q')),
78
- board: board.map(r => [...r]),
79
- currentRow: row,
80
- isBacktracking: true
81
- });
82
- }
83
- }
84
- backtrack(0);
85
- steps.push({
86
- stepNumber: stepNumber++,
87
- description: `完成!共找到${solutions.length}个解决方案`,
88
- path: [],
89
- board: board.map(r => [...r]),
90
- currentRow: n
91
- });
92
- return { steps, solutions };
93
- }
94
- //# sourceMappingURL=nQueensVisual.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nQueensVisual.js","sourceRoot":"","sources":["../../../src/functions/algorithm/nQueensVisual.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- import type { GraphVisualStep } from '../../../types/algorithm-visual';
2
- export interface IslandVisualStep extends GraphVisualStep {
3
- grid: string[][];
4
- currentPos?: {
5
- row: number;
6
- col: number;
7
- };
8
- islandCount: number;
9
- stack?: Array<{
10
- row: number;
11
- col: number;
12
- }>;
13
- }
14
- export declare function numIslandsVisual(grid: string[][]): {
15
- steps: IslandVisualStep[];
16
- count: number;
17
- };
@@ -1,102 +0,0 @@
1
- export function numIslandsVisual(grid) {
2
- const steps = [];
3
- let stepNumber = 0;
4
- const gridCopy = grid.map(row => [...row]);
5
- const m = gridCopy.length;
6
- const n = gridCopy[0].length;
7
- let count = 0;
8
- steps.push({
9
- stepNumber: stepNumber++,
10
- description: '开始搜索岛屿',
11
- graph: [],
12
- visited: [],
13
- grid: gridCopy.map(r => [...r]),
14
- islandCount: 0
15
- });
16
- function dfs(i, j, islandId) {
17
- if (i < 0 || i >= m || j < 0 || j >= n || gridCopy[i][j] === '0') {
18
- steps.push({
19
- stepNumber: stepNumber++,
20
- description: `位置(${i},${j})越界或是水域,返回`,
21
- graph: [],
22
- visited: [],
23
- grid: gridCopy.map(r => [...r]),
24
- currentPos: { row: i, col: j },
25
- islandCount: count
26
- });
27
- return;
28
- }
29
- steps.push({
30
- stepNumber: stepNumber++,
31
- description: `访问陆地(${i},${j}),标记为岛屿${islandId}的一部分`,
32
- graph: [],
33
- visited: [],
34
- grid: gridCopy.map(r => [...r]),
35
- currentPos: { row: i, col: j },
36
- islandCount: count
37
- });
38
- gridCopy[i][j] = '0';
39
- steps.push({
40
- stepNumber: stepNumber++,
41
- description: `标记(${i},${j})为已访问`,
42
- graph: [],
43
- visited: [],
44
- grid: gridCopy.map(r => [...r]),
45
- currentPos: { row: i, col: j },
46
- islandCount: count
47
- });
48
- const directions = [
49
- { name: '下', dr: 1, dc: 0 },
50
- { name: '上', dr: -1, dc: 0 },
51
- { name: '右', dr: 0, dc: 1 },
52
- { name: '左', dr: 0, dc: -1 }
53
- ];
54
- for (const dir of directions) {
55
- steps.push({
56
- stepNumber: stepNumber++,
57
- description: `从(${i},${j})向${dir.name}搜索`,
58
- graph: [],
59
- visited: [],
60
- grid: gridCopy.map(r => [...r]),
61
- currentPos: { row: i, col: j },
62
- islandCount: count
63
- });
64
- dfs(i + dir.dr, j + dir.dc, islandId);
65
- }
66
- }
67
- for (let i = 0; i < m; i++) {
68
- for (let j = 0; j < n; j++) {
69
- if (gridCopy[i][j] === '1') {
70
- count++;
71
- steps.push({
72
- stepNumber: stepNumber++,
73
- description: `发现新岛屿${count}!起点(${i},${j})`,
74
- graph: [],
75
- visited: [],
76
- grid: gridCopy.map(r => [...r]),
77
- currentPos: { row: i, col: j },
78
- islandCount: count
79
- });
80
- dfs(i, j, count);
81
- steps.push({
82
- stepNumber: stepNumber++,
83
- description: `岛屿${count}搜索完成`,
84
- graph: [],
85
- visited: [],
86
- grid: gridCopy.map(r => [...r]),
87
- islandCount: count
88
- });
89
- }
90
- }
91
- }
92
- steps.push({
93
- stepNumber: stepNumber++,
94
- description: `搜索完成!共找到${count}个岛屿`,
95
- graph: [],
96
- visited: [],
97
- grid: gridCopy.map(r => [...r]),
98
- islandCount: count
99
- });
100
- return { steps, count };
101
- }
102
- //# sourceMappingURL=numIslandsVisual.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"numIslandsVisual.js","sourceRoot":"","sources":["../../../src/functions/algorithm/numIslandsVisual.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- export interface SortStep {
2
- description: string;
3
- array: number[];
4
- highlights: {
5
- pivot?: number;
6
- comparing?: number[];
7
- swapping?: number[];
8
- sorted?: number[];
9
- };
10
- range?: {
11
- left: number;
12
- right: number;
13
- };
14
- }
15
- export declare function quickSortVisual(arr: number[]): {
16
- steps: SortStep[];
17
- result: number[];
18
- };
@@ -1,104 +0,0 @@
1
- export function quickSortVisual(arr) {
2
- const steps = [];
3
- const result = [...arr];
4
- steps.push({
5
- description: '开始排序',
6
- array: [...result],
7
- highlights: {}
8
- });
9
- function partition(arr, left, right) {
10
- const pivot = arr[right];
11
- const pivotIndex = right;
12
- steps.push({
13
- description: `选择基准值 arr[${right}] = ${pivot}`,
14
- array: [...arr],
15
- highlights: { pivot: right },
16
- range: { left, right }
17
- });
18
- let i = left - 1;
19
- for (let j = left; j < right; j++) {
20
- steps.push({
21
- description: `比较 arr[${j}] = ${arr[j]} 与基准值 ${pivot}`,
22
- array: [...arr],
23
- highlights: { pivot: pivotIndex, comparing: [j] },
24
- range: { left, right }
25
- });
26
- if (arr[j] <= pivot) {
27
- i++;
28
- if (i !== j) {
29
- steps.push({
30
- description: `交换 arr[${i}] = ${arr[i]} 与 arr[${j}] = ${arr[j]}`,
31
- array: [...arr],
32
- highlights: { pivot: pivotIndex, swapping: [i, j] },
33
- range: { left, right }
34
- });
35
- [arr[i], arr[j]] = [arr[j], arr[i]];
36
- steps.push({
37
- description: `交换后: arr[${i}] = ${arr[i]}, arr[${j}] = ${arr[j]}`,
38
- array: [...arr],
39
- highlights: { pivot: pivotIndex },
40
- range: { left, right }
41
- });
42
- }
43
- }
44
- }
45
- const newPivotIndex = i + 1;
46
- if (newPivotIndex !== right) {
47
- steps.push({
48
- description: `将基准值放到正确位置: 交换 arr[${newPivotIndex}] 与 arr[${right}]`,
49
- array: [...arr],
50
- highlights: { swapping: [newPivotIndex, right] },
51
- range: { left, right }
52
- });
53
- [arr[newPivotIndex], arr[right]] = [arr[right], arr[newPivotIndex]];
54
- steps.push({
55
- description: `基准值 ${pivot} 已就位于索引 ${newPivotIndex}`,
56
- array: [...arr],
57
- highlights: { sorted: [newPivotIndex] },
58
- range: { left, right }
59
- });
60
- }
61
- return newPivotIndex;
62
- }
63
- function quickSortHelper(arr, left, right) {
64
- if (left >= right) {
65
- if (left === right) {
66
- steps.push({
67
- description: `单个元素 arr[${left}] = ${arr[left]} 已有序`,
68
- array: [...arr],
69
- highlights: { sorted: [left] }
70
- });
71
- }
72
- return;
73
- }
74
- steps.push({
75
- description: `处理子数组 [${left}..${right}]`,
76
- array: [...arr],
77
- highlights: {},
78
- range: { left, right }
79
- });
80
- const pivotIndex = partition(arr, left, right);
81
- steps.push({
82
- description: `递归处理左半部分 [${left}..${pivotIndex - 1}]`,
83
- array: [...arr],
84
- highlights: {},
85
- range: { left, right: pivotIndex - 1 }
86
- });
87
- quickSortHelper(arr, left, pivotIndex - 1);
88
- steps.push({
89
- description: `递归处理右半部分 [${pivotIndex + 1}..${right}]`,
90
- array: [...arr],
91
- highlights: {},
92
- range: { left: pivotIndex + 1, right }
93
- });
94
- quickSortHelper(arr, pivotIndex + 1, right);
95
- }
96
- quickSortHelper(result, 0, result.length - 1);
97
- steps.push({
98
- description: '排序完成!',
99
- array: [...result],
100
- highlights: { sorted: result.map((_, i) => i) }
101
- });
102
- return { steps, result };
103
- }
104
- //# sourceMappingURL=quickSortVisual.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"quickSortVisual.js","sourceRoot":"","sources":["../../../src/functions/algorithm/quickSortVisual.ts"],"names":[],"mappings":"AA0BA,MAAM,UAAU,eAAe,CAAC,GAAa;IAC3C,MAAM,KAAK,GAAe,EAAE,CAAA;IAC5B,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,CAAA;IAEvB,KAAK,CAAC,IAAI,CAAC;QACT,WAAW,EAAE,MAAM;QACnB,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC;QAClB,UAAU,EAAE,EAAE;KACf,CAAC,CAAA;IAEF,SAAS,SAAS,CAAC,GAAa,EAAE,IAAY,EAAE,KAAa;QAC3D,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAA;QACxB,MAAM,UAAU,GAAG,KAAK,CAAA;QAExB,KAAK,CAAC,IAAI,CAAC;YACT,WAAW,EAAE,aAAa,KAAK,OAAO,KAAK,EAAE;YAC7C,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;YACf,UAAU,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;YAC5B,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;SACvB,CAAC,CAAA;QAEF,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,CAAA;QAEhB,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC;gBACT,WAAW,EAAE,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,SAAS,KAAK,EAAE;gBACrD,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;gBACf,UAAU,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE;gBACjD,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;aACvB,CAAC,CAAA;YAEF,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;gBACpB,CAAC,EAAE,CAAA;gBACH,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACZ,KAAK,CAAC,IAAI,CAAC;wBACT,WAAW,EAAE,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE;wBAC/D,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;wBACf,UAAU,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;wBACnD,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;qBACvB,CAAC,CAED;oBAAA,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;oBAEpC,KAAK,CAAC,IAAI,CAAC;wBACT,WAAW,EAAE,YAAY,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE;wBAChE,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;wBACf,UAAU,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE;wBACjC,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;qBACvB,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,aAAa,GAAG,CAAC,GAAG,CAAC,CAAA;QAC3B,IAAI,aAAa,KAAK,KAAK,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC;gBACT,WAAW,EAAE,sBAAsB,aAAa,WAAW,KAAK,GAAG;gBACnE,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;gBACf,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE;gBAChD,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;aACvB,CAAC,CAED;YAAA,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAA;YAEpE,KAAK,CAAC,IAAI,CAAC;gBACT,WAAW,EAAE,OAAO,KAAK,WAAW,aAAa,EAAE;gBACnD,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;gBACf,UAAU,EAAE,EAAE,MAAM,EAAE,CAAC,aAAa,CAAC,EAAE;gBACvC,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;aACvB,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,aAAa,CAAA;IACtB,CAAC;IAED,SAAS,eAAe,CAAC,GAAa,EAAE,IAAY,EAAE,KAAa;QACjE,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;YAClB,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;gBACnB,KAAK,CAAC,IAAI,CAAC;oBACT,WAAW,EAAE,YAAY,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM;oBACnD,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;oBACf,UAAU,EAAE,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;iBAC/B,CAAC,CAAA;YACJ,CAAC;YACD,OAAM;QACR,CAAC;QAED,KAAK,CAAC,IAAI,CAAC;YACT,WAAW,EAAE,UAAU,IAAI,KAAK,KAAK,GAAG;YACxC,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;YACf,UAAU,EAAE,EAAE;YACd,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;SACvB,CAAC,CAAA;QAEF,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;QAE9C,KAAK,CAAC,IAAI,CAAC;YACT,WAAW,EAAE,aAAa,IAAI,KAAK,UAAU,GAAG,CAAC,GAAG;YACpD,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;YACf,UAAU,EAAE,EAAE;YACd,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,GAAG,CAAC,EAAE;SACvC,CAAC,CAAA;QACF,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,GAAG,CAAC,CAAC,CAAA;QAE1C,KAAK,CAAC,IAAI,CAAC;YACT,WAAW,EAAE,aAAa,UAAU,GAAG,CAAC,KAAK,KAAK,GAAG;YACrD,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;YACf,UAAU,EAAE,EAAE;YACd,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,GAAG,CAAC,EAAE,KAAK,EAAE;SACvC,CAAC,CAAA;QACF,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,EAAE,KAAK,CAAC,CAAA;IAC7C,CAAC;IAED,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAE7C,KAAK,CAAC,IAAI,CAAC;QACT,WAAW,EAAE,OAAO;QACpB,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC;QAClB,UAAU,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;KAChD,CAAC,CAAA;IAEF,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;AAC1B,CAAC"}
@@ -1,10 +0,0 @@
1
- import type { Navigator } from '../../../references/browser.d';
2
- export interface DetectDeviceDeps {
3
- userAgent: Navigator['userAgent'];
4
- }
5
- export interface DeviceInfo {
6
- type: 'mobile' | 'tablet' | 'desktop';
7
- vendor: string;
8
- model: string;
9
- }
10
- export declare function detectDevice(deps: DetectDeviceDeps): DeviceInfo;
@@ -1,49 +0,0 @@
1
- export function detectDevice(deps) {
2
- const ua = deps.userAgent;
3
- let type = 'desktop';
4
- let vendor = 'Unknown';
5
- let model = 'Unknown';
6
- if (/iPad/.test(ua)) {
7
- type = 'tablet';
8
- vendor = 'Apple';
9
- model = 'iPad';
10
- }
11
- else if (/iPhone/.test(ua)) {
12
- type = 'mobile';
13
- vendor = 'Apple';
14
- model = 'iPhone';
15
- }
16
- else if (/Android/.test(ua)) {
17
- type = /Mobile/.test(ua) ? 'mobile' : 'tablet';
18
- vendor = 'Android';
19
- const modelMatch = ua.match(/Android.*;\s*([^)]+)\s*Build/);
20
- if (modelMatch) {
21
- model = modelMatch[1].trim();
22
- }
23
- }
24
- else if (/Windows Phone/.test(ua)) {
25
- type = 'mobile';
26
- vendor = 'Microsoft';
27
- model = 'Windows Phone';
28
- }
29
- if (type === 'desktop') {
30
- if (/Mac/.test(ua)) {
31
- vendor = 'Apple';
32
- model = 'Macintosh';
33
- }
34
- else if (/Windows/.test(ua)) {
35
- vendor = 'Microsoft';
36
- model = 'Windows PC';
37
- }
38
- else if (/Linux/.test(ua)) {
39
- vendor = 'Linux';
40
- model = 'Linux PC';
41
- }
42
- }
43
- return {
44
- type,
45
- vendor,
46
- model
47
- };
48
- }
49
- //# sourceMappingURL=detectDevice.js.map