diff --git a/frontend/bun.lock b/frontend/bun.lock index 75a0621..34f88a8 100644 --- a/frontend/bun.lock +++ b/frontend/bun.lock @@ -4,39 +4,40 @@ "": { "name": "haystack", "dependencies": { - "@kobalte/core": "^0.13.9", + "@kobalte/core": "^0.13.10", "@kobalte/tailwindcss": "^0.9.0", "@solidjs/router": "^0.15.3", - "@tabler/icons-solidjs": "^3.30.0", - "@tauri-apps/api": "^2", - "@tauri-apps/plugin-dialog": "~2", - "@tauri-apps/plugin-fs": "~2", + "@tabler/icons-solidjs": "^3.34.0", + "@tauri-apps/api": "^2.6.0", + "@tauri-apps/plugin-dialog": "~2.3.0", + "@tauri-apps/plugin-fs": "~2.4.0", "@tauri-apps/plugin-http": "2.4.3", - "@tauri-apps/plugin-log": "~2", - "@tauri-apps/plugin-opener": "^2", + "@tauri-apps/plugin-log": "~2.6.0", + "@tauri-apps/plugin-opener": "^2.4.0", "@tauri-apps/plugin-os": "2.2.1", "clsx": "^2.1.1", "fuse.js": "^7.1.0", "jwt-decode": "^4.0.0", - "solid-js": "^1.9.3", + "solid-js": "^1.9.7", "solid-markdown": "^2.0.14", - "solid-motionone": "^1.0.3", + "solid-motionone": "^1.0.4", "solidjs-markdown": "^0.2.0", "tailwind-scrollbar-hide": "^2.0.0", "tauri-plugin-ios-shared-token-api": "file:../tauri-plugin-ios-shared-token", "tauri-plugin-sharetarget-api": "^0.1.6", - "valibot": "^1.0.0-rc.2", + "valibot": "^1.1.0", }, "devDependencies": { "@biomejs/biome": "^1.9.4", - "@tauri-apps/cli": "^2.5.0", - "autoprefixer": "^10.4.20", - "postcss": "^8.5.3", - "postcss-cli": "^11.0.0", + "@tauri-apps/cli": "^2.6.2", + "autoprefixer": "^10.4.21", + "postcss": "^8.5.6", + "postcss-cli": "^11.0.1", "tailwindcss": "3.4.0", - "typescript": "~5.6.2", - "vite": "^6.0.3", - "vite-plugin-solid": "^2.11.0", + "typescript": "~5.6.3", + "vite": "^6.3.5", + "vite-plugin-solid": "^2.11.7", + "vite-tsconfig-paths": "^5.1.4", }, }, }, @@ -451,6 +452,8 @@ "globals": ["globals@11.12.0", "", {}, "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="], + "globrex": ["globrex@0.1.2", "", {}, "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg=="], + "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], @@ -719,6 +722,8 @@ "ts-interface-checker": ["ts-interface-checker@0.1.13", "", {}, "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="], + "tsconfck": ["tsconfck@3.1.6", "", { "peerDependencies": { "typescript": "^5.0.0" }, "optionalPeers": ["typescript"], "bin": { "tsconfck": "bin/tsconfck.js" } }, "sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w=="], + "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], "typescript": ["typescript@5.6.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw=="], @@ -757,6 +762,8 @@ "vite-plugin-solid": ["vite-plugin-solid@2.11.7", "", { "dependencies": { "@babel/core": "^7.23.3", "@types/babel__core": "^7.20.4", "babel-preset-solid": "^1.8.4", "merge-anything": "^5.1.7", "solid-refresh": "^0.6.3", "vitefu": "^1.0.4" }, "peerDependencies": { "@testing-library/jest-dom": "^5.16.6 || ^5.17.0 || ^6.*", "solid-js": "^1.7.2", "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" }, "optionalPeers": ["@testing-library/jest-dom"] }, "sha512-5TgK1RnE449g0Ryxb9BXqem89RSy7fE8XGVCo+Gw84IHgPuPVP7nYNP6WBVAaY/0xw+OqfdQee+kusL0y3XYNg=="], + "vite-tsconfig-paths": ["vite-tsconfig-paths@5.1.4", "", { "dependencies": { "debug": "^4.1.1", "globrex": "^0.1.2", "tsconfck": "^3.0.3" }, "peerDependencies": { "vite": "*" }, "optionalPeers": ["vite"] }, "sha512-cYj0LRuLV2c2sMqhqhGpaO3LretdtMn/BVX4cPLanIZuwwrkVl+lK84E/miEXkCHWXuq65rhNN4rXsBcOB3S4w=="], + "vitefu": ["vitefu@1.0.6", "", { "peerDependencies": { "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" }, "optionalPeers": ["vite"] }, "sha512-+Rex1GlappUyNN6UfwbVZne/9cYC4+R2XDk9xkNXBKMw6HQagdX9PgZ8V2v1WUSK1wfBLp7qbI1+XSNIlB1xmA=="], "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], diff --git a/frontend/package.json b/frontend/package.json index 86d1a99..f7d424d 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -46,6 +46,7 @@ "tailwindcss": "3.4.0", "typescript": "~5.6.3", "vite": "^6.3.5", - "vite-plugin-solid": "^2.11.7" + "vite-plugin-solid": "^2.11.7", + "vite-tsconfig-paths": "^5.1.4" } } diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 3d16f41..58ca06e 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -3,10 +3,6 @@ import { type Component, type ParentProps } from "solid-js"; import { Login } from "./Login"; import { ProtectedRoute } from "./ProtectedRoute"; import { Settings } from "./Settings"; -import { SearchImageContextProvider } from "./contexts/SearchImageContext"; -import { Image } from "./Image"; -import { WithEntityDialog } from "./WithEntityDialog"; -import { Gallery } from "./gallery"; import { IconArrowLeft, IconHome, @@ -14,8 +10,9 @@ import { IconSearch, } from "@tabler/icons-solidjs"; import { Entity } from "./Entity"; -import { FrontPage } from "./front"; import { onAndroidMount } from "./mobile"; +import { FrontPage, Gallery, ImagePage } from "./pages"; +import { SearchImageContextProvider } from "@contexts/SearchImageContext"; const AppWrapper: Component = (props) => { return ( @@ -59,14 +56,12 @@ export const App = () => { - - - - - - - + + + + + } /> diff --git a/frontend/src/Entity.tsx b/frontend/src/Entity.tsx index 81a3bef..aa920e0 100644 --- a/frontend/src/Entity.tsx +++ b/frontend/src/Entity.tsx @@ -1,8 +1,8 @@ +import { ImageComponent } from "@components/image"; +import { ConcreteItemModal } from "@components/item-modal/ItemModal"; +import { useSearchImageContext } from "@contexts/SearchImageContext"; import { useParams } from "@solidjs/router"; import { Component, For, Show } from "solid-js"; -import { ConcreteItemModal } from "./components/item-modal/ItemModal"; -import { useSearchImageContext } from "./contexts/SearchImageContext"; -import { ImageComponent } from "./components/image"; export const Entity: Component = () => { const params = useParams<{ entityId: string }>(); diff --git a/frontend/src/WithEntityDialog.tsx b/frontend/src/WithEntityDialog.tsx deleted file mode 100644 index ebc7026..0000000 --- a/frontend/src/WithEntityDialog.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import { - type Component, - type ParentProps, - Show, - createContext, - createSignal, - useContext, -} from "solid-js"; -import { ItemModal } from "./components/item-modal/ItemModal"; -import type { UserImage } from "./network"; - -const EntityDialogContext = createContext< - (image: UserImage | undefined) => void ->(() => {}); - -export const useSetEntity = () => useContext(EntityDialogContext); - -export const WithEntityDialog: Component = (props) => { - const [selectedEntity, setSelectedEntity] = createSignal(); - - return ( - - - {(entity) => ( - setSelectedEntity(undefined)} - /> - )} - - {props.children} - - ); -}; diff --git a/frontend/src/front/Recent.tsx b/frontend/src/pages/front/Recent.tsx similarity index 78% rename from frontend/src/front/Recent.tsx rename to frontend/src/pages/front/Recent.tsx index 386a2c0..7b0cc6e 100644 --- a/frontend/src/front/Recent.tsx +++ b/frontend/src/pages/front/Recent.tsx @@ -1,6 +1,6 @@ import { Component, For } from "solid-js"; -import { useSearchImageContext } from "../contexts/SearchImageContext"; -import { ImageComponent } from "../components/image"; +import { ImageComponent } from "@components/image"; +import { useSearchImageContext } from "@contexts/SearchImageContext"; export const Recent: Component = () => { const { userImages } = useSearchImageContext(); diff --git a/frontend/src/front/gallery.tsx b/frontend/src/pages/front/gallery.tsx similarity index 96% rename from frontend/src/front/gallery.tsx rename to frontend/src/pages/front/gallery.tsx index da070cc..52df56e 100644 --- a/frontend/src/front/gallery.tsx +++ b/frontend/src/pages/front/gallery.tsx @@ -1,9 +1,9 @@ import { Component, For } from "solid-js"; +import { A } from "@solidjs/router"; import { SearchImageStore, useSearchImageContext, -} from "../contexts/SearchImageContext"; -import { A } from "@solidjs/router"; +} from "@contexts/SearchImageContext"; // TODO: lots of stuff to do with Entities, this could be seperated into a centralized place. const CategoryColor: Record< diff --git a/frontend/src/front/index.tsx b/frontend/src/pages/front/index.tsx similarity index 100% rename from frontend/src/front/index.tsx rename to frontend/src/pages/front/index.tsx diff --git a/frontend/src/front/page.tsx b/frontend/src/pages/front/page.tsx similarity index 100% rename from frontend/src/front/page.tsx rename to frontend/src/pages/front/page.tsx diff --git a/frontend/src/gallery/index.tsx b/frontend/src/pages/gallery/index.tsx similarity index 90% rename from frontend/src/gallery/index.tsx rename to frontend/src/pages/gallery/index.tsx index 8e151e4..a1c0c0e 100644 --- a/frontend/src/gallery/index.tsx +++ b/frontend/src/pages/gallery/index.tsx @@ -1,8 +1,8 @@ import { Component, For, Show } from "solid-js"; import { useParams } from "@solidjs/router"; import { union, literal, safeParse, InferOutput, parse } from "valibot"; -import { useSearchImageContext } from "../contexts/SearchImageContext"; -import { SearchCard } from "../components/search-card/SearchCard"; +import { useSearchImageContext } from "@contexts/SearchImageContext"; +import { SearchCard } from "@components/search-card/SearchCard"; const entityValidator = union([ literal("event"), diff --git a/frontend/src/Image.tsx b/frontend/src/pages/image/index.tsx similarity index 76% rename from frontend/src/Image.tsx rename to frontend/src/pages/image/index.tsx index 6a98340..a50640b 100644 --- a/frontend/src/Image.tsx +++ b/frontend/src/pages/image/index.tsx @@ -1,10 +1,10 @@ +import { SearchCard } from "@components/search-card/SearchCard"; +import { useSearchImageContext } from "@contexts/SearchImageContext"; +import { base, UserImage } from "@network/index"; import { useParams } from "@solidjs/router"; import { For, Show, type Component } from "solid-js"; -import { base, type UserImage } from "./network"; -import { useSearchImageContext } from "./contexts/SearchImageContext"; -import { SearchCard } from "./components/search-card/SearchCard"; -export const Image: Component = () => { +export const ImagePage: Component = () => { const { imageId } = useParams<{ imageId: string }>(); const { imagesWithProperties } = useSearchImageContext(); diff --git a/frontend/src/pages/index.ts b/frontend/src/pages/index.ts new file mode 100644 index 0000000..55d84d3 --- /dev/null +++ b/frontend/src/pages/index.ts @@ -0,0 +1,3 @@ +export * from "./front"; +export * from "./gallery"; +export * from "./image"; diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json index 880e8e2..a82b70c 100644 --- a/frontend/tsconfig.json +++ b/frontend/tsconfig.json @@ -1,26 +1,31 @@ { - "compilerOptions": { - "target": "ES2020", - "useDefineForClassFields": true, - "module": "ESNext", - "lib": ["ES2020", "DOM", "DOM.Iterable"], - "skipLibCheck": true, + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "skipLibCheck": true, - /* Bundler mode */ - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - "jsx": "preserve", - "jsxImportSource": "solid-js", + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "preserve", + "jsxImportSource": "solid-js", - /* Linting */ - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noFallthroughCasesInSwitch": true - }, - "include": ["src"], - "references": [{ "path": "./tsconfig.node.json" }] + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "paths": { + "@components/*": ["./src/components/*"], + "@network/*": ["./src/network/*"], + "@contexts/*": ["./src/contexts/*"] + } + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] } diff --git a/frontend/tsconfig.node.tsbuildinfo b/frontend/tsconfig.node.tsbuildinfo new file mode 100644 index 0000000..e119522 --- /dev/null +++ b/frontend/tsconfig.node.tsbuildinfo @@ -0,0 +1 @@ +{"fileNames":["../../../../../usr/lib/node_modules/typescript/lib/lib.d.ts","../../../../../usr/lib/node_modules/typescript/lib/lib.es5.d.ts","../../../../../usr/lib/node_modules/typescript/lib/lib.dom.d.ts","../../../../../usr/lib/node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../../../usr/lib/node_modules/typescript/lib/lib.scripthost.d.ts","../../../../../usr/lib/node_modules/typescript/lib/lib.decorators.d.ts","../../../../../usr/lib/node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/@types/estree/index.d.ts","./node_modules/rollup/dist/rollup.d.ts","./node_modules/rollup/dist/parseAst.d.ts","./node_modules/vite/types/hmrPayload.d.ts","./node_modules/vite/types/customEvent.d.ts","./node_modules/vite/types/hot.d.ts","./node_modules/vite/dist/node/moduleRunnerTransport.d-DJ_mE5sf.d.ts","./node_modules/vite/dist/node/module-runner.d.ts","./node_modules/esbuild/lib/main.d.ts","./node_modules/source-map-js/source-map.d.ts","./node_modules/postcss/lib/previous-map.d.ts","./node_modules/postcss/lib/input.d.ts","./node_modules/postcss/lib/css-syntax-error.d.ts","./node_modules/postcss/lib/declaration.d.ts","./node_modules/postcss/lib/root.d.ts","./node_modules/postcss/lib/warning.d.ts","./node_modules/postcss/lib/lazy-result.d.ts","./node_modules/postcss/lib/no-work-result.d.ts","./node_modules/postcss/lib/processor.d.ts","./node_modules/postcss/lib/result.d.ts","./node_modules/postcss/lib/document.d.ts","./node_modules/postcss/lib/rule.d.ts","./node_modules/postcss/lib/node.d.ts","./node_modules/postcss/lib/comment.d.ts","./node_modules/postcss/lib/container.d.ts","./node_modules/postcss/lib/at-rule.d.ts","./node_modules/postcss/lib/list.d.ts","./node_modules/postcss/lib/postcss.d.ts","./node_modules/postcss/lib/postcss.d.mts","./node_modules/vite/types/internal/lightningcssOptions.d.ts","./node_modules/vite/types/internal/cssPreprocessorOptions.d.ts","./node_modules/vite/types/importGlob.d.ts","./node_modules/vite/types/metadata.d.ts","./node_modules/vite/dist/node/index.d.ts","./node_modules/@babel/types/lib/index.d.ts","./node_modules/@types/babel__generator/index.d.ts","./node_modules/@babel/parser/typings/babel-parser.d.ts","./node_modules/@types/babel__template/index.d.ts","./node_modules/@types/babel__traverse/index.d.ts","./node_modules/@types/babel__core/index.d.ts","./node_modules/vite-plugin-solid/dist/types/src/index.d.ts","./node_modules/tailwindcss/node_modules/postcss/lib/previous-map.d.ts","./node_modules/tailwindcss/node_modules/postcss/lib/input.d.ts","./node_modules/tailwindcss/node_modules/postcss/lib/css-syntax-error.d.ts","./node_modules/tailwindcss/node_modules/postcss/lib/declaration.d.ts","./node_modules/tailwindcss/node_modules/postcss/lib/root.d.ts","./node_modules/tailwindcss/node_modules/postcss/lib/warning.d.ts","./node_modules/tailwindcss/node_modules/postcss/lib/lazy-result.d.ts","./node_modules/tailwindcss/node_modules/postcss/lib/no-work-result.d.ts","./node_modules/tailwindcss/node_modules/postcss/lib/processor.d.ts","./node_modules/tailwindcss/node_modules/postcss/lib/result.d.ts","./node_modules/tailwindcss/node_modules/postcss/lib/document.d.ts","./node_modules/tailwindcss/node_modules/postcss/lib/rule.d.ts","./node_modules/tailwindcss/node_modules/postcss/lib/node.d.ts","./node_modules/tailwindcss/node_modules/postcss/lib/comment.d.ts","./node_modules/tailwindcss/node_modules/postcss/lib/container.d.ts","./node_modules/tailwindcss/node_modules/postcss/lib/at-rule.d.ts","./node_modules/tailwindcss/node_modules/postcss/lib/list.d.ts","./node_modules/tailwindcss/node_modules/postcss/lib/postcss.d.ts","./node_modules/tailwindcss/node_modules/postcss/lib/postcss.d.mts","./node_modules/tailwindcss/types/generated/corePluginList.d.ts","./node_modules/tailwindcss/types/generated/colors.d.ts","./node_modules/tailwindcss/types/config.d.ts","./node_modules/tailwindcss/types/index.d.ts","./node_modules/browserslist/index.d.ts","./node_modules/autoprefixer/lib/autoprefixer.d.ts","./node_modules/vite-tsconfig-paths/dist/index.d.ts","./vite.config.ts","./node_modules/@types/ms/index.d.ts","./node_modules/@types/debug/index.d.ts","./node_modules/@types/unist/index.d.ts","./node_modules/@types/hast/index.d.ts","./node_modules/@types/mdast/index.d.ts"],"fileIdsList":[[42],[42,43,44,45,46],[42,44],[76],[78],[36,72],[32],[30,32],[21,29,30,31,33,35],[19],[22,27,32,35],[18,35],[22,23,26,27,28,35],[22,23,24,26,27,35],[19,20,21,22,23,27,28,29,31,32,33,35],[35],[17,19,20,21,22,23,24,26,27,28,29,30,31,32,33,34],[17,35],[22,24,25,27,28,35],[26,35],[27,28,32,35],[20,30],[9,40,41],[8,9],[63],[61,63],[52,60,61,62,64],[50],[53,58,63,66],[49,66],[53,54,57,58,59,66],[53,54,55,57,58,66],[50,51,52,53,54,58,59,60,62,63,64,66],[66],[17,50,51,52,53,54,55,57,58,59,60,61,62,63,64,65],[17,66],[53,55,56,58,59,66],[57,66],[58,59,63,66],[51,61],[68,69],[67,70],[41,47],[41],[9,10,11,12,14,15,16,36,37,38,39,40,41],[11,12,13,14],[11],[12],[9,41],[41,48,71,73,74]],"fileInfos":[{"version":"a7297ff837fcdf174a9524925966429eb8e5feecc2cc55cc06574e6b092c1eaa","impliedFormat":1},{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","affectsGlobalScope":true,"impliedFormat":1},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true,"impliedFormat":1},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"e2b48abff5a8adc6bb1cd13a702b9ef05e6045a98e7cfa95a8779b53b6d0e69d","impliedFormat":1},{"version":"a02d26c056491b1ddfa53a671ad60ce852969b369f0e71993dbac8ddcf0d038b","affectsGlobalScope":true,"impliedFormat":1},{"version":"a660aa95476042d3fdcc1343cf6bb8fdf24772d31712b1db321c5a4dcc325434","impliedFormat":1},{"version":"a7ca8df4f2931bef2aa4118078584d84a0b16539598eaadf7dce9104dfaa381c","impliedFormat":1},{"version":"11443a1dcfaaa404c68d53368b5b818712b95dd19f188cab1669c39bee8b84b3","impliedFormat":1},{"version":"36977c14a7f7bfc8c0426ae4343875689949fb699f3f84ecbe5b300ebf9a2c55","impliedFormat":1},{"version":"035d0934d304483f07148427a5bd5b98ac265dae914a6b49749fe23fbd893ec7","impliedFormat":99},{"version":"e2ed5b81cbed3a511b21a18ab2539e79ac1f4bc1d1d28f8d35d8104caa3b429f","impliedFormat":99},{"version":"b8caba62c0d2ef625f31cbb4fde09d851251af2551086ccf068611b0a69efd81","affectsGlobalScope":true,"impliedFormat":1},{"version":"402e5c534fb2b85fa771170595db3ac0dd532112c8fa44fc23f233bc6967488b","impliedFormat":1},{"version":"8885cf05f3e2abf117590bbb951dcf6359e3e5ac462af1c901cfd24c6a6472e2","impliedFormat":1},{"version":"333caa2bfff7f06017f114de738050dd99a765c7eb16571c6d25a38c0d5365dc","impliedFormat":1},{"version":"e61df3640a38d535fd4bc9f4a53aef17c296b58dc4b6394fd576b808dd2fe5e6","impliedFormat":1},{"version":"459920181700cec8cbdf2a5faca127f3f17fd8dd9d9e577ed3f5f3af5d12a2e4","impliedFormat":1},{"version":"4719c209b9c00b579553859407a7e5dcfaa1c472994bd62aa5dd3cc0757eb077","impliedFormat":1},{"version":"7ec359bbc29b69d4063fe7dad0baaf35f1856f914db16b3f4f6e3e1bca4099fa","impliedFormat":1},{"version":"70790a7f0040993ca66ab8a07a059a0f8256e7bb57d968ae945f696cbff4ac7a","impliedFormat":1},{"version":"d1b9a81e99a0050ca7f2d98d7eedc6cda768f0eb9fa90b602e7107433e64c04c","impliedFormat":1},{"version":"a022503e75d6953d0e82c2c564508a5c7f8556fad5d7f971372d2d40479e4034","impliedFormat":1},{"version":"b215c4f0096f108020f666ffcc1f072c81e9f2f95464e894a5d5f34c5ea2a8b1","impliedFormat":1},{"version":"644491cde678bd462bb922c1d0cfab8f17d626b195ccb7f008612dc31f445d2d","impliedFormat":1},{"version":"dfe54dab1fa4961a6bcfba68c4ca955f8b5bbeb5f2ab3c915aa7adaa2eabc03a","impliedFormat":1},{"version":"1251d53755b03cde02466064260bb88fd83c30006a46395b7d9167340bc59b73","impliedFormat":1},{"version":"47865c5e695a382a916b1eedda1b6523145426e48a2eae4647e96b3b5e52024f","impliedFormat":1},{"version":"4cdf27e29feae6c7826cdd5c91751cc35559125e8304f9e7aed8faef97dcf572","impliedFormat":1},{"version":"331b8f71bfae1df25d564f5ea9ee65a0d847c4a94baa45925b6f38c55c7039bf","impliedFormat":1},{"version":"2a771d907aebf9391ac1f50e4ad37952943515eeea0dcc7e78aa08f508294668","impliedFormat":1},{"version":"0146fd6262c3fd3da51cb0254bb6b9a4e42931eb2f56329edd4c199cb9aaf804","impliedFormat":1},{"version":"183f480885db5caa5a8acb833c2be04f98056bdcc5fb29e969ff86e07efe57ab","impliedFormat":99},{"version":"4ec16d7a4e366c06a4573d299e15fe6207fc080f41beac5da06f4af33ea9761e","impliedFormat":1},{"version":"7870becb94cbc11d2d01b77c4422589adcba4d8e59f726246d40cd0d129784d8","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f698624bbbb060ece7c0e51b7236520ebada74b747d7523c7df376453ed6fea","impliedFormat":1},{"version":"f70b8328a15ca1d10b1436b691e134a49bc30dcf3183a69bfaa7ba77e1b78ecd","impliedFormat":1},{"version":"ff3660e2664e6096196280deb4e176633b1bb1e58a7dcc9b021ec0e913a6f96f","impliedFormat":99},{"version":"d50ab0815120231ab511558a753c33b2806b42cabe006356fb0bb763fc30e865","impliedFormat":1},{"version":"b6d03c9cfe2cf0ba4c673c209fcd7c46c815b2619fd2aad59fc4229aaef2ed43","impliedFormat":1},{"version":"32ddc6ad753ae79571bbf28cebff7a383bf7f562ac5ef5d25c94ef7f71609d49","impliedFormat":1},{"version":"670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","impliedFormat":1},{"version":"81df92841a7a12d551fcbc7e4e83dbb7d54e0c73f33a82162d13e9ae89700079","impliedFormat":1},{"version":"069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","impliedFormat":1},{"version":"58502b8dba18774237e71b39e2264e918e2033255e1e42eb7e7a721f5e7f3bfc","impliedFormat":99},{"version":"8885cf05f3e2abf117590bbb951dcf6359e3e5ac462af1c901cfd24c6a6472e2","impliedFormat":1},{"version":"33f3718dababfc26dfd9832c150149ea4e934f255130f8c118a59ae69e5ed441","impliedFormat":1},{"version":"e61df3640a38d535fd4bc9f4a53aef17c296b58dc4b6394fd576b808dd2fe5e6","impliedFormat":1},{"version":"459920181700cec8cbdf2a5faca127f3f17fd8dd9d9e577ed3f5f3af5d12a2e4","impliedFormat":1},{"version":"4719c209b9c00b579553859407a7e5dcfaa1c472994bd62aa5dd3cc0757eb077","impliedFormat":1},{"version":"7ec359bbc29b69d4063fe7dad0baaf35f1856f914db16b3f4f6e3e1bca4099fa","impliedFormat":1},{"version":"70790a7f0040993ca66ab8a07a059a0f8256e7bb57d968ae945f696cbff4ac7a","impliedFormat":1},{"version":"d1b9a81e99a0050ca7f2d98d7eedc6cda768f0eb9fa90b602e7107433e64c04c","impliedFormat":1},{"version":"a022503e75d6953d0e82c2c564508a5c7f8556fad5d7f971372d2d40479e4034","impliedFormat":1},{"version":"b215c4f0096f108020f666ffcc1f072c81e9f2f95464e894a5d5f34c5ea2a8b1","impliedFormat":1},{"version":"644491cde678bd462bb922c1d0cfab8f17d626b195ccb7f008612dc31f445d2d","impliedFormat":1},{"version":"dfe54dab1fa4961a6bcfba68c4ca955f8b5bbeb5f2ab3c915aa7adaa2eabc03a","impliedFormat":1},{"version":"1bb61aa2f08ab4506d41dbe16c5f3f5010f014bbf46fa3d715c0cbe3b00f4e1c","impliedFormat":1},{"version":"47865c5e695a382a916b1eedda1b6523145426e48a2eae4647e96b3b5e52024f","impliedFormat":1},{"version":"e42820cd611b15910c204cd133f692dcd602532b39317d4f2a19389b27e6f03d","impliedFormat":1},{"version":"331b8f71bfae1df25d564f5ea9ee65a0d847c4a94baa45925b6f38c55c7039bf","impliedFormat":1},{"version":"2a771d907aebf9391ac1f50e4ad37952943515eeea0dcc7e78aa08f508294668","impliedFormat":1},{"version":"0146fd6262c3fd3da51cb0254bb6b9a4e42931eb2f56329edd4c199cb9aaf804","impliedFormat":1},{"version":"183f480885db5caa5a8acb833c2be04f98056bdcc5fb29e969ff86e07efe57ab","impliedFormat":99},{"version":"a96467b5253a791d1e3d2d3dbf7643340d4b6c6891edd95902d64ab7f8040f2a","impliedFormat":1},{"version":"01374379f82be05d25c08d2f30779fa4a4c41895a18b93b33f14aeef51768692","impliedFormat":1},{"version":"fd8167360b959875934e938ab518fc5831bbb338148458cfcf790485e224c8bc","impliedFormat":1},{"version":"c0bbbf84d3fbd85dd60d040c81e8964cc00e38124a52e9c5dcdedf45fea3f213","impliedFormat":1},{"version":"88623aa2028777d8f073c61590feb7f3abde4513918329d868c8c0cb38d2d000","affectsGlobalScope":true,"impliedFormat":1},{"version":"4f21bd6e22ec4af7e666f033455090f6cc26a692c1524acb113526a38f07d48e","affectsGlobalScope":true,"impliedFormat":1},{"version":"cadf7a128bda2a4937411ad8fc659c08142ae7b53a7559eada72e8c34a5ea273","impliedFormat":99},{"version":"7f81e28c9d8f1514b5ffcf545418285241ad5aa880ea5afb5586b797ac1b851c","signature":"b67ea2724064c4fdae5150153933d1151f7d431aa45aeea35181f921bb7b98d4"},{"version":"fb893a0dfc3c9fb0f9ca93d0648694dd95f33cbad2c0f2c629f842981dfd4e2e","impliedFormat":1},{"version":"3eb11dbf3489064a47a2e1cf9d261b1f100ef0b3b50ffca6c44dd99d6dd81ac1","impliedFormat":1},{"version":"89121c1bf2990f5219bfd802a3e7fc557de447c62058d6af68d6b6348d64499a","impliedFormat":1},{"version":"79b4369233a12c6fa4a07301ecb7085802c98f3a77cf9ab97eee27e1656f82e6","impliedFormat":1},{"version":"d4a22007b481fe2a2e6bfd3a42c00cd62d41edb36d30fc4697df2692e9891fc8","impliedFormat":1}],"root":[75],"options":{"allowSyntheticDefaultImports":true,"composite":true,"module":99,"skipLibCheck":true},"referencedMap":[[44,1],[47,2],[43,1],[45,3],[46,1],[77,4],[79,5],[80,5],[73,6],[33,7],[31,8],[32,9],[20,10],[21,8],[28,11],[19,12],[24,13],[25,14],[30,15],[36,16],[35,17],[18,18],[26,19],[27,20],[22,21],[29,7],[23,22],[10,23],[9,24],[64,25],[62,26],[63,27],[51,28],[52,26],[59,29],[50,30],[55,31],[56,32],[61,33],[67,34],[66,35],[49,36],[57,37],[58,38],[53,39],[60,25],[54,40],[70,41],[71,42],[48,43],[74,44],[41,45],[15,46],[14,47],[12,47],[13,48],[40,49],[75,50]],"semanticDiagnosticsPerFile":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80],"latestChangedDtsFile":"./vite.config.d.ts","version":"5.9.0-dev"} \ No newline at end of file diff --git a/frontend/tsconfig.tsbuildinfo b/frontend/tsconfig.tsbuildinfo new file mode 100644 index 0000000..3048290 --- /dev/null +++ b/frontend/tsconfig.tsbuildinfo @@ -0,0 +1 @@ +{"root":["./src/App.tsx","./src/Entity.tsx","./src/Login.tsx","./src/ProtectedRoute.tsx","./src/Settings.tsx","./src/index.tsx","./src/vite-env.d.ts","./src/components/image/index.tsx","./src/components/item-modal/ItemModal.tsx","./src/components/search-card/SearchCard.tsx","./src/components/search-card/SearchCardContact.tsx","./src/components/search-card/SearchCardEvent.tsx","./src/components/search-card/SearchCardLocation.tsx","./src/components/search-card/SearchCardNote.tsx","./src/components/search-card/SearchCardReceipt.tsx","./src/components/search-card/SearchCardWebsite.tsx","./src/components/shortcuts/ShortcutItem.tsx","./src/components/shortcuts/Shortcuts.tsx","./src/components/shortcuts/hooks/useShortcutEditor.ts","./src/components/shortcuts/utils/formatKey.ts","./src/components/shortcuts/utils/isModifierKey.ts","./src/components/shortcuts/utils/normalizeKey.ts","./src/components/shortcuts/utils/sortKeys.ts","./src/contexts/SearchImageContext.tsx","./src/mobile/android.ts","./src/mobile/index.ts","./src/network/index.ts","./src/network/sampleData.ts","./src/network/types.ts","./src/notifications/ProcessingImages.tsx","./src/notifications/index.ts","./src/pages/index.ts","./src/pages/front/Recent.tsx","./src/pages/front/gallery.tsx","./src/pages/front/index.tsx","./src/pages/front/page.tsx","./src/pages/gallery/index.tsx","./src/pages/image/index.tsx","./src/utils/getCardSize.ts","./src/utils/groupPropertiesWithImage.ts"],"errors":true,"version":"5.9.0-dev"} \ No newline at end of file diff --git a/frontend/vite.config.d.ts b/frontend/vite.config.d.ts new file mode 100644 index 0000000..8ee6163 --- /dev/null +++ b/frontend/vite.config.d.ts @@ -0,0 +1,2 @@ +declare const _default: import("vite").UserConfig & Promise & import("vite").UserConfigFnObject & import("vite").UserConfigFnPromise & import("vite").UserConfigFn; +export default _default; diff --git a/frontend/vite.config.js b/frontend/vite.config.js new file mode 100644 index 0000000..087c9ff --- /dev/null +++ b/frontend/vite.config.js @@ -0,0 +1,77 @@ +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype); + return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (g && (g = 0, op[0] && (_ = 0)), _) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +import { defineConfig } from "vite"; +import solid from "vite-plugin-solid"; +import tailwindcss from "tailwindcss"; +import autoprefixer from "autoprefixer"; +import tsconfigPaths from "vite-tsconfig-paths"; +// @ts-expect-error process is a nodejs global +var host = process.env.TAURI_DEV_HOST; +// https://vitejs.dev/config/ +export default defineConfig(function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + return [2 /*return*/, ({ + plugins: [solid(), tsconfigPaths()], + css: { + postcss: { + plugins: [tailwindcss, autoprefixer], + }, + }, + // Vite options tailored for Tauri development and only applied in `tauri dev` or `tauri build` + // + // 1. prevent vite from obscuring rust errors + clearScreen: false, + // 2. tauri expects a fixed port, fail if that port is not available + server: { + port: 1420, + strictPort: true, + host: host || false, + hmr: host + ? { + protocol: "ws", + host: host, + port: 1421, + } + : undefined, + watch: { + // 3. tell vite to ignore watching `src-tauri` + ignored: ["**/src-tauri/**"], + }, + }, + })]; + }); +}); }); diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts index a70b4ea..9ad7509 100644 --- a/frontend/vite.config.ts +++ b/frontend/vite.config.ts @@ -2,37 +2,38 @@ import { defineConfig } from "vite"; import solid from "vite-plugin-solid"; import tailwindcss from "tailwindcss"; import autoprefixer from "autoprefixer"; +import tsconfigPaths from "vite-tsconfig-paths"; // @ts-expect-error process is a nodejs global const host = process.env.TAURI_DEV_HOST; // https://vitejs.dev/config/ export default defineConfig(async () => ({ - plugins: [solid()], - css: { - postcss: { - plugins: [tailwindcss, autoprefixer], - }, - }, - // Vite options tailored for Tauri development and only applied in `tauri dev` or `tauri build` - // - // 1. prevent vite from obscuring rust errors - clearScreen: false, - // 2. tauri expects a fixed port, fail if that port is not available - server: { - port: 1420, - strictPort: true, - host: host || false, - hmr: host - ? { - protocol: "ws", - host, - port: 1421, - } - : undefined, - watch: { - // 3. tell vite to ignore watching `src-tauri` - ignored: ["**/src-tauri/**"], - }, - }, + plugins: [solid(), tsconfigPaths()], + css: { + postcss: { + plugins: [tailwindcss, autoprefixer], + }, + }, + // Vite options tailored for Tauri development and only applied in `tauri dev` or `tauri build` + // + // 1. prevent vite from obscuring rust errors + clearScreen: false, + // 2. tauri expects a fixed port, fail if that port is not available + server: { + port: 1420, + strictPort: true, + host: host || false, + hmr: host + ? { + protocol: "ws", + host, + port: 1421, + } + : undefined, + watch: { + // 3. tell vite to ignore watching `src-tauri` + ignored: ["**/src-tauri/**"], + }, + }, }));