@prozilla-os/file-explorer 1.1.14 → 1.1.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.js CHANGED
@@ -314,7 +314,7 @@ function Ge({ app: o, path: h, selectorMode: i, Footer: _, onSelectionChange: p,
314
314
  }
315
315
  var We = /* @__PURE__ */ ((o) => (o[o.None = 0] = "None", o[o.Single = 1] = "Single", o[o.Multi = 2] = "Multi", o))(We || {});
316
316
  const Ye = new ue("File Explorer", "file-explorer", Ge).setIconUrl("https://os.prozilla.dev/assets/apps/icons/file-explorer.svg").setRole(pe.APP_ROLES.fileExplorer).setCategory("Utilities & tools");
317
- Ye.setMetadata({ name: "@prozilla-os/file-explorer", version: "1.1.12", author: "Prozilla" });
317
+ Ye.setMetadata({ name: "@prozilla-os/file-explorer", version: "1.1.14", author: "Prozilla" });
318
318
  export {
319
319
  We as FileSelectorMode,
320
320
  Ye as fileExplorer
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sources":["../src/components/QuickAccessButton.tsx","../src/components/ImportButton.tsx","../src/constants/fileExplorer.const.ts","../src/components/modals/file-properties/FileProperties.tsx","../src/components/FileExplorer.tsx","../src/types/utils.ts","../src/main.ts"],"sourcesContent":["import { FontAwesomeIcon, FontAwesomeIconProps } from \"@fortawesome/react-fontawesome\";\r\nimport styles from \"./FileExplorer.module.css\";\r\nimport { MouseEventHandler } from \"react\";\r\nimport { utilStyles } from \"@prozilla-os/core\";\r\n\r\ninterface QuickAcessButton {\r\n\tonClick: MouseEventHandler;\r\n\ticon: FontAwesomeIconProps[\"icon\"];\r\n\tname: string;\r\n}\r\n\r\nexport function QuickAccessButton({ onClick, icon, name }: QuickAcessButton) {\r\n\treturn (\r\n\t\t<button\r\n\t\t\ttabIndex={0}\r\n\t\t\tclassName={`${styles.NavButton} ${utilStyles.TextSemibold}`}\r\n\t\t\tonClick={onClick}\r\n\t\t>\r\n\t\t\t<FontAwesomeIcon icon={icon}/>\r\n\t\t\t{name}\r\n\t\t</button>\r\n\t);\r\n}","import { FormEventHandler, ReactElement } from \"react\";\r\nimport styles from \"./FileExplorer.module.css\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faDownload } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { VirtualFolder, VirtualFile } from \"@prozilla-os/core\";\r\n\r\ninterface ImportButtonProps {\r\n\tdirectory: VirtualFolder;\r\n}\r\n\r\nexport function ImportButton({ directory }: ImportButtonProps): ReactElement {\r\n\tconst onChange = (event: InputEvent) => {\r\n\t\tconst files = (event.target as HTMLInputElement).files;\r\n\r\n\t\tif (files == null)\r\n\t\t\treturn;\r\n\r\n\t\tArray.from(files).forEach((file: File) => {\r\n\t\t\tconst { name, extension } = VirtualFile.splitId(file.name);\r\n\r\n\t\t\tconst reader = new FileReader();\r\n\t\t\treader.onload = (event: Event) => {\r\n\t\t\t\tconst { result } = event.target as FileReader;\r\n\r\n\t\t\t\t// Create a file with the same name and extension, with a base64 string as a source\r\n\t\t\t\tdirectory.createFile(name, extension as string | undefined, (virtualFile) => {\r\n\t\t\t\t\tvirtualFile.setSource(result as string);\r\n\t\t\t\t});\r\n\t\t\t};\r\n\t\t\treader.readAsDataURL(file);\r\n\t\t});\r\n\t};\r\n\r\n\treturn <label title=\"Import\" tabIndex={0} className={styles.IconButton}>\r\n\t\t<input\r\n\t\t\ttype=\"file\"\r\n\t\t\tid=\"import\"\r\n\t\t\tmultiple\r\n\t\t\tstyle={{ display: \"none\" }}\r\n\t\t\tonChange={onChange as unknown as FormEventHandler}\r\n\t\t/>\r\n\t\t<FontAwesomeIcon icon={faDownload}/>\r\n\t</label>;\r\n}","export const SELECTOR_MODE = {\n\tNONE: 0,\n\tSINGLE: 1,\n\tMULTIPLE: 2,\n};","import styles from \"./FileProperties.module.css\";\r\nimport { ImagePreview, ModalProps, StorageManager, useSystemManager, utilStyles, VirtualFile, WindowedModal } from \"@prozilla-os/core\";\r\n\r\ninterface FilePropetiesProps extends ModalProps {\r\n\tfile: VirtualFile;\r\n}\r\n\r\nexport function FileProperties({ modal, params, file, ...props }: FilePropetiesProps) {\r\n\tconst { appsConfig } = useSystemManager();\r\n\tconst associatedApp = file.extension != null ? appsConfig.getAppByFileExtension(file.extension) : null;\r\n\r\n\treturn <WindowedModal className={styles.FileProperties} modal={modal} params={params} {...props}>\r\n\t\t<span className={styles.Section}>\r\n\t\t\t<ImagePreview className={styles.Icon} source={file.getIconUrl()}/>\r\n\t\t\t<p className={`${styles.Line} ${utilStyles.TextBold}`}>{file.id}</p>\r\n\t\t</span>\r\n\t\t<span className={styles.Section}>\r\n\t\t\t<p className={styles.Line}>Type: {file.getType()}</p>\r\n\t\t\t{associatedApp != null &&\r\n\t\t\t\t<span className={styles.Line}>\r\n\t\t\t\t\tOpens with: \r\n\t\t\t\t\t<ImagePreview className={styles.AppIcon} source={associatedApp.iconUrl ?? \"\"}/>\r\n\t\t\t\t\t{associatedApp.name}\r\n\t\t\t\t</span>\r\n\t\t\t}\r\n\t\t</span>\r\n\t\t<span className={styles.Section}>\r\n\t\t\t<p className={styles.Line}>Location: {file.path}</p>\r\n\t\t\t<p className={styles.Line}>Size: {StorageManager.getByteSize(file.source ?? file.content as string | null)} bytes</p>\r\n\t\t\t<p className={styles.Line}>Size on drive: {StorageManager.getByteSize(file.toString())} bytes</p>\r\n\t\t</span>\r\n\t\t<span className={styles.Section}>\r\n\t\t\t<p className={styles.Line}>Attributes: {file.isProtected ? \"Protected\" : \"N/A\"}</p>\r\n\t\t</span>\r\n\t</WindowedModal>;\r\n}","import { ChangeEventHandler, FC, KeyboardEventHandler, useCallback, useEffect, useState } from \"react\";\nimport styles from \"./FileExplorer.module.css\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faArrowUp, faCaretLeft, faCaretRight, faCircleInfo, faCog, faDesktop, faFileLines, faHouse, faImage, faPlus, faSearch, faTrash } from \"@fortawesome/free-solid-svg-icons\";\nimport { QuickAccessButton } from \"./QuickAccessButton\";\nimport { ImportButton } from \"./ImportButton\";\nimport { Actions, ClickAction, CODE_EXTENSIONS, DialogBox, DirectoryList, Divider, FileEventHandler, FolderEventHandler, ModalProps, ModalsConfig, OnSelectionChangeParams, useAlert, useContextMenu, useHistory, useSystemManager, useVirtualRoot, useWindowedModal, useWindowsManager, utilStyles, Vector2, VirtualFile, VirtualFolder, VirtualFolderLink, VirtualRoot, WindowProps } from \"@prozilla-os/core\";\nimport { SELECTOR_MODE } from \"../constants/fileExplorer.const\";\nimport { FileProperties } from \"./modals/file-properties/FileProperties\";\nimport { JSX } from \"react/jsx-runtime\";\n\nexport interface FileExplorerProps extends WindowProps {\n\tpath?: string;\n\tselectorMode?: number;\n\tFooter?: FC;\n\tonSelectionChange?: (params: OnSelectionChangeParams) => void;\n\tonSelectionFinish?: () => void;\n}\n\nexport function FileExplorer({ app, path: startPath, selectorMode, Footer, onSelectionChange, onSelectionFinish }: FileExplorerProps) {\n\tconst isSelector = (Footer != null && selectorMode != null && selectorMode !== SELECTOR_MODE.NONE);\n\n\tconst virtualRoot = useVirtualRoot();\n\tconst windowsManager = useWindowsManager();\n\tconst { windowsConfig } = useSystemManager();\n\n\tconst [currentDirectory, setCurrentDirectory] = useState<VirtualFolder>(virtualRoot?.navigate(startPath ?? \"~\") as VirtualFolder);\n\tconst [path, setPath] = useState<string>(currentDirectory?.path ?? \"\");\n\tconst [showHidden] = useState(true);\n\tconst { history, stateIndex, pushState, undo, redo, undoAvailable, redoAvailable } = useHistory<string>(currentDirectory.path);\n\tconst { alert } = useAlert();\n\n\tconst { openWindowedModal } = useWindowedModal();\n\tconst { onContextMenu: onContextMenuFile } = useContextMenu({ Actions: (props) =>\n\t\t<Actions {...props}>\n\t\t\t<ClickAction label={!isSelector ? \"Open\" : \"Select\"} onTrigger={(_event, file) => {\n\t\t\t\tif (isSelector) {\n\t\t\t\t\tonSelectionChange?.({ files: [(file as VirtualFile).id], directory: currentDirectory });\n\t\t\t\t\tonSelectionFinish?.();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (windowsManager != null)\t(file as VirtualFile).open(windowsManager);\n\t\t\t}}/>\n\t\t\t<ClickAction label=\"Delete\" icon={faTrash} onTrigger={(_event, file) => {\n\t\t\t\t(file as VirtualFile).delete();\n\t\t\t}}/>\n\t\t\t<ClickAction label=\"Properties\" icon={faCircleInfo} onTrigger={(_event, file) => {\n\t\t\t\topenWindowedModal({\n\t\t\t\t\ttitle: `${(file as VirtualFile).id} ${windowsConfig.titleSeparator} Properties`,\n\t\t\t\t\ticonUrl: (file as VirtualFile).getIconUrl(),\n\t\t\t\t\tsize: new Vector2(400, 500),\n\t\t\t\t\tModal: (props: object) => <FileProperties file={file as VirtualFile} {...props}/>,\n\t\t\t\t});\n\t\t\t}}/>\n\t\t</Actions>,\n\t});\n\tconst { onContextMenu: onContextMenuFolder } = useContextMenu({ Actions: (props) =>\n\t\t<Actions {...props}>\n\t\t\t<ClickAction label=\"Open\" onTrigger={(_event, folder) => {\n\t\t\t\tchangeDirectory((folder as VirtualFolderLink).linkedPath ?? (folder as VirtualFolder).name);\n\t\t\t}}/>\n\t\t\t{/* <ClickAction label={`Open in ${APP_NAMES.TERMINAL}`} icon={APP_ICONS.TERMINAL} onTrigger={(event, folder) => {\n\t\t\t\twindowsManager?.open(APPS.TERMINAL, { startPath: (folder as VirtualFolder).path });\n\t\t\t}}/> */}\n\t\t\t<Divider/>\n\t\t\t<ClickAction label=\"Delete\" icon={faTrash} onTrigger={(_event, folder) => {\n\t\t\t\t(folder as VirtualFolder).delete();\n\t\t\t}}/>\n\t\t</Actions>,\n\t});\n\t// const { onContextMenu: onNew } = useContextMenu({\n\t// \tmodalsManager,\n\t// \toptions: {\n\t// \t\t\"File\": () => { currentDirectory.createFile(\"New File\"); },\n\t// \t\t\"Folder\": () => { currentDirectory.createFolder(\"New Folder\"); }\n\t// \t}\n\t// });\n\n\tconst changeDirectory = useCallback((path: string, absolute = false) => {\n\t\tif (path == null)\n\t\t\treturn;\n\n\t\tif (currentDirectory == null)\n\t\t\tabsolute = true;\n\n\t\tconst directory = absolute ? virtualRoot?.navigate(path) : currentDirectory.navigate(path);\n\n\t\tif (directory != null) {\n\t\t\tsetCurrentDirectory(directory as VirtualFolder);\n\t\t\tsetPath(directory.root ? \"/\" : directory.path);\n\t\t\tpushState(directory.path);\n\t\t}\n\t}, [currentDirectory, pushState, virtualRoot]);\n\n\tuseEffect(() => {\n\t\tif (history.length === 0)\n\t\t\treturn;\n\n\t\tconst path = history[stateIndex];\n\t\tconst directory = virtualRoot?.navigate(path);\n\t\tif (directory != null) {\n\t\t\tsetCurrentDirectory(directory as VirtualFolder);\n\t\t\tsetPath(directory.root ? \"/\" : directory.path);\n\t\t}\n\t}, [history, stateIndex, virtualRoot]);\n\n\tuseEffect(() => {\n\t\ttype Error = { message: string };\n\t\tconst onError = (error: unknown) => {\n\t\t\talert({\n\t\t\t\ttitle: (error as Error).message,\n\t\t\t\ttext: \"You have exceeded the virtual drive capacity. Files and folders will not be saved until more storage is freed.\",\n\t\t\t\ticonUrl: app?.iconUrl as string | undefined,\n\t\t\t\tsize: new Vector2(300, 200),\n\t\t\t\tsingle: true,\n\t\t\t});\n\t\t};\n\n\t\tvirtualRoot?.on(VirtualRoot.EVENT_NAMES.error, onError);\n\n\t\treturn () => {\n\t\t\tvirtualRoot?.off(VirtualRoot.EVENT_NAMES.error, onError);\n\t\t};\n\t}, []);\n\n\tconst onPathChange = (event: Event) => {\n\t\tsetPath((event.target as HTMLInputElement).value);\n\t};\n\n\tconst onKeyDown = (event: KeyboardEvent) => {\n\t\tlet value = (event.target as HTMLInputElement).value;\n\n\t\tif (event.key === \"Enter\") {\n\t\t\tif (value === \"\")\n\t\t\t\tvalue = \"~\";\n\n\t\t\tconst directory = virtualRoot?.navigate(value);\n\n\t\t\tif (directory == null) {\n\t\t\t\topenWindowedModal({\n\t\t\t\t\ttitle: \"Error\",\n\t\t\t\t\ticonUrl: app?.iconUrl as string | undefined,\n\t\t\t\t\tsize: new Vector2(300, 150),\n\t\t\t\t\tModal: (props: JSX.IntrinsicAttributes & ModalProps) =>\n\t\t\t\t\t\t<DialogBox {...props}>\n\t\t\t\t\t\t\t<p>Invalid path: \"{value}\"</p>\n\t\t\t\t\t\t\t<button data-type={ModalsConfig.DIALOG_CONTENT_TYPES.closeButton}>Ok</button>\n\t\t\t\t\t\t</DialogBox>,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetCurrentDirectory(directory as VirtualFolder);\n\t\t\tsetPath(directory.root ? \"/\" : directory.path);\n\t\t}\n\t};\n\n\tconst itemCount = currentDirectory.getItemCount(showHidden);\n\n\treturn (\n\t\t<div className={!isSelector ? styles.FileExplorer : `${styles.FileExplorer} ${styles.Selector}`}>\n\t\t\t<div className={styles.Header}>\n\t\t\t\t<button\n\t\t\t\t\ttitle=\"Back\"\n\t\t\t\t\ttabIndex={0}\n\t\t\t\t\tclassName={styles.IconButton}\n\t\t\t\t\tonClick={() => { undo(); }}\n\t\t\t\t\tdisabled={!undoAvailable}\n\t\t\t\t>\n\t\t\t\t\t<FontAwesomeIcon icon={faCaretLeft}/>\n\t\t\t\t</button>\n\t\t\t\t<button\n\t\t\t\t\ttitle=\"Forward\"\n\t\t\t\t\ttabIndex={0}\n\t\t\t\t\tclassName={styles.IconButton}\n\t\t\t\t\tonClick={() => { redo(); }}\n\t\t\t\t\tdisabled={!redoAvailable}\n\t\t\t\t>\n\t\t\t\t\t<FontAwesomeIcon icon={faCaretRight}/>\n\t\t\t\t</button>\n\t\t\t\t<button\n\t\t\t\t\ttitle=\"Up\"\n\t\t\t\t\ttabIndex={0}\n\t\t\t\t\tclassName={styles.IconButton}\n\t\t\t\t\tonClick={() => { changeDirectory(\"..\"); }}\n\t\t\t\t\tdisabled={currentDirectory.isRoot != null && currentDirectory.isRoot}\n\t\t\t\t>\n\t\t\t\t\t<FontAwesomeIcon icon={faArrowUp}/>\n\t\t\t\t</button>\n\t\t\t\t<button\n\t\t\t\t\ttitle=\"New\"\n\t\t\t\t\ttabIndex={0}\n\t\t\t\t\tclassName={styles.IconButton}\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\topenWindowedModal({\n\t\t\t\t\t\t\ttitle: \"Error\",\n\t\t\t\t\t\t\ticonUrl: app?.iconUrl as string | undefined,\n\t\t\t\t\t\t\tsize: new Vector2(300, 150),\n\t\t\t\t\t\t\tModal: (props: JSX.IntrinsicAttributes & ModalProps) =>\n\t\t\t\t\t\t\t\t<DialogBox {...props}>\n\t\t\t\t\t\t\t\t\t<p>This folder is protected.</p>\n\t\t\t\t\t\t\t\t\t<button data-type={ModalsConfig.DIALOG_CONTENT_TYPES.closeButton}>Ok</button>\n\t\t\t\t\t\t\t\t</DialogBox>,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// if (currentDirectory.canBeEdited) {\n\t\t\t\t\t\t// \tonNew(event);\n\t\t\t\t\t\t// } else {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t// }\n\t\t\t\t\t}}\n\t\t\t\t\tdisabled={!currentDirectory.canBeEdited}\n\t\t\t\t>\n\t\t\t\t\t<FontAwesomeIcon icon={faPlus}/>\n\t\t\t\t</button>\n\t\t\t\t<input\n\t\t\t\t\tvalue={path}\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\taria-label=\"Path\"\n\t\t\t\t\tclassName={styles.PathInput}\n\t\t\t\t\ttabIndex={0}\n\t\t\t\t\tonChange={onPathChange as unknown as ChangeEventHandler}\n\t\t\t\t\tonKeyDown={onKeyDown as unknown as KeyboardEventHandler}\n\t\t\t\t\tplaceholder=\"Enter a path...\"\n\t\t\t\t/>\n\t\t\t\t<ImportButton directory={currentDirectory}/>\n\t\t\t\t<button title=\"Search\" tabIndex={0} className={styles.IconButton}>\n\t\t\t\t\t<FontAwesomeIcon icon={faSearch}/>\n\t\t\t\t</button>\n\t\t\t\t<button title=\"Settings\" tabIndex={0} className={styles.IconButton}>\n\t\t\t\t\t<FontAwesomeIcon icon={faCog}/>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div className={styles.Body}>\n\t\t\t\t<div className={styles.Sidebar}>\n\t\t\t\t\t<QuickAccessButton name={\"Home\"} onClick={() => { changeDirectory(\"~\"); }} icon={faHouse}/>\n\t\t\t\t\t<QuickAccessButton name={\"Desktop\"} onClick={() => { changeDirectory(\"~/Desktop\"); }} icon={faDesktop}/>\n\t\t\t\t\t<QuickAccessButton name={\"Images\"} onClick={() => { changeDirectory(\"~/Pictures\"); }} icon={faImage}/>\n\t\t\t\t\t<QuickAccessButton name={\"Documents\"} onClick={() => { changeDirectory(\"~/Documents\"); }} icon={faFileLines}/>\n\t\t\t\t</div>\n\t\t\t\t<DirectoryList\n\t\t\t\t\tdirectory={currentDirectory} \n\t\t\t\t\tid=\"main\"\n\t\t\t\t\tclassName={styles.Main}\n\t\t\t\t\tshowHidden={showHidden}\n\t\t\t\t\tonOpenFile={(event, file) => {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tif (isSelector)\n\t\t\t\t\t\t\treturn void onSelectionFinish?.();\n\t\t\t\t\t\tconst options: Record<string, string> = {};\n\t\t\t\t\t\tif (file.extension === \"md\" || (file.extension != null && CODE_EXTENSIONS.includes(file.extension)))\n\t\t\t\t\t\t\toptions.mode = \"view\";\n\t\t\t\t\t\twindowsManager?.openFile(file, options);\n\t\t\t\t\t}}\n\t\t\t\t\tonOpenFolder={(_event, folder) => {\n\t\t\t\t\t\tchangeDirectory((folder as VirtualFolderLink).linkedPath ?? folder.name);\n\t\t\t\t\t}}\n\t\t\t\t\tonContextMenuFile={onContextMenuFile as unknown as FileEventHandler}\n\t\t\t\t\tonContextMenuFolder={onContextMenuFolder as unknown as FolderEventHandler}\n\t\t\t\t\tallowMultiSelect={selectorMode !== SELECTOR_MODE.SINGLE}\n\t\t\t\t\tonSelectionChange={onSelectionChange}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t{!isSelector\n\t\t\t\t? <span className={styles.Footer}>\n\t\t\t\t\t<p className={utilStyles.TextLight}>\n\t\t\t\t\t\t{itemCount === 1\n\t\t\t\t\t\t\t? itemCount + \" item\"\n\t\t\t\t\t\t\t: itemCount + \" items\"\n\t\t\t\t\t\t}\n\t\t\t\t\t</p>\n\t\t\t\t</span>\n\t\t\t\t: <div className={styles.Footer}>\n\t\t\t\t\t<Footer/>\n\t\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\t);\n}","export enum FileSelectorMode {\r\n\tNone = 0,\r\n\tSingle = 1,\r\n\tMulti = 2\r\n}","import { App, AppsConfig } from \"@prozilla-os/core\";\nimport { FileExplorer, FileExplorerProps } from \"./components/FileExplorer\";\n\nconst fileExplorer = new App<FileExplorerProps>(\"File Explorer\", \"file-explorer\", FileExplorer)\n\t.setIconUrl(\"https://os.prozilla.dev/assets/apps/icons/file-explorer.svg\")\n\t.setRole(AppsConfig.APP_ROLES.fileExplorer)\n\t.setCategory(\"Utilities & tools\");\nfileExplorer.setMetadata({ name: \"@prozilla-os/file-explorer\", version: \"1.1.12\", author: \"Prozilla\" });\n\n\nexport { fileExplorer };\nexport { FileSelectorMode } from \"./types/utils\";"],"names":["QuickAccessButton","onClick","icon","name","jsxs","styles","utilStyles","jsx","FontAwesomeIcon","ImportButton","directory","onChange","event","files","file","extension","VirtualFile","reader","result","virtualFile","faDownload","SELECTOR_MODE","FileProperties","modal","params","props","appsConfig","useSystemManager","associatedApp","WindowedModal","ImagePreview","StorageManager","FileExplorer","app","startPath","selectorMode","Footer","onSelectionChange","onSelectionFinish","isSelector","virtualRoot","useVirtualRoot","windowsManager","useWindowsManager","windowsConfig","currentDirectory","setCurrentDirectory","useState","path","setPath","showHidden","history","stateIndex","pushState","undo","redo","undoAvailable","redoAvailable","useHistory","alert","useAlert","openWindowedModal","useWindowedModal","onContextMenuFile","useContextMenu","Actions","ClickAction","_event","faTrash","faCircleInfo","Vector2","onContextMenuFolder","folder","changeDirectory","Divider","useCallback","absolute","useEffect","onError","error","VirtualRoot","onPathChange","onKeyDown","value","DialogBox","ModalsConfig","itemCount","faCaretLeft","faCaretRight","faArrowUp","faPlus","faSearch","faCog","faHouse","faDesktop","faImage","faFileLines","DirectoryList","options","CODE_EXTENSIONS","FileSelectorMode","fileExplorer","App","AppsConfig"],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sources":["../src/components/QuickAccessButton.tsx","../src/components/ImportButton.tsx","../src/constants/fileExplorer.const.ts","../src/components/modals/file-properties/FileProperties.tsx","../src/components/FileExplorer.tsx","../src/types/utils.ts","../src/main.ts"],"sourcesContent":["import { FontAwesomeIcon, FontAwesomeIconProps } from \"@fortawesome/react-fontawesome\";\r\nimport styles from \"./FileExplorer.module.css\";\r\nimport { MouseEventHandler } from \"react\";\r\nimport { utilStyles } from \"@prozilla-os/core\";\r\n\r\ninterface QuickAcessButton {\r\n\tonClick: MouseEventHandler;\r\n\ticon: FontAwesomeIconProps[\"icon\"];\r\n\tname: string;\r\n}\r\n\r\nexport function QuickAccessButton({ onClick, icon, name }: QuickAcessButton) {\r\n\treturn (\r\n\t\t<button\r\n\t\t\ttabIndex={0}\r\n\t\t\tclassName={`${styles.NavButton} ${utilStyles.TextSemibold}`}\r\n\t\t\tonClick={onClick}\r\n\t\t>\r\n\t\t\t<FontAwesomeIcon icon={icon}/>\r\n\t\t\t{name}\r\n\t\t</button>\r\n\t);\r\n}","import { FormEventHandler, ReactElement } from \"react\";\r\nimport styles from \"./FileExplorer.module.css\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faDownload } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { VirtualFolder, VirtualFile } from \"@prozilla-os/core\";\r\n\r\ninterface ImportButtonProps {\r\n\tdirectory: VirtualFolder;\r\n}\r\n\r\nexport function ImportButton({ directory }: ImportButtonProps): ReactElement {\r\n\tconst onChange = (event: InputEvent) => {\r\n\t\tconst files = (event.target as HTMLInputElement).files;\r\n\r\n\t\tif (files == null)\r\n\t\t\treturn;\r\n\r\n\t\tArray.from(files).forEach((file: File) => {\r\n\t\t\tconst { name, extension } = VirtualFile.splitId(file.name);\r\n\r\n\t\t\tconst reader = new FileReader();\r\n\t\t\treader.onload = (event: Event) => {\r\n\t\t\t\tconst { result } = event.target as FileReader;\r\n\r\n\t\t\t\t// Create a file with the same name and extension, with a base64 string as a source\r\n\t\t\t\tdirectory.createFile(name, extension as string | undefined, (virtualFile) => {\r\n\t\t\t\t\tvirtualFile.setSource(result as string);\r\n\t\t\t\t});\r\n\t\t\t};\r\n\t\t\treader.readAsDataURL(file);\r\n\t\t});\r\n\t};\r\n\r\n\treturn <label title=\"Import\" tabIndex={0} className={styles.IconButton}>\r\n\t\t<input\r\n\t\t\ttype=\"file\"\r\n\t\t\tid=\"import\"\r\n\t\t\tmultiple\r\n\t\t\tstyle={{ display: \"none\" }}\r\n\t\t\tonChange={onChange as unknown as FormEventHandler}\r\n\t\t/>\r\n\t\t<FontAwesomeIcon icon={faDownload}/>\r\n\t</label>;\r\n}","export const SELECTOR_MODE = {\n\tNONE: 0,\n\tSINGLE: 1,\n\tMULTIPLE: 2,\n};","import styles from \"./FileProperties.module.css\";\r\nimport { ImagePreview, ModalProps, StorageManager, useSystemManager, utilStyles, VirtualFile, WindowedModal } from \"@prozilla-os/core\";\r\n\r\ninterface FilePropetiesProps extends ModalProps {\r\n\tfile: VirtualFile;\r\n}\r\n\r\nexport function FileProperties({ modal, params, file, ...props }: FilePropetiesProps) {\r\n\tconst { appsConfig } = useSystemManager();\r\n\tconst associatedApp = file.extension != null ? appsConfig.getAppByFileExtension(file.extension) : null;\r\n\r\n\treturn <WindowedModal className={styles.FileProperties} modal={modal} params={params} {...props}>\r\n\t\t<span className={styles.Section}>\r\n\t\t\t<ImagePreview className={styles.Icon} source={file.getIconUrl()}/>\r\n\t\t\t<p className={`${styles.Line} ${utilStyles.TextBold}`}>{file.id}</p>\r\n\t\t</span>\r\n\t\t<span className={styles.Section}>\r\n\t\t\t<p className={styles.Line}>Type: {file.getType()}</p>\r\n\t\t\t{associatedApp != null &&\r\n\t\t\t\t<span className={styles.Line}>\r\n\t\t\t\t\tOpens with: \r\n\t\t\t\t\t<ImagePreview className={styles.AppIcon} source={associatedApp.iconUrl ?? \"\"}/>\r\n\t\t\t\t\t{associatedApp.name}\r\n\t\t\t\t</span>\r\n\t\t\t}\r\n\t\t</span>\r\n\t\t<span className={styles.Section}>\r\n\t\t\t<p className={styles.Line}>Location: {file.path}</p>\r\n\t\t\t<p className={styles.Line}>Size: {StorageManager.getByteSize(file.source ?? file.content as string | null)} bytes</p>\r\n\t\t\t<p className={styles.Line}>Size on drive: {StorageManager.getByteSize(file.toString())} bytes</p>\r\n\t\t</span>\r\n\t\t<span className={styles.Section}>\r\n\t\t\t<p className={styles.Line}>Attributes: {file.isProtected ? \"Protected\" : \"N/A\"}</p>\r\n\t\t</span>\r\n\t</WindowedModal>;\r\n}","import { ChangeEventHandler, FC, KeyboardEventHandler, useCallback, useEffect, useState } from \"react\";\nimport styles from \"./FileExplorer.module.css\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faArrowUp, faCaretLeft, faCaretRight, faCircleInfo, faCog, faDesktop, faFileLines, faHouse, faImage, faPlus, faSearch, faTrash } from \"@fortawesome/free-solid-svg-icons\";\nimport { QuickAccessButton } from \"./QuickAccessButton\";\nimport { ImportButton } from \"./ImportButton\";\nimport { Actions, ClickAction, CODE_EXTENSIONS, DialogBox, DirectoryList, Divider, FileEventHandler, FolderEventHandler, ModalProps, ModalsConfig, OnSelectionChangeParams, useAlert, useContextMenu, useHistory, useSystemManager, useVirtualRoot, useWindowedModal, useWindowsManager, utilStyles, Vector2, VirtualFile, VirtualFolder, VirtualFolderLink, VirtualRoot, WindowProps } from \"@prozilla-os/core\";\nimport { SELECTOR_MODE } from \"../constants/fileExplorer.const\";\nimport { FileProperties } from \"./modals/file-properties/FileProperties\";\nimport { JSX } from \"react/jsx-runtime\";\n\nexport interface FileExplorerProps extends WindowProps {\n\tpath?: string;\n\tselectorMode?: number;\n\tFooter?: FC;\n\tonSelectionChange?: (params: OnSelectionChangeParams) => void;\n\tonSelectionFinish?: () => void;\n}\n\nexport function FileExplorer({ app, path: startPath, selectorMode, Footer, onSelectionChange, onSelectionFinish }: FileExplorerProps) {\n\tconst isSelector = (Footer != null && selectorMode != null && selectorMode !== SELECTOR_MODE.NONE);\n\n\tconst virtualRoot = useVirtualRoot();\n\tconst windowsManager = useWindowsManager();\n\tconst { windowsConfig } = useSystemManager();\n\n\tconst [currentDirectory, setCurrentDirectory] = useState<VirtualFolder>(virtualRoot?.navigate(startPath ?? \"~\") as VirtualFolder);\n\tconst [path, setPath] = useState<string>(currentDirectory?.path ?? \"\");\n\tconst [showHidden] = useState(true);\n\tconst { history, stateIndex, pushState, undo, redo, undoAvailable, redoAvailable } = useHistory<string>(currentDirectory.path);\n\tconst { alert } = useAlert();\n\n\tconst { openWindowedModal } = useWindowedModal();\n\tconst { onContextMenu: onContextMenuFile } = useContextMenu({ Actions: (props) =>\n\t\t<Actions {...props}>\n\t\t\t<ClickAction label={!isSelector ? \"Open\" : \"Select\"} onTrigger={(_event, file) => {\n\t\t\t\tif (isSelector) {\n\t\t\t\t\tonSelectionChange?.({ files: [(file as VirtualFile).id], directory: currentDirectory });\n\t\t\t\t\tonSelectionFinish?.();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (windowsManager != null)\t(file as VirtualFile).open(windowsManager);\n\t\t\t}}/>\n\t\t\t<ClickAction label=\"Delete\" icon={faTrash} onTrigger={(_event, file) => {\n\t\t\t\t(file as VirtualFile).delete();\n\t\t\t}}/>\n\t\t\t<ClickAction label=\"Properties\" icon={faCircleInfo} onTrigger={(_event, file) => {\n\t\t\t\topenWindowedModal({\n\t\t\t\t\ttitle: `${(file as VirtualFile).id} ${windowsConfig.titleSeparator} Properties`,\n\t\t\t\t\ticonUrl: (file as VirtualFile).getIconUrl(),\n\t\t\t\t\tsize: new Vector2(400, 500),\n\t\t\t\t\tModal: (props: object) => <FileProperties file={file as VirtualFile} {...props}/>,\n\t\t\t\t});\n\t\t\t}}/>\n\t\t</Actions>,\n\t});\n\tconst { onContextMenu: onContextMenuFolder } = useContextMenu({ Actions: (props) =>\n\t\t<Actions {...props}>\n\t\t\t<ClickAction label=\"Open\" onTrigger={(_event, folder) => {\n\t\t\t\tchangeDirectory((folder as VirtualFolderLink).linkedPath ?? (folder as VirtualFolder).name);\n\t\t\t}}/>\n\t\t\t{/* <ClickAction label={`Open in ${APP_NAMES.TERMINAL}`} icon={APP_ICONS.TERMINAL} onTrigger={(event, folder) => {\n\t\t\t\twindowsManager?.open(APPS.TERMINAL, { startPath: (folder as VirtualFolder).path });\n\t\t\t}}/> */}\n\t\t\t<Divider/>\n\t\t\t<ClickAction label=\"Delete\" icon={faTrash} onTrigger={(_event, folder) => {\n\t\t\t\t(folder as VirtualFolder).delete();\n\t\t\t}}/>\n\t\t</Actions>,\n\t});\n\t// const { onContextMenu: onNew } = useContextMenu({\n\t// \tmodalsManager,\n\t// \toptions: {\n\t// \t\t\"File\": () => { currentDirectory.createFile(\"New File\"); },\n\t// \t\t\"Folder\": () => { currentDirectory.createFolder(\"New Folder\"); }\n\t// \t}\n\t// });\n\n\tconst changeDirectory = useCallback((path: string, absolute = false) => {\n\t\tif (path == null)\n\t\t\treturn;\n\n\t\tif (currentDirectory == null)\n\t\t\tabsolute = true;\n\n\t\tconst directory = absolute ? virtualRoot?.navigate(path) : currentDirectory.navigate(path);\n\n\t\tif (directory != null) {\n\t\t\tsetCurrentDirectory(directory as VirtualFolder);\n\t\t\tsetPath(directory.root ? \"/\" : directory.path);\n\t\t\tpushState(directory.path);\n\t\t}\n\t}, [currentDirectory, pushState, virtualRoot]);\n\n\tuseEffect(() => {\n\t\tif (history.length === 0)\n\t\t\treturn;\n\n\t\tconst path = history[stateIndex];\n\t\tconst directory = virtualRoot?.navigate(path);\n\t\tif (directory != null) {\n\t\t\tsetCurrentDirectory(directory as VirtualFolder);\n\t\t\tsetPath(directory.root ? \"/\" : directory.path);\n\t\t}\n\t}, [history, stateIndex, virtualRoot]);\n\n\tuseEffect(() => {\n\t\ttype Error = { message: string };\n\t\tconst onError = (error: unknown) => {\n\t\t\talert({\n\t\t\t\ttitle: (error as Error).message,\n\t\t\t\ttext: \"You have exceeded the virtual drive capacity. Files and folders will not be saved until more storage is freed.\",\n\t\t\t\ticonUrl: app?.iconUrl as string | undefined,\n\t\t\t\tsize: new Vector2(300, 200),\n\t\t\t\tsingle: true,\n\t\t\t});\n\t\t};\n\n\t\tvirtualRoot?.on(VirtualRoot.EVENT_NAMES.error, onError);\n\n\t\treturn () => {\n\t\t\tvirtualRoot?.off(VirtualRoot.EVENT_NAMES.error, onError);\n\t\t};\n\t}, []);\n\n\tconst onPathChange = (event: Event) => {\n\t\tsetPath((event.target as HTMLInputElement).value);\n\t};\n\n\tconst onKeyDown = (event: KeyboardEvent) => {\n\t\tlet value = (event.target as HTMLInputElement).value;\n\n\t\tif (event.key === \"Enter\") {\n\t\t\tif (value === \"\")\n\t\t\t\tvalue = \"~\";\n\n\t\t\tconst directory = virtualRoot?.navigate(value);\n\n\t\t\tif (directory == null) {\n\t\t\t\topenWindowedModal({\n\t\t\t\t\ttitle: \"Error\",\n\t\t\t\t\ticonUrl: app?.iconUrl as string | undefined,\n\t\t\t\t\tsize: new Vector2(300, 150),\n\t\t\t\t\tModal: (props: JSX.IntrinsicAttributes & ModalProps) =>\n\t\t\t\t\t\t<DialogBox {...props}>\n\t\t\t\t\t\t\t<p>Invalid path: \"{value}\"</p>\n\t\t\t\t\t\t\t<button data-type={ModalsConfig.DIALOG_CONTENT_TYPES.closeButton}>Ok</button>\n\t\t\t\t\t\t</DialogBox>,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetCurrentDirectory(directory as VirtualFolder);\n\t\t\tsetPath(directory.root ? \"/\" : directory.path);\n\t\t}\n\t};\n\n\tconst itemCount = currentDirectory.getItemCount(showHidden);\n\n\treturn (\n\t\t<div className={!isSelector ? styles.FileExplorer : `${styles.FileExplorer} ${styles.Selector}`}>\n\t\t\t<div className={styles.Header}>\n\t\t\t\t<button\n\t\t\t\t\ttitle=\"Back\"\n\t\t\t\t\ttabIndex={0}\n\t\t\t\t\tclassName={styles.IconButton}\n\t\t\t\t\tonClick={() => { undo(); }}\n\t\t\t\t\tdisabled={!undoAvailable}\n\t\t\t\t>\n\t\t\t\t\t<FontAwesomeIcon icon={faCaretLeft}/>\n\t\t\t\t</button>\n\t\t\t\t<button\n\t\t\t\t\ttitle=\"Forward\"\n\t\t\t\t\ttabIndex={0}\n\t\t\t\t\tclassName={styles.IconButton}\n\t\t\t\t\tonClick={() => { redo(); }}\n\t\t\t\t\tdisabled={!redoAvailable}\n\t\t\t\t>\n\t\t\t\t\t<FontAwesomeIcon icon={faCaretRight}/>\n\t\t\t\t</button>\n\t\t\t\t<button\n\t\t\t\t\ttitle=\"Up\"\n\t\t\t\t\ttabIndex={0}\n\t\t\t\t\tclassName={styles.IconButton}\n\t\t\t\t\tonClick={() => { changeDirectory(\"..\"); }}\n\t\t\t\t\tdisabled={currentDirectory.isRoot != null && currentDirectory.isRoot}\n\t\t\t\t>\n\t\t\t\t\t<FontAwesomeIcon icon={faArrowUp}/>\n\t\t\t\t</button>\n\t\t\t\t<button\n\t\t\t\t\ttitle=\"New\"\n\t\t\t\t\ttabIndex={0}\n\t\t\t\t\tclassName={styles.IconButton}\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\topenWindowedModal({\n\t\t\t\t\t\t\ttitle: \"Error\",\n\t\t\t\t\t\t\ticonUrl: app?.iconUrl as string | undefined,\n\t\t\t\t\t\t\tsize: new Vector2(300, 150),\n\t\t\t\t\t\t\tModal: (props: JSX.IntrinsicAttributes & ModalProps) =>\n\t\t\t\t\t\t\t\t<DialogBox {...props}>\n\t\t\t\t\t\t\t\t\t<p>This folder is protected.</p>\n\t\t\t\t\t\t\t\t\t<button data-type={ModalsConfig.DIALOG_CONTENT_TYPES.closeButton}>Ok</button>\n\t\t\t\t\t\t\t\t</DialogBox>,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// if (currentDirectory.canBeEdited) {\n\t\t\t\t\t\t// \tonNew(event);\n\t\t\t\t\t\t// } else {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t// }\n\t\t\t\t\t}}\n\t\t\t\t\tdisabled={!currentDirectory.canBeEdited}\n\t\t\t\t>\n\t\t\t\t\t<FontAwesomeIcon icon={faPlus}/>\n\t\t\t\t</button>\n\t\t\t\t<input\n\t\t\t\t\tvalue={path}\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\taria-label=\"Path\"\n\t\t\t\t\tclassName={styles.PathInput}\n\t\t\t\t\ttabIndex={0}\n\t\t\t\t\tonChange={onPathChange as unknown as ChangeEventHandler}\n\t\t\t\t\tonKeyDown={onKeyDown as unknown as KeyboardEventHandler}\n\t\t\t\t\tplaceholder=\"Enter a path...\"\n\t\t\t\t/>\n\t\t\t\t<ImportButton directory={currentDirectory}/>\n\t\t\t\t<button title=\"Search\" tabIndex={0} className={styles.IconButton}>\n\t\t\t\t\t<FontAwesomeIcon icon={faSearch}/>\n\t\t\t\t</button>\n\t\t\t\t<button title=\"Settings\" tabIndex={0} className={styles.IconButton}>\n\t\t\t\t\t<FontAwesomeIcon icon={faCog}/>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div className={styles.Body}>\n\t\t\t\t<div className={styles.Sidebar}>\n\t\t\t\t\t<QuickAccessButton name={\"Home\"} onClick={() => { changeDirectory(\"~\"); }} icon={faHouse}/>\n\t\t\t\t\t<QuickAccessButton name={\"Desktop\"} onClick={() => { changeDirectory(\"~/Desktop\"); }} icon={faDesktop}/>\n\t\t\t\t\t<QuickAccessButton name={\"Images\"} onClick={() => { changeDirectory(\"~/Pictures\"); }} icon={faImage}/>\n\t\t\t\t\t<QuickAccessButton name={\"Documents\"} onClick={() => { changeDirectory(\"~/Documents\"); }} icon={faFileLines}/>\n\t\t\t\t</div>\n\t\t\t\t<DirectoryList\n\t\t\t\t\tdirectory={currentDirectory} \n\t\t\t\t\tid=\"main\"\n\t\t\t\t\tclassName={styles.Main}\n\t\t\t\t\tshowHidden={showHidden}\n\t\t\t\t\tonOpenFile={(event, file) => {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tif (isSelector)\n\t\t\t\t\t\t\treturn void onSelectionFinish?.();\n\t\t\t\t\t\tconst options: Record<string, string> = {};\n\t\t\t\t\t\tif (file.extension === \"md\" || (file.extension != null && CODE_EXTENSIONS.includes(file.extension)))\n\t\t\t\t\t\t\toptions.mode = \"view\";\n\t\t\t\t\t\twindowsManager?.openFile(file, options);\n\t\t\t\t\t}}\n\t\t\t\t\tonOpenFolder={(_event, folder) => {\n\t\t\t\t\t\tchangeDirectory((folder as VirtualFolderLink).linkedPath ?? folder.name);\n\t\t\t\t\t}}\n\t\t\t\t\tonContextMenuFile={onContextMenuFile as unknown as FileEventHandler}\n\t\t\t\t\tonContextMenuFolder={onContextMenuFolder as unknown as FolderEventHandler}\n\t\t\t\t\tallowMultiSelect={selectorMode !== SELECTOR_MODE.SINGLE}\n\t\t\t\t\tonSelectionChange={onSelectionChange}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t{!isSelector\n\t\t\t\t? <span className={styles.Footer}>\n\t\t\t\t\t<p className={utilStyles.TextLight}>\n\t\t\t\t\t\t{itemCount === 1\n\t\t\t\t\t\t\t? itemCount + \" item\"\n\t\t\t\t\t\t\t: itemCount + \" items\"\n\t\t\t\t\t\t}\n\t\t\t\t\t</p>\n\t\t\t\t</span>\n\t\t\t\t: <div className={styles.Footer}>\n\t\t\t\t\t<Footer/>\n\t\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\t);\n}","export enum FileSelectorMode {\r\n\tNone = 0,\r\n\tSingle = 1,\r\n\tMulti = 2\r\n}","import { App, AppsConfig } from \"@prozilla-os/core\";\nimport { FileExplorer, FileExplorerProps } from \"./components/FileExplorer\";\n\nconst fileExplorer = new App<FileExplorerProps>(\"File Explorer\", \"file-explorer\", FileExplorer)\n\t.setIconUrl(\"https://os.prozilla.dev/assets/apps/icons/file-explorer.svg\")\n\t.setRole(AppsConfig.APP_ROLES.fileExplorer)\n\t.setCategory(\"Utilities & tools\");\nfileExplorer.setMetadata({ name: \"@prozilla-os/file-explorer\", version: \"1.1.14\", author: \"Prozilla\" });\n\n\nexport { fileExplorer };\nexport { FileSelectorMode } from \"./types/utils\";"],"names":["QuickAccessButton","onClick","icon","name","jsxs","styles","utilStyles","jsx","FontAwesomeIcon","ImportButton","directory","onChange","event","files","file","extension","VirtualFile","reader","result","virtualFile","faDownload","SELECTOR_MODE","FileProperties","modal","params","props","appsConfig","useSystemManager","associatedApp","WindowedModal","ImagePreview","StorageManager","FileExplorer","app","startPath","selectorMode","Footer","onSelectionChange","onSelectionFinish","isSelector","virtualRoot","useVirtualRoot","windowsManager","useWindowsManager","windowsConfig","currentDirectory","setCurrentDirectory","useState","path","setPath","showHidden","history","stateIndex","pushState","undo","redo","undoAvailable","redoAvailable","useHistory","alert","useAlert","openWindowedModal","useWindowedModal","onContextMenuFile","useContextMenu","Actions","ClickAction","_event","faTrash","faCircleInfo","Vector2","onContextMenuFolder","folder","changeDirectory","Divider","useCallback","absolute","useEffect","onError","error","VirtualRoot","onPathChange","onKeyDown","value","DialogBox","ModalsConfig","itemCount","faCaretLeft","faCaretRight","faArrowUp","faPlus","faSearch","faCog","faHouse","faDesktop","faImage","faFileLines","DirectoryList","options","CODE_EXTENSIONS","FileSelectorMode","fileExplorer","App","AppsConfig"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@prozilla-os/file-explorer",
3
3
  "description": "A standard ProzillaOS application for browsing files.",
4
- "version": "1.1.14",
4
+ "version": "1.1.15",
5
5
  "homepage": "https://os.prozilla.dev/file-explorer",
6
6
  "author": {
7
7
  "name": "Prozilla",
@@ -23,7 +23,7 @@
23
23
  "@fortawesome/free-solid-svg-icons": "^6.5.2",
24
24
  "@fortawesome/react-fontawesome": "^0.2.2",
25
25
  "react": "^18.3.1",
26
- "@prozilla-os/core": "1.3.9"
26
+ "@prozilla-os/core": "1.3.10"
27
27
  },
28
28
  "devDependencies": {
29
29
  "@types/node": "^20.14.5",
@@ -33,7 +33,7 @@
33
33
  "vite": "^5.4.8",
34
34
  "vite-plugin-dts": "^3.9.1",
35
35
  "vite-plugin-lib-inject-css": "^2.1.1",
36
- "@prozilla-os/dev-tools": "1.1.6"
36
+ "@prozilla-os/dev-tools": "1.1.7"
37
37
  },
38
38
  "files": [
39
39
  "dist"