diff --git a/eslint.config.js b/eslint.config.js index e1ca035..8ab6996 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -11,7 +11,7 @@ export default tseslint.config( { languageOptions: { parserOptions: { - project: "./tsconfig.json", + project: ["./tsconfig.json", "./packages/*/tsconfig.json", "./packages/apps/*/tsconfig.json"], tsconfigRootDir: import.meta.dirname, allowAutomaticSingleRunInference: true, }, @@ -21,7 +21,7 @@ export default tseslint.config( ], plugins: { react, - "react-refresh": reactRefresh + "react-refresh": reactRefresh, }, rules: { "quotes": "off", @@ -65,7 +65,7 @@ export default tseslint.config( "react-refresh/only-export-components": [ "warn", { "allowConstantExport": true } - ] + ], }, } ); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index c8986f9..15539ca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,17 +1,22 @@ { - "name": "prozilla-os", + "name": "@prozilla-os/prozilla-os", "version": "0.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "prozilla-os", + "name": "@prozilla-os/prozilla-os", "version": "0.1.0", + "workspaces": [ + "packages/core", + "packages/apps/file-explorer" + ], "dependencies": { "@fortawesome/fontawesome-svg-core": "^6.4.0", "@fortawesome/free-regular-svg-icons": "^6.4.0", "@fortawesome/free-solid-svg-icons": "^6.4.0", "@fortawesome/react-fontawesome": "^0.2.0", + "@prozilla-os/core": "^1.0.0", "@vitejs/plugin-react-swc": "^3.7.0", "anser": "^2.1.1", "escape-carriage": "^1.3.1", @@ -897,54 +902,54 @@ } }, "node_modules/@fortawesome/fontawesome-common-types": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.4.0.tgz", - "integrity": "sha512-HNii132xfomg5QVZw0HwXXpN22s7VBHQBv9CeOu9tfJnhsWQNd2lmTNi8CSrnw5B+5YOmzu1UoPAyxaXsJ6RgQ==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.5.2.tgz", + "integrity": "sha512-gBxPg3aVO6J0kpfHNILc+NMhXnqHumFxOmjYCFfOiLZfwhnnfhtsdA2hfJlDnj+8PjAs6kKQPenOTKj3Rf7zHw==", "hasInstallScript": true, "engines": { "node": ">=6" } }, "node_modules/@fortawesome/fontawesome-svg-core": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.4.0.tgz", - "integrity": "sha512-Bertv8xOiVELz5raB2FlXDPKt+m94MQ3JgDfsVbrqNpLU9+UE2E18GKjLKw+d3XbeYPqg1pzyQKGsrzbw+pPaw==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.5.2.tgz", + "integrity": "sha512-5CdaCBGl8Rh9ohNdxeeTMxIj8oc3KNBgIeLMvJosBMdslK/UnEB8rzyDRrbKdL1kDweqBPo4GT9wvnakHWucZw==", "hasInstallScript": true, "dependencies": { - "@fortawesome/fontawesome-common-types": "6.4.0" + "@fortawesome/fontawesome-common-types": "6.5.2" }, "engines": { "node": ">=6" } }, "node_modules/@fortawesome/free-regular-svg-icons": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.4.0.tgz", - "integrity": "sha512-ZfycI7D0KWPZtf7wtMFnQxs8qjBXArRzczABuMQqecA/nXohquJ5J/RCR77PmY5qGWkxAZDxpnUFVXKwtY/jPw==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.5.2.tgz", + "integrity": "sha512-iabw/f5f8Uy2nTRtJ13XZTS1O5+t+anvlamJ3zJGLEVE2pKsAWhPv2lq01uQlfgCX7VaveT3EVs515cCN9jRbw==", "hasInstallScript": true, "dependencies": { - "@fortawesome/fontawesome-common-types": "6.4.0" + "@fortawesome/fontawesome-common-types": "6.5.2" }, "engines": { "node": ">=6" } }, "node_modules/@fortawesome/free-solid-svg-icons": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.4.0.tgz", - "integrity": "sha512-kutPeRGWm8V5dltFP1zGjQOEAzaLZj4StdQhWVZnfGFCvAPVvHh8qk5bRrU4KXnRRRNni5tKQI9PBAdI6MP8nQ==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.5.2.tgz", + "integrity": "sha512-QWFZYXFE7O1Gr1dTIp+D6UcFUF0qElOnZptpi7PBUMylJh+vFmIedVe1Ir6RM1t2tEQLLSV1k7bR4o92M+uqlw==", "hasInstallScript": true, "dependencies": { - "@fortawesome/fontawesome-common-types": "6.4.0" + "@fortawesome/fontawesome-common-types": "6.5.2" }, "engines": { "node": ">=6" } }, "node_modules/@fortawesome/react-fontawesome": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.0.tgz", - "integrity": "sha512-uHg75Rb/XORTtVt7OS9WoK8uM276Ufi7gCzshVWkUJbHhh3svsUUeqXerrM96Wm7fRiDzfKRwSoahhMIkGAYHw==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.2.tgz", + "integrity": "sha512-EnkrprPNqI6SXJl//m29hpaNzOp1bruISWaOiRtkMi/xSvHJlzc2j2JAYS7egxt/EbjSNV/k6Xy0AQI6vB2+1g==", "dependencies": { "prop-types": "^15.8.1" }, @@ -1064,6 +1069,14 @@ "node": ">= 8" } }, + "node_modules/@prozilla-os/core": { + "resolved": "packages/core", + "link": true + }, + "node_modules/@prozilla-os/file-explorer": { + "resolved": "packages/apps/file-explorer", + "link": true + }, "node_modules/@remix-run/router": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.16.1.tgz", @@ -1712,13 +1725,13 @@ } }, "node_modules/@tanem/svg-injector": { - "version": "10.1.60", - "resolved": "https://registry.npmjs.org/@tanem/svg-injector/-/svg-injector-10.1.60.tgz", - "integrity": "sha512-yzdF0f7TZI7MrMieJLu5VYEJuL0WneFCabLvBfpNWDoWikzQPW8V9tpEqHa2A4kKJDiXUzsIoqtPEvGj9xsPgQ==", + "version": "10.1.68", + "resolved": "https://registry.npmjs.org/@tanem/svg-injector/-/svg-injector-10.1.68.tgz", + "integrity": "sha512-UkJajeR44u73ujtr5GVSbIlELDWD/mzjqWe54YMK61ljKxFcJoPd9RBSaO7xj02ISCWUqJW99GjrS+sVF0UnrA==", "dependencies": { - "@babel/runtime": "^7.22.5", + "@babel/runtime": "^7.23.2", "content-type": "^1.0.5", - "tslib": "^2.6.0" + "tslib": "^2.6.2" } }, "node_modules/@types/eslint": { @@ -1765,9 +1778,9 @@ "peer": true }, "node_modules/@types/node": { - "version": "20.12.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.8.tgz", - "integrity": "sha512-NU0rJLJnshZWdE/097cdCBbyW1h4hEg0xpovcoAQYHl8dnEyp/NAOiE45pvc+Bd1Dt+2r94v2eGFpQJ4R7g+2w==", + "version": "20.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", + "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", "devOptional": true, "dependencies": { "undici-types": "~5.26.4" @@ -1782,9 +1795,9 @@ "peer": true }, "node_modules/@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" }, "node_modules/@types/react": { "version": "18.3.1", @@ -5766,9 +5779,9 @@ } }, "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "dependencies": { "loose-envify": "^1.1.0" }, @@ -5789,9 +5802,9 @@ } }, "node_modules/react-draggable": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-4.4.5.tgz", - "integrity": "sha512-OMHzJdyJbYTZo4uQE393fHcqqPYsEtkjfMgvCHr6rejT+Ezn4OZbNyGH50vv+SunC1RMvwOTSWkEODQLzw1M9g==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-4.4.6.tgz", + "integrity": "sha512-LtY5Xw1zTPqHkVmtM3X8MUOxNDOUhv/khTgBgrUvwaS064bwVvxT+q5El0uUFNx5IEPKXuRejr7UqLwBIg5pdw==", "dependencies": { "clsx": "^1.1.1", "prop-types": "^15.8.1" @@ -5848,13 +5861,13 @@ } }, "node_modules/react-svg": { - "version": "16.1.18", - "resolved": "https://registry.npmjs.org/react-svg/-/react-svg-16.1.18.tgz", - "integrity": "sha512-XAnrAfW03GDDD1uLEZFoEu8Ij7CkojIaNeba7KCInWnS9dFSEfFD3VbGSlKFUmkhQimfFmtJoRloowKNVJQ9gw==", + "version": "16.1.34", + "resolved": "https://registry.npmjs.org/react-svg/-/react-svg-16.1.34.tgz", + "integrity": "sha512-L4ak1qNFLgzVbHm0xQEpHoIOqb3um/B0ybahd3U2TKoGZxb0JaPVI5lsAhvSng2P1kcsYEok2Z7RpcKx7arJGw==", "dependencies": { - "@babel/runtime": "^7.22.5", - "@tanem/svg-injector": "^10.1.59", - "@types/prop-types": "^15.7.5", + "@babel/runtime": "^7.24.1", + "@tanem/svg-injector": "^10.1.68", + "@types/prop-types": "^15.7.12", "prop-types": "^15.8.1" }, "peerDependencies": { @@ -6994,9 +7007,9 @@ } }, "node_modules/tslib": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", - "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/tsx": { "version": "4.15.4", @@ -8053,6 +8066,42 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "packages/apps/file-explorer": { + "name": "@prozilla-os/file-explorer", + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "@fortawesome/fontawesome-svg-core": "^6.5.2", + "@fortawesome/free-solid-svg-icons": "^6.5.2", + "@fortawesome/react-fontawesome": "^0.2.2", + "@prozilla-os/core": "^1.0.0", + "react": "^18.3.1" + }, + "devDependencies": { + "typescript": "^5.4.5" + } + }, + "packages/core": { + "name": "@prozilla-os/core", + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "@fortawesome/fontawesome-svg-core": "^6.5.2", + "@fortawesome/free-regular-svg-icons": "^6.5.2", + "@fortawesome/free-solid-svg-icons": "^6.5.2", + "@fortawesome/react-fontawesome": "^0.2.2", + "@prozilla-os/file-explorer": "^1.0.0", + "react": "^18.3.1", + "react-draggable": "^4.4.6", + "react-error-boundary": "^4.0.13", + "react-ga4": "^2.1.0", + "react-svg": "^16.1.34" + }, + "devDependencies": { + "@types/node": "^20.14.2", + "typescript": "^5.4.5" + } } } } diff --git a/package.json b/package.json index a6195e4..783ea2d 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,6 @@ { - "name": "prozilla-os", + "name": "@prozilla-os/prozilla-os", "version": "0.1.0", - "private": false, "author": { "name": "Prozilla", "email": "business@prozilla.dev", @@ -9,6 +8,10 @@ }, "homepage": "https://os.prozilla.dev/", "repository": "https://github.com/Prozilla/ProzillaOS", + "workspaces": [ + "packages/core", + "packages/apps/file-explorer" + ], "type": "module", "scripts": { "start": "vite", @@ -24,6 +27,7 @@ "@fortawesome/free-regular-svg-icons": "^6.4.0", "@fortawesome/free-solid-svg-icons": "^6.4.0", "@fortawesome/react-fontawesome": "^0.2.0", + "@prozilla-os/core": "^1.0.0", "@vitejs/plugin-react-swc": "^3.7.0", "anser": "^2.1.1", "escape-carriage": "^1.3.1", diff --git a/src/components/apps/browser/Browser.module.css b/packages/apps/browser/components/Browser.module.css similarity index 100% rename from src/components/apps/browser/Browser.module.css rename to packages/apps/browser/components/Browser.module.css diff --git a/src/components/apps/browser/Browser.tsx b/packages/apps/browser/components/Browser.tsx similarity index 100% rename from src/components/apps/browser/Browser.tsx rename to packages/apps/browser/components/Browser.tsx diff --git a/src/config/apps/browser.config.ts b/packages/apps/browser/config/browser.config.ts similarity index 100% rename from src/config/apps/browser.config.ts rename to packages/apps/browser/config/browser.config.ts diff --git a/src/components/apps/calculator/Calculator.module.css b/packages/apps/calculator/components/Calculator.module.css similarity index 100% rename from src/components/apps/calculator/Calculator.module.css rename to packages/apps/calculator/components/Calculator.module.css diff --git a/src/components/apps/calculator/Calculator.tsx b/packages/apps/calculator/components/Calculator.tsx similarity index 100% rename from src/components/apps/calculator/Calculator.tsx rename to packages/apps/calculator/components/Calculator.tsx diff --git a/packages/apps/file-explorer/README.md b/packages/apps/file-explorer/README.md new file mode 100644 index 0000000..dbe82f7 --- /dev/null +++ b/packages/apps/file-explorer/README.md @@ -0,0 +1 @@ +# @ProzillaOS/file-explorer \ No newline at end of file diff --git a/packages/apps/file-explorer/package.json b/packages/apps/file-explorer/package.json new file mode 100644 index 0000000..efc91a0 --- /dev/null +++ b/packages/apps/file-explorer/package.json @@ -0,0 +1,29 @@ +{ + "name": "@prozilla-os/file-explorer", + "version": "1.0.0", + "author": { + "name": "Prozilla", + "email": "business@prozilla.dev", + "url": "https://prozilla.dev/" + }, + "main": "src/index.ts", + "type": "module", + "scripts": { + "test": "tsc --watch" + }, + "repository": "https://github.com/Prozilla/ProzillaOS", + "license": "MIT", + "dependencies": { + "@fortawesome/fontawesome-svg-core": "^6.5.2", + "@fortawesome/free-solid-svg-icons": "^6.5.2", + "@fortawesome/react-fontawesome": "^0.2.2", + "react": "^18.3.1", + "@prozilla-os/core": "^1.0.0" + }, + "devDependencies": { + "typescript": "^5.4.5" + }, + "files": [ + "src/index.ts" + ] +} diff --git a/src/components/apps/file-explorer/FileExplorer.module.css b/packages/apps/file-explorer/src/components/FileExplorer.module.css similarity index 100% rename from src/components/apps/file-explorer/FileExplorer.module.css rename to packages/apps/file-explorer/src/components/FileExplorer.module.css diff --git a/src/components/apps/file-explorer/FileExplorer.tsx b/packages/apps/file-explorer/src/components/FileExplorer.tsx similarity index 79% rename from src/components/apps/file-explorer/FileExplorer.tsx rename to packages/apps/file-explorer/src/components/FileExplorer.tsx index beefaff..7067ce7 100644 --- a/src/components/apps/file-explorer/FileExplorer.tsx +++ b/packages/apps/file-explorer/src/components/FileExplorer.tsx @@ -1,34 +1,12 @@ import { ChangeEventHandler, FC, KeyboardEventHandler, useCallback, useEffect, useState } from "react"; -import { useVirtualRoot } from "../../../hooks/virtual-drive/virtualRootContext"; import styles from "./FileExplorer.module.css"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faArrowUp, faCaretLeft, faCaretRight, faCircleInfo, faCog, faDesktop, faFileLines, faHouse, faImage, faPlus, faSearch, faTrash } from "@fortawesome/free-solid-svg-icons"; -import { useWindowsManager } from "../../../hooks/windows/windowsManagerContext"; -import { useContextMenu } from "../../../hooks/modals/contextMenu"; import { QuickAccessButton } from "./QuickAccessButton"; -import { useWindowedModal } from "../../../hooks/modals/windowedModal"; -import { Vector2 } from "../../../features/math/vector2"; -import { DIALOG_CONTENT_TYPES } from "../../../config/modals.config"; -import { DirectoryList, FileEventHandler, FolderEventHandler, OnSelectionChangeParams } from "./directory-list/DirectoryList"; -import { Actions } from "../../actions/Actions"; -import { ClickAction } from "../../actions/actions/ClickAction"; -import utilStyles from "../../../styles/utils.module.css"; -import { DialogBox } from "../../modals/dialog-box/DialogBox"; -import { AppsManager } from "../../../features/apps/appsManager"; -import { APPS, APP_ICONS, APP_NAMES } from "../../../config/apps.config"; -import { TITLE_SEPARATOR } from "../../../config/windows.config"; -import { FileProperties } from "../../modals/file-properties/FileProperties"; -import { useHistory } from "../../../hooks/_utils/history"; -import { Divider } from "../../actions/actions/Divider"; -import { CODE_FORMATS } from "../../../config/apps/textEditor.config"; -import { SELECTOR_MODE } from "../../../config/apps/fileExplorer.config"; -import { WindowProps } from "../../windows/WindowView"; -import { VirtualFolder } from "../../../features/virtual-drive/folder/virtualFolder"; -import { VirtualFile } from "../../../features/virtual-drive/file"; -import { VirtualFolderLink } from "../../../features/virtual-drive/folder/virtualFolderLink"; import { ImportButton } from "./ImportButton"; -import { useAlert } from "../../../hooks/modals/alert"; -import { VirtualRoot } from "../../../features/virtual-drive/root/virtualRoot"; +import { Actions, AppsManager, ClickAction, CODE_EXTENSIONS, DIALOG_CONTENT_TYPES, DialogBox, DirectoryList, Divider, FileEventHandler, FolderEventHandler, OnSelectionChangeParams, useAlert, useContextMenu, useHistory, useSystemManager, useVirtualRoot, useWindowedModal, useWindowsManager, utilStyles, Vector2, VirtualFile, VirtualFolder, VirtualFolderLink, VirtualRoot, WindowProps } from "@prozilla-os/core"; +import { SELECTOR_MODE } from "../constants/fileExplorer.const"; +import { FileProperties } from "./modals/file-properties/FileProperties"; interface FileExplorerProps extends WindowProps { path?: string; @@ -38,13 +16,15 @@ interface FileExplorerProps extends WindowProps { onSelectionFinish: Function; } -export function FileExplorer({ path: startPath, selectorMode, Footer, onSelectionChange, onSelectionFinish }: FileExplorerProps) { +export function FileExplorer({ app, path: startPath, selectorMode, Footer, onSelectionChange, onSelectionFinish }: FileExplorerProps) { const isSelector = (Footer != null && selectorMode != null && selectorMode !== SELECTOR_MODE.NONE); const virtualRoot = useVirtualRoot(); + const windowsManager = useWindowsManager(); + const { windowsConfig } = useSystemManager(); + const [currentDirectory, setCurrentDirectory] = useState(virtualRoot?.navigate(startPath ?? "~") as VirtualFolder); const [path, setPath] = useState(currentDirectory?.path ?? ""); - const windowsManager = useWindowsManager(); const [showHidden] = useState(true); const { history, stateIndex, pushState, undo, redo, undoAvailable, redoAvailable } = useHistory(currentDirectory.path); const { alert } = useAlert(); @@ -65,7 +45,7 @@ export function FileExplorer({ path: startPath, selectorMode, Footer, onSelectio }}/> { openWindowedModal({ - title: `${(file as VirtualFile).id} ${TITLE_SEPARATOR} Properties`, + title: `${(file as VirtualFile).id} ${windowsConfig.titleSeparator} Properties`, iconUrl: (file as VirtualFile).getIconUrl(), size: new Vector2(400, 500), Modal: (props: object) => @@ -78,9 +58,9 @@ export function FileExplorer({ path: startPath, selectorMode, Footer, onSelectio { changeDirectory((folder as VirtualFolderLink).linkedPath ?? (folder as VirtualFolder).name); }}/> - { + {/* { windowsManager?.open(APPS.TERMINAL, { startPath: (folder as VirtualFolder).path }); - }}/> + }}/> */} { (folder as VirtualFolder).delete(); @@ -129,7 +109,7 @@ export function FileExplorer({ path: startPath, selectorMode, Footer, onSelectio alert({ title: (error as Error).message, text: "You have exceeded the virtual drive capacity. Files and folders will not be saved until more storage is freed.", - iconUrl: AppsManager.getAppIconUrl(APPS.FILE_EXPLORER), + iconUrl: app?.id != null ? AppsManager.getAppIconUrl(app.id) : undefined, size: new Vector2(300, 200), single: true, }); @@ -158,7 +138,7 @@ export function FileExplorer({ path: startPath, selectorMode, Footer, onSelectio if (directory == null) { openWindowedModal({ title: "Error", - iconUrl: AppsManager.getAppIconUrl(APPS.FILE_EXPLORER), + iconUrl: app?.id != null ? AppsManager.getAppIconUrl(app.id) : undefined, size: new Vector2(300, 150), Modal: (props: {}) => @@ -267,7 +247,7 @@ export function FileExplorer({ path: startPath, selectorMode, Footer, onSelectio if (isSelector) return void onSelectionFinish?.(); const options: Record = {}; - if (file.extension === "md" || (file.extension != null && CODE_FORMATS.includes(file.extension))) + if (file.extension === "md" || (file.extension != null && CODE_EXTENSIONS.includes(file.extension))) options.mode = "view"; windowsManager?.openFile(file, options); }} diff --git a/src/components/apps/file-explorer/ImportButton.tsx b/packages/apps/file-explorer/src/components/ImportButton.tsx similarity index 90% rename from src/components/apps/file-explorer/ImportButton.tsx rename to packages/apps/file-explorer/src/components/ImportButton.tsx index 3d2fda4..ca897ee 100644 --- a/src/components/apps/file-explorer/ImportButton.tsx +++ b/packages/apps/file-explorer/src/components/ImportButton.tsx @@ -2,8 +2,7 @@ import { FormEventHandler, ReactElement } from "react"; import styles from "./FileExplorer.module.css"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faDownload } from "@fortawesome/free-solid-svg-icons"; -import { VirtualFile } from "../../../features/virtual-drive/file"; -import { VirtualFolder } from "../../../features/virtual-drive/folder"; +import { VirtualFolder, VirtualFile } from "@prozilla-os/core"; interface ImportButtonProps { directory: VirtualFolder; diff --git a/src/components/apps/file-explorer/QuickAccessButton.tsx b/packages/apps/file-explorer/src/components/QuickAccessButton.tsx similarity index 90% rename from src/components/apps/file-explorer/QuickAccessButton.tsx rename to packages/apps/file-explorer/src/components/QuickAccessButton.tsx index 66c8b24..9f1d9ff 100644 --- a/src/components/apps/file-explorer/QuickAccessButton.tsx +++ b/packages/apps/file-explorer/src/components/QuickAccessButton.tsx @@ -1,7 +1,7 @@ import { FontAwesomeIcon, FontAwesomeIconProps } from "@fortawesome/react-fontawesome"; import styles from "./FileExplorer.module.css"; -import utilStyles from "../../../styles/utils.module.css"; import { MouseEventHandler } from "react"; +import { utilStyles } from "@prozilla-os/core"; interface QuickAcessButton { onClick: MouseEventHandler; diff --git a/src/components/modals/file-properties/FileProperties.module.css b/packages/apps/file-explorer/src/components/modals/file-properties/FileProperties.module.css similarity index 100% rename from src/components/modals/file-properties/FileProperties.module.css rename to packages/apps/file-explorer/src/components/modals/file-properties/FileProperties.module.css diff --git a/src/components/modals/file-properties/FileProperties.tsx b/packages/apps/file-explorer/src/components/modals/file-properties/FileProperties.tsx similarity index 78% rename from src/components/modals/file-properties/FileProperties.tsx rename to packages/apps/file-explorer/src/components/modals/file-properties/FileProperties.tsx index 6f9ce7a..1d76616 100644 --- a/src/components/modals/file-properties/FileProperties.tsx +++ b/packages/apps/file-explorer/src/components/modals/file-properties/FileProperties.tsx @@ -1,11 +1,6 @@ -import { ImagePreview } from "../../apps/file-explorer/directory-list/ImagePreview"; -import { WindowedModal } from "../_utils/WindowedModal"; import styles from "./FileProperties.module.css"; import utilStyles from "../../../styles/utils.module.css"; -import { StorageManager } from "../../../features/storage/storageManager"; -import { AppsManager } from "../../../features/apps/appsManager"; -import { ModalProps } from "../ModalView.js"; -import { VirtualFile } from "../../../features/virtual-drive/file"; +import { AppsManager, ImagePreview, ModalProps, StorageManager, VirtualFile, WindowedModal } from "@prozilla-os/core"; interface FilePropetiesProps extends ModalProps { file: VirtualFile; diff --git a/src/config/apps/fileExplorer.config.ts b/packages/apps/file-explorer/src/constants/fileExplorer.const.ts similarity index 100% rename from src/config/apps/fileExplorer.config.ts rename to packages/apps/file-explorer/src/constants/fileExplorer.const.ts diff --git a/packages/apps/file-explorer/src/index.ts b/packages/apps/file-explorer/src/index.ts new file mode 100644 index 0000000..95c8fe9 --- /dev/null +++ b/packages/apps/file-explorer/src/index.ts @@ -0,0 +1,2 @@ +export { SELECTOR_MODE } from "./constants/fileExplorer.const"; +export { FileExplorer } from "./components/FileExplorer"; \ No newline at end of file diff --git a/src/types/vite-env.d.ts b/packages/apps/file-explorer/src/types/vite-env.d.ts similarity index 100% rename from src/types/vite-env.d.ts rename to packages/apps/file-explorer/src/types/vite-env.d.ts diff --git a/packages/apps/file-explorer/tsconfig.json b/packages/apps/file-explorer/tsconfig.json new file mode 100644 index 0000000..777df14 --- /dev/null +++ b/packages/apps/file-explorer/tsconfig.json @@ -0,0 +1,5 @@ +{ + "extends": "../../../tsconfig.json", + "include": ["src/**/*"], + "exclude": ["node_modules"] +} \ No newline at end of file diff --git a/src/components/apps/logic-sim/CircuitView.module.css b/packages/apps/logic-sim/components/CircuitView.module.css similarity index 100% rename from src/components/apps/logic-sim/CircuitView.module.css rename to packages/apps/logic-sim/components/CircuitView.module.css diff --git a/src/components/apps/logic-sim/CircuitView.tsx b/packages/apps/logic-sim/components/CircuitView.tsx similarity index 100% rename from src/components/apps/logic-sim/CircuitView.tsx rename to packages/apps/logic-sim/components/CircuitView.tsx diff --git a/src/components/apps/logic-sim/LogicSim.module.css b/packages/apps/logic-sim/components/LogicSim.module.css similarity index 100% rename from src/components/apps/logic-sim/LogicSim.module.css rename to packages/apps/logic-sim/components/LogicSim.module.css diff --git a/src/components/apps/logic-sim/LogicSim.tsx b/packages/apps/logic-sim/components/LogicSim.tsx similarity index 100% rename from src/components/apps/logic-sim/LogicSim.tsx rename to packages/apps/logic-sim/components/LogicSim.tsx diff --git a/src/config/apps/logicSim.config.ts b/packages/apps/logic-sim/config/logicSim.config.ts similarity index 100% rename from src/config/apps/logicSim.config.ts rename to packages/apps/logic-sim/config/logicSim.config.ts diff --git a/src/features/apps/logic-sim/_utils/state.ts b/packages/apps/logic-sim/core/_utils/state.ts similarity index 100% rename from src/features/apps/logic-sim/_utils/state.ts rename to packages/apps/logic-sim/core/_utils/state.ts diff --git a/src/features/apps/logic-sim/chips/chip.ts b/packages/apps/logic-sim/core/chips/chip.ts similarity index 99% rename from src/features/apps/logic-sim/chips/chip.ts rename to packages/apps/logic-sim/core/chips/chip.ts index c295f43..5c0ed52 100644 --- a/src/features/apps/logic-sim/chips/chip.ts +++ b/packages/apps/logic-sim/core/chips/chip.ts @@ -1,6 +1,6 @@ import { CHIP, COLORS, PIN } from "../../../../config/apps/logicSim.config"; import { Vector2 } from "../../../math/vector2"; -import { Circuit } from "../core/circuit"; +import { Circuit } from "../circuit"; import { Pin, PinJson } from "../pins/pin"; import { State } from "../_utils/state"; diff --git a/src/features/apps/logic-sim/chips/chipsManager.ts b/packages/apps/logic-sim/core/chips/chipsManager.ts similarity index 98% rename from src/features/apps/logic-sim/chips/chipsManager.ts rename to packages/apps/logic-sim/core/chips/chipsManager.ts index cdd16dd..330c10d 100644 --- a/src/features/apps/logic-sim/chips/chipsManager.ts +++ b/packages/apps/logic-sim/core/chips/chipsManager.ts @@ -1,6 +1,6 @@ import { Chip } from "./chip"; import { State } from "../_utils/state"; -import { Circuit, CircuitJson } from "../core/circuit"; +import { Circuit, CircuitJson } from "../circuit"; import { VirtualFolder } from "../../../virtual-drive/folder"; import { ControlledPin } from "../pins/controlledPin"; import { Vector2 } from "../../../math/vector2"; diff --git a/src/features/apps/logic-sim/core/circuit.ts b/packages/apps/logic-sim/core/circuit.ts similarity index 98% rename from src/features/apps/logic-sim/core/circuit.ts rename to packages/apps/logic-sim/core/circuit.ts index 728bf40..804dd00 100644 --- a/src/features/apps/logic-sim/core/circuit.ts +++ b/packages/apps/logic-sim/core/circuit.ts @@ -1,9 +1,9 @@ import { BACKGROUND, COLORS, CURSORS, FONT, CONTROLLER, ENABLE_COLOR_CACHING } from "../../../../config/apps/logicSim.config"; import { Vector2 } from "../../../math/vector2"; -import { Chip, ChipJson } from "../chips/chip"; -import { ControlledPin } from "../pins/controlledPin"; +import { Chip, ChipJson } from "./chips/chip"; +import { ControlledPin } from "./pins/controlledPin"; import { InputHandler } from "./inputHandler"; -import { Wire, WireJson } from "../wires/wire"; +import { Wire, WireJson } from "./wires/wire"; import { clamp } from "../../../_utils/math.utils"; export interface CircuitJson extends ChipJson { diff --git a/src/features/apps/logic-sim/core/inputHandler.ts b/packages/apps/logic-sim/core/inputHandler.ts similarity index 98% rename from src/features/apps/logic-sim/core/inputHandler.ts rename to packages/apps/logic-sim/core/inputHandler.ts index ee4329e..6c0a41d 100644 --- a/src/features/apps/logic-sim/core/inputHandler.ts +++ b/packages/apps/logic-sim/core/inputHandler.ts @@ -1,11 +1,11 @@ import { CONTROLLER, PIN, WIRE } from "../../../../config/apps/logicSim.config"; import { Vector2 } from "../../../math/vector2"; -import { Chip } from "../chips/chip"; +import { Chip } from "./chips/chip"; import { Circuit } from "./circuit"; -import { ControlledPin } from "../pins/controlledPin"; -import { Pin } from "../pins/pin"; -import { State } from "../_utils/state"; -import { Wire } from "../wires/wire"; +import { ControlledPin } from "./pins/controlledPin"; +import { Pin } from "./pins/pin"; +import { State } from "./_utils/state"; +import { Wire } from "./wires/wire"; export class InputHandler { circuit!: Circuit; diff --git a/src/features/apps/logic-sim/pins/controlledPin.ts b/packages/apps/logic-sim/core/pins/controlledPin.ts similarity index 98% rename from src/features/apps/logic-sim/pins/controlledPin.ts rename to packages/apps/logic-sim/core/pins/controlledPin.ts index 81e74e4..960a3db 100644 --- a/src/features/apps/logic-sim/pins/controlledPin.ts +++ b/packages/apps/logic-sim/core/pins/controlledPin.ts @@ -1,6 +1,6 @@ import { COLORS, CONTROLLER, CURSORS } from "../../../../config/apps/logicSim.config"; import { Vector2 } from "../../../math/vector2"; -import { Circuit } from "../core/circuit"; +import { Circuit } from "../circuit"; import { Pin } from "./pin"; export class ControlledPin extends Pin { diff --git a/src/features/apps/logic-sim/pins/pin.ts b/packages/apps/logic-sim/core/pins/pin.ts similarity index 98% rename from src/features/apps/logic-sim/pins/pin.ts rename to packages/apps/logic-sim/core/pins/pin.ts index ed6a571..85f4cea 100644 --- a/src/features/apps/logic-sim/pins/pin.ts +++ b/packages/apps/logic-sim/core/pins/pin.ts @@ -1,7 +1,7 @@ import { COLORS, CONTROLLER, CURSORS, PIN } from "../../../../config/apps/logicSim.config"; import { Vector2 } from "../../../math/vector2"; import { Chip } from "../chips/chip"; -import { Circuit } from "../core/circuit"; +import { Circuit } from "../circuit"; import { State } from "../_utils/state"; import { Wire } from "../wires/wire"; diff --git a/src/features/apps/logic-sim/wires/wire.ts b/packages/apps/logic-sim/core/wires/wire.ts similarity index 97% rename from src/features/apps/logic-sim/wires/wire.ts rename to packages/apps/logic-sim/core/wires/wire.ts index 973e665..37444c7 100644 --- a/src/features/apps/logic-sim/wires/wire.ts +++ b/packages/apps/logic-sim/core/wires/wire.ts @@ -1,6 +1,6 @@ import { WIRE } from "../../../../config/apps/logicSim.config"; import { Vector2 } from "../../../math/vector2"; -import { Circuit } from "../core/circuit"; +import { Circuit } from "../circuit"; import { Pin } from "../pins/pin"; import { State } from "../_utils/state"; diff --git a/src/components/apps/media-viewer/MediaViewer.module.css b/packages/apps/media-viewer/components/MediaViewer.module.css similarity index 100% rename from src/components/apps/media-viewer/MediaViewer.module.css rename to packages/apps/media-viewer/components/MediaViewer.module.css diff --git a/src/components/apps/media-viewer/MediaViewer.tsx b/packages/apps/media-viewer/components/MediaViewer.tsx similarity index 100% rename from src/components/apps/media-viewer/MediaViewer.tsx rename to packages/apps/media-viewer/components/MediaViewer.tsx diff --git a/src/config/apps/mediaViewer.config.ts b/packages/apps/media-viewer/config/mediaViewer.config.ts similarity index 100% rename from src/config/apps/mediaViewer.config.ts rename to packages/apps/media-viewer/config/mediaViewer.config.ts diff --git a/src/components/apps/settings/Settings.module.css b/packages/apps/settings/components/Settings.module.css similarity index 100% rename from src/components/apps/settings/Settings.module.css rename to packages/apps/settings/components/Settings.module.css diff --git a/src/components/apps/settings/Settings.tsx b/packages/apps/settings/components/Settings.tsx similarity index 100% rename from src/components/apps/settings/Settings.tsx rename to packages/apps/settings/components/Settings.tsx diff --git a/src/components/apps/settings/tabs/AboutSettings.tsx b/packages/apps/settings/components/tabs/AboutSettings.tsx similarity index 100% rename from src/components/apps/settings/tabs/AboutSettings.tsx rename to packages/apps/settings/components/tabs/AboutSettings.tsx diff --git a/src/components/apps/settings/tabs/AppOption.tsx b/packages/apps/settings/components/tabs/AppOption.tsx similarity index 100% rename from src/components/apps/settings/tabs/AppOption.tsx rename to packages/apps/settings/components/tabs/AppOption.tsx diff --git a/src/components/apps/settings/tabs/AppearanceSettings.tsx b/packages/apps/settings/components/tabs/AppearanceSettings.tsx similarity index 100% rename from src/components/apps/settings/tabs/AppearanceSettings.tsx rename to packages/apps/settings/components/tabs/AppearanceSettings.tsx diff --git a/src/components/apps/settings/tabs/AppsSettings.tsx b/packages/apps/settings/components/tabs/AppsSettings.tsx similarity index 100% rename from src/components/apps/settings/tabs/AppsSettings.tsx rename to packages/apps/settings/components/tabs/AppsSettings.tsx diff --git a/src/components/apps/settings/tabs/StorageSettings.tsx b/packages/apps/settings/components/tabs/StorageSettings.tsx similarity index 100% rename from src/components/apps/settings/tabs/StorageSettings.tsx rename to packages/apps/settings/components/tabs/StorageSettings.tsx diff --git a/src/config/apps/settings.config.ts b/packages/apps/settings/config/settings.config.ts similarity index 100% rename from src/config/apps/settings.config.ts rename to packages/apps/settings/config/settings.config.ts diff --git a/src/components/apps/terminal/Ansi.tsx b/packages/apps/terminal/components/Ansi.tsx similarity index 100% rename from src/components/apps/terminal/Ansi.tsx rename to packages/apps/terminal/components/Ansi.tsx diff --git a/src/components/apps/terminal/InputLine.tsx b/packages/apps/terminal/components/InputLine.tsx similarity index 100% rename from src/components/apps/terminal/InputLine.tsx rename to packages/apps/terminal/components/InputLine.tsx diff --git a/src/components/apps/terminal/OutputLine.tsx b/packages/apps/terminal/components/OutputLine.tsx similarity index 100% rename from src/components/apps/terminal/OutputLine.tsx rename to packages/apps/terminal/components/OutputLine.tsx diff --git a/src/components/apps/terminal/Terminal.module.css b/packages/apps/terminal/components/Terminal.module.css similarity index 100% rename from src/components/apps/terminal/Terminal.module.css rename to packages/apps/terminal/components/Terminal.module.css diff --git a/src/components/apps/terminal/Terminal.tsx b/packages/apps/terminal/components/Terminal.tsx similarity index 100% rename from src/components/apps/terminal/Terminal.tsx rename to packages/apps/terminal/components/Terminal.tsx diff --git a/src/config/apps/terminal.config.ts b/packages/apps/terminal/config/terminal.config.ts similarity index 100% rename from src/config/apps/terminal.config.ts rename to packages/apps/terminal/config/terminal.config.ts diff --git a/src/features/apps/terminal/_utils/terminal.utils.ts b/packages/apps/terminal/core/_utils/terminal.utils.ts similarity index 100% rename from src/features/apps/terminal/_utils/terminal.utils.ts rename to packages/apps/terminal/core/_utils/terminal.utils.ts diff --git a/src/features/apps/terminal/command.ts b/packages/apps/terminal/core/command.ts similarity index 100% rename from src/features/apps/terminal/command.ts rename to packages/apps/terminal/core/command.ts diff --git a/src/features/apps/terminal/commands.ts b/packages/apps/terminal/core/commands.ts similarity index 100% rename from src/features/apps/terminal/commands.ts rename to packages/apps/terminal/core/commands.ts diff --git a/src/features/apps/terminal/commands/cat.ts b/packages/apps/terminal/core/commands/cat.ts similarity index 100% rename from src/features/apps/terminal/commands/cat.ts rename to packages/apps/terminal/core/commands/cat.ts diff --git a/src/features/apps/terminal/commands/cd.ts b/packages/apps/terminal/core/commands/cd.ts similarity index 100% rename from src/features/apps/terminal/commands/cd.ts rename to packages/apps/terminal/core/commands/cd.ts diff --git a/src/features/apps/terminal/commands/clear.ts b/packages/apps/terminal/core/commands/clear.ts similarity index 100% rename from src/features/apps/terminal/commands/clear.ts rename to packages/apps/terminal/core/commands/clear.ts diff --git a/src/features/apps/terminal/commands/cmatrix.ts b/packages/apps/terminal/core/commands/cmatrix.ts similarity index 100% rename from src/features/apps/terminal/commands/cmatrix.ts rename to packages/apps/terminal/core/commands/cmatrix.ts diff --git a/src/features/apps/terminal/commands/compgen.ts b/packages/apps/terminal/core/commands/compgen.ts similarity index 100% rename from src/features/apps/terminal/commands/compgen.ts rename to packages/apps/terminal/core/commands/compgen.ts diff --git a/src/features/apps/terminal/commands/cowsay.ts b/packages/apps/terminal/core/commands/cowsay.ts similarity index 100% rename from src/features/apps/terminal/commands/cowsay.ts rename to packages/apps/terminal/core/commands/cowsay.ts diff --git a/src/features/apps/terminal/commands/dir.ts b/packages/apps/terminal/core/commands/dir.ts similarity index 100% rename from src/features/apps/terminal/commands/dir.ts rename to packages/apps/terminal/core/commands/dir.ts diff --git a/src/features/apps/terminal/commands/echo.ts b/packages/apps/terminal/core/commands/echo.ts similarity index 100% rename from src/features/apps/terminal/commands/echo.ts rename to packages/apps/terminal/core/commands/echo.ts diff --git a/src/features/apps/terminal/commands/exit.ts b/packages/apps/terminal/core/commands/exit.ts similarity index 100% rename from src/features/apps/terminal/commands/exit.ts rename to packages/apps/terminal/core/commands/exit.ts diff --git a/src/features/apps/terminal/commands/fortune.ts b/packages/apps/terminal/core/commands/fortune.ts similarity index 100% rename from src/features/apps/terminal/commands/fortune.ts rename to packages/apps/terminal/core/commands/fortune.ts diff --git a/src/features/apps/terminal/commands/help.ts b/packages/apps/terminal/core/commands/help.ts similarity index 100% rename from src/features/apps/terminal/commands/help.ts rename to packages/apps/terminal/core/commands/help.ts diff --git a/src/features/apps/terminal/commands/hostname.ts b/packages/apps/terminal/core/commands/hostname.ts similarity index 100% rename from src/features/apps/terminal/commands/hostname.ts rename to packages/apps/terminal/core/commands/hostname.ts diff --git a/src/features/apps/terminal/commands/lolcat.ts b/packages/apps/terminal/core/commands/lolcat.ts similarity index 100% rename from src/features/apps/terminal/commands/lolcat.ts rename to packages/apps/terminal/core/commands/lolcat.ts diff --git a/src/features/apps/terminal/commands/ls.ts b/packages/apps/terminal/core/commands/ls.ts similarity index 100% rename from src/features/apps/terminal/commands/ls.ts rename to packages/apps/terminal/core/commands/ls.ts diff --git a/src/features/apps/terminal/commands/make.ts b/packages/apps/terminal/core/commands/make.ts similarity index 100% rename from src/features/apps/terminal/commands/make.ts rename to packages/apps/terminal/core/commands/make.ts diff --git a/src/features/apps/terminal/commands/man.ts b/packages/apps/terminal/core/commands/man.ts similarity index 100% rename from src/features/apps/terminal/commands/man.ts rename to packages/apps/terminal/core/commands/man.ts diff --git a/src/features/apps/terminal/commands/mkdir.ts b/packages/apps/terminal/core/commands/mkdir.ts similarity index 100% rename from src/features/apps/terminal/commands/mkdir.ts rename to packages/apps/terminal/core/commands/mkdir.ts diff --git a/src/features/apps/terminal/commands/neofetch.ts b/packages/apps/terminal/core/commands/neofetch.ts similarity index 100% rename from src/features/apps/terminal/commands/neofetch.ts rename to packages/apps/terminal/core/commands/neofetch.ts diff --git a/src/features/apps/terminal/commands/pwd.ts b/packages/apps/terminal/core/commands/pwd.ts similarity index 100% rename from src/features/apps/terminal/commands/pwd.ts rename to packages/apps/terminal/core/commands/pwd.ts diff --git a/src/features/apps/terminal/commands/reboot.ts b/packages/apps/terminal/core/commands/reboot.ts similarity index 100% rename from src/features/apps/terminal/commands/reboot.ts rename to packages/apps/terminal/core/commands/reboot.ts diff --git a/src/features/apps/terminal/commands/reload.ts b/packages/apps/terminal/core/commands/reload.ts similarity index 100% rename from src/features/apps/terminal/commands/reload.ts rename to packages/apps/terminal/core/commands/reload.ts diff --git a/src/features/apps/terminal/commands/rev.ts b/packages/apps/terminal/core/commands/rev.ts similarity index 100% rename from src/features/apps/terminal/commands/rev.ts rename to packages/apps/terminal/core/commands/rev.ts diff --git a/src/features/apps/terminal/commands/rm.ts b/packages/apps/terminal/core/commands/rm.ts similarity index 100% rename from src/features/apps/terminal/commands/rm.ts rename to packages/apps/terminal/core/commands/rm.ts diff --git a/src/features/apps/terminal/commands/rmdir.ts b/packages/apps/terminal/core/commands/rmdir.ts similarity index 100% rename from src/features/apps/terminal/commands/rmdir.ts rename to packages/apps/terminal/core/commands/rmdir.ts diff --git a/src/features/apps/terminal/commands/sl.ts b/packages/apps/terminal/core/commands/sl.ts similarity index 100% rename from src/features/apps/terminal/commands/sl.ts rename to packages/apps/terminal/core/commands/sl.ts diff --git a/src/features/apps/terminal/commands/touch.ts b/packages/apps/terminal/core/commands/touch.ts similarity index 100% rename from src/features/apps/terminal/commands/touch.ts rename to packages/apps/terminal/core/commands/touch.ts diff --git a/src/features/apps/terminal/commands/uptime.ts b/packages/apps/terminal/core/commands/uptime.ts similarity index 100% rename from src/features/apps/terminal/commands/uptime.ts rename to packages/apps/terminal/core/commands/uptime.ts diff --git a/src/features/apps/terminal/commands/whatis.ts b/packages/apps/terminal/core/commands/whatis.ts similarity index 100% rename from src/features/apps/terminal/commands/whatis.ts rename to packages/apps/terminal/core/commands/whatis.ts diff --git a/src/features/apps/terminal/commands/whoami.ts b/packages/apps/terminal/core/commands/whoami.ts similarity index 100% rename from src/features/apps/terminal/commands/whoami.ts rename to packages/apps/terminal/core/commands/whoami.ts diff --git a/src/features/apps/terminal/stream.ts b/packages/apps/terminal/core/stream.ts similarity index 100% rename from src/features/apps/terminal/stream.ts rename to packages/apps/terminal/core/stream.ts diff --git a/src/components/apps/text-editor/TextEditor.module.css b/packages/apps/text-editor/components/TextEditor.module.css similarity index 100% rename from src/components/apps/text-editor/TextEditor.module.css rename to packages/apps/text-editor/components/TextEditor.module.css diff --git a/src/components/apps/text-editor/TextEditor.tsx b/packages/apps/text-editor/components/TextEditor.tsx similarity index 100% rename from src/components/apps/text-editor/TextEditor.tsx rename to packages/apps/text-editor/components/TextEditor.tsx diff --git a/src/components/apps/text-editor/overrides/MarkdownBlockquote.tsx b/packages/apps/text-editor/components/overrides/MarkdownBlockquote.tsx similarity index 100% rename from src/components/apps/text-editor/overrides/MarkdownBlockquote.tsx rename to packages/apps/text-editor/components/overrides/MarkdownBlockquote.tsx diff --git a/src/components/apps/text-editor/overrides/MarkdownImage.tsx b/packages/apps/text-editor/components/overrides/MarkdownImage.tsx similarity index 100% rename from src/components/apps/text-editor/overrides/MarkdownImage.tsx rename to packages/apps/text-editor/components/overrides/MarkdownImage.tsx diff --git a/src/components/apps/text-editor/overrides/MarkdownLink.tsx b/packages/apps/text-editor/components/overrides/MarkdownLink.tsx similarity index 100% rename from src/components/apps/text-editor/overrides/MarkdownLink.tsx rename to packages/apps/text-editor/components/overrides/MarkdownLink.tsx diff --git a/src/config/apps/textEditor.config.ts b/packages/apps/text-editor/config/textEditor.config.ts similarity index 100% rename from src/config/apps/textEditor.config.ts rename to packages/apps/text-editor/config/textEditor.config.ts diff --git a/src/features/apps/text-editor/_utils/sanitizeProps.ts b/packages/apps/text-editor/core/_utils/sanitizeProps.ts similarity index 100% rename from src/features/apps/text-editor/_utils/sanitizeProps.ts rename to packages/apps/text-editor/core/_utils/sanitizeProps.ts diff --git a/packages/core/README.md b/packages/core/README.md new file mode 100644 index 0000000..aa3cf87 --- /dev/null +++ b/packages/core/README.md @@ -0,0 +1 @@ +# @ProzillaOS/core \ No newline at end of file diff --git a/packages/core/package.json b/packages/core/package.json new file mode 100644 index 0000000..d7d1bcc --- /dev/null +++ b/packages/core/package.json @@ -0,0 +1,35 @@ +{ + "name": "@prozilla-os/core", + "version": "1.0.0", + "author": { + "name": "Prozilla", + "email": "business@prozilla.dev", + "url": "https://prozilla.dev/" + }, + "main": "src/index.ts", + "type": "module", + "scripts": { + "test": "tsc --watch" + }, + "repository": "https://github.com/Prozilla/ProzillaOS", + "license": "MIT", + "dependencies": { + "@fortawesome/fontawesome-svg-core": "^6.5.2", + "@fortawesome/free-regular-svg-icons": "^6.5.2", + "@fortawesome/free-solid-svg-icons": "^6.5.2", + "@fortawesome/react-fontawesome": "^0.2.2", + "react": "^18.3.1", + "react-draggable": "^4.4.6", + "react-error-boundary": "^4.0.13", + "react-ga4": "^2.1.0", + "react-svg": "^16.1.34", + "@prozilla-os/file-explorer": "^1.0.0" + }, + "devDependencies": { + "@types/node": "^20.14.2", + "typescript": "^5.4.5" + }, + "files": [ + "src/index.ts" + ] +} diff --git a/src/components/_utils/button/Button.module.css b/packages/core/src/components/_utils/button/Button.module.css similarity index 100% rename from src/components/_utils/button/Button.module.css rename to packages/core/src/components/_utils/button/Button.module.css diff --git a/src/components/_utils/button/Button.tsx b/packages/core/src/components/_utils/button/Button.tsx similarity index 100% rename from src/components/_utils/button/Button.tsx rename to packages/core/src/components/_utils/button/Button.tsx diff --git a/src/components/apps/file-explorer/directory-list/DirectoryList.module.css b/packages/core/src/components/_utils/directory-list/DirectoryList.module.css similarity index 100% rename from src/components/apps/file-explorer/directory-list/DirectoryList.module.css rename to packages/core/src/components/_utils/directory-list/DirectoryList.module.css diff --git a/src/components/apps/file-explorer/directory-list/DirectoryList.tsx b/packages/core/src/components/_utils/directory-list/DirectoryList.tsx similarity index 95% rename from src/components/apps/file-explorer/directory-list/DirectoryList.tsx rename to packages/core/src/components/_utils/directory-list/DirectoryList.tsx index 6bedcd9..472dc1c 100644 --- a/src/components/apps/file-explorer/directory-list/DirectoryList.tsx +++ b/packages/core/src/components/_utils/directory-list/DirectoryList.tsx @@ -1,10 +1,10 @@ import { MouseEventHandler, ReactElement, useEffect, useRef, useState } from "react"; -import { VirtualFile } from "../../../../features/virtual-drive/file"; -import { VirtualFolder } from "../../../../features/virtual-drive/folder/virtualFolder"; -import { Interactable } from "../../../_utils/interactable/Interactable"; import styles from "./DirectoryList.module.css"; import { ImagePreview } from "./ImagePreview"; -import { Vector2 } from "../../../../features/math/vector2"; +import { VirtualFile } from "../../../features/virtual-drive/file"; +import { VirtualFolder } from "../../../features/virtual-drive/folder"; +import { Vector2 } from "../../../features"; +import { Interactable } from "../interactable/Interactable"; export interface OnSelectionChangeParams { files?: string[]; diff --git a/src/components/apps/file-explorer/directory-list/ImagePreview.module.css b/packages/core/src/components/_utils/directory-list/ImagePreview.module.css similarity index 100% rename from src/components/apps/file-explorer/directory-list/ImagePreview.module.css rename to packages/core/src/components/_utils/directory-list/ImagePreview.module.css diff --git a/src/components/apps/file-explorer/directory-list/ImagePreview.tsx b/packages/core/src/components/_utils/directory-list/ImagePreview.tsx similarity index 87% rename from src/components/apps/file-explorer/directory-list/ImagePreview.tsx rename to packages/core/src/components/_utils/directory-list/ImagePreview.tsx index f1e9b98..b737568 100644 --- a/src/components/apps/file-explorer/directory-list/ImagePreview.tsx +++ b/packages/core/src/components/_utils/directory-list/ImagePreview.tsx @@ -1,8 +1,8 @@ import { useState } from "react"; import styles from "./ImagePreview.module.css"; import { ReactSVG } from "react-svg"; -import { AppsManager } from "../../../../features/apps/appsManager"; -import { APPS } from "../../../../config/apps.config"; +import { AppsManager } from "../../../features"; +import { APPS } from "../../../constants/apps.const"; interface ImagePreviewProps { source: string; diff --git a/src/components/_utils/dropdown-button/DropdownButton.module.css b/packages/core/src/components/_utils/dropdown-button/DropdownButton.module.css similarity index 100% rename from src/components/_utils/dropdown-button/DropdownButton.module.css rename to packages/core/src/components/_utils/dropdown-button/DropdownButton.module.css diff --git a/src/components/_utils/dropdown-button/DropdownButton.tsx b/packages/core/src/components/_utils/dropdown-button/DropdownButton.tsx similarity index 100% rename from src/components/_utils/dropdown-button/DropdownButton.tsx rename to packages/core/src/components/_utils/dropdown-button/DropdownButton.tsx diff --git a/src/components/apps/_utils/header-menu/HeaderMenu.module.css b/packages/core/src/components/_utils/header-menu/HeaderMenu.module.css similarity index 100% rename from src/components/apps/_utils/header-menu/HeaderMenu.module.css rename to packages/core/src/components/_utils/header-menu/HeaderMenu.module.css diff --git a/src/components/apps/_utils/header-menu/HeaderMenu.tsx b/packages/core/src/components/_utils/header-menu/HeaderMenu.tsx similarity index 55% rename from src/components/apps/_utils/header-menu/HeaderMenu.tsx rename to packages/core/src/components/_utils/header-menu/HeaderMenu.tsx index 3f5875d..e75aea6 100644 --- a/src/components/apps/_utils/header-menu/HeaderMenu.tsx +++ b/packages/core/src/components/_utils/header-menu/HeaderMenu.tsx @@ -1,9 +1,8 @@ import styles from "./HeaderMenu.module.css"; -import { ActionsProps, Actions } from "../../../actions/Actions"; -import { useZIndex } from "../../../../hooks/z-index/zIndex"; -import { ZIndexManager } from "../../../../features/z-index/zIndexManager"; -import { ActionsManager } from "../../../../features/actions/actionsManager"; - +import { ActionsProps, Actions } from "../../actions/Actions"; +import { useZIndex } from "../../../hooks/z-index/zIndex"; +import { ZIndexManager } from "../../../features/z-index/zIndexManager"; +import { ActionsManager } from "../../../features/actions/actionsManager"; export function HeaderMenu({ children, ...props }: ActionsProps) { const zIndex = useZIndex({ groupIndex: ZIndexManager.GROUPS.MODALS, index: 5 }); diff --git a/packages/core/src/components/_utils/index.ts b/packages/core/src/components/_utils/index.ts new file mode 100644 index 0000000..4869ca4 --- /dev/null +++ b/packages/core/src/components/_utils/index.ts @@ -0,0 +1,10 @@ +export { Button } from "./button/Button"; +export { DirectoryList } from "./directory-list/DirectoryList"; +export { DropdownButton } from "./dropdown-button/DropdownButton"; +export { Interactable } from "./interactable/Interactable"; +export { ProgressBar } from "./progress-bar/ProgressBar"; +export { HeaderMenu } from "./header-menu/HeaderMenu"; +export { WebView } from "./web-view/WebView"; +export { ImagePreview } from "./directory-list/ImagePreview"; + +export type { OnSelectionChangeParams, FileEventHandler, FolderEventHandler } from "./directory-list/DirectoryList"; \ No newline at end of file diff --git a/src/components/_utils/interactable/Interactable.tsx b/packages/core/src/components/_utils/interactable/Interactable.tsx similarity index 82% rename from src/components/_utils/interactable/Interactable.tsx rename to packages/core/src/components/_utils/interactable/Interactable.tsx index 6e78093..04b3943 100644 --- a/src/components/_utils/interactable/Interactable.tsx +++ b/packages/core/src/components/_utils/interactable/Interactable.tsx @@ -1,7 +1,7 @@ import { MouseEventHandler, ReactNode, useState } from "react"; -import { INTERACTIBLE_DOUBLE_CLICK_DELAY } from "../../../config/utils.config"; +import { useSystemManager } from "../../../hooks"; -let timeoutId: NodeJS.Timeout | null = null; +let timeoutId: number | null = null; interface InteractableProps { onClick: Function; @@ -11,6 +11,7 @@ interface InteractableProps { } export function Interactable({ onClick, onDoubleClick, children, ...props }: InteractableProps) { + const { miscConfig } = useSystemManager(); const [clicked, setClicked] = useState(false); const onButtonClick = (event: MouseEvent) => { @@ -32,7 +33,7 @@ export function Interactable({ onClick, onDoubleClick, children, ...props }: Int timeoutId = setTimeout(() => { setClicked(false); - }, INTERACTIBLE_DOUBLE_CLICK_DELAY); + }, miscConfig.doubleClickDelay); }; return
-

{NAME}

+

{systemName}

{AppsManager.APPS.sort((a, b) => a.name.localeCompare(b.name)).map(({ name, id }) => - {screenWidth != null && screenHeight != null && screenWidth > MIN_SCREEN_WIDTH && screenHeight > MIN_SCREEN_HEIGHT + {screenWidth != null && screenHeight != null + && screenWidth > windowsConfig.minScreenSize.x && screenHeight > windowsConfig.minScreenSize.y ?