zcw-shared 1.29.0 → 1.31.0
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.
- package/README.md +87 -55
- package/dist/functions/platform/tencent-cloud/deploy.tcb.d.ts +13 -0
- package/dist/functions/platform/tencent-cloud/deploy.tcb.js +46 -0
- package/dist/functions/platform/tencent-cloud/deploy.tcb.js.map +1 -0
- package/dist/functions/platform/tencent-cloud/getSecret.d.ts +4 -0
- package/dist/functions/platform/tencent-cloud/getSecret.js +19 -0
- package/dist/functions/platform/tencent-cloud/getSecret.js.map +1 -0
- package/dist/functions/platform/uniapp/app-plus/buildAndroidApp.d.ts +27 -0
- package/dist/functions/platform/uniapp/app-plus/buildAndroidApp.js +287 -0
- package/dist/functions/platform/uniapp/app-plus/buildAndroidApp.js.map +1 -0
- package/dist/functions/platform/uniapp/build.d.ts +21 -0
- package/dist/functions/platform/uniapp/build.js +83 -0
- package/dist/functions/platform/uniapp/build.js.map +1 -0
- package/dist/functions/platform/uniapp/detectAndroidProjectStructure.d.ts +11 -0
- package/dist/functions/platform/uniapp/detectAndroidProjectStructure.js +30 -0
- package/dist/functions/platform/uniapp/detectAndroidProjectStructure.js.map +1 -0
- package/dist/functions/platform/uniapp/detectProjectType.d.ts +20 -0
- package/dist/functions/platform/uniapp/detectProjectType.js +68 -0
- package/dist/functions/platform/uniapp/detectProjectType.js.map +1 -0
- package/dist/functions/platform/uniapp/parseManifest.d.ts +18 -0
- package/dist/functions/platform/uniapp/parseManifest.js +49 -0
- package/dist/functions/platform/uniapp/parseManifest.js.map +1 -0
- package/dist/functions/platform/uniapp/waitForPages.d.ts +7 -0
- package/dist/functions/platform/uniapp/waitForPages.js +20 -0
- package/dist/functions/platform/uniapp/waitForPages.js.map +1 -0
- package/dist/functions/string/visualizeRegexSteps.d.ts +39 -0
- package/dist/functions/string/visualizeRegexSteps.js +446 -0
- package/dist/functions/string/visualizeRegexSteps.js.map +1 -0
- package/dist/functions/utils/createI18n.d.ts +2 -0
- package/dist/functions/utils/createI18n.js +97 -0
- package/dist/functions/utils/createI18n.js.map +1 -0
- package/dist/functions/utils/formatString.d.ts +5 -0
- package/dist/functions/utils/formatString.js +9 -0
- package/dist/functions/utils/formatString.js.map +1 -0
- package/dist/functions/vue/dynamicMount.d.ts +6 -4
- package/dist/functions/vue/isVNode.d.ts +1 -1
- package/dist/functions/vue/isVueComponent.d.ts +1 -1
- package/dist/hooks/usePermission.d.ts +7 -0
- package/dist/hooks/usePermission.js +123 -0
- package/dist/hooks/usePermission.js.map +1 -0
- package/dist/vue-hooks/browser/useBattery.d.ts +1 -1
- package/dist/vue-hooks/browser/useBluetooth.d.ts +1 -1
- package/dist/vue-hooks/browser/useCamera.d.ts +1 -1
- package/dist/vue-hooks/browser/useClipboard.d.ts +1 -1
- package/dist/vue-hooks/browser/useFileUpload.d.ts +3 -2
- package/dist/vue-hooks/browser/useFileUpload.js +12 -1
- package/dist/vue-hooks/browser/useFileUpload.js.map +1 -1
- package/dist/vue-hooks/browser/useFullscreen.d.ts +1 -1
- package/dist/vue-hooks/browser/useGamepad.d.ts +1 -1
- package/dist/vue-hooks/browser/useGeolocation.d.ts +1 -1
- package/dist/vue-hooks/browser/useMediaSession.d.ts +1 -1
- package/dist/vue-hooks/browser/useMicrophone.d.ts +1 -1
- package/dist/vue-hooks/browser/useNetwork.d.ts +1 -1
- package/dist/vue-hooks/browser/useOrientation.d.ts +1 -1
- package/dist/vue-hooks/browser/usePageVisibility.d.ts +1 -1
- package/dist/vue-hooks/browser/useScreenOrientation.d.ts +1 -1
- package/dist/vue-hooks/browser/useScreenWakeLock.d.ts +1 -1
- package/dist/vue-hooks/browser/useShare.d.ts +1 -1
- package/dist/vue-hooks/browser/useVibration.d.ts +1 -1
- package/dist/vue-hooks/dom/useAutoUpdate.d.ts +1 -1
- package/dist/vue-hooks/dom/useClickOutside.d.ts +1 -1
- package/dist/vue-hooks/dom/useDraggable.d.ts +4 -4
- package/dist/vue-hooks/dom/useEventListener.d.ts +1 -1
- package/dist/vue-hooks/dom/useKeyboard.d.ts +29 -0
- package/dist/vue-hooks/dom/useKeyboard.js +129 -0
- package/dist/vue-hooks/dom/useKeyboard.js.map +1 -0
- package/dist/vue-hooks/dom/useResizable.d.ts +8 -3
- package/dist/vue-hooks/history/useDebouncedRefHistory.d.ts +1 -1
- package/dist/vue-hooks/history/useManualRefHistory.d.ts +1 -1
- package/dist/vue-hooks/history/useRefHistory.d.ts +1 -1
- package/dist/vue-hooks/state/injectLocal.d.ts +1 -1
- package/dist/vue-hooks/state/provideLocal.d.ts +1 -1
- package/dist/vue-hooks/state/useAsyncState.d.ts +1 -1
- package/dist/vue-hooks/state/useCounter.d.ts +1 -1
- package/dist/vue-hooks/state/useFileUpload.d.ts +23 -0
- package/dist/vue-hooks/state/useFileUpload.js +93 -0
- package/dist/vue-hooks/state/useFileUpload.js.map +1 -0
- package/dist/vue-hooks/state/useToggle.d.ts +1 -1
- package/dist/vue-hooks/time/useInterval.d.ts +1 -1
- package/dist/vue-hooks/time/useTimeout.d.ts +1 -1
- package/dist/vue-hooks/worker/useWebWorker.d.ts +4 -4
- package/dist/vue-hooks/worker/useWorkerFunction.d.ts +4 -4
- package/dist/vue-hooks/worker/useWorkerPool.d.ts +4 -4
- package/package.json +1 -1
- package/types/vue.d.ts +1 -1
- package/dist/functions/algorithm/lcsVisual.d.ts +0 -6
- package/dist/functions/algorithm/lcsVisual.js +0 -88
- package/dist/functions/algorithm/lcsVisual.js.map +0 -1
- package/dist/functions/algorithm/mergeSortVisual.d.ts +0 -5
- package/dist/functions/algorithm/mergeSortVisual.js +0 -103
- package/dist/functions/algorithm/mergeSortVisual.js.map +0 -1
- package/dist/functions/algorithm/nQueensVisual.d.ts +0 -14
- package/dist/functions/algorithm/nQueensVisual.js +0 -94
- package/dist/functions/algorithm/nQueensVisual.js.map +0 -1
- package/dist/functions/algorithm/numIslandsVisual.d.ts +0 -17
- package/dist/functions/algorithm/numIslandsVisual.js +0 -102
- package/dist/functions/algorithm/numIslandsVisual.js.map +0 -1
- package/dist/functions/algorithm/quickSortVisual.d.ts +0 -18
- package/dist/functions/algorithm/quickSortVisual.js +0 -104
- package/dist/functions/algorithm/quickSortVisual.js.map +0 -1
- package/dist/functions/browser/detectDevice.d.ts +0 -10
- package/dist/functions/browser/detectDevice.js +0 -49
- package/dist/functions/browser/detectDevice.js.map +0 -1
- package/dist/functions/cookie/getCookie.d.ts +0 -5
- package/dist/functions/cookie/getCookie.js +0 -14
- package/dist/functions/cookie/getCookie.js.map +0 -1
- package/dist/functions/cookie/removeCookie.d.ts +0 -8
- package/dist/functions/cookie/removeCookie.js +0 -12
- package/dist/functions/cookie/removeCookie.js.map +0 -1
- package/dist/functions/cookie/setCookie.d.ts +0 -11
- package/dist/functions/cookie/setCookie.js +0 -23
- package/dist/functions/cookie/setCookie.js.map +0 -1
- package/dist/functions/data-structures/EventEmitter.d.ts +0 -32
- package/dist/functions/data-structures/EventEmitter.js +0 -108
- package/dist/functions/data-structures/EventEmitter.js.map +0 -1
- package/dist/functions/data-structures/MyPromise.d.ts +0 -32
- package/dist/functions/data-structures/MyPromise.js +0 -254
- package/dist/functions/data-structures/MyPromise.js.map +0 -1
- package/dist/functions/reactive/useReactiveCookie.d.ts +0 -19
- package/dist/functions/reactive/useReactiveCookie.js +0 -84
- package/dist/functions/reactive/useReactiveCookie.js.map +0 -1
- package/dist/hooks/useClickOutside.d.ts +0 -12
- package/dist/hooks/useClickOutside.js +0 -16
- package/dist/hooks/useClickOutside.js.map +0 -1
- package/dist/hooks/useClipboard.d.ts +0 -20
- package/dist/hooks/useClipboard.js +0 -33
- package/dist/hooks/useClipboard.js.map +0 -1
- package/dist/hooks/useCounter.d.ts +0 -19
- package/dist/hooks/useCounter.js +0 -44
- package/dist/hooks/useCounter.js.map +0 -1
- package/dist/hooks/useEventListener.d.ts +0 -14
- package/dist/hooks/useEventListener.js +0 -18
- package/dist/hooks/useEventListener.js.map +0 -1
- package/dist/hooks/useInterval.d.ts +0 -19
- package/dist/hooks/useInterval.js +0 -33
- package/dist/hooks/useInterval.js.map +0 -1
- package/dist/hooks/useTimeout.d.ts +0 -20
- package/dist/hooks/useTimeout.js +0 -40
- package/dist/hooks/useTimeout.js.map +0 -1
- package/dist/hooks/useToggle.d.ts +0 -15
- package/dist/hooks/useToggle.js +0 -23
- package/dist/hooks/useToggle.js.map +0 -1
- package/dist/reactive/createGlobalState.d.ts +0 -2
- package/dist/reactive/createGlobalState.js +0 -11
- package/dist/reactive/createGlobalState.js.map +0 -1
- package/dist/reactive/createSharedComposable.d.ts +0 -2
- package/dist/reactive/createSharedComposable.js +0 -13
- package/dist/reactive/createSharedComposable.js.map +0 -1
- package/dist/reactive/errorManager.d.ts +0 -63
- package/dist/reactive/errorManager.js +0 -199
- package/dist/reactive/errorManager.js.map +0 -1
- package/dist/reactive/i18n.d.ts +0 -27
- package/dist/reactive/i18n.js +0 -119
- package/dist/reactive/i18n.js.map +0 -1
- package/dist/reactive/permission.d.ts +0 -40
- package/dist/reactive/permission.js +0 -189
- package/dist/reactive/permission.js.map +0 -1
- package/dist/reactive/pinia.d.ts +0 -52
- package/dist/reactive/pinia.js +0 -183
- package/dist/reactive/pinia.js.map +0 -1
- package/dist/reactive/useAltool.d.ts +0 -39
- package/dist/reactive/useAltool.js +0 -350
- package/dist/reactive/useAltool.js.map +0 -1
- package/dist/reactive/useCache.d.ts +0 -18
- package/dist/reactive/useCache.js +0 -82
- package/dist/reactive/useCache.js.map +0 -1
- package/dist/reactive/useLocalStorage.d.ts +0 -8
- package/dist/reactive/useLocalStorage.js +0 -101
- package/dist/reactive/useLocalStorage.js.map +0 -1
- package/dist/reactive/usePluginSystem.d.ts +0 -11
- package/dist/reactive/usePluginSystem.js +0 -34
- package/dist/reactive/usePluginSystem.js.map +0 -1
- package/dist/reactive/useSessionStorage.d.ts +0 -8
- package/dist/reactive/useSessionStorage.js +0 -101
- package/dist/reactive/useSessionStorage.js.map +0 -1
- package/dist/reactive/useStorage.d.ts +0 -13
- package/dist/reactive/useStorage.js +0 -62
- package/dist/reactive/useStorage.js.map +0 -1
- package/dist/reactive/useStorageWithIndexedDB.d.ts +0 -8
- package/dist/reactive/useStorageWithIndexedDB.js +0 -132
- package/dist/reactive/useStorageWithIndexedDB.js.map +0 -1
- package/references/vue.d.ts +0 -242
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Ref } from '../../../references/vue.d';
|
|
2
|
+
import type { VueCompositionAPI } from '../../../types/vue.d';
|
|
3
|
+
import type { UploadFile, BeforeUploadHandler, UploadHandler, AfterUploadHandler } from '../../../types/file-upload.d';
|
|
4
|
+
import type { File } from '../../../references/browser.d';
|
|
5
|
+
export interface UseFileUploadEnvironment {
|
|
6
|
+
vue: Pick<Required<VueCompositionAPI>, 'ref' | 'shallowRef' | 'watch'>;
|
|
7
|
+
}
|
|
8
|
+
export interface UseFileUploadOptions {
|
|
9
|
+
fileList?: UploadFile[];
|
|
10
|
+
maxCount?: number;
|
|
11
|
+
beforeUpload?: BeforeUploadHandler;
|
|
12
|
+
upload?: UploadHandler;
|
|
13
|
+
afterUpload?: AfterUploadHandler;
|
|
14
|
+
}
|
|
15
|
+
export interface UseFileUploadReturn {
|
|
16
|
+
readonly fileList: Ref<UploadFile[]>;
|
|
17
|
+
readonly: (list: UploadFile[]) => void;
|
|
18
|
+
appendFileAt: (file: UploadFile, index?: number) => void;
|
|
19
|
+
replaceFileAt: (file: UploadFile, index: number) => void;
|
|
20
|
+
addFile: (file: File) => Promise<void>;
|
|
21
|
+
}
|
|
22
|
+
export declare function useFileUpload(options: UseFileUploadOptions, env: UseFileUploadEnvironment): UseFileUploadReturn;
|
|
23
|
+
export default useFileUpload;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
export function useFileUpload(options, env) {
|
|
2
|
+
const { fileList: initialFileList = [], maxCount, beforeUpload, upload, afterUpload } = options;
|
|
3
|
+
const fileList = env.vue.shallowRef(initialFileList);
|
|
4
|
+
function readonly(list) {
|
|
5
|
+
fileList.value = list;
|
|
6
|
+
}
|
|
7
|
+
function checkMaxCount() {
|
|
8
|
+
if (maxCount !== undefined && fileList.value.length >= maxCount) {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
function generateUid() {
|
|
14
|
+
return `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
|
15
|
+
}
|
|
16
|
+
function appendFileAt(file, index) {
|
|
17
|
+
if (!checkMaxCount()) {
|
|
18
|
+
throw new Error(`文件数量已达到最大限制 ${maxCount}`);
|
|
19
|
+
}
|
|
20
|
+
if (index === undefined || index === null) {
|
|
21
|
+
fileList.value = [...fileList.value, file];
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
if (index < 0 || index > fileList.value.length) {
|
|
25
|
+
throw new Error(`索引 ${index} 超出范围`);
|
|
26
|
+
}
|
|
27
|
+
const newList = [...fileList.value];
|
|
28
|
+
newList.splice(index, 0, file);
|
|
29
|
+
fileList.value = newList;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function replaceFileAt(file, index) {
|
|
33
|
+
if (index < 0 || index >= fileList.value.length) {
|
|
34
|
+
throw new Error(`索引 ${index} 超出范围`);
|
|
35
|
+
}
|
|
36
|
+
const newList = [...fileList.value];
|
|
37
|
+
newList[index] = file;
|
|
38
|
+
fileList.value = newList;
|
|
39
|
+
}
|
|
40
|
+
async function addFile(file) {
|
|
41
|
+
if (!checkMaxCount()) {
|
|
42
|
+
throw new Error(`文件数量已达到最大限制 ${maxCount}`);
|
|
43
|
+
}
|
|
44
|
+
let processedFile = file;
|
|
45
|
+
if (beforeUpload) {
|
|
46
|
+
processedFile = await beforeUpload(file);
|
|
47
|
+
}
|
|
48
|
+
if (processedFile === false) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const finalFile = (processedFile || file);
|
|
52
|
+
const uploadFile = {
|
|
53
|
+
uid: generateUid(),
|
|
54
|
+
file: finalFile,
|
|
55
|
+
state: 'ready'
|
|
56
|
+
};
|
|
57
|
+
appendFileAt(uploadFile);
|
|
58
|
+
if (!upload) {
|
|
59
|
+
uploadFile.state = 'done';
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
try {
|
|
63
|
+
uploadFile.state = 'uploading';
|
|
64
|
+
const result = await upload(finalFile);
|
|
65
|
+
if (result) {
|
|
66
|
+
uploadFile.onlinePreview = result;
|
|
67
|
+
}
|
|
68
|
+
uploadFile.state = 'done';
|
|
69
|
+
if (afterUpload) {
|
|
70
|
+
await afterUpload(finalFile, result);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
uploadFile.state = 'failed';
|
|
75
|
+
throw error;
|
|
76
|
+
}
|
|
77
|
+
finally {
|
|
78
|
+
const currentIndex = fileList.value.findIndex(item => item.uid === uploadFile.uid);
|
|
79
|
+
if (currentIndex !== -1) {
|
|
80
|
+
replaceFileAt(uploadFile, currentIndex);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
fileList: fileList,
|
|
86
|
+
readonly,
|
|
87
|
+
appendFileAt,
|
|
88
|
+
replaceFileAt,
|
|
89
|
+
addFile
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
export default useFileUpload;
|
|
93
|
+
//# sourceMappingURL=useFileUpload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFileUpload.js","sourceRoot":"","sources":["../../../src/vue-hooks/state/useFileUpload.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Transferable, WorkerConstructor } from '../../../references/worker.d';
|
|
2
2
|
import type { setTimeout, clearTimeout } from '../../../references/timer.d';
|
|
3
|
-
import type { Ref } from '
|
|
3
|
+
import type { Ref } from 'vue';
|
|
4
4
|
import type { WebWorkerOptions, WebWorkerResult } from '../../../types/worker';
|
|
5
5
|
export interface WebWorkerDeps {
|
|
6
6
|
Worker: WorkerConstructor;
|
|
@@ -9,9 +9,9 @@ export interface WebWorkerDeps {
|
|
|
9
9
|
ref: <T>(value: T) => Ref<T>;
|
|
10
10
|
}
|
|
11
11
|
export default function useWebWorker(deps: WebWorkerDeps, options: WebWorkerOptions): {
|
|
12
|
-
isReady: Ref<boolean>;
|
|
13
|
-
isLoading: Ref<boolean>;
|
|
14
|
-
error: Ref<Error | null>;
|
|
12
|
+
isReady: Ref<boolean, boolean>;
|
|
13
|
+
isLoading: Ref<boolean, boolean>;
|
|
14
|
+
error: Ref<Error | null, Error | null>;
|
|
15
15
|
postMessage: <T>(data: unknown, transfer?: Transferable[]) => Promise<WebWorkerResult<T>>;
|
|
16
16
|
postMessages: <T>(messages: any[], transfer?: Transferable[][]) => Promise<WebWorkerResult<T>[]>;
|
|
17
17
|
terminate: () => void;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Window } from '../../../references/browser.d';
|
|
2
2
|
import type { WorkerConstructor } from '../../../references/worker.d';
|
|
3
3
|
import type { setTimeout, clearTimeout } from '../../../references/timer.d';
|
|
4
|
-
import type { Ref } from '
|
|
4
|
+
import type { Ref } from 'vue';
|
|
5
5
|
import type { WorkerFunction, WorkerFunctionOptions, WorkerFunctionResult } from '../../../types/worker';
|
|
6
6
|
export interface WorkerFunctionDeps {
|
|
7
7
|
Worker: WorkerConstructor;
|
|
@@ -12,9 +12,9 @@ export interface WorkerFunctionDeps {
|
|
|
12
12
|
ref: <T>(value: T) => Ref<T>;
|
|
13
13
|
}
|
|
14
14
|
export default function useWorkerFunction<T extends any[], R>(deps: WorkerFunctionDeps, options: WorkerFunctionOptions, fn: WorkerFunction<T, R>): {
|
|
15
|
-
isReady: Ref<boolean>;
|
|
16
|
-
isLoading: Ref<boolean>;
|
|
17
|
-
error: Ref<Error | null>;
|
|
15
|
+
isReady: Ref<boolean, boolean>;
|
|
16
|
+
isLoading: Ref<boolean, boolean>;
|
|
17
|
+
error: Ref<Error | null, Error | null>;
|
|
18
18
|
execute: (...args: T) => Promise<WorkerFunctionResult<R>>;
|
|
19
19
|
terminate: () => void;
|
|
20
20
|
getStatus: () => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { WorkerConstructor } from '../../../references/worker.d';
|
|
2
2
|
import type { setTimeout, clearTimeout, setInterval, clearInterval } from '../../../references/timer.d';
|
|
3
|
-
import type { Ref } from '
|
|
3
|
+
import type { Ref } from 'vue';
|
|
4
4
|
import type { WebWorkerOptions, WorkerTask, WorkerPoolResult, WorkerPoolStats } from '../../../types/worker';
|
|
5
5
|
export interface WorkerPoolDeps {
|
|
6
6
|
Worker: WorkerConstructor;
|
|
@@ -18,9 +18,9 @@ export default function useWorkerPool(deps: WorkerPoolDeps, options: WebWorkerOp
|
|
|
18
18
|
minPoolSize?: number;
|
|
19
19
|
maxPoolSize?: number;
|
|
20
20
|
}): {
|
|
21
|
-
isReady: Ref<boolean>;
|
|
22
|
-
isLoading: Ref<boolean>;
|
|
23
|
-
error: Ref<Error | null>;
|
|
21
|
+
isReady: Ref<boolean, boolean>;
|
|
22
|
+
isLoading: Ref<boolean, boolean>;
|
|
23
|
+
error: Ref<Error | null, Error | null>;
|
|
24
24
|
execute: <T>(task: WorkerTask) => Promise<WorkerPoolResult<T>>;
|
|
25
25
|
executeBatch: <T>(tasks: WorkerTask[]) => Promise<WorkerPoolResult<T>[]>;
|
|
26
26
|
cancelTask: (taskId: number) => boolean;
|
package/package.json
CHANGED
package/types/vue.d.ts
CHANGED
|
@@ -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,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
|
-
};
|