refactor(build): migrate to TypeScript path aliases and update esbuild to v0.25.9

Replace relative imports (../../../) with TypeScript path aliases (@/)
throughout the codebase for improved readability and maintainability.

- Configure path alias in tsconfig.json with @ mapping to src/
- Update esbuild from v0.13.12 to v0.25.9 for modern features
- Add alias configuration to esbuild.config.mjs for build support
- Refactor build configuration to use context API for watch mode
- Update all component and utility imports to use @/ prefix
- Fix incorrect CSS import paths in habit and settings components
- Maintain consistent import structure across 148 files

This change simplifies import statements, makes the codebase more
maintainable by avoiding deeply nested relative paths, and modernizes
the build toolchain.
This commit is contained in:
Quorafind 2025-08-28 14:02:26 +08:00
parent e551a6b9eb
commit 77dd5f5da5
156 changed files with 936 additions and 886 deletions

View file

@ -126,58 +126,72 @@ const copyManifestPlugin = {
},
};
esbuild
.build({
banner: {
js: banner,
},
minify: prod ? true : false,
entryPoints: ["src/index.ts"],
plugins: [
inlineWorkerPlugin({ workerName: "Task Genius Indexer" }),
renamePluginWithDir,
cssSettingsPluginWithDir,
copyManifestPlugin,
],
bundle: true,
external: [
"obsidian",
"electron",
"codemirror",
"@codemirror/autocomplete",
"@codemirror/closebrackets",
"@codemirror/collab",
"@codemirror/commands",
"@codemirror/comment",
"@codemirror/fold",
"@codemirror/gutter",
"@codemirror/highlight",
"@codemirror/history",
"@codemirror/language",
"@codemirror/lint",
"@codemirror/matchbrackets",
"@codemirror/panel",
"@codemirror/rangeset",
"@codemirror/rectangular-selection",
"@codemirror/search",
"@codemirror/state",
"@codemirror/stream-parser",
"@codemirror/text",
"@codemirror/tooltip",
"@codemirror/view",
"@lezer/common",
"@lezer/lr",
"@lezer/highlight",
"obsidian-typings",
...builtins,
],
format: "cjs",
watch: !prod,
target: "es2018",
logLevel: "info",
sourcemap: prod ? false : "inline",
treeShaking: true,
outfile: path.join(outDir, "main.js"),
pure: prod ? ["console.log"] : [],
})
.catch(() => process.exit(1));
const buildOptions = {
banner: {
js: banner,
},
minify: prod ? true : false,
entryPoints: ["src/index.ts"],
plugins: [
inlineWorkerPlugin({ workerName: "Task Genius Indexer" }),
renamePluginWithDir,
cssSettingsPluginWithDir,
copyManifestPlugin,
],
bundle: true,
alias: {
"@": path.resolve(process.cwd(), "src"),
},
external: [
"obsidian",
"electron",
"codemirror",
"@codemirror/autocomplete",
"@codemirror/closebrackets",
"@codemirror/collab",
"@codemirror/commands",
"@codemirror/comment",
"@codemirror/fold",
"@codemirror/gutter",
"@codemirror/highlight",
"@codemirror/history",
"@codemirror/language",
"@codemirror/lint",
"@codemirror/matchbrackets",
"@codemirror/panel",
"@codemirror/rangeset",
"@codemirror/rectangular-selection",
"@codemirror/search",
"@codemirror/state",
"@codemirror/stream-parser",
"@codemirror/text",
"@codemirror/tooltip",
"@codemirror/view",
"@lezer/common",
"@lezer/lr",
"@lezer/highlight",
"obsidian-typings",
...builtins,
],
format: "cjs",
target: "es2018",
logLevel: "info",
sourcemap: prod ? false : "inline",
treeShaking: true,
outfile: path.join(outDir, "main.js"),
pure: prod ? ["console.log"] : [],
};
if (prod) {
// Production build
esbuild.build(buildOptions).catch(() => process.exit(1));
} else {
// Development build with watch
esbuild
.context(buildOptions)
.then(ctx => {
ctx.watch();
console.log("Watching for changes...");
})
.catch(() => process.exit(1));
}

View file

@ -1,66 +0,0 @@
const fs = require('fs');
const path = require('path');
// Function to update import paths
function fixImports(filePath) {
let content = fs.readFileSync(filePath, 'utf8');
const originalContent = content;
// Determine depth from src/components/ui/
const relativePath = path.relative(path.join(__dirname, 'src/components/ui'), filePath);
const depth = relativePath.split('/').length - 1;
const prefix = '../'.repeat(depth + 1); // +1 to get out of ui/
// Fix common import patterns
content = content.replace(/from ["']\.\.\/index["']/g, `from "${prefix}../index"`);
content = content.replace(/from ["']\.\.\/\.\.\/index["']/g, `from "${prefix}../index"`);
content = content.replace(/from ["']\.\.\/types\//g, `from "${prefix}../types/`);
content = content.replace(/from ["']\.\.\/\.\.\/types\//g, `from "${prefix}../types/`);
content = content.replace(/from ["']\.\.\/translations\//g, `from "${prefix}../translations/`);
content = content.replace(/from ["']\.\.\/\.\.\/translations\//g, `from "${prefix}../translations/`);
content = content.replace(/from ["']\.\.\/common\//g, `from "${prefix}../common/`);
content = content.replace(/from ["']\.\.\/\.\.\/common\//g, `from "${prefix}../common/`);
content = content.replace(/from ["']\.\.\/icon["']/g, `from "${prefix}../icon"`);
content = content.replace(/from ["']\.\.\/\.\.\/icon["']/g, `from "${prefix}../icon"`);
content = content.replace(/from ["']\.\.\/editor-extensions\//g, `from "${prefix}../editor-extensions/`);
content = content.replace(/from ["']\.\.\/\.\.\/editor-extensions\//g, `from "${prefix}../editor-extensions/`);
content = content.replace(/import ["']\.\.\/styles\//g, `import "${prefix}../styles/`);
content = content.replace(/import ["']\.\.\/\.\.\/styles\//g, `import "${prefix}../styles/`);
// Fix references to components that are still in src/components/
content = content.replace(/from ["']\.\/(kanban|calendar|gantt|task-view|table|quadrant)\//g, `from "${prefix}$1/`);
content = content.replace(/from ["']\.\/task-view\//g, `from "${prefix}task-view/`);
if (content !== originalContent) {
fs.writeFileSync(filePath, content);
console.log(`Fixed imports in: ${filePath}`);
}
}
// Find all TypeScript files in ui/ directory
function findTsFiles(dir) {
const files = [];
const items = fs.readdirSync(dir);
for (const item of items) {
const fullPath = path.join(dir, item);
const stat = fs.statSync(fullPath);
if (stat.isDirectory()) {
files.push(...findTsFiles(fullPath));
} else if (item.endsWith('.ts')) {
files.push(fullPath);
}
}
return files;
}
// Fix imports in all ui/ files
const uiDir = path.join(__dirname, 'src/components/ui');
const files = findTsFiles(uiDir);
console.log(`Found ${files.length} TypeScript files to fix`);
files.forEach(fixImports);
console.log('Import fixing complete!');

View file

@ -53,7 +53,7 @@
"codemirror": "^6.0.0",
"cross-env": "^7.0.3",
"dotenv": "^17.2.1",
"esbuild": "0.13.12",
"esbuild": "0.25.9",
"esbuild-plugin-inline-worker": "https://github.com/mitschabaude/esbuild-plugin-inline-worker",
"globby": "^14.1.0",
"husky": "^9.1.7",

View file

@ -76,11 +76,11 @@ importers:
specifier: ^17.2.1
version: 17.2.1
esbuild:
specifier: 0.13.12
version: 0.13.12
specifier: 0.25.9
version: 0.25.9
esbuild-plugin-inline-worker:
specifier: https://github.com/mitschabaude/esbuild-plugin-inline-worker
version: https://codeload.github.com/mitschabaude/esbuild-plugin-inline-worker/tar.gz/d1aaffc721a62a3fe33f59f8f69b462c7dd05f45(esbuild@0.13.12)
version: https://codeload.github.com/mitschabaude/esbuild-plugin-inline-worker/tar.gz/d1aaffc721a62a3fe33f59f8f69b462c7dd05f45(esbuild@0.25.9)
globby:
specifier: ^14.1.0
version: 14.1.0
@ -116,7 +116,7 @@ importers:
version: 7.7.2
ts-jest:
specifier: ^29.1.0
version: 29.3.2(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(esbuild@0.13.12)(jest@29.7.0(@types/node@16.18.126))(typescript@4.7.3)
version: 29.3.2(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(esbuild@0.25.9)(jest@29.7.0(@types/node@16.18.126))(typescript@4.7.3)
tslib:
specifier: 2.4.0
version: 2.4.0
@ -331,6 +331,162 @@ packages:
'@datastructures-js/queue@4.2.3':
resolution: {integrity: sha512-GWVMorC/xi2V2ta+Z/CPgPGHL2ZJozcj48g7y2nIX5GIGZGRrbShSHgvMViJwHJurUzJYOdIdRZnWDRrROFwJA==}
'@esbuild/aix-ppc64@0.25.9':
resolution: {integrity: sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [aix]
'@esbuild/android-arm64@0.25.9':
resolution: {integrity: sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [android]
'@esbuild/android-arm@0.25.9':
resolution: {integrity: sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==}
engines: {node: '>=18'}
cpu: [arm]
os: [android]
'@esbuild/android-x64@0.25.9':
resolution: {integrity: sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==}
engines: {node: '>=18'}
cpu: [x64]
os: [android]
'@esbuild/darwin-arm64@0.25.9':
resolution: {integrity: sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [darwin]
'@esbuild/darwin-x64@0.25.9':
resolution: {integrity: sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==}
engines: {node: '>=18'}
cpu: [x64]
os: [darwin]
'@esbuild/freebsd-arm64@0.25.9':
resolution: {integrity: sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==}
engines: {node: '>=18'}
cpu: [arm64]
os: [freebsd]
'@esbuild/freebsd-x64@0.25.9':
resolution: {integrity: sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==}
engines: {node: '>=18'}
cpu: [x64]
os: [freebsd]
'@esbuild/linux-arm64@0.25.9':
resolution: {integrity: sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==}
engines: {node: '>=18'}
cpu: [arm64]
os: [linux]
'@esbuild/linux-arm@0.25.9':
resolution: {integrity: sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==}
engines: {node: '>=18'}
cpu: [arm]
os: [linux]
'@esbuild/linux-ia32@0.25.9':
resolution: {integrity: sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==}
engines: {node: '>=18'}
cpu: [ia32]
os: [linux]
'@esbuild/linux-loong64@0.25.9':
resolution: {integrity: sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==}
engines: {node: '>=18'}
cpu: [loong64]
os: [linux]
'@esbuild/linux-mips64el@0.25.9':
resolution: {integrity: sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==}
engines: {node: '>=18'}
cpu: [mips64el]
os: [linux]
'@esbuild/linux-ppc64@0.25.9':
resolution: {integrity: sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [linux]
'@esbuild/linux-riscv64@0.25.9':
resolution: {integrity: sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==}
engines: {node: '>=18'}
cpu: [riscv64]
os: [linux]
'@esbuild/linux-s390x@0.25.9':
resolution: {integrity: sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==}
engines: {node: '>=18'}
cpu: [s390x]
os: [linux]
'@esbuild/linux-x64@0.25.9':
resolution: {integrity: sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==}
engines: {node: '>=18'}
cpu: [x64]
os: [linux]
'@esbuild/netbsd-arm64@0.25.9':
resolution: {integrity: sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==}
engines: {node: '>=18'}
cpu: [arm64]
os: [netbsd]
'@esbuild/netbsd-x64@0.25.9':
resolution: {integrity: sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==}
engines: {node: '>=18'}
cpu: [x64]
os: [netbsd]
'@esbuild/openbsd-arm64@0.25.9':
resolution: {integrity: sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==}
engines: {node: '>=18'}
cpu: [arm64]
os: [openbsd]
'@esbuild/openbsd-x64@0.25.9':
resolution: {integrity: sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==}
engines: {node: '>=18'}
cpu: [x64]
os: [openbsd]
'@esbuild/openharmony-arm64@0.25.9':
resolution: {integrity: sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [openharmony]
'@esbuild/sunos-x64@0.25.9':
resolution: {integrity: sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==}
engines: {node: '>=18'}
cpu: [x64]
os: [sunos]
'@esbuild/win32-arm64@0.25.9':
resolution: {integrity: sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==}
engines: {node: '>=18'}
cpu: [arm64]
os: [win32]
'@esbuild/win32-ia32@0.25.9':
resolution: {integrity: sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==}
engines: {node: '>=18'}
cpu: [ia32]
os: [win32]
'@esbuild/win32-x64@0.25.9':
resolution: {integrity: sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==}
engines: {node: '>=18'}
cpu: [x64]
os: [win32]
'@eslint-community/eslint-utils@4.6.1':
resolution: {integrity: sha512-KTsJMmobmbrFLe3LDh0PC2FXpcSYJt/MLjlkh/9LEnmKYLSYmT/0EW9JWANjeoemiuZrmogti0tW5Ch+qNUYDw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@ -1409,99 +1565,15 @@ packages:
resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
engines: {node: '>= 0.4'}
esbuild-android-arm64@0.13.12:
resolution: {integrity: sha512-TSVZVrb4EIXz6KaYjXfTzPyyRpXV5zgYIADXtQsIenjZ78myvDGaPi11o4ZSaHIwFHsuwkB6ne5SZRBwAQ7maw==}
cpu: [arm64]
os: [android]
esbuild-darwin-64@0.13.12:
resolution: {integrity: sha512-c51C+N+UHySoV2lgfWSwwmlnLnL0JWj/LzuZt9Ltk9ub1s2Y8cr6SQV5W3mqVH1egUceew6KZ8GyI4nwu+fhsw==}
cpu: [x64]
os: [darwin]
esbuild-darwin-arm64@0.13.12:
resolution: {integrity: sha512-JvAMtshP45Hd8A8wOzjkY1xAnTKTYuP/QUaKp5eUQGX+76GIie3fCdUUr2ZEKdvpSImNqxiZSIMziEiGB5oUmQ==}
cpu: [arm64]
os: [darwin]
esbuild-freebsd-64@0.13.12:
resolution: {integrity: sha512-r6On/Skv9f0ZjTu6PW5o7pdXr8aOgtFOEURJZYf1XAJs0IQ+gW+o1DzXjVkIoT+n1cm3N/t1KRJfX71MPg/ZUA==}
cpu: [x64]
os: [freebsd]
esbuild-freebsd-arm64@0.13.12:
resolution: {integrity: sha512-F6LmI2Q1gii073kmBE3NOTt/6zLL5zvZsxNLF8PMAwdHc+iBhD1vzfI8uQZMJA1IgXa3ocr3L3DJH9fLGXy6Yw==}
cpu: [arm64]
os: [freebsd]
esbuild-linux-32@0.13.12:
resolution: {integrity: sha512-U1UZwG3UIwF7/V4tCVAo/nkBV9ag5KJiJTt+gaCmLVWH3bPLX7y+fNlhIWZy8raTMnXhMKfaTvWZ9TtmXzvkuQ==}
cpu: [ia32]
os: [linux]
esbuild-linux-64@0.13.12:
resolution: {integrity: sha512-YpXSwtu2NxN3N4ifJxEdsgd6Q5d8LYqskrAwjmoCT6yQnEHJSF5uWcxv783HWN7lnGpJi9KUtDvYsnMdyGw71Q==}
cpu: [x64]
os: [linux]
esbuild-linux-arm64@0.13.12:
resolution: {integrity: sha512-sgDNb8kb3BVodtAlcFGgwk+43KFCYjnFOaOfJibXnnIojNWuJHpL6aQJ4mumzNWw8Rt1xEtDQyuGK9f+Y24jGA==}
cpu: [arm64]
os: [linux]
esbuild-linux-arm@0.13.12:
resolution: {integrity: sha512-SyiT/JKxU6J+DY2qUiSLZJqCAftIt3uoGejZ0HDnUM2MGJqEGSGh7p1ecVL2gna3PxS4P+j6WAehCwgkBPXNIw==}
cpu: [arm]
os: [linux]
esbuild-linux-mips64le@0.13.12:
resolution: {integrity: sha512-qQJHlZBG+QwVIA8AbTEtbvF084QgDi4DaUsUnA+EolY1bxrG+UyOuGflM2ZritGhfS/k7THFjJbjH2wIeoKA2g==}
cpu: [mips64el]
os: [linux]
esbuild-linux-ppc64le@0.13.12:
resolution: {integrity: sha512-2dSnm1ldL7Lppwlo04CGQUpwNn5hGqXI38OzaoPOkRsBRWFBozyGxTFSee/zHFS+Pdh3b28JJbRK3owrrRgWNw==}
cpu: [ppc64]
os: [linux]
esbuild-netbsd-64@0.13.12:
resolution: {integrity: sha512-D4raxr02dcRiQNbxOLzpqBzcJNFAdsDNxjUbKkDMZBkL54Z0vZh4LRndycdZAMcIdizC/l/Yp/ZsBdAFxc5nbA==}
cpu: [x64]
os: [netbsd]
esbuild-openbsd-64@0.13.12:
resolution: {integrity: sha512-KuLCmYMb2kh05QuPJ+va60bKIH5wHL8ypDkmpy47lzwmdxNsuySeCMHuTv5o2Af1RUn5KLO5ZxaZeq4GEY7DaQ==}
cpu: [x64]
os: [openbsd]
esbuild-plugin-inline-worker@https://codeload.github.com/mitschabaude/esbuild-plugin-inline-worker/tar.gz/d1aaffc721a62a3fe33f59f8f69b462c7dd05f45:
resolution: {tarball: https://codeload.github.com/mitschabaude/esbuild-plugin-inline-worker/tar.gz/d1aaffc721a62a3fe33f59f8f69b462c7dd05f45}
version: 0.1.1
peerDependencies:
esbuild: latest
esbuild-sunos-64@0.13.12:
resolution: {integrity: sha512-jBsF+e0woK3miKI8ufGWKG3o3rY9DpHvCVRn5eburMIIE+2c+y3IZ1srsthKyKI6kkXLvV4Cf/E7w56kLipMXw==}
cpu: [x64]
os: [sunos]
esbuild-windows-32@0.13.12:
resolution: {integrity: sha512-L9m4lLFQrFeR7F+eLZXG82SbXZfUhyfu6CexZEil6vm+lc7GDCE0Q8DiNutkpzjv1+RAbIGVva9muItQ7HVTkQ==}
cpu: [ia32]
os: [win32]
esbuild-windows-64@0.13.12:
resolution: {integrity: sha512-k4tX4uJlSbSkfs78W5d9+I9gpd+7N95W7H2bgOMFPsYREVJs31+Q2gLLHlsnlY95zBoPQMIzHooUIsixQIBjaQ==}
cpu: [x64]
os: [win32]
esbuild-windows-arm64@0.13.12:
resolution: {integrity: sha512-2tTv/BpYRIvuwHpp2M960nG7uvL+d78LFW/ikPItO+2GfK51CswIKSetSpDii+cjz8e9iSPgs+BU4o8nWICBwQ==}
cpu: [arm64]
os: [win32]
esbuild@0.13.12:
resolution: {integrity: sha512-vTKKUt+yoz61U/BbrnmlG9XIjwpdIxmHB8DlPR0AAW6OdS+nBQBci6LUHU2q9WbBobMEIQxxDpKbkmOGYvxsow==}
esbuild@0.25.9:
resolution: {integrity: sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==}
engines: {node: '>=18'}
hasBin: true
escalade@3.2.0:
@ -3395,6 +3467,84 @@ snapshots:
'@datastructures-js/queue@4.2.3': {}
'@esbuild/aix-ppc64@0.25.9':
optional: true
'@esbuild/android-arm64@0.25.9':
optional: true
'@esbuild/android-arm@0.25.9':
optional: true
'@esbuild/android-x64@0.25.9':
optional: true
'@esbuild/darwin-arm64@0.25.9':
optional: true
'@esbuild/darwin-x64@0.25.9':
optional: true
'@esbuild/freebsd-arm64@0.25.9':
optional: true
'@esbuild/freebsd-x64@0.25.9':
optional: true
'@esbuild/linux-arm64@0.25.9':
optional: true
'@esbuild/linux-arm@0.25.9':
optional: true
'@esbuild/linux-ia32@0.25.9':
optional: true
'@esbuild/linux-loong64@0.25.9':
optional: true
'@esbuild/linux-mips64el@0.25.9':
optional: true
'@esbuild/linux-ppc64@0.25.9':
optional: true
'@esbuild/linux-riscv64@0.25.9':
optional: true
'@esbuild/linux-s390x@0.25.9':
optional: true
'@esbuild/linux-x64@0.25.9':
optional: true
'@esbuild/netbsd-arm64@0.25.9':
optional: true
'@esbuild/netbsd-x64@0.25.9':
optional: true
'@esbuild/openbsd-arm64@0.25.9':
optional: true
'@esbuild/openbsd-x64@0.25.9':
optional: true
'@esbuild/openharmony-arm64@0.25.9':
optional: true
'@esbuild/sunos-x64@0.25.9':
optional: true
'@esbuild/win32-arm64@0.25.9':
optional: true
'@esbuild/win32-ia32@0.25.9':
optional: true
'@esbuild/win32-x64@0.25.9':
optional: true
'@eslint-community/eslint-utils@4.6.1(eslint@8.57.1)':
dependencies:
eslint: 8.57.1
@ -4630,81 +4780,39 @@ snapshots:
has-tostringtag: 1.0.2
hasown: 2.0.2
esbuild-android-arm64@0.13.12:
optional: true
esbuild-darwin-64@0.13.12:
optional: true
esbuild-darwin-arm64@0.13.12:
optional: true
esbuild-freebsd-64@0.13.12:
optional: true
esbuild-freebsd-arm64@0.13.12:
optional: true
esbuild-linux-32@0.13.12:
optional: true
esbuild-linux-64@0.13.12:
optional: true
esbuild-linux-arm64@0.13.12:
optional: true
esbuild-linux-arm@0.13.12:
optional: true
esbuild-linux-mips64le@0.13.12:
optional: true
esbuild-linux-ppc64le@0.13.12:
optional: true
esbuild-netbsd-64@0.13.12:
optional: true
esbuild-openbsd-64@0.13.12:
optional: true
esbuild-plugin-inline-worker@https://codeload.github.com/mitschabaude/esbuild-plugin-inline-worker/tar.gz/d1aaffc721a62a3fe33f59f8f69b462c7dd05f45(esbuild@0.13.12):
esbuild-plugin-inline-worker@https://codeload.github.com/mitschabaude/esbuild-plugin-inline-worker/tar.gz/d1aaffc721a62a3fe33f59f8f69b462c7dd05f45(esbuild@0.25.9):
dependencies:
esbuild: 0.13.12
esbuild: 0.25.9
find-cache-dir: 3.3.2
esbuild-sunos-64@0.13.12:
optional: true
esbuild-windows-32@0.13.12:
optional: true
esbuild-windows-64@0.13.12:
optional: true
esbuild-windows-arm64@0.13.12:
optional: true
esbuild@0.13.12:
esbuild@0.25.9:
optionalDependencies:
esbuild-android-arm64: 0.13.12
esbuild-darwin-64: 0.13.12
esbuild-darwin-arm64: 0.13.12
esbuild-freebsd-64: 0.13.12
esbuild-freebsd-arm64: 0.13.12
esbuild-linux-32: 0.13.12
esbuild-linux-64: 0.13.12
esbuild-linux-arm: 0.13.12
esbuild-linux-arm64: 0.13.12
esbuild-linux-mips64le: 0.13.12
esbuild-linux-ppc64le: 0.13.12
esbuild-netbsd-64: 0.13.12
esbuild-openbsd-64: 0.13.12
esbuild-sunos-64: 0.13.12
esbuild-windows-32: 0.13.12
esbuild-windows-64: 0.13.12
esbuild-windows-arm64: 0.13.12
'@esbuild/aix-ppc64': 0.25.9
'@esbuild/android-arm': 0.25.9
'@esbuild/android-arm64': 0.25.9
'@esbuild/android-x64': 0.25.9
'@esbuild/darwin-arm64': 0.25.9
'@esbuild/darwin-x64': 0.25.9
'@esbuild/freebsd-arm64': 0.25.9
'@esbuild/freebsd-x64': 0.25.9
'@esbuild/linux-arm': 0.25.9
'@esbuild/linux-arm64': 0.25.9
'@esbuild/linux-ia32': 0.25.9
'@esbuild/linux-loong64': 0.25.9
'@esbuild/linux-mips64el': 0.25.9
'@esbuild/linux-ppc64': 0.25.9
'@esbuild/linux-riscv64': 0.25.9
'@esbuild/linux-s390x': 0.25.9
'@esbuild/linux-x64': 0.25.9
'@esbuild/netbsd-arm64': 0.25.9
'@esbuild/netbsd-x64': 0.25.9
'@esbuild/openbsd-arm64': 0.25.9
'@esbuild/openbsd-x64': 0.25.9
'@esbuild/openharmony-arm64': 0.25.9
'@esbuild/sunos-x64': 0.25.9
'@esbuild/win32-arm64': 0.25.9
'@esbuild/win32-ia32': 0.25.9
'@esbuild/win32-x64': 0.25.9
escalade@3.2.0: {}
@ -6355,7 +6463,7 @@ snapshots:
dependencies:
punycode: 2.3.1
ts-jest@29.3.2(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(esbuild@0.13.12)(jest@29.7.0(@types/node@16.18.126))(typescript@4.7.3):
ts-jest@29.3.2(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(esbuild@0.25.9)(jest@29.7.0(@types/node@16.18.126))(typescript@4.7.3):
dependencies:
bs-logger: 0.2.6
ejs: 3.1.10
@ -6374,7 +6482,7 @@ snapshots:
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
babel-jest: 29.7.0(@babel/core@7.26.10)
esbuild: 0.13.12
esbuild: 0.25.9
tslib@1.14.1: {}

View file

@ -1,5 +1,5 @@
import { QuickCaptureModal } from "../components/features/quick-capture/modals/QuickCaptureModal";
import { DEFAULT_TIME_PARSING_CONFIG } from '../../../../services/time-parsing-service";
import { DEFAULT_TIME_PARSING_CONFIG } from '@/services/time-parsing-service';
import { App } from "obsidian";
// Mock dependencies

View file

@ -3,7 +3,7 @@
*/
import { App } from "obsidian";
import { FileTaskManagerImpl } from "../../managers/file-task-manager";
import { FileTaskManagerImpl } from "@/managers/file-task-manager";
import { FileTask } from "../../types/file-task";
import { FileSourceConfiguration } from "../../types/file-source";

View file

@ -5,7 +5,7 @@
* from settings to actual task indexing behavior.
*/
import { FileFilterManager } from '../../managers/file-filter-manager';
import { FileFilterManager } from '@/managers/file-filter-manager';
import { FilterMode, FileFilterSettings } from '../../common/setting-definition';
// Mock TFile and TFolder for testing

View file

@ -7,13 +7,13 @@ import {
moment,
setIcon,
} from "obsidian";
import { Task } from "../../../types/task"; // Assuming Task type exists here
import { IcsTask } from "../../../types/ics";
import { Task } from "@/types/task"; // Assuming Task type exists here
import { IcsTask } from "@/types/ics";
// Removed: import { renderCalendarEvent } from "./event";
import "../../../styles/calendar/view.css"; // Import the CSS file
import "../../../styles/calendar/event.css"; // Import the CSS file
import "../../../styles/calendar/badge.css"; // Import the badge CSS file
import { t } from "../../../translations/helper";
import "@/styles/calendar/view.css"; // Import the CSS file
import "@/styles/calendar/event.css"; // Import the CSS file
import "@/styles/calendar/badge.css"; // Import the badge CSS file
import { t } from "@/translations/helper";
// Import view rendering functions
import { MonthView } from "./views/month-view";
@ -21,8 +21,8 @@ import { WeekView } from "./views/week-view";
import { DayView } from "./views/day-view";
import { AgendaView } from "./views/agenda-view";
import { YearView } from "./views/year-view";
import TaskProgressBarPlugin from "../../../index";
import { QuickCaptureModal } from "../../features/quick-capture/modals/QuickCaptureModal";
import TaskProgressBarPlugin from "@/index";
import { QuickCaptureModal } from "@/components/features/quick-capture/modals/QuickCaptureModal";
// Import algorithm functions (optional for now, could be used within views)
// import { calculateEventLayout, determineEventColor } from './algorithm';

View file

@ -1,11 +1,11 @@
import { App, Component, debounce, moment } from "obsidian";
import { CalendarEvent } from '../../../../index'; // Adjust path as needed
import { CalendarEvent } from '@/components/features/calendar/index'; // Adjust path as needed
import { EventLayout, determineEventColor } from "../algorithm"; // Adjust path as needed
import {
clearAllMarks,
MarkdownRendererComponent,
} from "../../../ui/renderers/MarkdownRenderer";
import { createTaskCheckbox } from "../../../features/task/view/details";
} from "@/components/ui/renderers/MarkdownRenderer";
import { createTaskCheckbox } from "@/components/features/task/view/details";
export type EventViewType =
| "month"

View file

@ -1,8 +1,8 @@
import { App, Component, moment } from "obsidian";
import { CalendarEvent } from '../../../../index';
import { CalendarEvent } from '@/components/features/calendar/index';
import { renderCalendarEvent } from "../rendering/event-renderer"; // Use new renderer
import { CalendarViewComponent, CalendarViewOptions } from "./base-view"; // Import base class
import TaskProgressBarPlugin from "../../../../index"; // Import plugin type
import TaskProgressBarPlugin from "@/index"; // Import plugin type
export class AgendaView extends CalendarViewComponent {
// Extend base class

View file

@ -1,6 +1,6 @@
import { App, Component } from "obsidian";
import { CalendarEvent } from '../../../../index';
import TaskProgressBarPlugin from "../../../../index";
import { CalendarEvent } from '@/components/features/calendar/index';
import TaskProgressBarPlugin from "@/index";
interface EventMap {
onEventClick: (ev: MouseEvent, event: CalendarEvent) => void;

View file

@ -1,8 +1,8 @@
import { App, Component, moment } from "obsidian";
import { CalendarEvent } from '../../../../index';
import { CalendarEvent } from '@/components/features/calendar/index';
import { renderCalendarEvent } from "../rendering/event-renderer";
import { CalendarViewComponent, CalendarViewOptions } from "./base-view";
import TaskProgressBarPlugin from "../../../../index";
import TaskProgressBarPlugin from "@/index";
export class DayView extends CalendarViewComponent {
private currentDate: moment.Moment;

View file

@ -1,11 +1,11 @@
import { App, Component, debounce, moment } from "obsidian";
import { CalendarEvent } from '../../../../index';
import { CalendarEvent } from '@/components/features/calendar/index';
import { renderCalendarEvent } from "../rendering/event-renderer"; // Import the new renderer
import {
CalendarSpecificConfig,
getViewSettingOrDefault,
} from "../../../../common/setting-definition"; // Import helper
import TaskProgressBarPlugin from "../../../../index"; // Import plugin type for settings access
} from "@/common/setting-definition"; // Import helper
import TaskProgressBarPlugin from "@/index"; // Import plugin type for settings access
import { CalendarViewComponent, CalendarViewOptions } from "./base-view"; // Import base class and options type
import Sortable from "sortablejs";

View file

@ -1,11 +1,11 @@
import { App, Component, debounce, moment } from "obsidian";
import { CalendarEvent } from '../../../../index';
import { CalendarEvent } from '@/components/features/calendar/index';
import { renderCalendarEvent } from "../rendering/event-renderer"; // Use new renderer
import {
CalendarSpecificConfig,
getViewSettingOrDefault,
} from "../../../../common/setting-definition"; // Import helper
import TaskProgressBarPlugin from "../../../../index"; // Import plugin type for settings access
} from "@/common/setting-definition"; // Import helper
import TaskProgressBarPlugin from "@/index"; // Import plugin type for settings access
import { CalendarViewComponent, CalendarViewOptions } from "./base-view"; // Import base class and options type
import Sortable from "sortablejs";

View file

@ -1,10 +1,10 @@
import { App, Component, debounce, moment } from "obsidian";
import { CalendarEvent } from '../../../../index';
import { CalendarEvent } from '@/components/features/calendar/index';
import {
CalendarSpecificConfig,
getViewSettingOrDefault,
} from "../../../../common/setting-definition"; // Import helper
import TaskProgressBarPlugin from "../../../../index"; // Import plugin type for settings access
} from "@/common/setting-definition"; // Import helper
import TaskProgressBarPlugin from "@/index"; // Import plugin type for settings access
import { CalendarViewComponent, CalendarViewOptions } from "./base-view"; // Import base class
/**

View file

@ -5,22 +5,22 @@ import {
MarkdownRenderer as ObsidianMarkdownRenderer,
TFile,
} from "obsidian";
import { type Task } from "../../../types/task";
import "../../../styles/gantt/gantt.css";
import { type Task } from "@/types/task";
import "@/styles/gantt/gantt.css";
// Import new components and helpers
import { DateHelper } from "../../../utils/date/date-helper";
import { DateHelper } from "@/utils/date/date-helper";
import { TimelineHeaderComponent } from "./timeline-header";
import { GridBackgroundComponent } from "./grid-background";
import { TaskRendererComponent } from "./task-renderer";
import TaskProgressBarPlugin from "../../../index";
import TaskProgressBarPlugin from "@/index";
import {
FilterComponent,
buildFilterOptionsFromTasks,
} from "../task/filter/in-view/filter";
import { ActiveFilter, FilterCategory } from "../task/filter/in-view/filter-type";
import { ScrollToDateButton } from '../task/filter/in-view/custom/scroll-to-date-button";
import { PRIORITY_MAP } from "../../../common/default-symbol";
} from "@/components/features/task/filter/in-view/filter";
import { ActiveFilter, FilterCategory } from "@/components/features/task/filter/in-view/filter-type";
import { ScrollToDateButton } from '@/components/features/task/filter/in-view/custom/scroll-to-date-button';
import { PRIORITY_MAP } from "@/common/default-symbol";
// Define the PRIORITY_MAP here as well, or import it if moved to a shared location
// This is needed to convert filter value (icon/text) back to number for comparison

View file

@ -1,6 +1,6 @@
import { Component, App } from "obsidian";
import { GanttTaskItem, Timescale, PlacedGanttTaskItem } from './gantt'; // Correctly imports PlacedGanttTaskItem now
import { DateHelper } from "../../../utils/date/date-helper"; // Corrected import path again
import { DateHelper } from "@/utils/date/date-helper"; // Corrected import path again
// Interface for parameters needed by the grid component
interface GridBackgroundParams {

View file

@ -5,9 +5,9 @@ import {
TFile,
} from "obsidian";
import { GanttTaskItem, PlacedGanttTaskItem, Timescale } from './gantt'; // 添加PlacedGanttTaskItem导入
import { Task } from "../../../types/task";
import { MarkdownRendererComponent } from "../../ui/renderers/MarkdownRenderer";
import { sanitizePriorityForClass } from "../../../utils/task/priority-utils";
import { Task } from "@/types/task";
import { MarkdownRendererComponent } from "@/components/ui/renderers/MarkdownRenderer";
import { sanitizePriorityForClass } from "@/utils/task/priority-utils";
// Constants from GanttComponent (consider moving to a shared config/constants file)
const ROW_HEIGHT = 24;

View file

@ -1,6 +1,6 @@
import { Component, App } from "obsidian";
import { Timescale } from './gantt'; // Assuming types are exported or moved
import { DateHelper } from "../../../utils/date/date-helper"; // Assuming DateHelper exists
import { DateHelper } from "@/utils/date/date-helper"; // Assuming DateHelper exists
// Interface for parameters needed by the header component
interface TimelineHeaderParams {

View file

@ -16,11 +16,11 @@ import {
BaseMappingHabitData,
BaseScheduledHabitData,
ScheduledEvent,
} from '../../../../types/habit-card';
import TaskProgressBarPlugin from '../../../../index';
import { t } from '../../../../translations/helper';
import { attachIconMenu } from '../../../ui/menus/IconMenu';
import "../styles/habit-edit-dialog.css";
} from '@/types/habit-card';
import TaskProgressBarPlugin from '@/index';
import { t } from '@/translations/helper';
import { attachIconMenu } from '@/components/ui/menus/IconMenu';
import "@/styles/habit-edit-dialog.css";
export class HabitEditDialog extends Modal {
plugin: TaskProgressBarPlugin;

View file

@ -6,11 +6,11 @@ import {
Notice,
setIcon,
} from "obsidian";
import { BaseHabitData } from '../../../../types/habit-card';
import TaskProgressBarPlugin from '../../../../index';
import { HabitEditDialog } from './habit/components/HabitEditDialog";
import { t } from '../../../../translations/helper';
import "../styles/habit-list.css";
import { BaseHabitData } from '@/types/habit-card';
import TaskProgressBarPlugin from '@/index';
import { HabitEditDialog } from '@/components/features/habit/components/HabitEditDialog';
import { t } from '@/translations/helper';
import "@/styles/habit-list.css";
export interface HabitSettings {
habits: BaseHabitData[];

View file

@ -12,16 +12,16 @@ import {
CountHabitProps,
ScheduledHabitProps,
MappingHabitProps,
} from "../../../types/habit-card"; // Assuming types are in src/types
import TaskProgressBarPlugin from "../../../index";
} from "@/types/habit-card"; // Assuming types are in src/types
import TaskProgressBarPlugin from "@/index";
import {
DailyHabitCard,
CountHabitCard,
ScheduledHabitCard,
MappingHabitCard,
} from "./habitcard/index"; // Import the habit card classes
import { t } from "../../../translations/helper";
import "../../../styles/habit.css";
import { t } from "@/translations/helper";
import "@/styles/habit.css";
export class Habit extends Component {
plugin: TaskProgressBarPlugin;

View file

@ -1,9 +1,9 @@
import { ButtonComponent, Component, Notice, setIcon } from "obsidian";
import { CountHabitProps } from "../../../types/habit-card";
import { CountHabitProps } from "@/types/habit-card";
import { HabitCard } from "./habitcard";
import { t } from "../../../translations/helper";
import TaskProgressBarPlugin from "../../../index";
import { getTodayLocalDateString } from "../../../utils/date/date-formatter";
import { t } from "@/translations/helper";
import TaskProgressBarPlugin from "@/index";
import { getTodayLocalDateString } from "@/utils/date/date-formatter";
export class CountHabitCard extends HabitCard {
constructor(

View file

@ -1,9 +1,9 @@
import { Component, Notice, setIcon } from "obsidian";
import { DailyHabitProps } from "../../../types/habit-card";
import { DailyHabitProps } from "@/types/habit-card";
import { HabitCard } from "./habitcard";
import { t } from "../../../translations/helper";
import TaskProgressBarPlugin from "../../../index";
import { getTodayLocalDateString } from "../../../utils/date/date-formatter";
import { t } from "@/translations/helper";
import TaskProgressBarPlugin from "@/index";
import { getTodayLocalDateString } from "@/utils/date/date-formatter";
export class DailyHabitCard extends HabitCard {
constructor(

View file

@ -3,9 +3,9 @@ import {
DailyHabitProps,
HabitProps,
MappingHabitProps,
} from "../../../types/habit-card";
import TaskProgressBarPlugin from "../../../index";
import { getTodayLocalDateString, getLocalDateString } from "../../../utils/date/date-formatter";
} from "@/types/habit-card";
import TaskProgressBarPlugin from "@/index";
import { getTodayLocalDateString, getLocalDateString } from "@/utils/date/date-formatter";
function getDatesInRange(startDate: string, endDate: string): string[] {
const dates = [];

View file

@ -6,10 +6,10 @@ import {
Setting,
SliderComponent,
} from "obsidian";
import { MappingHabitProps } from "../../../types/habit-card";
import { MappingHabitProps } from "@/types/habit-card";
import { HabitCard } from "./habitcard";
import TaskProgressBarPlugin from "../../../index";
import { getTodayLocalDateString } from "../../../utils/date/date-formatter";
import TaskProgressBarPlugin from "@/index";
import { getTodayLocalDateString } from "@/utils/date/date-formatter";
export class MappingHabitCard extends HabitCard {
constructor(

View file

@ -5,12 +5,12 @@ import {
setIcon,
Setting,
} from "obsidian";
import { ScheduledHabitProps } from "../../../types/habit-card";
import { ScheduledHabitProps } from "@/types/habit-card";
import { HabitCard } from "./habitcard";
import TaskProgressBarPlugin from "../../../index";
import { t } from "../../../translations/helper";
import TaskProgressBarPlugin from "@/index";
import { t } from "@/translations/helper";
import { EventDetailModal } from "../habit";
import { getTodayLocalDateString } from "../../../utils/date/date-formatter";
import { getTodayLocalDateString } from "@/utils/date/date-formatter";
function renderPieDotSVG(completed: number, total: number): string {
if (total <= 0) return "";

View file

@ -1,7 +1,7 @@
import { App, Modal, Setting } from "obsidian";
import { RewardItem } from '../../../../common/setting-definition';
import { t } from '../../../../translations/helper';
import "../styles/reward.css";
import { RewardItem } from '@/common/setting-definition';
import { t } from '@/translations/helper';
import "@/styles/reward.css";
export class RewardModal extends Modal {
private reward: RewardItem;

View file

@ -1,11 +1,11 @@
import { App, Component, MarkdownRenderer, Menu, TFile } from "obsidian";
import { Task } from "../../../types/task"; // Adjust path
import { MarkdownRendererComponent } from "../../ui/renderers/MarkdownRenderer"; // Adjust path
import TaskProgressBarPlugin from "../../../index"; // Adjust path
import { KanbanSpecificConfig } from "../../../common/setting-definition";
import { createTaskCheckbox } from "../../features/task/view/details";
import { getEffectiveProject } from "../../../utils/task/task-operations";
import { sanitizePriorityForClass } from "../../../utils/task/priority-utils";
import { Task } from "@/types/task"; // Adjust path
import { MarkdownRendererComponent } from "@/components/ui/renderers/MarkdownRenderer"; // Adjust path
import TaskProgressBarPlugin from "@/index"; // Adjust path
import { KanbanSpecificConfig } from "@/common/setting-definition";
import { createTaskCheckbox } from "@/components/features/task/view/details";
import { getEffectiveProject } from "@/utils/task/task-operations";
import { sanitizePriorityForClass } from "@/utils/task/priority-utils";
export class KanbanCardComponent extends Component {
public element: HTMLElement;

View file

@ -1,9 +1,9 @@
import { App, Component, setIcon } from "obsidian";
import { Task } from "../../../types/task"; // Adjust path
import { Task } from "@/types/task"; // Adjust path
import { KanbanCardComponent } from "./kanban-card";
import TaskProgressBarPlugin from "../../../index"; // Adjust path
import { QuickCaptureModal } from "../../features/quick-capture/modals/QuickCaptureModal"; // Import QuickCaptureModal
import { t } from "../../../translations/helper"; // Import translation helper
import TaskProgressBarPlugin from "@/index"; // Adjust path
import { QuickCaptureModal } from "@/components/features/quick-capture/modals/QuickCaptureModal"; // Import QuickCaptureModal
import { t } from "@/translations/helper"; // Import translation helper
const BATCH_SIZE = 20; // Number of cards to load at a time

View file

@ -6,23 +6,23 @@ import {
setIcon,
WorkspaceLeaf,
} from "obsidian";
import TaskProgressBarPlugin from "../../../index"; // Adjust path as needed
import { Task } from "../../../types/task"; // Adjust path as needed
import TaskProgressBarPlugin from "@/index"; // Adjust path as needed
import { Task } from "@/types/task"; // Adjust path as needed
import { KanbanColumnComponent } from "./kanban-column";
// import { DragManager, DragMoveEvent, DragEndEvent } from "../../ui/behavior/DragManager";
// import { DragManager, DragMoveEvent, DragEndEvent } from "@/components/ui/behavior/DragManager";
import Sortable from "sortablejs";
import "../../../styles/kanban/kanban.css";
import { t } from "../../../translations/helper"; // Added import for t
import "@/styles/kanban/kanban.css";
import { t } from "@/translations/helper"; // Added import for t
import {
FilterComponent,
buildFilterOptionsFromTasks,
} from "../inview-filter/filter";
import { ActiveFilter } from "../inview-filter/filter-type";
} from "@/components/features/task/filter/in-view/filter";
import { ActiveFilter } from "@/components/features/task/filter/in-view/filter-type";
import {
KanbanSpecificConfig,
KanbanColumnConfig,
} from "../../../common/setting-definition";
import { getEffectiveProject, isProjectReadonly } from "../../../utils/task/task-operations";
import { getEffectiveProject, isProjectReadonly } from "@/utils/task/task-operations";
// CSS classes for drop indicators
const DROP_INDICATOR_BEFORE_CLASS = "tg-kanban-card--drop-indicator-before";

View file

@ -9,15 +9,15 @@ import {
OnCompletionConfig,
OnCompletionActionType,
OnCompletionParseResult,
} from "../../../types/onCompletion";
import TaskProgressBarPlugin from "../../../index";
import { t } from "../../../translations/helper";
} from "@/types/onCompletion";
import TaskProgressBarPlugin from "@/index";
import { t } from "@/translations/helper";
import {
TaskIdSuggest,
FileLocationSuggest,
ActionTypeSuggest,
} from "./OnCompletionSuggesters";
import "../../../styles/onCompletion.css";
import "@/styles/onCompletion.css";
export interface OnCompletionConfiguratorOptions {
initialValue?: string;

View file

@ -3,9 +3,9 @@ import {
OnCompletionConfigurator,
OnCompletionConfiguratorOptions,
} from "./OnCompletionConfigurator";
import TaskProgressBarPlugin from "../../../index";
import { t } from "../../../translations/helper";
import "../../../styles/onCompletion.css";
import TaskProgressBarPlugin from "@/index";
import { t } from "@/translations/helper";
import "@/styles/onCompletion.css";
export interface OnCompletionModalOptions {
initialValue?: string;

View file

@ -6,7 +6,7 @@ import {
AbstractInputSuggest,
TextComponent,
} from "obsidian";
import TaskProgressBarPlugin from "../../../index";
import TaskProgressBarPlugin from "@/index";
/**
* Suggester for task IDs

View file

@ -1,10 +1,9 @@
import {
OnboardingConfig,
OnboardingConfigManager,
} from "../../managers/onboarding-manager";
import { t } from "../../../translations/helper";
} from "@/managers/onboarding-manager";
import { t } from "@/translations/helper";
import { setIcon } from "obsidian";
import type TaskProgressBarPlugin from "../../../index";
export class ConfigPreview {
private configManager: OnboardingConfigManager;

View file

@ -1,5 +1,5 @@
import { OnboardingConfig } from "../../managers/onboarding-manager";
import { t } from "../../../translations/helper";
import { OnboardingConfig } from "@/managers/onboarding-manager";
import { t } from "@/translations/helper";
import { setIcon } from "obsidian";
export class OnboardingComplete {

View file

@ -1,11 +1,11 @@
import { App, Modal, Setting, ButtonComponent, setIcon } from "obsidian";
import type TaskProgressBarPlugin from "../../../index";
import { t } from "../../../translations/helper";
import type TaskProgressBarPlugin from "@/index";
import { t } from "@/translations/helper";
import {
OnboardingConfigManager,
OnboardingConfigMode,
OnboardingConfig,
} from "../../managers/onboarding-manager";
} from "@/managers/onboarding-manager";
import { UserLevelSelector } from "./UserLevelSelector";
import { ConfigPreview } from "./ConfigPreview";
import { TaskCreationGuide } from "./TaskCreationGuide";

View file

@ -1,12 +1,12 @@
import { ItemView, WorkspaceLeaf, setIcon, ButtonComponent } from "obsidian";
import type TaskProgressBarPlugin from "../../../index";
import { t } from "../../../translations/helper";
import type TaskProgressBarPlugin from "@/index";
import { t } from "@/translations/helper";
import {
OnboardingConfigManager,
OnboardingConfigMode,
OnboardingConfig,
} from "../../managers/onboarding-manager";
import { SettingsChangeDetector } from "../../services/settings-change-detector";
} from "@/managers/onboarding-manager";
import { SettingsChangeDetector } from "@/services/settings-change-detector";
import { UserLevelSelector } from "./UserLevelSelector";
import { ConfigPreview } from "./ConfigPreview";
import { TaskCreationGuide } from "./TaskCreationGuide";

View file

@ -1,7 +1,7 @@
import { Setting, TextAreaComponent, Notice, setIcon } from "obsidian";
import type TaskProgressBarPlugin from "../../../index";
import { t } from "../../../translations/helper";
import { QuickCaptureModal } from "../../features/quick-capture/modals/QuickCaptureModal";
import type TaskProgressBarPlugin from "@/index";
import { t } from "@/translations/helper";
import { QuickCaptureModal } from "@/components/features/quick-capture/modals/QuickCaptureModal";
export class TaskCreationGuide {
private plugin: TaskProgressBarPlugin;

View file

@ -1,8 +1,7 @@
import {
OnboardingConfigManager,
OnboardingConfig,
} from "../../managers/onboarding-manager";
import { t } from "../../../translations/helper";
} from "@/managers/onboarding-manager";
import { setIcon } from "obsidian";
export class UserLevelSelector {

View file

@ -1,10 +1,10 @@
import { App, Component, setIcon, Menu, MarkdownView } from "obsidian";
import TaskProgressBarPlugin from "../../../index";
import { Task } from "../../../types/task";
import { createTaskCheckbox } from "../../features/task/view/details";
import { MarkdownRendererComponent } from "../../ui/renderers/MarkdownRenderer";
import { t } from "../../../translations/helper";
import { sanitizePriorityForClass } from "../../../utils/task/priority-utils";
import TaskProgressBarPlugin from "@/index";
import { Task } from "@/types/task";
import { createTaskCheckbox } from "@/components/features/task/view/details";
import { MarkdownRendererComponent } from "@/components/ui/renderers/MarkdownRenderer";
import { t } from "@/translations/helper";
import { sanitizePriorityForClass } from "@/utils/task/priority-utils";
export class QuadrantCardComponent extends Component {
plugin: TaskProgressBarPlugin;

View file

@ -1,9 +1,9 @@
import { App, Component, setIcon } from "obsidian";
import TaskProgressBarPlugin from "../../../index";
import { Task } from "../../../types/task";
import { QuadrantDefinition } from './quadrant";
import TaskProgressBarPlugin from "@/index";
import { Task } from "@/types/task";
import { QuadrantDefinition } from './quadrant';
import { QuadrantCardComponent } from "./quadrant-card";
import { t } from "../../../translations/helper";
import { t } from "@/translations/helper";
export class QuadrantColumnComponent extends Component {
plugin: TaskProgressBarPlugin;

View file

@ -1,12 +1,12 @@
import { App, Component, setIcon, Platform, DropdownComponent, Notice } from "obsidian";
import TaskProgressBarPlugin from "../../../index";
import { Task } from "../../../types/task";
import TaskProgressBarPlugin from "@/index";
import { Task } from "@/types/task";
import { QuadrantColumnComponent } from "./quadrant-column";
import Sortable from "sortablejs";
import "../../../styles/quadrant/quadrant.css";
import { t } from "../../../translations/helper";
import { FilterComponent } from "../inview-filter/filter";
import { ActiveFilter } from "../inview-filter/filter-type";
import "@/styles/quadrant/quadrant.css";
import { t } from "@/translations/helper";
import { FilterComponent } from "@/components/features/task/filter/in-view/filter";
import { ActiveFilter } from "@/components/features/task/filter/in-view/filter-type";
export interface QuadrantSortOption {
field:

View file

@ -11,16 +11,14 @@ import {
import {
createEmbeddableMarkdownEditor,
EmbeddableMarkdownEditor,
} from '../../../../editor-extensions/core/markdown-editor";
import TaskProgressBarPlugin from '../../../../index';
import { saveCapture } from '../../../../utils/file/file-operations";
import { t } from '../../../../translations/helper';
import { MinimalQuickCaptureSuggest } from './quick-capture/suggest/MinimalQuickCaptureSuggest";
import { DatePickerPopover } from '../../../ui/date-picker/DatePickerPopover";
import { TagSuggest } from '../../../ui/inputs/AutoComplete";
import { SuggestManager, UniversalEditorSuggest } from '../../../ui/suggest";
import { ConfigurableTaskParser } from '../../../../dataflow/core/ConfigurableTaskParser";
import { clearAllMarks } from '../../../ui/renderers/MarkdownRenderer";
} from '@/editor-extensions/core/markdown-editor';
import TaskProgressBarPlugin from '@/index';
import { saveCapture } from '@/utils/file/file-operations';
import { t } from '@/translations/helper';
import { MinimalQuickCaptureSuggest } from '@/components/features/quick-capture/suggest/MinimalQuickCaptureSuggest';
import { SuggestManager, UniversalEditorSuggest } from '@/components/ui/suggest';
import { ConfigurableTaskParser } from '@/dataflow/core/ConfigurableTaskParser';
import { clearAllMarks } from '@/components/ui/renderers/MarkdownRenderer';
interface TaskMetadata {
startDate?: Date;

View file

@ -11,22 +11,22 @@ import {
import {
createEmbeddableMarkdownEditor,
EmbeddableMarkdownEditor,
} from '../../../../editor-extensions/core/markdown-editor";
import TaskProgressBarPlugin from '../../../../index';
import { saveCapture, processDateTemplates } from '../../../../utils/file/file-operations";
import { FileSuggest } from "../components/ui/inputs/AutoComplete";
import { t } from '../../../../translations/helper';
import { MarkdownRendererComponent } from '../../../ui/renderers/MarkdownRenderer";
import { StatusComponent } from '../../../ui/feedback/StatusIndicator";
import { Task } from '../../../../types/task";
import { ContextSuggest, ProjectSuggest } from '../../../ui/inputs/AutoComplete";
} from '@/editor-extensions/core/markdown-editor';
import TaskProgressBarPlugin from '@/index';
import { saveCapture, processDateTemplates } from '@/utils/file/file-operations';
import { FileSuggest } from "@/components/ui/inputs/AutoComplete";
import { t } from '@/translations/helper';
import { MarkdownRendererComponent } from '@/components/ui/renderers/MarkdownRenderer';
import { StatusComponent } from '@/components/ui/feedback/StatusIndicator';
import { Task } from '@/types/task';
import { ContextSuggest, ProjectSuggest } from '@/components/ui/inputs/AutoComplete';
import {
TimeParsingService,
DEFAULT_TIME_PARSING_CONFIG,
ParsedTimeResult,
LineParseResult,
} from '../../../../services/time-parsing-service";
import { SuggestManager, UniversalEditorSuggest } from '../../../ui/suggest";
} from '@/services/time-parsing-service';
import { SuggestManager, UniversalEditorSuggest } from '@/components/ui/suggest';
interface TaskMetadata {
startDate?: Date;

View file

@ -10,9 +10,9 @@ import {
} from "obsidian";
import { Transaction } from "@codemirror/state";
import { EditorView } from "@codemirror/view";
import TaskProgressBarPlugin from '../../../../index';
import { t } from '../../../../translations/helper';
import { getSuggestOptionsByTrigger } from '../../../ui/suggest/SpecialCharacterSuggests";
import TaskProgressBarPlugin from '@/index';
import { t } from '@/translations/helper';
import { getSuggestOptionsByTrigger } from '@/components/ui/suggest';
interface SuggestOption {
id: string;

View file

@ -1,4 +1,4 @@
import TaskProgressBarPlugin from '../../../../index';
import TaskProgressBarPlugin from '@/index';
import {
Component,
debounce,
@ -6,13 +6,13 @@ import {
MarkdownSectionInformation,
TFile,
} from "obsidian";
import { shouldHideProgressBarInPreview } from "../utils";
import { formatProgressText } from '../../../../editor-extensions/ui-widgets/progress-bar-widget";
import { shouldHideProgressBarInPreview } from "@/utils";
import { formatProgressText } from '@/editor-extensions/ui-widgets/progress-bar-widget';
import {
checkIfParentElementHasGoalFormat,
extractTaskAndGoalInfoReadMode,
getCustomTotalGoalReadMode,
} from "../core/goal/read-mode";
} from "@/core/goal/read-mode";
interface GroupElement {
parentElement: HTMLElement;

View file

@ -1,4 +1,4 @@
import TaskProgressBarPlugin from '../../../../index';
import TaskProgressBarPlugin from '@/index';
import {
Component,
debounce,
@ -6,8 +6,8 @@ import {
setIcon,
TFile,
} from "obsidian";
import { getTasksAPI } from "../utils";
import { parseTaskLine } from '../../../../utils/task/task-operations";
import { getTasksAPI } from "@/utils";
import { parseTaskLine } from '@/utils/task/task-operations';
// This component replaces standard checkboxes with custom text marks in reading view
export function applyTaskTextMarks({

View file

@ -6,9 +6,9 @@
*/
import { Setting, Notice } from "obsidian";
import type TaskProgressBarPlugin from "../../index";
import type { FileSourceConfiguration } from "../../types/file-source";
import { t } from "../../translations/helper";
import type TaskProgressBarPlugin from "@/index";
import type { FileSourceConfiguration } from "@/types/file-source";
import { t } from "@/translations/helper";
/**
* Create File Task settings UI

View file

@ -1,8 +1,8 @@
import { Component, setIcon } from "obsidian";
import { SettingsIndexer } from "./SettingsIndexer";
import { SearchResult } from "../../types/SettingsSearch";
import { t } from "../../translations/helper";
import { TaskProgressBarSettingTab } from "../../setting";
import { SettingsIndexer } from "@/components/features/settings/core/SettingsIndexer";
import { SearchResult } from "@/types/SettingsSearch";
import { t } from "@/translations/helper";
import { TaskProgressBarSettingTab } from "@/setting";
/**
*

View file

@ -1,11 +1,11 @@
import { prepareFuzzySearch } from "obsidian";
import { SETTINGS_METADATA } from "../../common/settings-metadata";
import { SETTINGS_METADATA } from "@/common/settings-metadata";
import {
SettingsSearchIndex,
SettingSearchItem,
SearchResult,
} from "../../types/SettingsSearch";
import { t } from "../../translations/helper";
} from "@/types/SettingsSearch";
import { t } from "@/translations/helper";
/**
*

View file

@ -1,17 +1,17 @@
export { renderAboutSettingsTab } from "./AboutSettingsTab";
export { renderBetaTestSettingsTab } from "./BetaTestSettingsTab";
export { renderHabitSettingsTab } from "./HabitSettingsTab";
export { IcsSettingsComponent } from "./IcsSettingsTab";
export { renderProgressSettingsTab } from "./ProgressSettingsTab";
export { renderQuickCaptureSettingsTab } from "./QuickCaptureSettingsTab";
export { renderRewardSettingsTab } from "./RewardSettingsTab";
export { renderTaskFilterSettingsTab } from "./TaskFilterSettingsTab";
export { renderTaskHandlerSettingsTab } from "./TaskHandlerSettingsTab";
export { renderTaskStatusSettingsTab } from "./TaskStatusSettingsTab";
export { renderViewSettingsTab } from "./ViewSettingsTab";
export { renderWorkflowSettingsTab } from "./WorkflowSettingsTab";
export { renderProjectSettingsTab } from "./ProjectSettingsTab";
export { renderDatePrioritySettingsTab } from "./DatePrioritySettingsTab";
export { renderTimelineSidebarSettingsTab } from "./TimelineSidebarSettingsTab";
export { renderIndexSettingsTab } from "./IndexSettingsTab";
export { createFileSourceSettings } from "./FileSourceSettings";
export { renderAboutSettingsTab } from "./tabs/AboutSettingsTab";
export { renderBetaTestSettingsTab } from "./tabs/BetaTestSettingsTab";
export { renderHabitSettingsTab } from "./tabs/HabitSettingsTab";
export { IcsSettingsComponent } from "./tabs/IcsSettingsTab";
export { renderProgressSettingsTab } from "./tabs/ProgressSettingsTab";
export { renderQuickCaptureSettingsTab } from "./tabs/QuickCaptureSettingsTab";
export { renderRewardSettingsTab } from "./tabs/RewardSettingsTab";
export { renderTaskFilterSettingsTab } from "./tabs/TaskFilterSettingsTab";
export { renderTaskHandlerSettingsTab } from "./tabs/TaskHandlerSettingsTab";
export { renderTaskStatusSettingsTab } from "./tabs/TaskStatusSettingsTab";
export { renderViewSettingsTab } from "./tabs/ViewSettingsTab";
export { renderWorkflowSettingsTab } from "./tabs/WorkflowSettingsTab";
export { renderProjectSettingsTab } from "./tabs/ProjectSettingsTab";
export { renderDatePrioritySettingsTab } from "./tabs/DatePrioritySettingsTab";
export { renderTimelineSidebarSettingsTab } from "./tabs/TimelineSidebarSettingsTab";
export { renderIndexSettingsTab } from "./tabs/IndexSettingsTab";
export { createFileSourceSettings } from "./components/FileSourceSettingsSection";

View file

@ -1,7 +1,7 @@
import { setIcon, Setting } from "obsidian";
import { TaskProgressBarSettingTab } from "../../setting";
import { t } from "../../translations/helper";
import { OnboardingModal } from "../onboarding/OnboardingModal";
import { TaskProgressBarSettingTab } from "@/setting";
import { t } from "@/translations/helper";
import { OnboardingModal } from "@/components/features/onboarding/OnboardingModal";
export function renderAboutSettingsTab(
settingTab: TaskProgressBarSettingTab,

View file

@ -1,7 +1,7 @@
import { Setting } from "obsidian";
import { TaskProgressBarSettingTab } from "../../setting";
import { t } from "../../translations/helper";
import { ConfirmModal } from "../ConfirmModal";
import { TaskProgressBarSettingTab } from "@/setting";
import { t } from "@/translations/helper";
import { ConfirmModal } from "@/components/ui/modals/ConfirmModal";
export function renderBasesSettingsTab(settingTab: TaskProgressBarSettingTab,
containerEl: HTMLElement

View file

@ -1,7 +1,6 @@
import { Setting } from "obsidian";
import { TaskProgressBarSettingTab } from "../../setting";
import { t } from "../../translations/helper";
import { ConfirmModal } from "../ConfirmModal";
import { TaskProgressBarSettingTab } from "@/setting";
import { t } from "@/translations/helper";
export function renderBetaTestSettingsTab(
settingTab: TaskProgressBarSettingTab,

View file

@ -1,6 +1,6 @@
import { Setting } from "obsidian";
import { t } from "../../translations/helper";
import { TaskProgressBarSettingTab } from "../../setting";
import { t } from "@/translations/helper";
import { TaskProgressBarSettingTab } from "@/setting";
export function renderDatePrioritySettingsTab(
settingTab: TaskProgressBarSettingTab,

View file

@ -1,9 +1,9 @@
import { Setting, Notice, setIcon, DropdownComponent } from "obsidian";
import { TaskProgressBarSettingTab } from "../../setting";
import { t } from "../../translations/helper";
import { FilterMode, FileFilterRule } from "../../common/setting-definition";
import { FolderSuggest, SimpleFileSuggest as FileSuggest } from "../AutoComplete";
import "../../styles/file-filter-settings.css";
import { TaskProgressBarSettingTab } from "@/setting";
import { t } from "@/translations/helper";
import { FilterMode, FileFilterRule } from "@/common/setting-definition";
import { FolderSuggest, SimpleFileSuggest as FileSuggest } from "@/components/ui/inputs/AutoComplete";
import "@/styles/file-filter-settings.css";
export function renderFileFilterSettingsTab(
settingTab: TaskProgressBarSettingTab,

View file

@ -1,7 +1,7 @@
import { Setting } from "obsidian";
import { TaskProgressBarSettingTab } from "../../setting";
import { t } from "../../translations/helper";
import { HabitList } from "../HabitSettingList";
import { TaskProgressBarSettingTab } from "@/setting";
import { t } from "@/translations/helper";
import { HabitList } from "@/components/features/habit/components/HabitSettingList";
export function renderHabitSettingsTab(
settingTab: TaskProgressBarSettingTab,

View file

@ -19,12 +19,12 @@ import {
IcsManagerConfig,
IcsTextReplacement,
IcsHolidayConfig,
} from "../../types/ics";
import { t } from "../../translations/helper";
import TaskProgressBarPlugin from "../../index";
import "../../styles/ics-settings.css";
import { HolidayDetector } from "../../parsers/holiday-detector";
import { WebcalUrlConverter } from "../../parsers/webcal-converter";
} from "@/types/ics";
import { t } from "@/translations/helper";
import TaskProgressBarPlugin from "@/index";
import "@/styles/ics-settings.css";
import { HolidayDetector } from "@/parsers/holiday-detector";
import { WebcalUrlConverter } from "@/parsers/webcal-converter";
export class IcsSettingsComponent {
private plugin: TaskProgressBarPlugin;

View file

@ -1,9 +1,9 @@
import { Setting, Notice } from "obsidian";
import { TaskProgressBarSettingTab } from "../../setting";
import { t } from "../../translations/helper";
import { SingleFolderSuggest } from "../AutoComplete";
import { ConfirmModal } from "../ConfirmModal";
import { createFileSourceSettings } from "./FileSourceSettings";
import { TaskProgressBarSettingTab } from "@/setting";
import { t } from "@/translations/helper";
import { SingleFolderSuggest } from "@/components/ui/inputs/AutoComplete";
import { ConfirmModal } from "@/components/ui/modals/ConfirmModal";
import { createFileSourceSettings } from "../components/FileSourceSettingsSection";
/**
* Renders the Index Settings tab that consolidates all indexing-related settings

View file

@ -3,12 +3,12 @@
*/
import { Setting, Notice, Platform, setIcon, requestUrl } from "obsidian";
import { t } from "../../translations/helper";
import TaskProgressBarPlugin from "../../index";
import { McpServerManager } from "../../mcp/McpServerManager";
import { AuthMiddleware } from "../../mcp/auth/AuthMiddleware";
import { ConfirmModal } from "../ConfirmModal";
import "../../styles/mcp-integration.css";
import { t } from "@/translations/helper";
import TaskProgressBarPlugin from "@/index";
import { McpServerManager } from "@/mcp/McpServerManager";
import { AuthMiddleware } from "@/mcp/auth/AuthMiddleware";
import { ConfirmModal } from "@/components/ui/modals/ConfirmModal";
import "@/styles/mcp-integration.css";
function createConfigBlock(
container: HTMLElement,

View file

@ -1,8 +1,8 @@
import { Setting, TextAreaComponent } from "obsidian";
import { DEFAULT_SETTINGS } from "../../common/setting-definition";
import { t } from "../../translations/helper";
import { TaskProgressBarSettingTab } from "../../setting";
import { formatProgressText } from "../../editor-extensions/ui-widgets/progress-bar-widget";
import { DEFAULT_SETTINGS } from "@/common/setting-definition";
import { t } from "@/translations/helper";
import { TaskProgressBarSettingTab } from "@/setting";
import { formatProgressText } from "@/editor-extensions/ui-widgets/progress-bar-widget";
export function renderProgressSettingsTab(
settingTab: TaskProgressBarSettingTab,

View file

@ -1,6 +1,6 @@
import { Setting } from "obsidian";
import { TaskProgressBarSettingTab } from "../../setting";
import { t } from "../../translations/helper";
import { TaskProgressBarSettingTab } from "@/setting";
import { t } from "@/translations/helper";
export function renderProjectSettingsTab(
settingTab: TaskProgressBarSettingTab,

View file

@ -1,6 +1,6 @@
import { Setting, Notice, App } from "obsidian";
import { TaskProgressBarSettingTab } from "../../setting";
import { t } from "../../translations/helper";
import { TaskProgressBarSettingTab } from "@/setting";
import { t } from "@/translations/helper";
export function renderQuickCaptureSettingsTab(
settingTab: TaskProgressBarSettingTab,

View file

@ -2,7 +2,7 @@ import { Setting, debounce, TextComponent, Notice } from "obsidian";
import { OccurrenceLevel, RewardItem } from "src/common/setting-definition";
import { TaskProgressBarSettingTab } from "src/setting";
import { t } from "src/translations/manager";
import { ImageSuggest } from "../AutoComplete";
import { ImageSuggest } from "@/components/ui/inputs/AutoComplete";
export function renderRewardSettingsTab(
settingTab: TaskProgressBarSettingTab,

View file

@ -1,8 +1,8 @@
import { App, Modal, Setting } from "obsidian";
import { t } from "../../translations/helper";
import { TaskProgressBarSettingTab } from "../../setting";
import { migrateOldFilterOptions } from "../../editor-extensions/core/task-filter-panel";
import { generateUniqueId } from "../../utils/id-generator";
import { t } from "@/translations/helper";
import { TaskProgressBarSettingTab } from "@/setting";
import { migrateOldFilterOptions } from "@/editor-extensions/core/task-filter-panel";
import { generateUniqueId } from "@/utils/id-generator";
class PresetFilterModal extends Modal {
constructor(app: App, private preset: any, private onSave: () => void) {

View file

@ -2,9 +2,9 @@ import { Setting } from "obsidian";
import {
SortCriterion,
DEFAULT_SETTINGS,
} from "../../common/setting-definition";
import { TaskProgressBarSettingTab } from "../../setting";
import { t } from "../../translations/helper";
} from "@/common/setting-definition";
import { TaskProgressBarSettingTab } from "@/setting";
import { t } from "@/translations/helper";
export function renderTaskHandlerSettingsTab(
settingTab: TaskProgressBarSettingTab,

View file

@ -1,14 +1,13 @@
import { Modal, setIcon, Setting } from "obsidian";
import { t } from "../../translations/helper";
import { allStatusCollections } from "../../common/task-status";
import { TaskProgressBarSettingTab } from "../../setting";
import { getTasksAPI } from "../../utils";
import { t } from "@/translations/helper";
import { allStatusCollections } from "@/common/task-status";
import { TaskProgressBarSettingTab } from "@/setting";
import { getTasksAPI } from "@/utils";
import {
DEFAULT_SETTINGS,
TaskStatusConfig,
} from "../../common/setting-definition";
import * as taskStatusModule from "../../common/task-status";
import { getStatusIcon } from "../../icon";
} from "@/common/setting-definition";
import * as taskStatusModule from "@/common/task-status";
export function renderTaskStatusSettingsTab(
settingTab: TaskProgressBarSettingTab,

View file

@ -1,5 +1,5 @@
import { Setting } from "obsidian";
import { TaskProgressBarSettingTab } from "../../setting";
import { TaskProgressBarSettingTab } from "@/setting";
export function renderTaskTimerSettingTab(
settingTab: TaskProgressBarSettingTab,

View file

@ -1,7 +1,7 @@
import { PluginSettingTab, Setting } from "obsidian";
import { t } from "../../translations/helper";
import { TaskProgressBarSettingTab } from "../../setting";
import type { EnhancedTimeParsingConfig } from "../../types/time-parsing";
import { t } from "@/translations/helper";
import { TaskProgressBarSettingTab } from "@/setting";
import type { EnhancedTimeParsingConfig } from "@/types/time-parsing";
export function renderTimeParsingSettingsTab(
pluginSettingTab: TaskProgressBarSettingTab,

View file

@ -1,6 +1,6 @@
import { Setting, Notice } from "obsidian";
import { TaskProgressBarSettingTab } from "../../setting";
import { t } from "../../translations/helper";
import { TaskProgressBarSettingTab } from "@/setting";
import { t } from "@/translations/helper";
export function renderTimelineSidebarSettingsTab(
settingTab: TaskProgressBarSettingTab,

View file

@ -1,9 +1,9 @@
import { Setting, Notice, setIcon } from "obsidian";
import { ViewConfig, ViewFilterRule } from "../../common/setting-definition";
import { t } from "../../translations/helper";
import { TaskProgressBarSettingTab } from "../../setting";
import { ViewConfigModal } from "../ViewConfigModal";
import { TaskFilterComponent } from '../../task/filter/ViewTaskFilter';
import { ViewConfig, ViewFilterRule } from "@/common/setting-definition";
import { t } from "@/translations/helper";
import { TaskProgressBarSettingTab } from "@/setting";
import { ViewConfigModal } from "@/components/features/task/view/modals/ViewConfigModal";
import { TaskFilterComponent } from '@/components/features/task/filter/ViewTaskFilter';
export function renderViewSettingsTab(
settingTab: TaskProgressBarSettingTab,

View file

@ -1,8 +1,8 @@
import { Setting, Modal } from "obsidian";
import { t } from "../../translations/helper";
import { TaskProgressBarSettingTab } from "../../setting";
import { WorkflowDefinitionModal } from "../WorkflowDefinitionModal";
import { generateUniqueId } from "../../utils/id-generator";
import { t } from "@/translations/helper";
import { TaskProgressBarSettingTab } from "@/setting";
import { WorkflowDefinitionModal } from "@/components/features/workflow/modals/WorkflowDefinitionModal";
import { generateUniqueId } from "@/utils/id-generator";
export function renderWorkflowSettingsTab(
settingTab: TaskProgressBarSettingTab,

View file

@ -1,10 +1,10 @@
import { Component, App } from "obsidian";
import { TableSpecificConfig } from "../../../common/setting-definition";
import { EditorCallbacks } from "./TableTypes";
import TaskProgressBarPlugin from "../../../index";
import { t } from "../../../translations/helper";
import { DatePickerPopover } from "../../ui/date-picker/DatePickerPopover";
import { ContextSuggest, ProjectSuggest, TagSuggest } from "../../ui/inputs/AutoComplete";
import TaskProgressBarPlugin from "@/index";
import { t } from "@/translations/helper";
import { DatePickerPopover } from "@/components/ui/date-picker/DatePickerPopover";
import { ContextSuggest, ProjectSuggest, TagSuggest } from "@/components/ui/inputs/AutoComplete";
/**
* Table editor component responsible for inline cell editing

View file

@ -1,5 +1,5 @@
import { Component, setIcon } from "obsidian";
import { t } from "../../../translations/helper";
import { t } from "@/translations/helper";
export interface TableHeaderCallbacks {
onTreeModeToggle?: (enabled: boolean) => void;

View file

@ -1,12 +1,12 @@
import { Component, setIcon, Menu, App } from "obsidian";
import { TableColumn, TableRow, TableCell } from "./TableTypes";
import { TableSpecificConfig } from "../../../common/setting-definition";
import { t } from "../../../translations/helper";
import { DatePickerPopover } from "../../ui/date-picker/DatePickerPopover";
import type TaskProgressBarPlugin from "../../../index";
import { ContextSuggest, ProjectSuggest, TagSuggest } from "../../ui/inputs/AutoComplete";
import { clearAllMarks } from "../../ui/renderers/MarkdownRenderer";
import { getEffectiveProject, isProjectReadonly } from "../../../utils/task/task-operations";
import { t } from "@/translations/helper";
import { DatePickerPopover } from "@/components/ui/date-picker/DatePickerPopover";
import type TaskProgressBarPlugin from "@/index";
import { ContextSuggest, ProjectSuggest, TagSuggest } from "@/components/ui/inputs/AutoComplete";
import { clearAllMarks } from "@/components/ui/renderers/MarkdownRenderer";
import { getEffectiveProject, isProjectReadonly } from "@/utils/task/task-operations";
// Cache for autocomplete data to avoid repeated expensive operations
interface AutoCompleteCache {

View file

@ -1,4 +1,4 @@
import { Task } from "../../../types/task";
import { Task } from "@/types/task";
/**
* Table column definition

View file

@ -1,20 +1,20 @@
import { Component, App, debounce } from "obsidian";
import { Task } from "../../../types/task";
import { Task } from "@/types/task";
import {
TableSpecificConfig,
SortCriterion,
} from "../../../common/setting-definition";
import TaskProgressBarPlugin from "../../../index";
import { t } from "../../../translations/helper";
import TaskProgressBarPlugin from "@/index";
import { t } from "@/translations/helper";
import { TableColumn, TableRow, TableCell } from "./TableTypes";
import { TableRenderer } from "./TableRenderer";
import { TableEditor } from "./TableEditor";
import { TreeManager } from "./TreeManager";
import { VirtualScrollManager } from "./VirtualScrollManager";
import { TableHeader, TableHeaderCallbacks } from "./TableHeader";
import { sortTasks } from "../../commands/sortTaskCommands";
import { isProjectReadonly } from "../../../utils/task/task-operations";
import "../../../styles/table.css";
import { sortTasks } from "@/commands/sortTaskCommands";
import { isProjectReadonly } from "@/utils/task/task-operations";
import "@/styles/table.css";
export interface TableViewCallbacks {
onTaskSelected?: (task: Task | null) => void;

View file

@ -1,8 +1,8 @@
import { Component, App } from "obsidian";
import { Task } from "../../../types/task";
import { Task } from "@/types/task";
import { TableView, TableViewCallbacks } from "./TableView";
import { TableSpecificConfig } from "../../../common/setting-definition";
import TaskProgressBarPlugin from "../../../index";
import TaskProgressBarPlugin from "@/index";
/**
* Table view adapter to make TableView compatible with ViewComponentManager

View file

@ -1,9 +1,9 @@
import { Component } from "obsidian";
import { Task } from "../../../types/task";
import { Task } from "@/types/task";
import { TreeNode, TableRow, TableCell, TableColumn } from "./TableTypes";
import { SortCriterion } from "../../../common/setting-definition";
import { sortTasks } from "../../commands/sortTaskCommands";
import { t } from "../../../translations/helper";
import { SortCriterion } from "@/common/setting-definition";
import { sortTasks } from "@/commands/sortTaskCommands";
import { t } from "@/translations/helper";
/**
* Tree manager component responsible for handling hierarchical task display

View file

@ -11,14 +11,14 @@ import {
DropdownComponent,
TextAreaComponent,
} from "obsidian";
import { Task } from "../../../../types/task";
import TaskProgressBarPlugin from "../../../../index";
import { t } from "../../../../translations/helper";
import { ProjectSuggest, TagSuggest, ContextSuggest } from "../../../ui/inputs/AutoComplete";
import { StatusComponent } from "../../../ui/feedback/StatusIndicator";
import { Task } from "@/types/task";
import TaskProgressBarPlugin from "@/index";
import { t } from "@/translations/helper";
import { ProjectSuggest, TagSuggest, ContextSuggest } from "@/components/ui/inputs/AutoComplete";
import { StatusComponent } from "@/components/ui/feedback/StatusIndicator";
import { format } from "date-fns";
import { getEffectiveProject, isProjectReadonly } from "../../../../utils/task/task-operations";
import { OnCompletionConfigurator } from "../onCompletion/OnCompletionConfigurator";
import { getEffectiveProject, isProjectReadonly } from "@/utils/task/task-operations";
import { OnCompletionConfigurator } from "@/components/features/on-completion/OnCompletionConfigurator";
export interface MetadataChangeEvent {
field: string;

View file

@ -4,10 +4,10 @@
*/
import { App, Modal, TFile, MarkdownView, ButtonComponent } from "obsidian";
import { Task } from "../../../../types/task";
import TaskProgressBarPlugin from "../../../../index";
import { Task } from "@/types/task";
import TaskProgressBarPlugin from "@/index";
import { TaskMetadataEditor } from "./MetadataEditor";
import { t } from "../../../../translations/helper";
import { t } from "@/translations/helper";
export class TaskDetailsModal extends Modal {
private task: Task;

View file

@ -12,10 +12,10 @@ import {
CloseableComponent,
} from "obsidian";
import { createPopper, Instance as PopperInstance } from "@popperjs/core";
import { Task } from "../../../../types/task";
import TaskProgressBarPlugin from "../../../../index";
import { Task } from "@/types/task";
import TaskProgressBarPlugin from "@/index";
import { TaskMetadataEditor } from "./MetadataEditor";
import { t } from "../../../../translations/helper";
import { t } from "@/translations/helper";
export class TaskDetailsPopover
extends Component

View file

@ -1,8 +1,8 @@
import { App, Modal, Setting, Notice, DropdownComponent } from "obsidian";
import { t } from "../../../../translations/helper";
import { SavedFilterConfig } from "../../../../common/setting-definition";
import { t } from "@/translations/helper";
import { SavedFilterConfig } from "@/common/setting-definition";
import { RootFilterState } from "./ViewTaskFilter";
import type TaskProgressBarPlugin from "../../../../index";
import type TaskProgressBarPlugin from "@/index";
export class FilterConfigModal extends Modal {
private plugin: TaskProgressBarPlugin;

View file

@ -9,10 +9,10 @@ import {
setTooltip,
} from "obsidian";
import Sortable from "sortablejs";
import { t } from "../../../../translations/helper"; // Adjusted path assuming helper.ts is in src/translations
import "../../../../styles/global-filter.css";
import { t } from "@/translations/helper"; // Adjusted path assuming helper.ts is in src/translations
import "@/styles/global-filter.css";
import { FilterConfigModal } from "./FilterConfigModal";
import type TaskProgressBarPlugin from "../../../../index";
import type TaskProgressBarPlugin from "@/index";
// --- Interfaces (from focus.md and example HTML) ---
// (Using 'any' for property types for now, will refine based on focus.md property list)

View file

@ -1,7 +1,7 @@
import { App } from "obsidian";
import { Modal } from "obsidian";
import { TaskFilterComponent, RootFilterState } from "./ViewTaskFilter";
import type TaskProgressBarPlugin from "../../../../index";
import type TaskProgressBarPlugin from "@/index";
export class ViewTaskFilterModal extends Modal {
public taskFilterComponent: TaskFilterComponent;

View file

@ -2,7 +2,7 @@ import { App } from "obsidian";
import { CloseableComponent, Component } from "obsidian";
import { createPopper, Instance as PopperInstance } from "@popperjs/core";
import { TaskFilterComponent, RootFilterState } from "./ViewTaskFilter";
import type TaskProgressBarPlugin from "../../../../index";
import type TaskProgressBarPlugin from "@/index";
export class ViewTaskFilterPopover
extends Component

View file

@ -1,5 +1,5 @@
import { Component } from "obsidian";
import { t } from "../../../translations/helper";
import { t } from "@/translations/helper";
export class ScrollToDateButton extends Component {
private containerEl: HTMLElement;
private scrollToDateCallback: (date: Date) => void;

View file

@ -1,7 +1,7 @@
import { Component, debounce, setIcon } from "obsidian";
import { FilterCategory, FilterDropdownOptions } from "./filter-type";
import TaskProgressBarPlugin from "../../../../../index";
import { t } from "../../../../../translations/helper";
import TaskProgressBarPlugin from "@/index";
import { t } from "@/translations/helper";
export class FilterDropdown extends Component {
private options: FilterCategory[];

View file

@ -7,10 +7,10 @@ import {
FilterComponentOptions,
} from "./filter-type";
import "./filter.css";
import { Task } from "../../../../../types/task";
import TaskProgressBarPlugin from "../../../../../index";
import { t } from "../../../../../translations/helper";
import { PRIORITY_MAP } from "../../../../../common/default-symbol";
import { Task } from "@/types/task";
import TaskProgressBarPlugin from "@/index";
import { t } from "@/translations/helper";
import { PRIORITY_MAP } from "@/common/default-symbol";
// Helper function to build filter categories and options from tasks
export function buildFilterOptionsFromTasks(tasks: Task[]): FilterCategory[] {

View file

@ -1,16 +1,17 @@
import { App, Component, debounce, setIcon, Menu } from "obsidian";
import { StandardTaskMetadata, Task } from "../../../../types/task";
import TaskProgressBarPlugin from "../../../../index";
import { ContextSuggest, ProjectSuggest, TagSuggest } from "../../../ui/inputs/AutoComplete";
import { clearAllMarks } from "../../../ui/renderers/MarkdownRenderer";
import { StandardTaskMetadata, Task } from "@/types/task";
import TaskProgressBarPlugin from "@/index";
import { ContextSuggest, ProjectSuggest, TagSuggest } from "@/components/ui/inputs/AutoComplete";
import { clearAllMarks } from "@/components/ui/renderers/MarkdownRenderer";
import {
createEmbeddableMarkdownEditor,
EmbeddableMarkdownEditor,
} from "../../../../editor-extensions/core/markdown-editor";
import "../../../../styles/inline-editor.css";
import { getEffectiveProject, isProjectReadonly } from "../../../../utils/task/task-operations";
import { t } from "../../../../translations/helper";
import { sanitizePriorityForClass } from "../../../../utils/task/priority-utils";
} from "@/editor-extensions/core/markdown-editor";
import "@/styles/inline-editor.css";
import { getEffectiveProject, isProjectReadonly } from "@/utils/task/task-operations";
import { t } from "@/translations/helper";
import { sanitizePriorityForClass } from "@/utils/task/priority-utils";
import { OnCompletionModal } from "@/components/features/on-completion/OnCompletionModal";
export interface InlineEditorOptions {
onTaskUpdate: (task: Task, updatedTask: Task) => Promise<void>;
@ -704,9 +705,6 @@ export class InlineEditor extends Component {
container: HTMLElement,
currentValue?: string
): Promise<void> {
const { OnCompletionModal } = await import(
"../onCompletion/OnCompletionModal"
);
const modal = new OnCompletionModal(this.app, this.plugin, {
initialValue: currentValue || this.task.metadata.onCompletion || "",

View file

@ -1,6 +1,6 @@
import { App, Component } from "obsidian";
import { Task } from "../../../../types/task";
import TaskProgressBarPlugin from "../../../../index";
import { Task } from "@/types/task";
import TaskProgressBarPlugin from "@/index";
import { InlineEditor, InlineEditorOptions } from "./InlineEditor";
/**

View file

@ -1,14 +1,13 @@
import { Component, App } from "obsidian";
import { TreeNode, ProjectNodeData } from "../../../../types/tree";
import { TreeComponent } from "../../../ui/tree/TreeComponent";
import { Task } from "../../../../types/task";
import { TreeNode, ProjectNodeData } from "@/types/tree";
import { TreeComponent } from "@/components/ui/tree/TreeComponent";
import { Task } from "@/types/task";
import {
buildProjectTreeFromTasks,
findNodeByPath,
getAllDescendants
} from "../../core/project-tree-builder";
import { t } from "../../../../translations/helper";
import TaskProgressBarPlugin from "../../../../index";
} from "@/core/project-tree-builder";
import TaskProgressBarPlugin from "@/index";
/**
* Project tree component for hierarchical project display

View file

@ -1,16 +1,16 @@
import { App, setIcon } from "obsidian";
import { Task } from "../../../../types/task";
import { t } from "../../../../translations/helper";
import "../../../../styles/project-view.css";
import "../../../../styles/view-two-column-base.css";
import "../../../../styles/project-tree.css";
import TaskProgressBarPlugin from "../../../../index";
import { Task } from "@/types/task";
import { t } from "@/translations/helper";
import "@/styles/project-view.css";
import "@/styles/view-two-column-base.css";
import "@/styles/project-tree.css";
import TaskProgressBarPlugin from "@/index";
import { TwoColumnViewBase, TwoColumnViewConfig } from "./TwoColumnViewBase";
import { ProjectTreeComponent } from "./ProjectTreeComponent";
import { TreeNode, ProjectNodeData } from "../../../../types/tree";
import { buildProjectTreeFromTasks, findNodeByPath } from "../../core/project-tree-builder";
import { filterTasksByProjectPaths } from "../../core/project-filter";
import { getEffectiveProject } from "../../../../utils/task/task-operations";
import { TreeNode, ProjectNodeData } from "@/types/tree";
import { buildProjectTreeFromTasks, findNodeByPath } from "@/core/project-tree-builder";
import { filterTasksByProjectPaths } from "@/core/project-filter";
import { getEffectiveProject } from "@/utils/task/task-operations";
export class ProjectViewComponent extends TwoColumnViewBase<string> {
// 特定于项目视图的状态

View file

@ -1,10 +1,10 @@
import { App, setIcon } from "obsidian";
import { Task } from "../../../../types/task";
import { t } from "../../../../translations/helper";
import "../../../../styles/tag-view.css";
import "../../../../styles/view-two-column-base.css";
import { Task } from "@/types/task";
import { t } from "@/translations/helper";
import "@/styles/tag-view.css";
import "@/styles/view-two-column-base.css";
import { TaskListRendererComponent } from "./TaskList";
import TaskProgressBarPlugin from "../../../../index";
import TaskProgressBarPlugin from "@/index";
import { TwoColumnViewBase, TwoColumnViewConfig } from "./TwoColumnViewBase";
// 用于存储标签节的数据结构

View file

@ -1,10 +1,10 @@
import { App, Component } from "obsidian";
import { Task } from "../../../../types/task";
import { Task } from "@/types/task";
import { TaskListItemComponent } from "./listItem";
import { TaskTreeItemComponent } from "./treeItem";
import { tasksToTree } from "../../../../utils/ui/tree-view-utils";
import { t } from "../../../../translations/helper";
import TaskProgressBarPlugin from "../../../../index";
import { tasksToTree } from "@/utils/ui/tree-view-utils";
import { t } from "@/translations/helper";
import TaskProgressBarPlugin from "@/index";
export class TaskListRendererComponent extends Component {
private taskComponents: TaskListItemComponent[] = [];

View file

@ -1,11 +1,11 @@
import { App, setIcon } from "obsidian";
import { Task } from "../../../../types/task";
import { Task } from "@/types/task";
import { TwoColumnViewBase, TwoColumnViewConfig } from "./TwoColumnViewBase";
import { t } from "../../../../translations/helper";
import TaskProgressBarPlugin from "../../../../index";
import { TwoColumnSpecificConfig } from "../../../../common/setting-definition";
import "../../../../styles/property-view.css";
import { getEffectiveProject } from "../../../../utils/task/task-operations";
import { t } from "@/translations/helper";
import TaskProgressBarPlugin from "@/index";
import { TwoColumnSpecificConfig } from "@/common/setting-definition";
import "@/styles/property-view.css";
import { getEffectiveProject } from "@/utils/task/task-operations";
/**
* A two-column view that displays task properties in the left column

View file

@ -5,12 +5,12 @@ import {
ExtraButtonComponent,
Platform,
} from "obsidian";
import { Task } from "../../../../types/task";
import { Task } from "@/types/task";
import { TaskListRendererComponent } from "./TaskList";
import { t } from "../../../../translations/helper";
import TaskProgressBarPlugin from "../../../../index";
import { getInitialViewMode, saveViewMode } from "../../../../utils/ui/view-mode-utils";
import "../../../../styles/view.css";
import { t } from "@/translations/helper";
import TaskProgressBarPlugin from "@/index";
import { getInitialViewMode, saveViewMode } from "@/utils/ui/view-mode-utils";
import "@/styles/view.css";
/**
*

View file

@ -1,6 +1,6 @@
import { Component, setIcon } from "obsidian";
import { Task } from "../../../../types/task";
import { t } from "../../../../translations/helper";
import { Task } from "@/types/task";
import { t } from "@/translations/helper";
export interface CalendarDay {
date: Date;

View file

@ -1,20 +1,20 @@
import { App, Component, setIcon } from "obsidian";
import { Task } from "../../../../types/task";
import { Task } from "@/types/task";
import { TaskListItemComponent } from "./listItem"; // Re-import needed components
import {
ViewMode,
getViewSettingOrDefault,
SortCriterion,
} from "../../../../common/setting-definition"; // 导入 SortCriterion
import { tasksToTree } from "../../../../utils/ui/tree-view-utils"; // Re-import needed utils
} from "@/common/setting-definition"; // 导入 SortCriterion
import { tasksToTree } from "@/utils/ui/tree-view-utils"; // Re-import needed utils
import { TaskTreeItemComponent } from "./treeItem"; // Re-import needed components
import { t } from "../../../../translations/helper";
import TaskProgressBarPlugin from "../../../../index";
import { getInitialViewMode, saveViewMode } from "../../../../utils/ui/view-mode-utils";
import { t } from "@/translations/helper";
import TaskProgressBarPlugin from "@/index";
import { getInitialViewMode, saveViewMode } from "@/utils/ui/view-mode-utils";
// @ts-ignore
import { filterTasks } from "../../../../utils/task/task-filter-utils";
import { sortTasks } from "../../commands/sortTaskCommands"; // 导入 sortTasks 函数
import { filterTasks } from "@/utils/task/task-filter-utils";
import { sortTasks } from "@/commands/sortTaskCommands"; // 导入 sortTasks 函数
interface ContentComponentParams {
onTaskSelected?: (task: Task | null) => void;

Some files were not shown because too many files have changed in this diff Show more