@wp-playground/components 3.1.44 → 3.1.46

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.
@@ -7,6 +7,8 @@ export type FileNode = {
7
7
  };
8
8
  export type FilePickerTreeProps = {
9
9
  withContextMenu?: boolean;
10
+ /** Disables filesystem mutations while preserving selection and previews. */
11
+ readOnly?: boolean;
10
12
  filesystem: AsyncWritableFilesystem;
11
13
  root?: string;
12
14
  initialSelectedPath?: string;
@@ -26,6 +28,10 @@ export type FilePickerTreeHandle = {
26
28
  remapPath: (from: string, to: string) => void;
27
29
  createFile: (absSelectedPath?: string) => Promise<void>;
28
30
  createFolder: (absSelectedPath?: string) => Promise<void>;
31
+ /** Imports captured file-input entries into an existing tree directory. */
32
+ importFiles: (files: readonly File[], destinationDir: string) => Promise<void>;
33
+ /** Imports a drop payload into an existing tree directory. */
34
+ importDataTransfer: (dataTransfer: DataTransfer, destinationDir: string) => Promise<void>;
29
35
  };
30
36
  export declare const FilePickerTree: React.ForwardRefExoticComponent<FilePickerTreeProps & React.RefAttributes<FilePickerTreeHandle>>;
31
37
  export default FilePickerTree;
@@ -9,5 +9,13 @@ export type FileExplorerSidebarProps = {
9
9
  onSelectionCleared: () => Promise<void> | void;
10
10
  onShowMessage: (path: string | null, message: string | JSX.Element) => Promise<void> | void;
11
11
  documentRoot: string;
12
+ readOnly?: boolean;
13
+ title?: string;
14
+ showBinaryPreviewHeader?: boolean;
15
+ dockPresentation?: boolean;
16
+ useWordPressTooltips?: boolean;
12
17
  };
13
- export declare function FileExplorerSidebar({ filesystem, currentPath, selectedDirPath, setSelectedDirPath, onFileOpened, onSelectionCleared, onShowMessage, documentRoot, }: FileExplorerSidebarProps): React.JSX.Element;
18
+ /**
19
+ * Renders the file explorer and opens selected files in the editor preview area.
20
+ */
21
+ export declare function FileExplorerSidebar({ filesystem, currentPath, selectedDirPath, setSelectedDirPath, onFileOpened, onSelectionCleared, onShowMessage, documentRoot, readOnly, title, showBinaryPreviewHeader, dockPresentation, useWordPressTooltips, }: FileExplorerSidebarProps): React.JSX.Element;
@@ -12,6 +12,25 @@ export declare const createDownloadUrl: (data: Uint8Array, filename: string) =>
12
12
  url: string;
13
13
  filename: string;
14
14
  };
15
+ export type InlineFilePreviewReadResult = {
16
+ type: 'inline';
17
+ data: Uint8Array;
18
+ } | {
19
+ type: 'too-large';
20
+ };
21
+ type BrowserReadableFile = {
22
+ arrayBuffer(): Promise<ArrayBuffer>;
23
+ stream?: () => ReadableStream<Uint8Array>;
24
+ size?: number;
25
+ filesize?: number;
26
+ };
27
+ /**
28
+ * Classifies a file as inline-editable or too large for the editor.
29
+ *
30
+ * Uses known size metadata before reading when it is available. Stream-backed
31
+ * files without a known size are read only until they cross the inline limit.
32
+ */
33
+ export declare function readFileForInlinePreview(file: BrowserReadableFile, maxInlineBytes?: number): Promise<InlineFilePreviewReadResult>;
15
34
  /**
16
35
  * Gets the MIME type for a filename based on its extension.
17
36
  */
@@ -21,3 +40,4 @@ export declare const getMimeType: (filename: string) => string;
21
40
  * (images, videos, audio).
22
41
  */
23
42
  export declare const isPreviewableBinary: (mimeType: string) => boolean;
43
+ export {};
@@ -6,16 +6,13 @@ export type PlaygroundFileEditorProps = {
6
6
  documentRoot: string;
7
7
  initialPath?: string | null;
8
8
  placeholderText?: string;
9
- onSaveFile?: (path: string, content: string) => Promise<void>;
10
- /**
11
- * Called before the filesystem changes, allowing the parent to flush
12
- * any pending saves to the old filesystem.
13
- */
14
- onBeforeFilesystemChange?: (oldFilesystem: AsyncWritableFilesystem) => Promise<void>;
9
+ dockPresentation?: boolean;
10
+ /** Mobile Dock title row where the current path should be rendered. */
11
+ mobileHeaderTarget?: Element | null;
15
12
  };
16
13
  /**
17
14
  * A reusable file browser component with a file tree on the left and
18
15
  * a code editor on the right. Supports auto-save with debouncing,
19
16
  * cursor position preservation, and binary file handling.
20
17
  */
21
- export declare function PlaygroundFileEditor({ filesystem, isVisible, documentRoot, initialPath, placeholderText, onSaveFile, onBeforeFilesystemChange, }: PlaygroundFileEditorProps): React.JSX.Element;
18
+ export declare function PlaygroundFileEditor({ filesystem, isVisible, documentRoot, initialPath, placeholderText, dockPresentation, mobileHeaderTarget, }: PlaygroundFileEditorProps): React.JSX.Element;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ import type { AsyncWritableFilesystem } from '../../../storage/src/index.ts';
3
+ type FilesystemName = 'a' | 'b';
4
+ declare global {
5
+ interface Window {
6
+ __fileEditorHarness?: {
7
+ filesystems: Record<FilesystemName, AsyncWritableFilesystem>;
8
+ readFileAsText: (filesystem: FilesystemName, path: string) => Promise<string>;
9
+ switchFilesystem: (filesystem: FilesystemName) => void;
10
+ mountEditor: () => void;
11
+ unmountEditor: () => void;
12
+ delayNextWrite: () => void;
13
+ releaseDelayedWrite: () => void;
14
+ isWriteDelayed: () => boolean;
15
+ };
16
+ }
17
+ }
18
+ export declare function FileEditorHarness(): React.JSX.Element;
19
+ export {};
@@ -1,5 +1,14 @@
1
1
  import React from 'react';
2
2
  import type { AsyncWritableFilesystem } from '../../../storage/src/index.ts';
3
+ type DirNode = {
4
+ type: 'dir';
5
+ children: Record<string, FsEntry>;
6
+ };
7
+ type FileNodeEntry = {
8
+ type: 'file';
9
+ content: string;
10
+ };
11
+ type FsEntry = DirNode | FileNodeEntry;
3
12
  declare global {
4
13
  interface Window {
5
14
  __filePickerHarness?: {
@@ -10,4 +19,27 @@ declare global {
10
19
  };
11
20
  }
12
21
  }
22
+ declare class InMemoryFilesystem extends EventTarget implements AsyncWritableFilesystem {
23
+ private root;
24
+ constructor(snapshot: DirNode);
25
+ private resolve;
26
+ private resolveDir;
27
+ private resolveParent;
28
+ listFiles(path: string): Promise<string[]>;
29
+ isDir(path: string): Promise<boolean>;
30
+ fileExists(path: string): Promise<boolean>;
31
+ read(path: string): Promise<{
32
+ arrayBuffer(): Promise<ArrayBuffer>;
33
+ }>;
34
+ readFileAsText(path: string): Promise<string>;
35
+ writeFile(path: string, data: Uint8Array | string): Promise<void>;
36
+ mkdir(path: string): Promise<void>;
37
+ rmdir(path: string, options?: {
38
+ recursive?: boolean;
39
+ }): Promise<void>;
40
+ mv(source: string, destination: string): Promise<void>;
41
+ unlink(path: string): Promise<void>;
42
+ }
43
+ export declare const createFilesystem: () => InMemoryFilesystem;
13
44
  export declare function FilePickerTreeHarness(): React.JSX.Element;
45
+ export {};
package/index.cjs CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var Kt=Object.create;var Dt=Object.defineProperty;var Jt=Object.getOwnPropertyDescriptor;var Xt=Object.getOwnPropertyNames;var Qt=Object.getPrototypeOf,er=Object.prototype.hasOwnProperty;var tr=(n,c,l,m)=>{if(c&&typeof c=="object"||typeof c=="function")for(let p of Xt(c))!er.call(n,p)&&p!==l&&Dt(n,p,{get:()=>c[p],enumerable:!(m=Jt(c,p))||m.enumerable});return n};var Ke=(n,c,l)=>(l=n!=null?Kt(Qt(n)):{},tr(c||!n||!n.__esModule?Dt(l,"default",{value:n,enumerable:!0}):l,n));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react"),se=require("@php-wasm/util"),le=require("@wordpress/components"),Qe=require("classnames"),mt=require("@wordpress/element"),rr=require("clsx"),Oe=require("@codemirror/state"),ve=require("@codemirror/view"),ut=require("@codemirror/commands"),Ot=require("@codemirror/search"),ft=require("@codemirror/autocomplete"),We=require("@codemirror/language"),et=require("@codemirror/lang-php"),At=require("@wp-playground/components"),dt=require("@php-wasm/logger"),Lt=require("@php-wasm/universal/mime-types"),nr=n=>t.createElement("svg",{width:"32",height:"32",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg",...n},t.createElement("rect",{width:"10.4176",height:"10.4176",rx:"3.86258",transform:"matrix(0.829038 -0.559193 0.838671 0.544639 7.45703 24.1775)",stroke:"white",strokeWidth:"0.965644"}),t.createElement("rect",{width:"13.2346",height:"13.2346",rx:"3.86258",transform:"matrix(0.829038 -0.559193 0.838671 0.544639 5.0918 18.9934)",stroke:"white",strokeWidth:"1.44847"}),t.createElement("rect",{width:"17.451",height:"17.451",rx:"3.86258",transform:"matrix(0.829038 -0.559193 0.838671 0.544639 1.55371 11.6099)",stroke:"white",strokeWidth:"1.93129"})),ar=n=>t.createElement("svg",{width:"16",height:"17",viewBox:"0 0 16 17",fill:"none",xmlns:"http://www.w3.org/2000/svg",...n},t.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M8 15C4.41015 15 1.5 12.0899 1.5 8.5C1.5 4.91015 4.41015 2 8 2C11.5899 2 14.5 4.91015 14.5 8.5C14.5 12.0899 11.5899 15 8 15ZM0 8.5C0 4.08172 3.58172 0.5 8 0.5C12.4183 0.5 16 4.08172 16 8.5C16 12.9183 12.4183 16.5 8 16.5C3.58172 16.5 0 12.9183 0 8.5ZM9 9.5V4.5H7.5V8H5.5V9.5H9Z",fill:"#949494"})),or=n=>t.createElement("svg",{width:"20",height:"21",viewBox:"0 0 20 21",fill:"none",xmlns:"http://www.w3.org/2000/svg",...n},t.createElement("path",{d:"M20 10.5C20 4.99 15.51 0.5 10 0.5C4.48 0.5 0 4.99 0 10.5C0 16.02 4.48 20.5 10 20.5C15.51 20.5 20 16.02 20 10.5ZM7.78 15.87L4.37 6.72C4.92 6.7 5.54 6.64 5.54 6.64C6.04 6.58 5.98 5.51 5.48 5.53C5.48 5.53 4.03 5.64 3.11 5.64C2.93 5.64 2.74 5.64 2.53 5.63C4.12 3.19 6.87 1.61 10 1.61C12.33 1.61 14.45 2.48 16.05 3.95C15.37 3.84 14.4 4.34 14.4 5.53C14.4 6.27 14.85 6.89 15.3 7.63C15.65 8.24 15.85 8.99 15.85 10.09C15.85 11.58 14.45 15.09 14.45 15.09L11.42 6.72C11.96 6.7 12.24 6.55 12.24 6.55C12.74 6.5 12.68 5.3 12.18 5.33C12.18 5.33 10.74 5.45 9.8 5.45C8.93 5.45 7.47 5.33 7.47 5.33C6.97 5.3 6.91 6.53 7.41 6.55L8.33 6.63L9.59 10.04L7.78 15.87ZM17.41 10.5C17.65 9.86 18.15 8.63 17.84 6.25C18.54 7.54 18.89 8.96 18.89 10.5C18.89 13.79 17.16 16.74 14.49 18.28C15.46 15.69 16.43 13.08 17.41 10.5ZM6.1 18.59C3.12 17.15 1.11 14.03 1.11 10.5C1.11 9.2 1.34 8.02 1.83 6.91C3.25 10.8 4.67 14.7 6.1 18.59ZM10.13 11.96L12.71 18.94C11.85 19.23 10.95 19.39 10 19.39C9.21 19.39 8.43 19.28 7.71 19.06C8.52 16.68 9.33 14.32 10.13 11.96Z",fill:"#ffffff"})),Vt=t.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"15",height:"14",viewBox:"0 0 15 14",fill:"none"},t.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M7.59196 3.59524L6.77745 1.96623C6.70755 1.82641 6.56464 1.7381 6.40832 1.7381H1.65079C1.42287 1.7381 1.2381 1.92287 1.2381 2.15079V11.8492C1.2381 12.0771 1.42287 12.2619 1.65079 12.2619H13.2063C13.4343 12.2619 13.619 12.0771 13.619 11.8492V4.00794C13.619 3.78001 13.4343 3.59524 13.2063 3.59524H7.59196ZM8.35714 2.35714L7.88484 1.41254C7.60521 0.853274 7.0336 0.5 6.40832 0.5H1.65079C0.739085 0.5 0 1.23909 0 2.15079V11.8492C0 12.7609 0.739085 13.5 1.65079 13.5H13.2063C14.1181 13.5 14.8571 12.7609 14.8571 11.8492V4.00794C14.8571 3.09623 14.1181 2.35714 13.2063 2.35714H8.35714Z"})),Bt=t.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",fill:"currentColor",className:"bi bi-file-earmark",viewBox:"0 0 16 16"},t.createElement("path",{d:"M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5z"})),ir=n=>t.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"18",height:"18",viewBox:"0 0 14 14",fill:"none",...n},t.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M7 12.6875C3.85888 12.6875 1.3125 10.1411 1.3125 7C1.3125 3.85888 3.85888 1.3125 7 1.3125C10.1411 1.3125 12.6875 3.85888 12.6875 7C12.6875 10.1411 10.1411 12.6875 7 12.6875ZM0 7C0 3.13401 3.13401 0 7 0C10.866 0 14 3.13401 14 7C14 10.866 10.866 14 7 14C3.13401 14 0 10.866 0 7ZM7.875 7.875V3.5H6.5625V6.5625H4.8125V7.875H7.875Z",fill:"#949494"})),sr=t.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 14 14",fill:"none"},t.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M12.25 1.3125H1.75C1.50838 1.3125 1.3125 1.50838 1.3125 1.75V4.37495H12.6875V1.75C12.6875 1.50837 12.4916 1.3125 12.25 1.3125ZM12.6875 5.68745H5.25003V12.6875H12.25C12.4916 12.6875 12.6875 12.4916 12.6875 12.25V5.68745ZM3.93753 5.68745H1.3125V12.25C1.3125 12.4916 1.50837 12.6875 1.75 12.6875H3.93753L3.93753 5.68745ZM1.75 0H12.25C13.2165 0 14 0.783502 14 1.75V12.25C14 13.2165 13.2165 14 12.25 14H1.75C0.783502 14 0 13.2165 0 12.25V1.75C0 0.783502 0.783502 0 1.75 0Z",fill:"#949494"}));function lr(n){return`data:${n.mime};base64,${n.data}`}function cr({size:n=24,sidebarActive:c=!1}){return t.createElement("svg",{width:n,height:n,viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},t.createElement("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",ry:"2"}),c?t.createElement("rect",{x:"3",y:"3",width:"7",height:"18",rx:"2",ry:"2",fill:"currentColor"}):t.createElement("rect",{x:"3",y:"3",width:"8",height:"18",rx:"2",ry:"2",fill:"none",stroke:"currentColor",strokeWidth:"2"}))}const Ft=mt.forwardRef(({icon:n,size:c=24,...l},m)=>mt.cloneElement(n,{width:c,height:c,...l,ref:m}));var Pt={exports:{}},Je={};/**
1
+ "use strict";var Jt=Object.create;var Nt=Object.defineProperty;var Xt=Object.getOwnPropertyDescriptor;var Qt=Object.getOwnPropertyNames;var er=Object.getPrototypeOf,tr=Object.prototype.hasOwnProperty;var rr=(n,s,f,l)=>{if(s&&typeof s=="object"||typeof s=="function")for(let C of Qt(s))!tr.call(n,C)&&C!==f&&Nt(n,C,{get:()=>s[C],enumerable:!(l=Xt(s,C))||l.enumerable});return n};var nt=(n,s,f)=>(f=n!=null?Jt(er(n)):{},rr(s||!n||!n.__esModule?Nt(f,"default",{value:n,enumerable:!0}):f,n));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react"),H=require("@php-wasm/util"),X=require("@wordpress/components"),De=require("classnames"),vt=require("@wordpress/element"),nr=require("clsx"),Oe=require("@codemirror/state"),Se=require("@codemirror/view"),pt=require("@codemirror/commands"),It=require("@codemirror/search"),ht=require("@codemirror/autocomplete"),Ke=require("@codemirror/language"),it=require("@codemirror/lang-php"),Lt=require("@wp-playground/components"),Je=require("@php-wasm/logger"),Mt=require("@php-wasm/universal/mime-types"),ar=require("react-dom"),or=n=>e.createElement("svg",{width:"32",height:"32",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg",...n},e.createElement("rect",{width:"10.4176",height:"10.4176",rx:"3.86258",transform:"matrix(0.829038 -0.559193 0.838671 0.544639 7.45703 24.1775)",stroke:"white",strokeWidth:"0.965644"}),e.createElement("rect",{width:"13.2346",height:"13.2346",rx:"3.86258",transform:"matrix(0.829038 -0.559193 0.838671 0.544639 5.0918 18.9934)",stroke:"white",strokeWidth:"1.44847"}),e.createElement("rect",{width:"17.451",height:"17.451",rx:"3.86258",transform:"matrix(0.829038 -0.559193 0.838671 0.544639 1.55371 11.6099)",stroke:"white",strokeWidth:"1.93129"})),ir=n=>e.createElement("svg",{width:"16",height:"17",viewBox:"0 0 16 17",fill:"none",xmlns:"http://www.w3.org/2000/svg",...n},e.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M8 15C4.41015 15 1.5 12.0899 1.5 8.5C1.5 4.91015 4.41015 2 8 2C11.5899 2 14.5 4.91015 14.5 8.5C14.5 12.0899 11.5899 15 8 15ZM0 8.5C0 4.08172 3.58172 0.5 8 0.5C12.4183 0.5 16 4.08172 16 8.5C16 12.9183 12.4183 16.5 8 16.5C3.58172 16.5 0 12.9183 0 8.5ZM9 9.5V4.5H7.5V8H5.5V9.5H9Z",fill:"#949494"})),sr=n=>e.createElement("svg",{width:"20",height:"21",viewBox:"0 0 20 21",fill:"none",xmlns:"http://www.w3.org/2000/svg",...n},e.createElement("path",{d:"M20 10.5C20 4.99 15.51 0.5 10 0.5C4.48 0.5 0 4.99 0 10.5C0 16.02 4.48 20.5 10 20.5C15.51 20.5 20 16.02 20 10.5ZM7.78 15.87L4.37 6.72C4.92 6.7 5.54 6.64 5.54 6.64C6.04 6.58 5.98 5.51 5.48 5.53C5.48 5.53 4.03 5.64 3.11 5.64C2.93 5.64 2.74 5.64 2.53 5.63C4.12 3.19 6.87 1.61 10 1.61C12.33 1.61 14.45 2.48 16.05 3.95C15.37 3.84 14.4 4.34 14.4 5.53C14.4 6.27 14.85 6.89 15.3 7.63C15.65 8.24 15.85 8.99 15.85 10.09C15.85 11.58 14.45 15.09 14.45 15.09L11.42 6.72C11.96 6.7 12.24 6.55 12.24 6.55C12.74 6.5 12.68 5.3 12.18 5.33C12.18 5.33 10.74 5.45 9.8 5.45C8.93 5.45 7.47 5.33 7.47 5.33C6.97 5.3 6.91 6.53 7.41 6.55L8.33 6.63L9.59 10.04L7.78 15.87ZM17.41 10.5C17.65 9.86 18.15 8.63 17.84 6.25C18.54 7.54 18.89 8.96 18.89 10.5C18.89 13.79 17.16 16.74 14.49 18.28C15.46 15.69 16.43 13.08 17.41 10.5ZM6.1 18.59C3.12 17.15 1.11 14.03 1.11 10.5C1.11 9.2 1.34 8.02 1.83 6.91C3.25 10.8 4.67 14.7 6.1 18.59ZM10.13 11.96L12.71 18.94C11.85 19.23 10.95 19.39 10 19.39C9.21 19.39 8.43 19.28 7.71 19.06C8.52 16.68 9.33 14.32 10.13 11.96Z",fill:"#ffffff"})),zt=e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"15",height:"14",viewBox:"0 0 15 14",fill:"none"},e.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M7.59196 3.59524L6.77745 1.96623C6.70755 1.82641 6.56464 1.7381 6.40832 1.7381H1.65079C1.42287 1.7381 1.2381 1.92287 1.2381 2.15079V11.8492C1.2381 12.0771 1.42287 12.2619 1.65079 12.2619H13.2063C13.4343 12.2619 13.619 12.0771 13.619 11.8492V4.00794C13.619 3.78001 13.4343 3.59524 13.2063 3.59524H7.59196ZM8.35714 2.35714L7.88484 1.41254C7.60521 0.853274 7.0336 0.5 6.40832 0.5H1.65079C0.739085 0.5 0 1.23909 0 2.15079V11.8492C0 12.7609 0.739085 13.5 1.65079 13.5H13.2063C14.1181 13.5 14.8571 12.7609 14.8571 11.8492V4.00794C14.8571 3.09623 14.1181 2.35714 13.2063 2.35714H8.35714Z"})),$t=e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",fill:"currentColor",className:"bi bi-file-earmark",viewBox:"0 0 16 16"},e.createElement("path",{d:"M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5z"})),lr=n=>e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"18",height:"18",viewBox:"0 0 14 14",fill:"none",...n},e.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M7 12.6875C3.85888 12.6875 1.3125 10.1411 1.3125 7C1.3125 3.85888 3.85888 1.3125 7 1.3125C10.1411 1.3125 12.6875 3.85888 12.6875 7C12.6875 10.1411 10.1411 12.6875 7 12.6875ZM0 7C0 3.13401 3.13401 0 7 0C10.866 0 14 3.13401 14 7C14 10.866 10.866 14 7 14C3.13401 14 0 10.866 0 7ZM7.875 7.875V3.5H6.5625V6.5625H4.8125V7.875H7.875Z",fill:"#949494"})),cr=e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 14 14",fill:"none"},e.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M12.25 1.3125H1.75C1.50838 1.3125 1.3125 1.50838 1.3125 1.75V4.37495H12.6875V1.75C12.6875 1.50837 12.4916 1.3125 12.25 1.3125ZM12.6875 5.68745H5.25003V12.6875H12.25C12.4916 12.6875 12.6875 12.4916 12.6875 12.25V5.68745ZM3.93753 5.68745H1.3125V12.25C1.3125 12.4916 1.50837 12.6875 1.75 12.6875H3.93753L3.93753 5.68745ZM1.75 0H12.25C13.2165 0 14 0.783502 14 1.75V12.25C14 13.2165 13.2165 14 12.25 14H1.75C0.783502 14 0 13.2165 0 12.25V1.75C0 0.783502 0.783502 0 1.75 0Z",fill:"#949494"}));function ur(n){return`data:${n.mime};base64,${n.data}`}function fr({size:n=24,sidebarActive:s=!1}){return e.createElement("svg",{width:n,height:n,viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},e.createElement("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",ry:"2"}),s?e.createElement("rect",{x:"3",y:"3",width:"7",height:"18",rx:"2",ry:"2",fill:"currentColor"}):e.createElement("rect",{x:"3",y:"3",width:"8",height:"18",rx:"2",ry:"2",fill:"none",stroke:"currentColor",strokeWidth:"2"}))}const Bt=vt.forwardRef(({icon:n,size:s=24,...f},l)=>vt.cloneElement(n,{width:s,height:s,...f,ref:l}));var Tt={exports:{}},at={};/**
2
2
  * @license React
3
3
  * react-jsx-runtime.production.min.js
4
4
  *
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * This source code is licensed under the MIT license found in the
8
8
  * LICENSE file in the root directory of this source tree.
9
- */var It;function ur(){if(It)return Je;It=1;var n=t,c=Symbol.for("react.element"),l=Symbol.for("react.fragment"),m=Object.prototype.hasOwnProperty,p=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,E={key:!0,ref:!0,__self:!0,__source:!0};function P(j,S,y){var v,N={},T=null,I=null;y!==void 0&&(T=""+y),S.key!==void 0&&(T=""+S.key),S.ref!==void 0&&(I=S.ref);for(v in S)m.call(S,v)&&!E.hasOwnProperty(v)&&(N[v]=S[v]);if(j&&j.defaultProps)for(v in S=j.defaultProps,S)N[v]===void 0&&(N[v]=S[v]);return{$$typeof:c,type:j,key:T,ref:I,props:N,_owner:p.current}}return Je.Fragment=l,Je.jsx=P,Je.jsxs=P,Je}var Xe={};/**
9
+ */var jt;function dr(){if(jt)return at;jt=1;var n=e,s=Symbol.for("react.element"),f=Symbol.for("react.fragment"),l=Object.prototype.hasOwnProperty,C=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,d={key:!0,ref:!0,__self:!0,__source:!0};function k(A,F,h){var _,D={},P=null,z=null;h!==void 0&&(P=""+h),F.key!==void 0&&(P=""+F.key),F.ref!==void 0&&(z=F.ref);for(_ in F)l.call(F,_)&&!d.hasOwnProperty(_)&&(D[_]=F[_]);if(A&&A.defaultProps)for(_ in F=A.defaultProps,F)D[_]===void 0&&(D[_]=F[_]);return{$$typeof:s,type:A,key:P,ref:z,props:D,_owner:C.current}}return at.Fragment=f,at.jsx=k,at.jsxs=k,at}var ot={};/**
10
10
  * @license React
11
11
  * react-jsx-runtime.development.js
12
12
  *
@@ -14,18 +14,18 @@
14
14
  *
15
15
  * This source code is licensed under the MIT license found in the
16
16
  * LICENSE file in the root directory of this source tree.
17
- */var jt;function fr(){return jt||(jt=1,process.env.NODE_ENV!=="production"&&function(){var n=t,c=Symbol.for("react.element"),l=Symbol.for("react.portal"),m=Symbol.for("react.fragment"),p=Symbol.for("react.strict_mode"),E=Symbol.for("react.profiler"),P=Symbol.for("react.provider"),j=Symbol.for("react.context"),S=Symbol.for("react.forward_ref"),y=Symbol.for("react.suspense"),v=Symbol.for("react.suspense_list"),N=Symbol.for("react.memo"),T=Symbol.for("react.lazy"),I=Symbol.for("react.offscreen"),U=Symbol.iterator,A="@@iterator";function D(e){if(e===null||typeof e!="object")return null;var u=U&&e[U]||e[A];return typeof u=="function"?u:null}var h=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function b(e){{for(var u=arguments.length,f=new Array(u>1?u-1:0),x=1;x<u;x++)f[x-1]=arguments[x];Z("error",e,f)}}function Z(e,u,f){{var x=h.ReactDebugCurrentFrame,M=x.getStackAddendum();M!==""&&(u+="%s",f=f.concat([M]));var z=f.map(function(F){return String(F)});z.unshift("Warning: "+u),Function.prototype.apply.call(console[e],console,z)}}var V=!1,q=!1,J=!1,B=!1,L=!1,X;X=Symbol.for("react.module.reference");function _(e){return!!(typeof e=="string"||typeof e=="function"||e===m||e===E||L||e===p||e===y||e===v||B||e===I||V||q||J||typeof e=="object"&&e!==null&&(e.$$typeof===T||e.$$typeof===N||e.$$typeof===P||e.$$typeof===j||e.$$typeof===S||e.$$typeof===X||e.getModuleId!==void 0))}function $(e,u,f){var x=e.displayName;if(x)return x;var M=u.displayName||u.name||"";return M!==""?f+"("+M+")":f}function fe(e){return e.displayName||"Context"}function te(e){if(e==null)return null;if(typeof e.tag=="number"&&b("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case m:return"Fragment";case l:return"Portal";case E:return"Profiler";case p:return"StrictMode";case y:return"Suspense";case v:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case j:var u=e;return fe(u)+".Consumer";case P:var f=e;return fe(f._context)+".Provider";case S:return $(e,e.render,"ForwardRef");case N:var x=e.displayName||null;return x!==null?x:te(e.type)||"Memo";case T:{var M=e,z=M._payload,F=M._init;try{return te(F(z))}catch{return null}}}return null}var Q=Object.assign,ce=0,re,be,xe,Se,Te,oe,k;function C(){}C.__reactDisabledLog=!0;function G(){{if(ce===0){re=console.log,be=console.info,xe=console.warn,Se=console.error,Te=console.group,oe=console.groupCollapsed,k=console.groupEnd;var e={configurable:!0,enumerable:!0,value:C,writable:!0};Object.defineProperties(console,{info:e,log:e,warn:e,error:e,group:e,groupCollapsed:e,groupEnd:e})}ce++}}function W(){{if(ce--,ce===0){var e={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:Q({},e,{value:re}),info:Q({},e,{value:be}),warn:Q({},e,{value:xe}),error:Q({},e,{value:Se}),group:Q({},e,{value:Te}),groupCollapsed:Q({},e,{value:oe}),groupEnd:Q({},e,{value:k})})}ce<0&&b("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var ne=h.ReactCurrentDispatcher,Ee;function we(e,u,f){{if(Ee===void 0)try{throw Error()}catch(M){var x=M.stack.trim().match(/\n( *(at )?)/);Ee=x&&x[1]||""}return`
18
- `+Ee+e}}var ie=!1,H;{var w=typeof WeakMap=="function"?WeakMap:Map;H=new w}function ge(e,u){if(!e||ie)return"";{var f=H.get(e);if(f!==void 0)return f}var x;ie=!0;var M=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var z;z=ne.current,ne.current=null,G();try{if(u){var F=function(){throw Error()};if(Object.defineProperty(F.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(F,[])}catch(pe){x=pe}Reflect.construct(e,[],F)}else{try{F.call()}catch(pe){x=pe}e.call(F.prototype)}}else{try{throw Error()}catch(pe){x=pe}e()}}catch(pe){if(pe&&x&&typeof pe.stack=="string"){for(var O=pe.stack.split(`
19
- `),me=x.stack.split(`
20
- `),ee=O.length-1,ae=me.length-1;ee>=1&&ae>=0&&O[ee]!==me[ae];)ae--;for(;ee>=1&&ae>=0;ee--,ae--)if(O[ee]!==me[ae]){if(ee!==1||ae!==1)do if(ee--,ae--,ae<0||O[ee]!==me[ae]){var _e=`
21
- `+O[ee].replace(" at new "," at ");return e.displayName&&_e.includes("<anonymous>")&&(_e=_e.replace("<anonymous>",e.displayName)),typeof e=="function"&&H.set(e,_e),_e}while(ee>=1&&ae>=0);break}}}finally{ie=!1,ne.current=z,W(),Error.prepareStackTrace=M}var $e=e?e.displayName||e.name:"",Ie=$e?we($e):"";return typeof e=="function"&&H.set(e,Ie),Ie}function de(e,u,f){return ge(e,!1)}function ye(e){var u=e.prototype;return!!(u&&u.isReactComponent)}function Pe(e,u,f){if(e==null)return"";if(typeof e=="function")return ge(e,ye(e));if(typeof e=="string")return we(e);switch(e){case y:return we("Suspense");case v:return we("SuspenseList")}if(typeof e=="object")switch(e.$$typeof){case S:return de(e.render);case N:return Pe(e.type,u,f);case T:{var x=e,M=x._payload,z=x._init;try{return Pe(z(M),u,f)}catch{}}}return""}var Ne=Object.prototype.hasOwnProperty,Ae={},ze=h.ReactDebugCurrentFrame;function Me(e){if(e){var u=e._owner,f=Pe(e.type,e._source,u?u.type:null);ze.setExtraStackFrame(f)}else ze.setExtraStackFrame(null)}function Ue(e,u,f,x,M){{var z=Function.call.bind(Ne);for(var F in e)if(z(e,F)){var O=void 0;try{if(typeof e[F]!="function"){var me=Error((x||"React class")+": "+f+" type `"+F+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof e[F]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw me.name="Invariant Violation",me}O=e[F](u,F,x,f,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(ee){O=ee}O&&!(O instanceof Error)&&(Me(M),b("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).",x||"React class",f,F,typeof O),Me(null)),O instanceof Error&&!(O.message in Ae)&&(Ae[O.message]=!0,Me(M),b("Failed %s type: %s",f,O.message),Me(null))}}}var pt=Array.isArray;function Le(e){return pt(e)}function ht(e){{var u=typeof Symbol=="function"&&Symbol.toStringTag,f=u&&e[Symbol.toStringTag]||e.constructor.name||"Object";return f}}function wt(e){try{return nt(e),!1}catch{return!0}}function nt(e){return""+e}function at(e){if(wt(e))return b("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",ht(e)),nt(e)}var ot=h.ReactCurrentOwner,gt={key:!0,ref:!0,__self:!0,__source:!0},it,Fe;function Ve(e){if(Ne.call(e,"ref")){var u=Object.getOwnPropertyDescriptor(e,"ref").get;if(u&&u.isReactWarning)return!1}return e.ref!==void 0}function vt(e){if(Ne.call(e,"key")){var u=Object.getOwnPropertyDescriptor(e,"key").get;if(u&&u.isReactWarning)return!1}return e.key!==void 0}function Et(e,u){typeof e.ref=="string"&&ot.current}function yt(e,u){{var f=function(){it||(it=!0,b("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",u))};f.isReactWarning=!0,Object.defineProperty(e,"key",{get:f,configurable:!0})}}function _t(e,u){{var f=function(){Fe||(Fe=!0,b("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",u))};f.isReactWarning=!0,Object.defineProperty(e,"ref",{get:f,configurable:!0})}}var bt=function(e,u,f,x,M,z,F){var O={$$typeof:c,type:e,key:u,ref:f,props:F,_owner:z};return O._store={},Object.defineProperty(O._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(O,"_self",{configurable:!1,enumerable:!1,writable:!1,value:x}),Object.defineProperty(O,"_source",{configurable:!1,enumerable:!1,writable:!1,value:M}),Object.freeze&&(Object.freeze(O.props),Object.freeze(O)),O};function st(e,u,f,x,M){{var z,F={},O=null,me=null;f!==void 0&&(at(f),O=""+f),vt(u)&&(at(u.key),O=""+u.key),Ve(u)&&(me=u.ref,Et(u,M));for(z in u)Ne.call(u,z)&&!gt.hasOwnProperty(z)&&(F[z]=u[z]);if(e&&e.defaultProps){var ee=e.defaultProps;for(z in ee)F[z]===void 0&&(F[z]=ee[z])}if(O||me){var ae=typeof e=="function"?e.displayName||e.name||"Unknown":e;O&&yt(F,ae),me&&_t(F,ae)}return bt(e,O,me,M,x,ot.current,F)}}var Be=h.ReactCurrentOwner,qe=h.ReactDebugCurrentFrame;function De(e){if(e){var u=e._owner,f=Pe(e.type,e._source,u?u.type:null);qe.setExtraStackFrame(f)}else qe.setExtraStackFrame(null)}var Ye;Ye=!1;function Ze(e){return typeof e=="object"&&e!==null&&e.$$typeof===c}function lt(){{if(Be.current){var e=te(Be.current.type);if(e)return`
17
+ */var Ot;function mr(){return Ot||(Ot=1,process.env.NODE_ENV!=="production"&&function(){var n=e,s=Symbol.for("react.element"),f=Symbol.for("react.portal"),l=Symbol.for("react.fragment"),C=Symbol.for("react.strict_mode"),d=Symbol.for("react.profiler"),k=Symbol.for("react.provider"),A=Symbol.for("react.context"),F=Symbol.for("react.forward_ref"),h=Symbol.for("react.suspense"),_=Symbol.for("react.suspense_list"),D=Symbol.for("react.memo"),P=Symbol.for("react.lazy"),z=Symbol.for("react.offscreen"),Z=Symbol.iterator,S="@@iterator";function q(t){if(t===null||typeof t!="object")return null;var c=Z&&t[Z]||t[S];return typeof c=="function"?c:null}var w=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function R(t){{for(var c=arguments.length,m=new Array(c>1?c-1:0),x=1;x<c;x++)m[x-1]=arguments[x];U("error",t,m)}}function U(t,c,m){{var x=w.ReactDebugCurrentFrame,W=x.getStackAddendum();W!==""&&(c+="%s",m=m.concat([W]));var Y=m.map(function(B){return String(B)});Y.unshift("Warning: "+c),Function.prototype.apply.call(console[t],console,Y)}}var J=!1,ne=!1,y=!1,j=!1,O=!1,V;V=Symbol.for("react.module.reference");function p(t){return!!(typeof t=="string"||typeof t=="function"||t===l||t===d||O||t===C||t===h||t===_||j||t===z||J||ne||y||typeof t=="object"&&t!==null&&(t.$$typeof===P||t.$$typeof===D||t.$$typeof===k||t.$$typeof===A||t.$$typeof===F||t.$$typeof===V||t.getModuleId!==void 0))}function N(t,c,m){var x=t.displayName;if(x)return x;var W=c.displayName||c.name||"";return W!==""?m+"("+W+")":m}function le(t){return t.displayName||"Context"}function G(t){if(t==null)return null;if(typeof t.tag=="number"&&R("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case l:return"Fragment";case f:return"Portal";case d:return"Profiler";case C:return"StrictMode";case h:return"Suspense";case _:return"SuspenseList"}if(typeof t=="object")switch(t.$$typeof){case A:var c=t;return le(c)+".Consumer";case k:var m=t;return le(m._context)+".Provider";case F:return N(t,t.render,"ForwardRef");case D:var x=t.displayName||null;return x!==null?x:G(t.type)||"Memo";case P:{var W=t,Y=W._payload,B=W._init;try{return G(B(Y))}catch{return null}}}return null}var M=Object.assign,ae=0,Q,he,pe,Fe,ke,ee,Le;function te(){}te.__reactDisabledLog=!0;function Be(){{if(ae===0){Q=console.log,he=console.info,pe=console.warn,Fe=console.error,ke=console.group,ee=console.groupCollapsed,Le=console.groupEnd;var t={configurable:!0,enumerable:!0,value:te,writable:!0};Object.defineProperties(console,{info:t,log:t,warn:t,error:t,group:t,groupCollapsed:t,groupEnd:t})}ae++}}function ge(){{if(ae--,ae===0){var t={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:M({},t,{value:Q}),info:M({},t,{value:he}),warn:M({},t,{value:pe}),error:M({},t,{value:Fe}),group:M({},t,{value:ke}),groupCollapsed:M({},t,{value:ee}),groupEnd:M({},t,{value:Le})})}ae<0&&R("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var xe=w.ReactCurrentDispatcher,Ne;function Pe(t,c,m){{if(Ne===void 0)try{throw Error()}catch(W){var x=W.stack.trim().match(/\n( *(at )?)/);Ne=x&&x[1]||""}return`
18
+ `+Ne+t}}var fe=!1,$;{var E=typeof WeakMap=="function"?WeakMap:Map;$=new E}function me(t,c){if(!t||fe)return"";{var m=$.get(t);if(m!==void 0)return m}var x;fe=!0;var W=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var Y;Y=xe.current,xe.current=null,Be();try{if(c){var B=function(){throw Error()};if(Object.defineProperty(B.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(B,[])}catch(be){x=be}Reflect.construct(t,[],B)}else{try{B.call()}catch(be){x=be}t.call(B.prototype)}}else{try{throw Error()}catch(be){x=be}t()}}catch(be){if(be&&x&&typeof be.stack=="string"){for(var I=be.stack.split(`
19
+ `),Ee=x.stack.split(`
20
+ `),se=I.length-1,ue=Ee.length-1;se>=1&&ue>=0&&I[se]!==Ee[ue];)ue--;for(;se>=1&&ue>=0;se--,ue--)if(I[se]!==Ee[ue]){if(se!==1||ue!==1)do if(se--,ue--,ue<0||I[se]!==Ee[ue]){var Te=`
21
+ `+I[se].replace(" at new "," at ");return t.displayName&&Te.includes("<anonymous>")&&(Te=Te.replace("<anonymous>",t.displayName)),typeof t=="function"&&$.set(t,Te),Te}while(se>=1&&ue>=0);break}}}finally{fe=!1,xe.current=Y,ge(),Error.prepareStackTrace=W}var Ze=t?t.displayName||t.name:"",$e=Ze?Pe(Ze):"";return typeof t=="function"&&$.set(t,$e),$e}function de(t,c,m){return me(t,!1)}function ve(t){var c=t.prototype;return!!(c&&c.isReactComponent)}function b(t,c,m){if(t==null)return"";if(typeof t=="function")return me(t,ve(t));if(typeof t=="string")return Pe(t);switch(t){case h:return Pe("Suspense");case _:return Pe("SuspenseList")}if(typeof t=="object")switch(t.$$typeof){case F:return de(t.render);case D:return b(t.type,c,m);case P:{var x=t,W=x._payload,Y=x._init;try{return b(Y(W),c,m)}catch{}}}return""}var T=Object.prototype.hasOwnProperty,oe={},ie=w.ReactDebugCurrentFrame;function ce(t){if(t){var c=t._owner,m=b(t.type,t._source,c?c.type:null);ie.setExtraStackFrame(m)}else ie.setExtraStackFrame(null)}function ye(t,c,m,x,W){{var Y=Function.call.bind(T);for(var B in t)if(Y(t,B)){var I=void 0;try{if(typeof t[B]!="function"){var Ee=Error((x||"React class")+": "+m+" type `"+B+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof t[B]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw Ee.name="Invariant Violation",Ee}I=t[B](c,B,x,m,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(se){I=se}I&&!(I instanceof Error)&&(ce(W),R("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).",x||"React class",m,B,typeof I),ce(null)),I instanceof Error&&!(I.message in oe)&&(oe[I.message]=!0,ce(W),R("Failed %s type: %s",m,I.message),ce(null))}}}var Ve=Array.isArray;function we(t){return Ve(t)}function Ie(t){{var c=typeof Symbol=="function"&&Symbol.toStringTag,m=c&&t[Symbol.toStringTag]||t.constructor.name||"Object";return m}}function tt(t){try{return He(t),!1}catch{return!0}}function He(t){return""+t}function st(t){if(tt(t))return R("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",Ie(t)),He(t)}var lt=w.ReactCurrentOwner,wt={key:!0,ref:!0,__self:!0,__source:!0},ct,ze;function Ue(t){if(T.call(t,"ref")){var c=Object.getOwnPropertyDescriptor(t,"ref").get;if(c&&c.isReactWarning)return!1}return t.ref!==void 0}function Et(t){if(T.call(t,"key")){var c=Object.getOwnPropertyDescriptor(t,"key").get;if(c&&c.isReactWarning)return!1}return t.key!==void 0}function gt(t,c){typeof t.ref=="string"&&lt.current}function yt(t,c){{var m=function(){ct||(ct=!0,R("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",c))};m.isReactWarning=!0,Object.defineProperty(t,"key",{get:m,configurable:!0})}}function _t(t,c){{var m=function(){ze||(ze=!0,R("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",c))};m.isReactWarning=!0,Object.defineProperty(t,"ref",{get:m,configurable:!0})}}var bt=function(t,c,m,x,W,Y,B){var I={$$typeof:s,type:t,key:c,ref:m,props:B,_owner:Y};return I._store={},Object.defineProperty(I._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(I,"_self",{configurable:!1,enumerable:!1,writable:!1,value:x}),Object.defineProperty(I,"_source",{configurable:!1,enumerable:!1,writable:!1,value:W}),Object.freeze&&(Object.freeze(I.props),Object.freeze(I)),I};function ut(t,c,m,x,W){{var Y,B={},I=null,Ee=null;m!==void 0&&(st(m),I=""+m),Et(c)&&(st(c.key),I=""+c.key),Ue(c)&&(Ee=c.ref,gt(c,W));for(Y in c)T.call(c,Y)&&!wt.hasOwnProperty(Y)&&(B[Y]=c[Y]);if(t&&t.defaultProps){var se=t.defaultProps;for(Y in se)B[Y]===void 0&&(B[Y]=se[Y])}if(I||Ee){var ue=typeof t=="function"?t.displayName||t.name||"Unknown":t;I&&yt(B,ue),Ee&&_t(B,ue)}return bt(t,I,Ee,W,x,lt.current,B)}}var qe=w.ReactCurrentOwner,rt=w.ReactDebugCurrentFrame;function je(t){if(t){var c=t._owner,m=b(t.type,t._source,c?c.type:null);rt.setExtraStackFrame(m)}else rt.setExtraStackFrame(null)}var Ge;Ge=!1;function Ye(t){return typeof t=="object"&&t!==null&&t.$$typeof===s}function ft(){{if(qe.current){var t=G(qe.current.type);if(t)return`
22
22
 
23
- Check the render method of \``+e+"`."}return""}}function Ct(e){return""}var ct={};function r(e){{var u=lt();if(!u){var f=typeof e=="string"?e:e.displayName||e.name;f&&(u=`
23
+ Check the render method of \``+t+"`."}return""}}function Ct(t){return""}var dt={};function Rt(t){{var c=ft();if(!c){var m=typeof t=="string"?t:t.displayName||t.name;m&&(c=`
24
24
 
25
- Check the top-level render call using <`+f+">.")}return u}}function a(e,u){{if(!e._store||e._store.validated||e.key!=null)return;e._store.validated=!0;var f=r(u);if(ct[f])return;ct[f]=!0;var x="";e&&e._owner&&e._owner!==Be.current&&(x=" It was passed a child from "+te(e._owner.type)+"."),De(e),b('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',f,x),De(null)}}function o(e,u){{if(typeof e!="object")return;if(Le(e))for(var f=0;f<e.length;f++){var x=e[f];Ze(x)&&a(x,u)}else if(Ze(e))e._store&&(e._store.validated=!0);else if(e){var M=D(e);if(typeof M=="function"&&M!==e.entries)for(var z=M.call(e),F;!(F=z.next()).done;)Ze(F.value)&&a(F.value,u)}}}function s(e){{var u=e.type;if(u==null||typeof u=="string")return;var f;if(typeof u=="function")f=u.propTypes;else if(typeof u=="object"&&(u.$$typeof===S||u.$$typeof===N))f=u.propTypes;else return;if(f){var x=te(u);Ue(f,e.props,"prop",x,e)}else if(u.PropTypes!==void 0&&!Ye){Ye=!0;var M=te(u);b("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",M||"Unknown")}typeof u.getDefaultProps=="function"&&!u.getDefaultProps.isReactClassApproved&&b("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function i(e){{for(var u=Object.keys(e.props),f=0;f<u.length;f++){var x=u[f];if(x!=="children"&&x!=="key"){De(e),b("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",x),De(null);break}}e.ref!==null&&(De(e),b("Invalid attribute `ref` supplied to `React.Fragment`."),De(null))}}var g={};function d(e,u,f,x,M,z){{var F=_(e);if(!F){var O="";(e===void 0||typeof e=="object"&&e!==null&&Object.keys(e).length===0)&&(O+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");var me=Ct();me?O+=me:O+=lt();var ee;e===null?ee="null":Le(e)?ee="array":e!==void 0&&e.$$typeof===c?(ee="<"+(te(e.type)||"Unknown")+" />",O=" Did you accidentally export a JSX literal instead of a component?"):ee=typeof e,b("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",ee,O)}var ae=st(e,u,f,M,z);if(ae==null)return ae;if(F){var _e=u.children;if(_e!==void 0)if(x)if(Le(_e)){for(var $e=0;$e<_e.length;$e++)o(_e[$e],e);Object.freeze&&Object.freeze(_e)}else b("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else o(_e,e)}if(Ne.call(u,"key")){var Ie=te(e),pe=Object.keys(u).filter(function(Gt){return Gt!=="key"}),Rt=pe.length>0?"{key: someKey, "+pe.join(": ..., ")+": ...}":"{key: someKey}";if(!g[Ie+Rt]){var Zt=pe.length>0?"{"+pe.join(": ..., ")+": ...}":"{}";b(`A props object containing a "key" prop is being spread into JSX:
25
+ Check the top-level render call using <`+m+">.")}return c}}function mt(t,c){{if(!t._store||t._store.validated||t.key!=null)return;t._store.validated=!0;var m=Rt(c);if(dt[m])return;dt[m]=!0;var x="";t&&t._owner&&t._owner!==qe.current&&(x=" It was passed a child from "+G(t._owner.type)+"."),je(t),R('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',m,x),je(null)}}function r(t,c){{if(typeof t!="object")return;if(we(t))for(var m=0;m<t.length;m++){var x=t[m];Ye(x)&&mt(x,c)}else if(Ye(t))t._store&&(t._store.validated=!0);else if(t){var W=q(t);if(typeof W=="function"&&W!==t.entries)for(var Y=W.call(t),B;!(B=Y.next()).done;)Ye(B.value)&&mt(B.value,c)}}}function a(t){{var c=t.type;if(c==null||typeof c=="string")return;var m;if(typeof c=="function")m=c.propTypes;else if(typeof c=="object"&&(c.$$typeof===F||c.$$typeof===D))m=c.propTypes;else return;if(m){var x=G(c);ye(m,t.props,"prop",x,t)}else if(c.PropTypes!==void 0&&!Ge){Ge=!0;var W=G(c);R("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",W||"Unknown")}typeof c.getDefaultProps=="function"&&!c.getDefaultProps.isReactClassApproved&&R("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function o(t){{for(var c=Object.keys(t.props),m=0;m<c.length;m++){var x=c[m];if(x!=="children"&&x!=="key"){je(t),R("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",x),je(null);break}}t.ref!==null&&(je(t),R("Invalid attribute `ref` supplied to `React.Fragment`."),je(null))}}var i={};function u(t,c,m,x,W,Y){{var B=p(t);if(!B){var I="";(t===void 0||typeof t=="object"&&t!==null&&Object.keys(t).length===0)&&(I+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");var Ee=Ct();Ee?I+=Ee:I+=ft();var se;t===null?se="null":we(t)?se="array":t!==void 0&&t.$$typeof===s?(se="<"+(G(t.type)||"Unknown")+" />",I=" Did you accidentally export a JSX literal instead of a component?"):se=typeof t,R("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",se,I)}var ue=ut(t,c,m,W,Y);if(ue==null)return ue;if(B){var Te=c.children;if(Te!==void 0)if(x)if(we(Te)){for(var Ze=0;Ze<Te.length;Ze++)r(Te[Ze],t);Object.freeze&&Object.freeze(Te)}else R("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else r(Te,t)}if(T.call(c,"key")){var $e=G(t),be=Object.keys(c).filter(function(Kt){return Kt!=="key"}),xt=be.length>0?"{key: someKey, "+be.join(": ..., ")+": ...}":"{key: someKey}";if(!i[$e+xt]){var Zt=be.length>0?"{"+be.join(": ..., ")+": ...}":"{}";R(`A props object containing a "key" prop is being spread into JSX:
26
26
  let props = %s;
27
27
  <%s {...props} />
28
28
  React keys must be passed directly to JSX without using spread:
29
29
  let props = %s;
30
- <%s key={someKey} {...props} />`,Rt,Ie,Zt,Ie),g[Ie+Rt]=!0}}return e===m?i(ae):s(ae),ae}}function R(e,u,f){return d(e,u,f,!0)}function K(e,u,f){return d(e,u,f,!1)}var ke=K,Ge=R;Xe.Fragment=m,Xe.jsx=ke,Xe.jsxs=Ge}()),Xe}process.env.NODE_ENV==="production"?Pt.exports=ur():Pt.exports=fr();var Re=Pt.exports,tt=n=>mt.createElement("path",n),rt=mt.forwardRef(({className:n,isPressed:c,...l},m)=>{const p={...l,className:rr(n,{"is-pressed":c})||void 0,"aria-hidden":!0,focusable:!1};return Re.jsx("svg",{...p,ref:m})});rt.displayName="SVG";const dr=Re.jsx(rt,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:Re.jsx(tt,{d:"M17.5 11.6L12 16l-5.5-4.4.9-1.2L12 14l4.5-3.6 1 1.2z"})}),mr=Re.jsx(rt,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:Re.jsx(tt,{d:"M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z"})}),pr=Re.jsx(rt,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:Re.jsx(tt,{fillRule:"evenodd",clipRule:"evenodd",d:"M12.848 8a1 1 0 0 1-.914-.594l-.723-1.63a.5.5 0 0 0-.447-.276H5a.5.5 0 0 0-.5.5v11.5a.5.5 0 0 0 .5.5h14a.5.5 0 0 0 .5-.5v-9A.5.5 0 0 0 19 8h-6.152Zm.612-1.5a.5.5 0 0 1-.462-.31l-.445-1.084A2 2 0 0 0 10.763 4H5a2 2 0 0 0-2 2v11.5a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-9a2 2 0 0 0-2-2h-5.54Z"})}),hr=Re.jsxs(rt,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:[Re.jsx(tt,{d:"M15.5 7.5h-7V9h7V7.5Zm-7 3.5h7v1.5h-7V11Zm7 3.5h-7V16h7v-1.5Z"}),Re.jsx(tt,{d:"M17 4H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2ZM7 5.5h10a.5.5 0 0 1 .5.5v12a.5.5 0 0 1-.5.5H7a.5.5 0 0 1-.5-.5V6a.5.5 0 0 1 .5-.5Z"})]}),wr="_file-picker-tree_3rwm2_1",gr="_file-node-button_3rwm2_17",vr="_selected_3rwm2_53",Er="_focused_3rwm2_65",yr="_dropTarget_3rwm2_70",_r="_dropTargetInvalid_3rwm2_79",br="_renaming_3rwm2_88",Cr="_renameInput_3rwm2_93",Rr="_file-name_3rwm2_108",he={filePickerTree:wr,fileNodeButton:gr,selected:vr,focused:Er,dropTarget:yr,dropTargetInvalid:_r,renaming:br,renameInput:Cr,fileName:Rr};function xt(n){if(!n)return[];const c=n.replaceAll(/\\+/g,"/").replace(/\/{2,}/g,"/").replace(/\/$/,"")||n,l=c.startsWith("/"),m=c.split("/").filter(Boolean),p=[];let E=l?"/":"";l&&p.push("/");for(const P of m)!E||E==="/"?E=E==="/"?`/${P}`:P:E=`${E}/${P}`,p.push(E);return p}function xr(n,c){if(!n||!c||n===c)return!1;const l=n==="/"?"/":n.replace(/\/{2,}/g,"/"),m=c.replace(/\/{2,}/g,"/");return l==="/"?m.startsWith("/")&&m!=="/":m.startsWith(`${l}/`)}function St(n,c,l){return n&&(n===c?l:n.startsWith(c==="/"?"/":`${c}/`)?l+n.slice(c.length):n)}const $t=t.forwardRef(function({withContextMenu:c=!0,filesystem:l,root:m="/wordpress",initialSelectedPath:p,onSelect:E=()=>{},onDoubleClickFile:P},j){const S=t.useMemo(()=>{let r=(m||"/").replace(/\\+/g,"/");return r.startsWith("/")||(r=`/${r}`),r=r.replace(/\/{2,}/g,"/"),r.length>1&&r.endsWith("/")&&(r=r.slice(0,-1)),r||"/"},[m]),y=r=>!r||r==="."||r===".."?!1:!/[\\/]/.test(r),[v,N]=t.useState(()=>{if(!p)return{};const r={};for(const a of xt(p))r[a]=!0;return r}),[T,I]=t.useState(()=>p??null),[U,A]=t.useState(()=>p??null),[D,h]=t.useState({}),[b,Z]=t.useState({}),[V,q]=t.useState(null),[J,B]=t.useState(null),L=t.useRef({}),X=t.useRef(!1),_=t.useRef(null),$=t.useRef(null),fe=t.useRef(b),te=t.useRef(D),Q=()=>{for(const r of Object.keys(L.current))clearTimeout(L.current[r]),delete L.current[r]},ce=r=>{const a=L.current[r];a&&(clearTimeout(a),delete L.current[r])};t.useEffect(()=>{fe.current=b},[b]),t.useEffect(()=>{te.current=D},[D]);const re=r=>{var o;const a=(o=_.current)==null?void 0:o.querySelector(`[data-path="${r}"]`);a&&typeof a.focus=="function"&&(a.focus(),a.scrollIntoView({behavior:"smooth",block:"nearest"}))},be=(r,a="")=>(a?`${a}/${r.name}`:r.name).replaceAll(/\\+/g,"/").replace(/\/{2,}/g,"/"),xe=(r,a)=>r.children?r.children:D[a],Se=async(r,a)=>{const o=await r.listFiles(a),s=[];for(const i of o){const g=a==="/"?`/${i}`:`${a}/${i}`,d=await r.isDir(g);s.push({name:i,type:d?"folder":"file"})}return s.sort((i,g)=>{var ke;if(i.type!==g.type)return i.type==="folder"?-1:1;const d=a==="/"?`/${i.name}`:`${a}/${i.name}`,R=a==="/"?`/${g.name}`:`${a}/${g.name}`,K=(ke=ye.current)==null?void 0:ke.tempPath;if(K){if(d===K)return-1;if(R===K)return 1}return i.name.localeCompare(g.name)}),s},Te=async r=>await Se(l,r),oe=(r,a)=>{if(a.type!=="folder")return a.children;const o=a.children??te.current[r];return o||fe.current[r]?o:(Z(s=>({...s,[r]:!0})),new Promise(s=>{Te(r).then(i=>{h(g=>({...g,[r]:i??[]})),s(i??[])}).catch(()=>{s([])}).finally(()=>{Z(i=>{const g={...i};return delete g[r],g})})}))},k=(r,a)=>{a.type==="folder"&&(typeof window>"u"||L.current[r]||(L.current[r]=window.setTimeout(()=>{N(o=>o[r]?o:{...o,[r]:!0}),oe(r,a),delete L.current[r]},600)))},C=r=>(Z(a=>({...a,[r]:!0})),new Promise(a=>{Te(r).then(o=>{h(s=>({...s,[r]:o??[]})),a(o??[])}).catch(()=>{a([])}).finally(()=>{Z(o=>{const s={...o};return delete s[r],s})})})),G=(r,a,o)=>{N(s=>({...s,[r]:o})),o?oe(r,a):h(s=>{if(s[r]===void 0)return s;const i={...s};return delete i[r],i})},W=async r=>{if(!r)return;const a=xt(r);if(a.length===0)return;N(i=>{const g={...i};for(const d of a)g[d]=!0;return g});let o=[{name:S,type:"folder"}],s="";for(const i of a){const g=o==null?void 0:o.find(R=>be(R,s)===i);if(!g||g.type!=="folder"){s=i,o=[];continue}o=await oe(i,g)??te.current[i],s=i}},ne=(r,a)=>{if(!r||!a||r===a)return;const o=r==="/"?"/":`${r}/`,s=i=>i===r?a:i.startsWith(o)?a+i.slice(r.length):null;N(i=>{let g=!1;const d={...i};for(const R of Object.keys(i)){const K=s(R);K&&K!==R&&(d[K]=i[R],delete d[R],g=!0)}return g?d:i}),h(i=>{let g=!1;const d={...i};for(const R of Object.keys(i)){const K=s(R);K&&K!==R&&(d[K]=i[R],delete d[R],g=!0)}return g?d:i}),I(i=>i&&(s(i)??i)),A(i=>i&&(s(i)??i))},Ee=()=>{q(null),B(null),Q()},we=(r,a=!0)=>{I(r),a&&E(r)},ie=t.useMemo(()=>[{name:S,type:"folder"}],[S]),[H,w]=t.useState(null),[ge,de]=t.useState(null),ye=t.useRef(null),Pe=ge;t.useImperativeHandle(j,()=>({focusPath:(r,a={})=>{if(!r)return;const{select:o=!0,domFocus:s=!0,notify:i=!1}=a;o&&we(r,i),A(r),s&&re(r)},selectPath:r=>{r&&(we(r),A(r),re(r))},getSelectedPath:()=>T,expandToPath:async r=>await W(r),refresh:async r=>await C(r),remapPath:ne,createFile:async r=>{await Ve(r,"file","untitled.php")},createFolder:async r=>{await Ve(r,"folder","New Folder")}}),[T,C,ne,W]);const Ne=t.useRef(!1),Ae=t.useRef(p??null),ze=t.useRef(p);t.useEffect(()=>{X.current=!1},[S]),t.useEffect(()=>{p&&p!==ze.current?Ae.current=p:p||(Ae.current=null),ze.current=p},[p]),t.useEffect(()=>{if(!p||Ne.current)return;Ne.current=!0;const r=xt(p);N(o=>{const s={...o};for(const i of r)s[i]=!0;return s});const a=r[r.length-1]||p;A(a),I(a),W(p)},[p,W]),t.useEffect(()=>{const r=Ae.current;!r||ie.length===0||(Ae.current=null,W(r))},[ie,W]),t.useEffect(()=>{if(!U){if(ie.length>0){const r=be(ie[0]);A(r)}return}Pe&&Pe===U||re(U)},[ie,U,Pe]),t.useEffect(()=>{if(ie.length===0)return;const r=ie[0];if((r==null?void 0:r.type)!=="folder"||X.current)return;const a=r.name;X.current=!0,N(o=>o[a]?o:{...o,[a]:!0}),!te.current[a]&&!fe.current[a]&&oe(a,r)},[ie,oe,S]),t.useEffect(()=>()=>{$.current&&clearTimeout($.current),Q()},[]),t.useEffect(()=>{H&&setTimeout(()=>{const r=document.querySelector('[role="menu"] [role="menuitem"]');r&&typeof r.focus=="function"&&r.focus()},0)},[H]);const[Me,Ue]=t.useState(""),pt=(r,a)=>{if(r.type==="folder")return a;const o=se.dirname(a);return o&&o||"/"},Le=(r,a,o)=>{const s=pt(r,a);if(!s)return{allowed:!1,state:"invalid",destination:null};if(o){if(s===o)return{allowed:!1,state:"invalid",destination:null};if(xr(o,s))return{allowed:!1,state:"invalid",destination:null}}return{allowed:!0,state:"valid",destination:s}},ht=(r,a,o)=>{a.type!=="folder"&&a.type!=="file"||(q(o),B(null),r.dataTransfer&&(r.dataTransfer.effectAllowed="move",r.dataTransfer.setData("application/x-wp-playground-path",o),r.dataTransfer.setData("text/plain",o)))},wt=()=>{Ee()},nt=(r,a,o)=>{const s=Le(a,o,V);s.allowed&&a.type==="folder"&&k(o,a),B(i=>(i==null?void 0:i.path)===o&&i.state===s.state?i:{path:o,state:s.state})},at=(r,a,o)=>{const s=Le(a,o,V);s.allowed&&s.destination?(r.preventDefault(),r.dataTransfer&&(r.dataTransfer.dropEffect=V?"move":"copy"),a.type==="folder"&&k(o,a),B(i=>(i==null?void 0:i.path)===o&&i.state===s.state?i:{path:o,state:s.state})):(r.dataTransfer&&(r.dataTransfer.dropEffect="none"),ce(o),B(i=>(i==null?void 0:i.path)===o&&i.state==="invalid"?i:{path:o,state:"invalid"}))},ot=(r,a,o)=>{ce(o);const s=r.relatedTarget;s&&r.currentTarget.contains(s)||B(i=>(i==null?void 0:i.path)===o?null:i)},gt=async(r,a,o)=>{const s=V,i=Le(a,o,s);if(!i.allowed||!i.destination){Ee();return}r.preventDefault(),r.stopPropagation(),ce(o),B(null);try{s?await yt(s,i.destination):await De(r,i.destination)}finally{Ee()}},it=(r,a,o)=>{c&&(r.preventDefault(),r.stopPropagation(),de(null),w({absPath:o,type:a.type,x:r.clientX,y:r.clientY}))},Fe=async(r,a)=>{let o=a,s=0;const i=d=>{const R=d.lastIndexOf(".");return R>0?{stem:d.slice(0,R),ext:d.slice(R)}:{stem:d,ext:""}},g=r==="/"?"":r;for(;await(l==null?void 0:l.fileExists(`${g}/${o}`))||await(l==null?void 0:l.isDir(`${g}/${o}`));){s+=1;const{stem:d,ext:R}=i(a);o=`${d} (${s})${R}`}return o},Ve=async(r,a,o)=>{if(!l)return;let s=r||T||S;try{await l.isDir(s)||(s=se.dirname(s))}catch{s=se.dirname(s)}const i=s,g=await Fe(i,o),d=se.joinPaths(i,g);a==="folder"?await l.mkdir(d):await l.writeFile(d,""),ye.current={type:a,tempPath:d},de(d),await C(i),setTimeout(()=>{A(d),re(d)},0)},vt=async r=>{if(!l)return!1;try{if(await l.fileExists(r))return!0}catch{}try{if(await l.isDir(r))return!0}catch{}return!1},Et=async r=>{if(l)try{await l.mkdir(r)}catch(a){if(!await l.isDir(r).catch(()=>!1))throw a}},yt=async(r,a)=>{if(!l)return;const o=se.basename(r),s=se.joinPaths(a,o);if(s===r||await vt(s))return;const i=se.dirname(r);try{await l.mv(r,s),ne(r,s);const g=St(T,r,s);T&&(T===r||T.startsWith(`${r}/`))&&E(g),A(d=>St(d,r,s)),N(d=>({...d,[a]:!0})),await Promise.all([C(i),C(a)]),I(d=>St(d,r,s)),re(s)}catch{}},_t=r=>{const a=r;return a.webkitGetAsEntry?a.webkitGetAsEntry():null},bt=r=>new Promise((a,o)=>{r.file(a,o)}),st=async(r,a)=>{if(!l)return;const o=r.name||"untitled",s=await Fe(a,o),i=se.joinPaths(a,s),g=new Uint8Array(await r.arrayBuffer());await l.writeFile(i,g)},Be=async(r,a)=>{const o=await bt(r);await st(o,a)},qe=async(r,a)=>{const o=await Fe(a,r.name||"New Folder"),s=se.joinPaths(a,o);await Et(s);const i=r.createReader(),g=()=>new Promise((d,R)=>{i.readEntries(K=>d(Array.from(K)),R)});for(;;){const d=await g();if(!d.length)break;for(const R of d)R.isFile?await Be(R,s):R.isDirectory&&await qe(R,s)}},De=async(r,a)=>{var i,g;if(!l)return;const s=((i=r.dataTransfer)!=null&&i.items?Array.from(r.dataTransfer.items):[]).filter(d=>d.kind==="file").map(d=>_t(d)).filter(d=>!!d);if(s.length>0)for(const d of s)d.isFile?await Be(d,a):d.isDirectory&&await qe(d,a);else{const d=(g=r.dataTransfer)!=null&&g.files?Array.from(r.dataTransfer.files):[];for(const R of d)await st(R,a)}await C(a),N(d=>({...d,[a]:!0}))},Ye=async(r,a)=>{if(!l)return;const o=r;w(null);try{a==="folder"?await l.rmdir(o,{recursive:!0}):await l.unlink(o)}catch{}finally{de(null);const s=se.dirname(o);await C(s),T&&(T===o||T.startsWith(`${o}/`))&&E(null)}},Ze=async r=>{if(l)try{const o=await(await l.read(r)).arrayBuffer(),s=new Blob([o]),i=URL.createObjectURL(s),g=document.createElement("a");g.href=i,g.download=se.basename(r)||"download",document.body.appendChild(g),g.click(),document.body.removeChild(g),setTimeout(()=>URL.revokeObjectURL(i),6e4)}catch(a){console.error("Failed to download file",a)}},lt=r=>{var a;if(!ge)if(r.key.length===1&&r.key.match(/\S/)){const o=Me+r.key.toLowerCase();if(Ue(o),$.current&&clearTimeout($.current),$.current=setTimeout(()=>{Ue("")},1e3),!_.current)return;const s=Array.from(_.current.querySelectorAll(".file-node-button")),i=document.activeElement;let g=0;i&&s.includes(i)&&(g=s.indexOf(i));for(let d=0;d<s.length;d++){const R=(g+d)%s.length,K=s[R];if((a=K.textContent)!=null&&a.toLowerCase().trim().startsWith(o)){K.focus();const ke=K.getAttribute("data-path");ke&&A(ke);break}}}else Ue(""),$.current&&clearTimeout($.current)},Ct=async(r,a)=>{const o=ye.current,s=(o==null?void 0:o.tempPath)===r,i=se.dirname(r),g=(a||"").trim();if(!y(g)){if(s){try{o.type==="folder"?await l.rmdir(r,{recursive:!0}):await l.unlink(r)}catch{}ye.current=null}de(s?null:r);return}let d=se.joinPaths(i,g),R=d;if(R===r){de(null);const e=s&&(o==null?void 0:o.type)==="file";s&&(ye.current=null),setTimeout(()=>{A(R),re(R),e&&P&&P(R)},0);return}const K=await l.fileExists(R),ke=await l.isDir(R);if((K||ke)&&R!==r)if(s)try{const e=await Fe(i==="/"?"/":i,g);d=se.joinPaths(i,e),R=d}catch{}else{de(r);return}let Ge=(o==null?void 0:o.type)==="folder";try{await l.mv(r,d),o||(Ge=await l.isDir(d)),Ge&&ne(r,R),T===r&&E(R),await C(i),A(R),re(R),s&&!Ge&&P&&P(R)}catch{if(s)try{(o==null?void 0:o.type)==="folder"?await l.rmdir(r,{recursive:!0}):await l.unlink(r)}catch{}}finally{ye.current=null,de(null)}},ct=async r=>{const a=ye.current;if(!l||(a==null?void 0:a.tempPath)!==r){de(s=>s===r?null:s);return}try{a.type==="folder"?await l.rmdir(r,{recursive:!0}):await l.unlink(r)}catch{}ye.current=null,de(null);const o=se.dirname(r);await C(o),A(o),re(o)};return t.createElement("div",{onKeyDown:lt,ref:_},t.createElement(le.__experimentalTreeGrid,{className:he.filePickerTree},ie.map((r,a)=>t.createElement(Wt,{key:r.name,node:r,level:0,position:a+1,setSize:ie.length,expandedNodePaths:v,onToggle:G,selectedNode:T,focusPath:o=>A(o),focusedNode:U,selectPath:we,generatePath:be,getChildren:xe,onContextMenu:it,renamingPath:Pe,onRename:Ct,onRenameCancel:ct,dropIndicator:J,onDragStart:ht,onDragEnd:wt,onDragEnter:nt,onDragOver:at,onDragLeave:ot,onDrop:gt,rootPath:S,onDoubleClickFile:P}))),H&&t.createElement(le.Popover,{placement:"bottom-start",onClose:()=>w(null),anchor:{getBoundingClientRect:()=>({x:H.x,y:H.y,width:0,height:0,top:H.y,left:H.x,right:H.x,bottom:H.y,toJSON:()=>({})}),ownerDocument:document},noArrow:!0,resize:!1,focusOnMount:"firstElement"},t.createElement(le.NavigableMenu,{role:"menu"},H.type==="folder"&&t.createElement(le.MenuItem,{role:"menuitem",onClick:async()=>{w(null),await Ve(H.absPath,"file","untitled.php")}},"Create file"),H.type==="folder"&&t.createElement(le.MenuItem,{role:"menuitem",onClick:async()=>{w(null),await Ve(H.absPath,"folder","New Folder")}},"Create directory"),t.createElement(le.MenuItem,{role:"menuitem",onClick:()=>{w(null),de(H.absPath)}},"Rename"),H.type==="file"&&t.createElement(le.MenuItem,{role:"menuitem",onClick:async()=>{w(null),await Ze(H.absPath)}},"Download"),t.createElement(le.MenuItem,{role:"menuitem",onClick:()=>Ye(H.absPath,H.type)},"Delete"))))}),Wt=({node:n,level:c,position:l,setSize:m,expandedNodePaths:p,onToggle:E,selectedNode:P,focusPath:j,focusedNode:S,selectPath:y,generatePath:v,getChildren:N,onContextMenu:T,renamingPath:I,onRename:U,onRenameCancel:A,parentPath:D="",dropIndicator:h,onDragStart:b,onDragEnd:Z,onDragEnter:V,onDragOver:q,onDragLeave:J,onDrop:B,rootPath:L,onDoubleClickFile:X})=>{const _=v(n,D),$=p[_],fe=I===_,te=t.useRef(null),[Q,ce]=t.useState(n.name),re=t.useRef(!1),be=(h==null?void 0:h.path)===_,xe=be&&(h==null?void 0:h.state)==="valid",Se=be&&(h==null?void 0:h.state)==="invalid",Te=!fe&&_!==L,oe=t.useRef(null),k={onDragEnter:w=>V==null?void 0:V(w,n,_),onDragOver:w=>q==null?void 0:q(w,n,_),onDragLeave:w=>J==null?void 0:J(w,n,_),onDrop:w=>B==null?void 0:B(w,n,_)},C=N(n,_)??[];t.useEffect(()=>{var w;fe?(ce(n.name),re.current=!1,typeof window<"u"&&requestAnimationFrame?requestAnimationFrame(()=>{var ge;(ge=te.current)==null||ge.select()}):(w=te.current)==null||w.select()):re.current=!1},[fe,n.name]);const G=()=>{n.type==="folder"&&E(_,n,!$)},W=w=>{var ge,de;if(w.key==="ArrowLeft")$?G():(ge=document.querySelector(`[data-path="${D}"]`))==null||ge.focus(),w.preventDefault(),w.stopPropagation();else if(w.key==="ArrowRight"){if($){if(C!=null&&C.length){const ye=v(C[0],_);(de=document.querySelector(`[data-path="${ye}"]`))==null||de.focus()}}else G();w.preventDefault(),w.stopPropagation()}else w.key===" "||w.key==="Space"||w.key==="Spacebar"?(n.type==="folder"&&E(_,n,!$),w.preventDefault()):w.key==="Enter"&&(n.type==="folder"?E(_,n,!$):(y(_,!1),j(_),X?X(_):y(_,!0)),w.preventDefault())},ne=w=>{T==null||T(w,n,_)},Ee=w=>{w.preventDefault(),re.current=!0,U==null||U(_,Q.trim())},we=w=>{if(w.key==="Escape"){w.preventDefault(),w.stopPropagation(),re.current=!0,A==null||A(_);return}(w.key==="ArrowLeft"||w.key==="ArrowRight"||w.key==="ArrowUp"||w.key==="ArrowDown")&&w.stopPropagation()},ie=()=>{re.current||A==null||A(_),re.current=!1},H=()=>{if(n.type==="folder"){G(),y(_),j(_);return}const w=oe.current!==null;if(w&&oe.current&&clearTimeout(oe.current),oe.current=null,w){X?X(_):y(_,!0);return}y(_,!1),j(_),y(_,!0),oe.current=window.setTimeout(()=>{oe.current=null},300)};return t.useEffect(()=>()=>{oe.current!==null&&typeof window<"u"&&clearTimeout(oe.current)},[]),t.createElement(t.Fragment,null,t.createElement(le.__experimentalTreeGridRow,{level:c,positionInSet:l,setSize:m},t.createElement(le.__experimentalTreeGridCell,null,()=>t.createElement(t.Fragment,null,fe?t.createElement("form",{onSubmit:Ee,className:Qe(he.fileNodeButton,he.renaming,"file-node-button",{[he.selected]:P===_,[he.focused]:S===_,[he.dropTarget]:xe,[he.dropTargetInvalid]:Se}),"data-path":_,onContextMenu:ne,...k},t.createElement(Mt,{node:n,isOpen:n.type==="folder"&&$,level:c,hideName:!0}),t.createElement("input",{ref:te,className:he.renameInput,value:Q,onChange:w=>ce(w.target.value),onBlur:ie,onFocus:()=>j(_),onKeyDown:we})):t.createElement(le.Button,{...k,draggable:Te,onDragStart:w=>b==null?void 0:b(w,n,_),onDragEnd:w=>Z==null?void 0:Z(w,n,_),onClick:H,onKeyDown:W,onFocus:()=>{j(_)},onContextMenu:ne,className:Qe(he.fileNodeButton,"file-node-button",{[he.selected]:P===_,[he.focused]:S===_,[he.dropTarget]:xe,[he.dropTargetInvalid]:Se}),"data-path":_,"data-expanded":$?"true":"false"},t.createElement(Mt,{node:n,isOpen:n.type==="folder"&&$,level:c}))))),$&&C&&C.map((w,ge)=>t.createElement(Wt,{key:w.name,node:w,level:c+1,position:ge+1,setSize:C.length,expandedNodePaths:p,onToggle:E,selectedNode:P,focusPath:j,focusedNode:S,selectPath:y,generatePath:v,getChildren:N,onContextMenu:T,renamingPath:I,onRename:U,onRenameCancel:A,parentPath:_,dropIndicator:h,onDragStart:b,onDragEnd:Z,onDragEnter:V,onDragOver:q,onDragLeave:J,onDrop:B,rootPath:L,onDoubleClickFile:X})))},Mt=({node:n,level:c,isOpen:l,hideName:m=!1})=>{const p=[];for(let E=0;E<c;E++)p.push("&nbsp;&nbsp;&nbsp;&nbsp;");return t.createElement(t.Fragment,null,t.createElement("span",{"aria-hidden":"true",dangerouslySetInnerHTML:{__html:p.join("")}}),n.type==="folder"?t.createElement(Ft,{width:16,icon:l?dr:mr}):t.createElement("div",{style:{width:16}}," "),t.createElement(Ft,{width:16,icon:n.type==="folder"?Vt:Bt}),!m&&t.createElement("span",{className:he.fileName},n.name))},Sr="_control_kp9d9_1",Tr="_browse-label_kp9d9_11",Pr="_path-preview_kp9d9_37",kr="_modal_kp9d9_43",Nr="_modal-footer_kp9d9_48",He={control:Sr,browseLabel:Tr,pathPreview:Pr,modal:kr,modalFooter:Nr};function Dr({path:n}){if(!n)return t.createElement("div",{className:He.pathPreview},t.createElement("i",null,"Select a path"));const c=n.split("/");let l=(c.length>2?"/":"")+c.pop();l.length>10&&(l=l.substring(l.length-10));const m=n.substring(0,n.length-l.length);return t.createElement("div",{className:He.pathPreview,"data-content-start":m,"data-content-end":l})}function Or({value:n="",onChange:c,filesystem:l}){const[m,p]=t.useState(!1),E=()=>p(!0),P=()=>p(!1),[j,S]=t.useState(n||null);function y(v){v==null||v.preventDefault(),c(j||""),P()}return t.createElement(t.Fragment,null,t.createElement(le.Button,{variant:"tertiary",className:He.control,onClick:E},t.createElement("span",{className:He.browseLabel},"Browse"),t.createElement(Dr,{path:n||""})),m&&t.createElement(le.Modal,{title:"Select a path ",onRequestClose:P,className:He.modal},t.createElement("form",{onSubmit:y},t.createElement($t,{filesystem:l,initialSelectedPath:n,onSelect:S}),t.createElement("div",{className:He.modalFooter},t.createElement(le.Button,{type:"submit",variant:"primary"},"Select Path")))))}const Ar="_container_1h0az_1",Lr="_header_1h0az_9",Fr="_filename_1h0az_18",Ir="_downloadLink_1h0az_26",jr="_previewArea_1h0az_38",Mr="_imagePreview_1h0az_51",Vr="_videoPreview_1h0az_57",Br="_audioPreview_1h0az_64",$r="_unsupportedMessage_1h0az_68",Wr="_actions_1h0az_74",Ce={container:Ar,header:Lr,filename:Fr,downloadLink:Ir,previewArea:jr,imagePreview:Mr,videoPreview:Vr,audioPreview:Br,unsupportedMessage:$r,actions:Wr},Hr=n=>{if(!n)return{isImage:!1,isVideo:!1,isAudio:!1};const c=n.toLowerCase();return{isImage:c.startsWith("image/"),isVideo:c.startsWith("video/"),isAudio:c.startsWith("audio/")}};function zr({filename:n,mimeType:c,dataUrl:l,downloadUrl:m,showHeader:p=!0}){const{isImage:E,isVideo:P,isAudio:j}=Hr(c),S=p!==!1,y=!!(m&&n),v=()=>y?t.createElement("a",{className:Ce.downloadLink,href:m,download:n},"Download"):null,N=()=>E?t.createElement("img",{className:Ce.imagePreview,src:l,alt:n||"Preview"}):P?t.createElement("video",{className:Ce.videoPreview,controls:!0,preload:"metadata"},t.createElement("source",{src:l,type:c}),"Your browser does not support the video tag."):j?t.createElement("audio",{className:Ce.audioPreview,controls:!0},t.createElement("source",{src:l,type:c}),"Your browser does not support the audio tag."):t.createElement("div",{className:Ce.unsupportedMessage},t.createElement("p",null,"Preview unavailable for this file type."),y?t.createElement("p",null,v()):t.createElement("p",null,"Download the file to inspect its contents."));return t.createElement("div",{className:Ce.container},S&&t.createElement("div",{className:Ce.header},t.createElement("span",{className:Ce.filename,title:n},n),v()),t.createElement("div",{className:Ce.previewArea},N()),!S&&y&&t.createElement("div",{className:Ce.actions},v()))}const Tt=new Map,Ur=async n=>{var p;if(!n)return et.php();const c=(p=n.split(".").pop())==null?void 0:p.toLowerCase();if(!c||c==="php")return et.php();const l=n;if(Tt.has(l))return Tt.get(l);let m;switch(c){case"css":m=await import("@codemirror/lang-css").then(E=>E.css());break;case"js":case"jsx":case"ts":case"tsx":m=await import("@codemirror/lang-javascript").then(E=>E.javascript({jsx:c==="jsx"||c==="tsx",typescript:c==="ts"||c==="tsx"}));break;case"json":m=await import("@codemirror/lang-json").then(E=>E.json());break;case"html":case"htm":m=await import("@codemirror/lang-html").then(E=>E.html());break;case"md":case"markdown":m=await import("@codemirror/lang-markdown").then(E=>E.markdown());break;default:m=et.php()}return Tt.set(l,m),m};class qr{constructor(c){this.view=c,this.handleClick=this.handleClick.bind(this),this.view.dom.addEventListener("mousedown",this.handleClick)}handleClick(c){const l=c.target;if((l.classList.contains("cm-scroller")||l.classList.contains("cm-content"))&&this.view.posAtCoords({x:c.clientX,y:c.clientY})===null){const p=this.view.state.doc.length,E=Oe.EditorSelection.create([Oe.EditorSelection.range(p,p)]);this.view.dispatch({selection:E,effects:ve.EditorView.scrollIntoView(p,{y:"center"})}),this.view.focus(),c.preventDefault()}}destroy(){this.view.dom.removeEventListener("mousedown",this.handleClick)}}const Yr=ve.ViewPlugin.define(n=>new qr(n)),Nt=t.forwardRef(function({code:c,onChange:l,currentPath:m,className:p,onSaveShortcut:E,readOnly:P=!1,additionalExtensions:j},S){const y=t.useRef(null),v=t.useRef(null),N=t.useRef(new Oe.Compartment),T=t.useRef(new Oe.Compartment),I=t.useRef(new Oe.Compartment),U=t.useRef(c),A=t.useRef(l),D=t.useRef(!1);return t.useImperativeHandle(S,()=>({focus:()=>{var h;(h=v.current)==null||h.focus()},blur:()=>{const h=v.current;h&&h.contentDOM.blur()},getCursorPosition:()=>v.current?v.current.state.selection.main.anchor:null,setCursorPosition:h=>{if(!v.current)return;const b=Math.min(h,v.current.state.doc.length),Z=Oe.EditorSelection.create([Oe.EditorSelection.range(b,b)]);v.current.dispatch({selection:Z,scrollIntoView:!0})}})),t.useEffect(()=>{U.current=c},[c]),t.useEffect(()=>{A.current=l},[l]),t.useEffect(()=>{if(v.current)return;const h=y.current;if(!h)return;const b=Oe.EditorState.create({doc:c,extensions:[I.current.of(j??[]),ve.lineNumbers(),ve.highlightActiveLineGutter(),ve.highlightActiveLine(),We.foldGutter(),ve.dropCursor(),ve.rectangularSelection(),ve.crosshairCursor(),Yr,N.current.of(et.php()),T.current.of(ve.EditorView.editable.of(!P)),We.syntaxHighlighting(We.defaultHighlightStyle),We.indentOnInput(),We.bracketMatching(),ft.closeBrackets(),ut.history(),Ot.highlightSelectionMatches(),ft.autocompletion(),ve.EditorView.updateListener.of(V=>{if(!V.docChanged)return;const q=V.state.doc.toString();q!==U.current&&(U.current=q,A.current(q))}),ve.keymap.of([{key:"Mod-s",preventDefault:!0,run:()=>(E==null||E(),!0)},...ft.closeBracketsKeymap,...ft.completionKeymap,...We.foldKeymap,...Ot.searchKeymap,...ut.historyKeymap,...ut.defaultKeymap,ut.indentWithTab])]}),Z=new ve.EditorView({state:b,parent:h});return v.current=Z,()=>{Z.destroy(),v.current=null}},[]),t.useEffect(()=>{const h=v.current;h&&h.dispatch({effects:I.current.reconfigure(j??[])})},[j]),t.useEffect(()=>{const h=v.current;if(!h)return;const b=h.state.doc.toString();c!==b&&h.dispatch({changes:{from:0,to:h.state.doc.length,insert:c}})},[c]),t.useEffect(()=>{var q;const h=v.current;if(!h)return;const b=(q=m==null?void 0:m.split(".").pop())==null?void 0:q.toLowerCase();(!b||b==="php")&&h.dispatch({effects:N.current.reconfigure(et.php())});let V=!1;return Ur(m).then(J=>{V||!v.current||v.current.dispatch({effects:N.current.reconfigure(J)})}),()=>{V=!0}},[m]),t.useEffect(()=>{const h=v.current;h&&(h.hasFocus&&(D.current=!0),h.dispatch({effects:T.current.reconfigure(ve.EditorView.editable.of(!P))}))},[P]),t.useLayoutEffect(()=>{const h=v.current;h&&D.current&&!h.hasFocus&&(h.focus(),D.current=!1)},[m,P]),t.createElement("div",{ref:y,className:p})});Nt.displayName="CodeEditor";const Zr="_fileExplorerContainer_1m4t6_1",Gr="_fileExplorerHeader_1m4t6_14",Kr="_fileExplorerTitle_1m4t6_23",Jr="_fileExplorerActions_1m4t6_31",Xr="_fileExplorerButton_1m4t6_37",Qr="_fileExplorerTree_1m4t6_84",je={fileExplorerContainer:Zr,fileExplorerHeader:Gr,fileExplorerTitle:Kr,fileExplorerActions:Jr,fileExplorerButton:Xr,fileExplorerTree:Qr},Ht=1024*1024,zt=n=>{const c=n.byteLength;for(let l=0;l<Math.min(c,4096);l++)if(n[l]===0)return!0;try{return new TextDecoder("utf-8",{fatal:!0}).decode(n),!1}catch{return!0}},kt=(n,c)=>{const l=new Blob([n]),m=URL.createObjectURL(l);return setTimeout(()=>URL.revokeObjectURL(m),6e4),{url:m,filename:c}},Ut=n=>{const c=n.split(".").pop();return Lt[c]||Lt._default},qt=n=>n.startsWith("image/")||n.startsWith("video/")||n.startsWith("audio/");function Yt({filesystem:n,currentPath:c,selectedDirPath:l,setSelectedDirPath:m,onFileOpened:p,onSelectionCleared:E,onShowMessage:P,documentRoot:j}){const S=t.useRef(null),y=t.useMemo(()=>se.normalizePath(c?se.dirname(se.normalizePath(c)):l??j),[c,j]),[v,N]=t.useState(null),T=async(I,U)=>{try{const A=await n.read(I),D=new Uint8Array(await A.arrayBuffer()),h=D.byteLength,b=I.split("/").pop()||"download";if(h>Ht){const{url:V,filename:q}=kt(D,b);await P(I,t.createElement(t.Fragment,null,t.createElement("p",null,"File too large to open (>1MB)."),t.createElement("p",null,t.createElement("a",{href:V,download:q},"Download ",q))));return}if(zt(D)){const V=Ut(b),{url:q,filename:J}=kt(D,b);if(qt(V)){const B=new Blob([D],{type:V}),L=URL.createObjectURL(B);await P(I,t.createElement(At.BinaryFilePreview,{filename:J,mimeType:V,dataUrl:L,downloadUrl:q}));return}await P(I,t.createElement(t.Fragment,null,t.createElement("p",null,"Binary file. Cannot be edited."),t.createElement("p",null,t.createElement("a",{href:q,download:J},"Download ",J))));return}const Z=new TextDecoder("utf-8").decode(D);await p(I,Z,U)}catch(A){dt.logger.error("Could not open file",A),await P(null,"Could not open file.")}};return t.createElement("div",{className:je.fileExplorerContainer},t.createElement("div",{className:je.fileExplorerHeader},t.createElement("span",{className:je.fileExplorerTitle},"Files"),t.createElement("div",{className:je.fileExplorerActions},t.createElement("button",{className:je.fileExplorerButton,type:"button",onClick:()=>{S.current&&S.current.createFile(v??void 0)},title:"Create new file"},t.createElement(le.Icon,{icon:hr,size:16}),"New File"),t.createElement("button",{className:je.fileExplorerButton,type:"button",onClick:()=>{S.current&&S.current.createFolder(v??void 0)},title:"Create new folder"},t.createElement(le.Icon,{icon:pr,size:16}),"New Folder"))),t.createElement("div",{className:je.fileExplorerTree},t.createElement(At.FilePickerTree,{ref:S,filesystem:n,root:j,initialSelectedPath:y,onSelect:async I=>{if(N(I),!I){await E();return}try{if(await n.isDir(I)){m(I);return}}catch{}await T(I,!1)},onDoubleClickFile:async I=>{await T(I,!0)}})))}const en="_container_15o5h_1",tn="_content_15o5h_9",rn="_sidebarWrapper_15o5h_17",nn="_editorWrapper_15o5h_28",an="_editorHeader_15o5h_37",on="_editorPath_15o5h_49",sn="_editorPathPlaceholder_15o5h_60",ln="_saveStatus_15o5h_71",cn="_saveStatusSaving_15o5h_78",un="_saveStatusPending_15o5h_79",fn="_saveStatusError_15o5h_83",dn="_editor_15o5h_28",mn="_placeholder_15o5h_105",pn="_messageArea_15o5h_116",hn="_mobileToggle_15o5h_152",wn="_mobileOverlay_15o5h_156",gn="_sidebarOpen_15o5h_171",ue={container:en,content:tn,sidebarWrapper:rn,editorWrapper:nn,editorHeader:an,editorPath:on,editorPathPlaceholder:sn,saveStatus:ln,saveStatusSaving:cn,saveStatusPending:un,saveStatusError:fn,editor:dn,placeholder:mn,messageArea:pn,mobileToggle:hn,mobileOverlay:wn,sidebarOpen:gn},vn=1500,Y={IDLE:"idle",PENDING:"pending",SAVING:"saving",SAVED:"saved",ERROR:"error"};function En({filesystem:n,isVisible:c=!0,documentRoot:l,initialPath:m=null,placeholderText:p="Select a file to view or edit its contents.",onSaveFile:E,onBeforeFilesystemChange:P}){const[j,S]=t.useState(l),[y,v]=t.useState(null),[N,T]=t.useState(""),[I,U]=t.useState(!0),[A,D]=t.useState(Y.IDLE),[h,b]=t.useState(null),[Z,V]=t.useState(!1),[q,J]=t.useState(null),B=t.useRef(null),L=t.useRef(null),X=t.useRef(!1),_=t.useRef(N),$=t.useRef(y),fe=t.useRef(n),te=t.useRef(null),Q=t.useRef(new Map),ce=t.useRef(!1);t.useEffect(()=>{_.current=N},[N]),t.useEffect(()=>{$.current=y},[y]),t.useEffect(()=>{fe.current=n},[n]),t.useEffect(()=>{const k=te.current;k&&k!==n&&P&&P(k),te.current=n},[n,P]),t.useEffect(()=>{n||(X.current=!0,T(""),v(null),U(!0),D(Y.IDLE),b(null),V(!1),J(null),ce.current=!1)},[n]),t.useEffect(()=>{if(!n||!m||ce.current)return;(async()=>{try{if(await n.fileExists(m)){const G=await n.readFileAsText(m);X.current=!0,v(m),T(G),U(!1),D(Y.IDLE),b(null),setTimeout(()=>{var W;(W=B.current)==null||W.focus()},100)}}catch(C){dt.logger.debug("Could not auto-open initial path:",C)}finally{ce.current=!0}})()},[n,m]),t.useEffect(()=>{S(l),v(null),T(""),U(!0),D(Y.IDLE),b(null),X.current=!0,J(null),ce.current=!1},[l]),t.useEffect(()=>()=>{L.current!==null&&(window.clearTimeout(L.current),L.current=null)},[]),t.useEffect(()=>{const k=fe.current;if(!k||!y){L.current!==null&&(window.clearTimeout(L.current),L.current=null),y||D(Y.IDLE);return}if(X.current){X.current=!1;return}L.current!==null&&(window.clearTimeout(L.current),L.current=null),D(Y.PENDING);const C=window.setTimeout(async()=>{L.current=null,D(Y.SAVING);try{const G=$.current,W=_.current;E?await E(G,W):await k.writeFile(G,W),D(Y.SAVED),b(null)}catch(G){dt.logger.error("Failed to save file",G),D(Y.ERROR),b("Could not save changes. Try again.")}},vn);return L.current=C,()=>{L.current===C&&(window.clearTimeout(C),L.current=null)}},[N,y,E]),t.useEffect(()=>{if(A!==Y.SAVED)return;const k=window.setTimeout(()=>{D(C=>C===Y.SAVED?Y.IDLE:C)},2e3);return()=>window.clearTimeout(k)},[A]);const re=t.useCallback(async(k,C,G=!0)=>{var ne;const W=(ne=B.current)==null?void 0:ne.getCursorPosition();W!=null&&$.current&&Q.current.set($.current,W),X.current=!0,v(k),T(C),J(null),U(!1),D(Y.IDLE),b(null),V(!1),setTimeout(()=>{var we,ie,H;const Ee=Q.current.get(k);Ee!==void 0&&((we=B.current)==null||we.setCursorPosition(Ee)),G?(ie=B.current)==null||ie.focus():(H=B.current)==null||H.blur()},50)},[]);t.useEffect(()=>{var G;if(!y)return;const k=setInterval(()=>{var ne;const W=(ne=B.current)==null?void 0:ne.getCursorPosition();W!=null&&Q.current.set(y,W)},1e3),C=(G=B.current)==null?void 0:G.getCursorPosition();return C!=null&&Q.current.set(y,C),()=>{var ne;clearInterval(k);const W=(ne=B.current)==null?void 0:ne.getCursorPosition();W!=null&&Q.current.set(y,W)}},[y]),t.useEffect(()=>{if(!c||!y)return;const k=setTimeout(()=>{var G;const C=Q.current.get(y);C!==void 0&&((G=B.current)==null||G.setCursorPosition(C))},100);return()=>clearTimeout(k)},[c,y]);const be=t.useCallback(async()=>{var C;const k=(C=B.current)==null?void 0:C.getCursorPosition();k!=null&&$.current&&Q.current.set($.current,k),X.current=!0,v(null),T(""),J(null),U(!0),D(Y.IDLE),b(null)},[]),xe=t.useCallback(async(k,C)=>{X.current=!0,v(null),typeof C=="string"?(T(C),J(null)):(T(""),J(C)),U(!0),D(Y.IDLE),b(null),V(!1)},[]),Se=t.useCallback(async()=>{if(L.current!==null){if(!fe.current||!$.current){window.clearTimeout(L.current),L.current=null;return}window.clearTimeout(L.current),L.current=null,D(Y.SAVING);try{const k=$.current,C=_.current;E?await E(k,C):await fe.current.writeFile(k,C),D(Y.SAVED),b(null)}catch(k){dt.logger.error("Failed to save file",k),D(Y.ERROR),b("Could not save changes. Try again.")}}},[E]),Te=yn(A,h),oe=_n(A,ue);return n?t.createElement("div",{className:ue.container},t.createElement("div",{className:Qe(ue.content,{[ue.sidebarOpen]:Z})},t.createElement("div",{className:ue.mobileOverlay,onClick:()=>V(!1)}),t.createElement("aside",{className:ue.sidebarWrapper},t.createElement(Yt,{filesystem:n,currentPath:y,selectedDirPath:j,setSelectedDirPath:S,onFileOpened:re,onSelectionCleared:be,onShowMessage:xe,documentRoot:l})),t.createElement("section",{className:ue.editorWrapper},t.createElement("div",{className:ue.editorHeader},t.createElement(le.Button,{className:ue.mobileToggle,variant:"secondary",onClick:()=>V(k=>!k)},Z?"Hide files":"Browse files"),t.createElement("div",{className:Qe(ue.editorPath,{[ue.editorPathPlaceholder]:!(y!=null&&y.length)})},y!=null&&y.length?y:`Browse files under ${l}`),t.createElement("div",{className:Qe(ue.saveStatus,oe)},Te)),h?t.createElement("div",{style:{padding:"8px 16px"}},t.createElement(le.Notice,{status:"error",isDismissible:!1},h)):null,y||N||q?q?t.createElement("div",{className:ue.messageArea},q):t.createElement(Nt,{ref:B,code:N,onChange:T,currentPath:y,className:ue.editor,onSaveShortcut:Se,readOnly:I}):t.createElement("div",{className:ue.placeholder},p)))):t.createElement("div",{className:ue.container},t.createElement("div",{className:ue.placeholder},p))}function yn(n,c){switch(n){case Y.PENDING:case Y.SAVING:return"Saving…";case Y.SAVED:return"Saved";case Y.ERROR:return c??"Save failed";default:return""}}function _n(n,c){switch(n){case Y.PENDING:return c.saveStatusPending;case Y.SAVING:return c.saveStatusSaving;case Y.ERROR:return c.saveStatusError;default:return}}exports.BinaryFilePreview=zr;exports.ClockIcon=ir;exports.CodeEditor=Nt;exports.FileExplorerSidebar=Yt;exports.FilePickerControl=Or;exports.FilePickerTree=$t;exports.MAX_INLINE_FILE_BYTES=Ht;exports.PlaygroundFileEditor=En;exports.SiteManagerIcon=cr;exports.WordPressIcon=or;exports.createDownloadUrl=kt;exports.file=Bt;exports.folder=Vt;exports.getLogoDataURL=lr;exports.getMimeType=Ut;exports.isPreviewableBinary=qt;exports.layout=sr;exports.playgroundLogo=nr;exports.seemsLikeBinary=zt;exports.temporaryStorage=ar;
30
+ <%s key={someKey} {...props} />`,xt,$e,Zt,$e),i[$e+xt]=!0}}return t===l?o(ue):a(ue),ue}}function v(t,c,m){return u(t,c,m,!0)}function g(t,c,m){return u(t,c,m,!1)}var re=g,_e=v;ot.Fragment=l,ot.jsx=re,ot.jsxs=_e}()),ot}process.env.NODE_ENV==="production"?Tt.exports=dr():Tt.exports=mr();var Ae=Tt.exports,Qe=n=>vt.createElement("path",n),et=vt.forwardRef(({className:n,isPressed:s,...f},l)=>{const C={...f,className:nr(n,{"is-pressed":s})||void 0,"aria-hidden":!0,focusable:!1};return Ae.jsx("svg",{...C,ref:l})});et.displayName="SVG";const pr=Ae.jsx(et,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:Ae.jsx(Qe,{d:"M17.5 11.6L12 16l-5.5-4.4.9-1.2L12 14l4.5-3.6 1 1.2z"})}),hr=Ae.jsx(et,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:Ae.jsx(Qe,{d:"M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z"})}),vr=Ae.jsx(et,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:Ae.jsx(Qe,{fillRule:"evenodd",clipRule:"evenodd",d:"M12.848 8a1 1 0 0 1-.914-.594l-.723-1.63a.5.5 0 0 0-.447-.276H5a.5.5 0 0 0-.5.5v11.5a.5.5 0 0 0 .5.5h14a.5.5 0 0 0 .5-.5v-9A.5.5 0 0 0 19 8h-6.152Zm.612-1.5a.5.5 0 0 1-.462-.31l-.445-1.084A2 2 0 0 0 10.763 4H5a2 2 0 0 0-2 2v11.5a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-9a2 2 0 0 0-2-2h-5.54Z"})}),wr=Ae.jsxs(et,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:[Ae.jsx(Qe,{d:"M15.5 7.5h-7V9h7V7.5Zm-7 3.5h7v1.5h-7V11Zm7 3.5h-7V16h7v-1.5Z"}),Ae.jsx(Qe,{d:"M17 4H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2ZM7 5.5h10a.5.5 0 0 1 .5.5v12a.5.5 0 0 1-.5.5H7a.5.5 0 0 1-.5-.5V6a.5.5 0 0 1 .5-.5Z"})]}),Er=Ae.jsx(et,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:Ae.jsx(Qe,{d:"M18.5 15v3.5H13V6.7l4.5 4.1 1-1.1-6.2-5.8-5.8 5.8 1 1.1 4-4v11.7h-6V15H4v5h16v-5z"})}),gr="_file-picker-tree_ad9od_1",yr="_file-node-button_ad9od_17",_r="_selected_ad9od_56",br="_focused_ad9od_75",Cr="_dropTarget_ad9od_83",Rr="_dropTargetInvalid_ad9od_95",xr="_renaming_ad9od_104",Sr="_renameInput_ad9od_109",kr="_file-name_ad9od_124",Re={filePickerTree:gr,fileNodeButton:yr,selected:_r,focused:br,dropTarget:Cr,dropTargetInvalid:Rr,renaming:xr,renameInput:Sr,fileName:kr};function St(n){if(!n)return[];const s=H.normalizePath(n),f=s.startsWith("/"),l=s.split("/").filter(Boolean),C=[];let d=f?"/":"";f&&C.push("/");for(const k of l)!d||d==="/"?d=d==="/"?`/${k}`:k:d=`${d}/${k}`,C.push(d);return C}function We(n,s,f){return n&&(n===s?f:n.startsWith(s==="/"?"/":`${s}/`)?f+n.slice(s.length):n)}const Wt=e.forwardRef(function({withContextMenu:s=!0,readOnly:f=!1,filesystem:l,root:C="/wordpress",initialSelectedPath:d,onSelect:k=()=>{},onDoubleClickFile:A},F){const h=e.useMemo(()=>H.joinPaths("/",C||"/"),[C]),[_,D]=e.useState(()=>{if(!d)return{};const r={};for(const a of St(d))r[a]=!0;return r}),[P,z]=e.useState(()=>d??null),[Z,S]=e.useState(()=>d??null),[q,w]=e.useState({}),[R,U]=e.useState({}),[J,ne]=e.useState(null),[y,j]=e.useState(null),O=e.useRef({}),V=e.useRef(!1),p=e.useRef(null),N=e.useRef(null),le=e.useRef(R),G=e.useRef(q),M=()=>{for(const r of Object.keys(O.current))clearTimeout(O.current[r]),delete O.current[r]},ae=r=>{const a=O.current[r];a&&(clearTimeout(a),delete O.current[r])};e.useEffect(()=>{le.current=R},[R]),e.useEffect(()=>{G.current=q},[q]);const Q=r=>{var o;const a=(o=p.current)==null?void 0:o.querySelector(`[data-path="${CSS.escape(r)}"]`);a&&typeof a.focus=="function"&&(a.focus(),a.scrollIntoView({behavior:"smooth",block:"nearest"}))},he=(r,a="")=>a?H.joinPaths(a,r.name):H.joinPaths("/",r.name),pe=(r,a)=>r.children?r.children:q[a],Fe=async(r,a)=>{const o=await r.listFiles(a),i=[];for(const u of o){const v=a==="/"?`/${u}`:`${a}/${u}`,g=await r.isDir(v);i.push({name:u,type:g?"folder":"file"})}return i.sort((u,v)=>{var t;if(u.type!==v.type)return u.type==="folder"?-1:1;const g=a==="/"?`/${u.name}`:`${a}/${u.name}`,re=a==="/"?`/${v.name}`:`${a}/${v.name}`,_e=(t=ve.current)==null?void 0:t.tempPath;if(_e){if(g===_e)return-1;if(re===_e)return 1}return u.name.localeCompare(v.name)}),i},ke=async r=>await Fe(l,r),ee=(r,a)=>{if(a.type!=="folder")return a.children;const o=a.children??G.current[r];return o||le.current[r]?o:(U(i=>({...i,[r]:!0})),new Promise(i=>{ke(r).then(u=>{w(v=>({...v,[r]:u??[]})),i(u??[])}).catch(()=>{i([])}).finally(()=>{U(u=>{const v={...u};return delete v[r],v})})}))},Le=(r,a)=>{a.type==="folder"&&(typeof window>"u"||O.current[r]||(O.current[r]=window.setTimeout(()=>{D(o=>o[r]?o:{...o,[r]:!0}),ee(r,a),delete O.current[r]},600)))},te=r=>(U(a=>({...a,[r]:!0})),new Promise(a=>{ke(r).then(o=>{w(i=>({...i,[r]:o??[]})),a(o??[])}).catch(()=>{a([])}).finally(()=>{U(o=>{const i={...o};return delete i[r],i})})})),Be=(r,a,o)=>{D(i=>({...i,[r]:o})),o?ee(r,a):w(i=>{if(i[r]===void 0)return i;const u={...i};return delete u[r],u})},ge=async r=>{if(!r)return;const a=St(r);if(a.length===0)return;D(u=>{const v={...u};for(const g of a)v[g]=!0;return v});let o=[{name:h,type:"folder"}],i="";for(const u of a){const v=o==null?void 0:o.find(re=>he(re,i)===u);if(!v||v.type!=="folder"){i=u,o=[];continue}o=await ee(u,v)??G.current[u],i=u}},xe=(r,a)=>{!r||!a||r===a||(D(o=>{let i=!1;const u={...o};for(const v of Object.keys(o)){const g=We(v,r,a);g&&g!==v&&(u[g]=o[v],delete u[v],i=!0)}return i?u:o}),w(o=>{let i=!1;const u={...o};for(const v of Object.keys(o)){const g=We(v,r,a);g&&g!==v&&(u[g]=o[v],delete u[v],i=!0)}return i?u:o}),z(o=>We(o,r,a)),S(o=>We(o,r,a)))},Ne=()=>{ne(null),j(null),M()},Pe=(r,a=!0)=>{z(r),a&&k(r)},fe=e.useMemo(()=>[{name:h,type:"folder"}],[h]),[$,E]=e.useState(null),[me,de]=e.useState(null),ve=e.useRef(null),b=f?null:me;e.useImperativeHandle(F,()=>({focusPath:(r,a={})=>{if(!r)return;const{select:o=!0,domFocus:i=!0,notify:u=!1}=a;o&&Pe(r,u),S(r),i&&Q(r)},selectPath:r=>{r&&(Pe(r),S(r),Q(r))},getSelectedPath:()=>P,expandToPath:async r=>await ge(r),refresh:async r=>await te(r),remapPath:xe,createFile:async r=>{f||await Ue(r,"file","untitled.php")},createFolder:async r=>{f||await Ue(r,"folder","New Folder")},importFiles:async(r,a)=>{f||await je(r,a)},importDataTransfer:async(r,a)=>{f||await Ge(r,a)}}),[P,te,xe,ge,f]);const T=e.useRef(!1),oe=e.useRef(d??null),ie=e.useRef(d);e.useEffect(()=>{V.current=!1},[h]),e.useEffect(()=>{d&&d!==ie.current?oe.current=d:d||(oe.current=null),ie.current=d},[d]),e.useEffect(()=>{if(!d||T.current)return;T.current=!0;const r=St(d);D(o=>{const i={...o};for(const u of r)i[u]=!0;return i});const a=r[r.length-1]||d;S(a),z(a),ge(d)},[d,ge]),e.useEffect(()=>{const r=oe.current;!r||fe.length===0||(oe.current=null,ge(r))},[fe,ge]),e.useEffect(()=>{if(!Z){if(fe.length>0){const r=he(fe[0]);S(r)}return}b&&b===Z||Q(Z)},[fe,Z,b]),e.useEffect(()=>{if(fe.length===0)return;const r=fe[0];if((r==null?void 0:r.type)!=="folder"||V.current)return;const a=r.name;V.current=!0,D(o=>o[a]?o:{...o,[a]:!0}),!G.current[a]&&!le.current[a]&&ee(a,r)},[fe,ee,h]),e.useEffect(()=>()=>{N.current&&clearTimeout(N.current),M()},[]),e.useEffect(()=>{$&&setTimeout(()=>{const r=document.querySelector('[role="menu"] [role="menuitem"]');r&&typeof r.focus=="function"&&r.focus()},0)},[$]);const[ce,ye]=e.useState(""),Ve=(r,a)=>{if(r.type==="folder")return a;const o=H.dirname(a);return o&&o||"/"},we=(r,a,o)=>{const i=Ve(r,a);return i?o&&H.isParentOf(o,i)?{allowed:!1,state:"invalid",destination:null}:{allowed:!0,state:"valid",destination:i}:{allowed:!1,state:"invalid",destination:null}},Ie=(r,a,o)=>{a.type!=="folder"&&a.type!=="file"||(ne(o),j(null),r.dataTransfer&&(r.dataTransfer.effectAllowed="move",r.dataTransfer.setData("application/x-wp-playground-path",o),r.dataTransfer.setData("text/plain",o)))},tt=()=>{Ne()},He=(r,a,o)=>{const i=we(a,o,J);i.allowed&&a.type==="folder"&&Le(o,a),j(u=>(u==null?void 0:u.path)===o&&u.state===i.state?u:{path:o,state:i.state})},st=(r,a,o)=>{const i=we(a,o,J);i.allowed&&i.destination?(r.preventDefault(),r.dataTransfer&&(r.dataTransfer.dropEffect=J?"move":"copy"),a.type==="folder"&&Le(o,a),j(u=>(u==null?void 0:u.path)===o&&u.state===i.state?u:{path:o,state:i.state})):(r.dataTransfer&&(r.dataTransfer.dropEffect="none"),ae(o),j(u=>(u==null?void 0:u.path)===o&&u.state==="invalid"?u:{path:o,state:"invalid"}))},lt=(r,a,o)=>{ae(o);const i=r.relatedTarget;i&&r.currentTarget.contains(i)||j(u=>(u==null?void 0:u.path)===o?null:u)},wt=async(r,a,o)=>{const i=J,u=we(a,o,i);if(!u.allowed||!u.destination){Ne();return}r.preventDefault(),r.stopPropagation(),ae(o),j(null);try{i?await yt(i,u.destination):await Ge(r.dataTransfer,u.destination)}finally{Ne()}},ct=(r,a,o)=>{s&&(r.preventDefault(),r.stopPropagation(),de(null),E({absPath:o,type:a.type,x:r.clientX,y:r.clientY}))},ze=async(r,a)=>{let o=a,i=0;const u=g=>{const re=g.lastIndexOf(".");return re>0?{stem:g.slice(0,re),ext:g.slice(re)}:{stem:g,ext:""}},v=r==="/"?"":r;for(;await(l==null?void 0:l.fileExists(`${v}/${o}`))||await(l==null?void 0:l.isDir(`${v}/${o}`));){i+=1;const{stem:g,ext:re}=u(a);o=`${g} (${i})${re}`}return o},Ue=async(r,a,o)=>{if(!l)return;let i=r||P||h;try{await l.isDir(i)||(i=H.dirname(i))}catch{i=H.dirname(i)}const u=i,v=await ze(u,o),g=H.joinPaths(u,v);a==="folder"?await l.mkdir(g):await l.writeFile(g,""),ve.current={type:a,tempPath:g},de(g),await te(u),setTimeout(()=>{S(g),Q(g)},0)},Et=async r=>{if(!l)return!1;try{if(await l.fileExists(r))return!0}catch{}try{if(await l.isDir(r))return!0}catch{}return!1},gt=async r=>{if(l)try{await l.mkdir(r)}catch(a){if(!await l.isDir(r).catch(()=>!1))throw a}},yt=async(r,a)=>{if(!l)return;const o=H.basename(r),i=H.joinPaths(a,o);if(i===r||await Et(i))return;const u=H.dirname(r);try{await l.mv(r,i),xe(r,i);const v=We(P,r,i);P&&(P===r||P.startsWith(`${r}/`))&&k(v),S(g=>We(g,r,i)),D(g=>({...g,[a]:!0})),await Promise.all([te(u),te(a)]),z(g=>We(g,r,i)),Q(i)}catch{}},_t=r=>{const a=r;return a.webkitGetAsEntry?a.webkitGetAsEntry():null},bt=r=>new Promise((a,o)=>{r.file(a,o)}),ut=async(r,a)=>{if(!l)return;const o=r.name||"untitled",i=await ze(a,o),u=H.joinPaths(a,i),v=new Uint8Array(await r.arrayBuffer());await l.writeFile(u,v)},qe=async(r,a)=>{const o=await bt(r);await ut(o,a)},rt=async(r,a)=>{const o=await ze(a,r.name||"New Folder"),i=H.joinPaths(a,o);await gt(i);const u=r.createReader(),v=()=>new Promise((g,re)=>{u.readEntries(_e=>g(Array.from(_e)),re)});for(;;){const g=await v();if(!g.length)break;for(const re of g)re.isFile?await qe(re,i):re.isDirectory&&await rt(re,i)}},je=(r,a)=>Ye([],r,a),Ge=(r,a)=>{const i=Array.from(r.items).filter(v=>v.kind==="file").map(v=>_t(v)).filter(v=>!!v),u=Array.from(r.files);return Ye(i,u,a)},Ye=async(r,a,o)=>{if(l){if(r.length>0)for(const i of r)i.isFile?await qe(i,o):i.isDirectory&&await rt(i,o);else for(const i of a)await ut(i,o);await te(o),D(i=>({...i,[o]:!0}))}},ft=async(r,a)=>{if(!l)return;const o=r;E(null);try{a==="folder"?await l.rmdir(o,{recursive:!0}):await l.unlink(o)}catch{}finally{de(null);const i=H.dirname(o);await te(i),P&&(P===o||P.startsWith(`${o}/`))&&k(null)}},Ct=async r=>{if(l)try{const o=await(await l.read(r)).arrayBuffer(),i=new Blob([o]),u=URL.createObjectURL(i),v=document.createElement("a");v.href=u,v.download=H.basename(r)||"download",document.body.appendChild(v),v.click(),document.body.removeChild(v),setTimeout(()=>URL.revokeObjectURL(u),6e4)}catch(a){console.error("Failed to download file",a)}},dt=r=>{var a;if(!me)if(r.key.length===1&&r.key.match(/\S/)){const o=ce+r.key.toLowerCase();if(ye(o),N.current&&clearTimeout(N.current),N.current=setTimeout(()=>{ye("")},1e3),!p.current)return;const i=Array.from(p.current.querySelectorAll(".file-node-button")),u=document.activeElement;let v=0;u&&i.includes(u)&&(v=i.indexOf(u));for(let g=0;g<i.length;g++){const re=(v+g)%i.length,_e=i[re];if((a=_e.textContent)!=null&&a.toLowerCase().trim().startsWith(o)){_e.focus();const t=_e.getAttribute("data-path");t&&S(t);break}}}else ye(""),N.current&&clearTimeout(N.current)},Rt=async(r,a)=>{if(f)return;const o=ve.current,i=(o==null?void 0:o.tempPath)===r,u=H.dirname(r);if(!a||a==="."||a===".."||H.basename(a)!==a){if(i){try{o.type==="folder"?await l.rmdir(r,{recursive:!0}):await l.unlink(r)}catch{}ve.current=null}de(i?null:r);return}let v=H.joinPaths(u,a),g=v;if(g===r){de(null);const c=i&&(o==null?void 0:o.type)==="file";i&&(ve.current=null),setTimeout(()=>{S(g),Q(g),c&&A&&A(g)},0);return}const re=await l.fileExists(g),_e=await l.isDir(g);if((re||_e)&&g!==r)if(i)try{const c=await ze(u==="/"?"/":u,a);v=H.joinPaths(u,c),g=v}catch{}else{de(r);return}let t=(o==null?void 0:o.type)==="folder";try{await l.mv(r,v),o||(t=await l.isDir(v)),t&&xe(r,g),P===r&&k(g),await te(u),S(g),Q(g),i&&!t&&A&&A(g)}catch{if(i)try{(o==null?void 0:o.type)==="folder"?await l.rmdir(r,{recursive:!0}):await l.unlink(r)}catch{}}finally{ve.current=null,de(null)}},mt=async r=>{const a=ve.current;if(!l||(a==null?void 0:a.tempPath)!==r){de(i=>i===r?null:i);return}try{a.type==="folder"?await l.rmdir(r,{recursive:!0}):await l.unlink(r)}catch{}ve.current=null,de(null);const o=H.dirname(r);await te(o),S(o),Q(o)};return e.createElement("div",{onKeyDown:dt,ref:p},e.createElement(X.__experimentalTreeGrid,{className:Re.filePickerTree},fe.map((r,a)=>e.createElement(Ht,{key:r.name,node:r,level:0,position:a+1,setSize:fe.length,expandedNodePaths:_,onToggle:Be,selectedNode:P,focusPath:o=>S(o),focusedNode:Z,selectPath:Pe,generatePath:he,getChildren:pe,onContextMenu:f?void 0:ct,renamingPath:b,onRename:Rt,onRenameCancel:mt,dropIndicator:y,onDragStart:f?void 0:Ie,onDragEnd:f?void 0:tt,onDragEnter:f?void 0:He,onDragOver:f?void 0:st,onDragLeave:f?void 0:lt,onDrop:f?void 0:wt,rootPath:h,onDoubleClickFile:A}))),!f&&$&&e.createElement(X.Popover,{placement:"bottom-start",onClose:()=>E(null),anchor:{getBoundingClientRect:()=>({x:$.x,y:$.y,width:0,height:0,top:$.y,left:$.x,right:$.x,bottom:$.y,toJSON:()=>({})}),ownerDocument:document},noArrow:!0,resize:!1,focusOnMount:"firstElement"},e.createElement(X.NavigableMenu,{role:"menu"},$.type==="folder"&&e.createElement(X.MenuItem,{role:"menuitem",onClick:async()=>{E(null),await Ue($.absPath,"file","untitled.php")}},"Create file"),$.type==="folder"&&e.createElement(X.MenuItem,{role:"menuitem",onClick:async()=>{E(null),await Ue($.absPath,"folder","New Folder")}},"Create directory"),e.createElement(X.MenuItem,{role:"menuitem",onClick:()=>{E(null),de($.absPath)}},"Rename"),$.type==="file"&&e.createElement(X.MenuItem,{role:"menuitem",onClick:async()=>{E(null),await Ct($.absPath)}},"Download"),e.createElement(X.MenuItem,{role:"menuitem",onClick:()=>ft($.absPath,$.type)},"Delete"))))}),Ht=({node:n,level:s,position:f,setSize:l,expandedNodePaths:C,onToggle:d,selectedNode:k,focusPath:A,focusedNode:F,selectPath:h,generatePath:_,getChildren:D,onContextMenu:P,renamingPath:z,onRename:Z,onRenameCancel:S,parentPath:q="",dropIndicator:w,onDragStart:R,onDragEnd:U,onDragEnter:J,onDragOver:ne,onDragLeave:y,onDrop:j,rootPath:O,onDoubleClickFile:V})=>{const p=_(n,q),N=C[p],le=z===p,G=e.useRef(null),[M,ae]=e.useState(n.name),Q=e.useRef(!1),he=(w==null?void 0:w.path)===p,pe=he&&(w==null?void 0:w.state)==="valid",Fe=he&&(w==null?void 0:w.state)==="invalid",ke=!!R&&!le&&p!==O,ee=e.useRef(null),Le={onDragEnter:E=>J==null?void 0:J(E,n,p),onDragOver:E=>ne==null?void 0:ne(E,n,p),onDragLeave:E=>y==null?void 0:y(E,n,p),onDrop:E=>j==null?void 0:j(E,n,p)},te=D(n,p)??[];e.useEffect(()=>{var E;le?(ae(n.name),Q.current=!1,typeof window<"u"&&requestAnimationFrame?requestAnimationFrame(()=>{var me;(me=G.current)==null||me.select()}):(E=G.current)==null||E.select()):Q.current=!1},[le,n.name]);const Be=()=>{n.type==="folder"&&d(p,n,!N)},ge=E=>{var me,de;if(E.key==="ArrowLeft")N?Be():(me=document.querySelector(`[data-path="${CSS.escape(q)}"]`))==null||me.focus(),E.preventDefault(),E.stopPropagation();else if(E.key==="ArrowRight"){if(N){if(te!=null&&te.length){const ve=_(te[0],p);(de=document.querySelector(`[data-path="${CSS.escape(ve)}"]`))==null||de.focus()}}else Be();E.preventDefault(),E.stopPropagation()}else E.key===" "||E.key==="Space"||E.key==="Spacebar"?(n.type==="folder"&&d(p,n,!N),E.preventDefault()):E.key==="Enter"&&(n.type==="folder"?d(p,n,!N):(h(p,!1),A(p),V?V(p):h(p,!0)),E.preventDefault())},xe=E=>{P==null||P(E,n,p)},Ne=E=>{E.preventDefault(),Q.current=!0,Z==null||Z(p,M)},Pe=E=>{if(E.key==="Escape"){E.preventDefault(),E.stopPropagation(),Q.current=!0,S==null||S(p);return}(E.key==="ArrowLeft"||E.key==="ArrowRight"||E.key==="ArrowUp"||E.key==="ArrowDown")&&E.stopPropagation()},fe=()=>{Q.current||S==null||S(p),Q.current=!1},$=()=>{if(n.type==="folder"){Be(),h(p),A(p);return}const E=ee.current!==null;if(E&&ee.current&&clearTimeout(ee.current),ee.current=null,E){V?V(p):h(p,!0);return}h(p,!1),A(p),h(p,!0),ee.current=window.setTimeout(()=>{ee.current=null},300)};return e.useEffect(()=>()=>{ee.current!==null&&typeof window<"u"&&clearTimeout(ee.current)},[]),e.createElement(e.Fragment,null,e.createElement(X.__experimentalTreeGridRow,{level:s,positionInSet:f,setSize:l},e.createElement(X.__experimentalTreeGridCell,null,()=>e.createElement(e.Fragment,null,le?e.createElement("form",{onSubmit:Ne,className:De(Re.fileNodeButton,Re.renaming,"file-node-button",{[Re.selected]:k===p,[Re.focused]:F===p,[Re.dropTarget]:pe,[Re.dropTargetInvalid]:Fe}),"data-path":p,onContextMenu:xe,...Le},e.createElement(Vt,{node:n,isOpen:n.type==="folder"&&N,level:s,hideName:!0}),e.createElement("input",{ref:G,className:Re.renameInput,value:M,onChange:E=>ae(E.target.value),onBlur:fe,onFocus:()=>A(p),onKeyDown:Pe})):e.createElement(X.Button,{...Le,draggable:ke,onDragStart:E=>R==null?void 0:R(E,n,p),onDragEnd:E=>U==null?void 0:U(E,n,p),onClick:$,onKeyDown:ge,onFocus:()=>{A(p)},onContextMenu:xe,className:De(Re.fileNodeButton,"file-node-button",{[Re.selected]:k===p,[Re.focused]:F===p,[Re.dropTarget]:pe,[Re.dropTargetInvalid]:Fe}),"data-path":p,"data-expanded":N?"true":"false"},e.createElement(Vt,{node:n,isOpen:n.type==="folder"&&N,level:s}))))),N&&te&&te.map((E,me)=>e.createElement(Ht,{key:E.name,node:E,level:s+1,position:me+1,setSize:te.length,expandedNodePaths:C,onToggle:d,selectedNode:k,focusPath:A,focusedNode:F,selectPath:h,generatePath:_,getChildren:D,onContextMenu:P,renamingPath:z,onRename:Z,onRenameCancel:S,parentPath:p,dropIndicator:w,onDragStart:R,onDragEnd:U,onDragEnter:J,onDragOver:ne,onDragLeave:y,onDrop:j,rootPath:O,onDoubleClickFile:V})))},Vt=({node:n,level:s,isOpen:f,hideName:l=!1})=>{const C=[];for(let d=0;d<s;d++)C.push("&nbsp;&nbsp;&nbsp;&nbsp;");return e.createElement(e.Fragment,null,e.createElement("span",{"aria-hidden":"true",dangerouslySetInnerHTML:{__html:C.join("")}}),n.type==="folder"?e.createElement(Bt,{width:16,icon:f?pr:hr}):e.createElement("div",{style:{width:16}}," "),e.createElement(Bt,{width:16,icon:n.type==="folder"?zt:$t}),!l&&e.createElement("span",{className:Re.fileName},n.name))},Pr="_control_kp9d9_1",Tr="_browse-label_kp9d9_11",Dr="_path-preview_kp9d9_37",Ar="_modal_kp9d9_43",Fr="_modal-footer_kp9d9_48",Xe={control:Pr,browseLabel:Tr,pathPreview:Dr,modal:Ar,modalFooter:Fr};function Nr({path:n}){if(!n)return e.createElement("div",{className:Xe.pathPreview},e.createElement("i",null,"Select a path"));const s=n.split("/");let f=(s.length>2?"/":"")+s.pop();f.length>10&&(f=f.substring(f.length-10));const l=n.substring(0,n.length-f.length);return e.createElement("div",{className:Xe.pathPreview,"data-content-start":l,"data-content-end":f})}function Ir({value:n="",onChange:s,filesystem:f}){const[l,C]=e.useState(!1),d=()=>C(!0),k=()=>C(!1),[A,F]=e.useState(n||null);function h(_){_==null||_.preventDefault(),s(A||""),k()}return e.createElement(e.Fragment,null,e.createElement(X.Button,{variant:"tertiary",className:Xe.control,onClick:d},e.createElement("span",{className:Xe.browseLabel},"Browse"),e.createElement(Nr,{path:n||""})),l&&e.createElement(X.Modal,{title:"Select a path ",onRequestClose:k,className:Xe.modal},e.createElement("form",{onSubmit:h},e.createElement(Wt,{filesystem:f,initialSelectedPath:n,onSelect:F}),e.createElement("div",{className:Xe.modalFooter},e.createElement(X.Button,{type:"submit",variant:"primary"},"Select Path")))))}const Lr="_container_1h0az_1",Mr="_header_1h0az_9",Br="_filename_1h0az_18",jr="_downloadLink_1h0az_26",Or="_previewArea_1h0az_38",Vr="_imagePreview_1h0az_51",zr="_videoPreview_1h0az_57",$r="_audioPreview_1h0az_64",Wr="_unsupportedMessage_1h0az_68",Hr="_actions_1h0az_74",Me={container:Lr,header:Mr,filename:Br,downloadLink:jr,previewArea:Or,imagePreview:Vr,videoPreview:zr,audioPreview:$r,unsupportedMessage:Wr,actions:Hr},Ur=n=>{if(!n)return{isImage:!1,isVideo:!1,isAudio:!1};const s=n.toLowerCase();return{isImage:s.startsWith("image/"),isVideo:s.startsWith("video/"),isAudio:s.startsWith("audio/")}};function qr({filename:n,mimeType:s,dataUrl:f,downloadUrl:l,showHeader:C=!0}){const{isImage:d,isVideo:k,isAudio:A}=Ur(s),F=C!==!1,h=!!(l&&n),_=()=>h?e.createElement("a",{className:Me.downloadLink,href:l,download:n},"Download"):null,D=()=>d?e.createElement("img",{className:Me.imagePreview,src:f,alt:n||"Preview"}):k?e.createElement("video",{className:Me.videoPreview,controls:!0,preload:"metadata"},e.createElement("source",{src:f,type:s}),"Your browser does not support the video tag."):A?e.createElement("audio",{className:Me.audioPreview,controls:!0},e.createElement("source",{src:f,type:s}),"Your browser does not support the audio tag."):e.createElement("div",{className:Me.unsupportedMessage},e.createElement("p",null,"Preview unavailable for this file type."),h?e.createElement("p",null,_()):e.createElement("p",null,"Download the file to inspect its contents."));return e.createElement("div",{className:Me.container},F&&e.createElement("div",{className:Me.header},e.createElement("span",{className:Me.filename,title:n},n),_()),e.createElement("div",{className:Me.previewArea},D()),!F&&h&&e.createElement("div",{className:Me.actions},_()))}const kt=new Map,Gr=async n=>{var C;if(!n)return it.php();const s=(C=n.split(".").pop())==null?void 0:C.toLowerCase();if(!s||s==="php")return it.php();const f=n;if(kt.has(f))return kt.get(f);let l;switch(s){case"css":l=await import("@codemirror/lang-css").then(d=>d.css());break;case"js":case"jsx":case"ts":case"tsx":l=await import("@codemirror/lang-javascript").then(d=>d.javascript({jsx:s==="jsx"||s==="tsx",typescript:s==="ts"||s==="tsx"}));break;case"json":l=await import("@codemirror/lang-json").then(d=>d.json());break;case"html":case"htm":l=await import("@codemirror/lang-html").then(d=>d.html());break;case"md":case"markdown":l=await import("@codemirror/lang-markdown").then(d=>d.markdown());break;default:l=it.php()}return kt.set(f,l),l};class Yr{constructor(s){this.view=s,this.handleClick=this.handleClick.bind(this),this.view.dom.addEventListener("mousedown",this.handleClick)}handleClick(s){const f=s.target;if((f.classList.contains("cm-scroller")||f.classList.contains("cm-content"))&&this.view.posAtCoords({x:s.clientX,y:s.clientY})===null){const C=this.view.state.doc.length,d=Oe.EditorSelection.create([Oe.EditorSelection.range(C,C)]);this.view.dispatch({selection:d,effects:Se.EditorView.scrollIntoView(C,{y:"center"})}),this.view.focus(),s.preventDefault()}}destroy(){this.view.dom.removeEventListener("mousedown",this.handleClick)}}const Zr=Se.ViewPlugin.define(n=>new Yr(n)),At=e.forwardRef(function({code:s,onChange:f,currentPath:l,className:C,onSaveShortcut:d,readOnly:k=!1,additionalExtensions:A},F){const h=e.useRef(null),_=e.useRef(null),D=e.useRef(new Oe.Compartment),P=e.useRef(new Oe.Compartment),z=e.useRef(new Oe.Compartment),Z=e.useRef(s),S=e.useRef(f),q=e.useRef(!1);return e.useImperativeHandle(F,()=>({focus:()=>{var w;(w=_.current)==null||w.focus()},blur:()=>{const w=_.current;w&&w.contentDOM.blur()},getCursorPosition:()=>_.current?_.current.state.selection.main.anchor:null,setCursorPosition:w=>{if(!_.current)return;const R=Math.min(w,_.current.state.doc.length),U=Oe.EditorSelection.create([Oe.EditorSelection.range(R,R)]);_.current.dispatch({selection:U,scrollIntoView:!0})}})),e.useEffect(()=>{Z.current=s},[s]),e.useEffect(()=>{S.current=f},[f]),e.useEffect(()=>{if(_.current)return;const w=h.current;if(!w)return;const R=Oe.EditorState.create({doc:s,extensions:[z.current.of(A??[]),Se.lineNumbers(),Se.highlightActiveLineGutter(),Se.highlightActiveLine(),Ke.foldGutter(),Se.dropCursor(),Se.rectangularSelection(),Se.crosshairCursor(),Zr,D.current.of(it.php()),P.current.of(Se.EditorView.editable.of(!k)),Ke.syntaxHighlighting(Ke.defaultHighlightStyle),Ke.indentOnInput(),Ke.bracketMatching(),ht.closeBrackets(),pt.history(),It.highlightSelectionMatches(),ht.autocompletion(),Se.EditorView.updateListener.of(J=>{if(!J.docChanged)return;const ne=J.state.doc.toString();ne!==Z.current&&(Z.current=ne,S.current(ne))}),Se.keymap.of([{key:"Mod-s",preventDefault:!0,run:()=>(d==null||d(),!0)},...ht.closeBracketsKeymap,...ht.completionKeymap,...Ke.foldKeymap,...It.searchKeymap,...pt.historyKeymap,...pt.defaultKeymap,pt.indentWithTab])]}),U=new Se.EditorView({state:R,parent:w});return _.current=U,()=>{U.destroy(),_.current=null}},[]),e.useEffect(()=>{const w=_.current;w&&w.dispatch({effects:z.current.reconfigure(A??[])})},[A]),e.useEffect(()=>{const w=_.current;if(!w)return;const R=w.state.doc.toString();s!==R&&w.dispatch({changes:{from:0,to:w.state.doc.length,insert:s}})},[s]),e.useEffect(()=>{var ne;const w=_.current;if(!w)return;const R=(ne=l==null?void 0:l.split(".").pop())==null?void 0:ne.toLowerCase();(!R||R==="php")&&w.dispatch({effects:D.current.reconfigure(it.php())});let J=!1;return Gr(l).then(y=>{J||!_.current||_.current.dispatch({effects:D.current.reconfigure(y)})}),()=>{J=!0}},[l]),e.useEffect(()=>{const w=_.current;w&&(w.hasFocus&&(q.current=!0),w.dispatch({effects:P.current.reconfigure(Se.EditorView.editable.of(!k))}))},[k]),e.useLayoutEffect(()=>{const w=_.current;w&&q.current&&!w.hasFocus&&(w.focus(),q.current=!1)},[l,k]),e.createElement("div",{ref:h,className:C})});At.displayName="CodeEditor";const Kr="_fileExplorerContainer_8eol9_1",Jr="_dropActive_8eol9_9",Xr="_fileExplorerHeader_8eol9_14",Qr="_fileExplorerTitle_8eol9_23",en="_fileExplorerActions_8eol9_31",tn="_fileExplorerButton_8eol9_37",rn="_fileExplorerIconButton_8eol9_67",nn="_fileExplorerTree_8eol9_79",an="_dockPresentation_8eol9_88",on="_fileExplorerUploadButton_8eol9_148",Ce={fileExplorerContainer:Kr,dropActive:Jr,fileExplorerHeader:Xr,fileExplorerTitle:Qr,fileExplorerActions:en,fileExplorerButton:tn,fileExplorerIconButton:rn,fileExplorerTree:nn,dockPresentation:an,fileExplorerUploadButton:on},Ft=1024*1024,Ut=n=>{const s=n.byteLength;for(let f=0;f<Math.min(s,4096);f++)if(n[f]===0)return!0;try{return new TextDecoder("utf-8",{fatal:!0}).decode(n),!1}catch{return!0}},Dt=(n,s)=>{const f=new Blob([n]),l=URL.createObjectURL(f);return setTimeout(()=>URL.revokeObjectURL(l),6e4),{url:l,filename:s}};async function sn(n,s=Ft){const f=ln(n);if(f!==void 0&&f>s)return{type:"too-large"};if(typeof n.stream=="function")return cn(n,s);const l=new Uint8Array(await n.arrayBuffer());return l.byteLength>s?{type:"too-large"}:{type:"inline",data:l}}function ln(n){if(typeof n.filesize=="number")return n.filesize;if(typeof n.size=="number")return n.size}async function cn(n,s){const f=n.stream().getReader(),l=[];let C=0;try{for(;;){const{done:d,value:k}=await f.read();if(d)return{type:"inline",data:H.concatUint8Arrays(l)};if(k){if(C+=k.byteLength,C>s)return await f.cancel().catch(()=>{}),{type:"too-large"};l.push(k)}}}finally{f.releaseLock()}}const qt=n=>{const s=n.split(".").pop();return Mt[s]||Mt._default},Gt=n=>n.startsWith("image/")||n.startsWith("video/")||n.startsWith("audio/");function Yt({filesystem:n,currentPath:s,selectedDirPath:f,setSelectedDirPath:l,onFileOpened:C,onSelectionCleared:d,onShowMessage:k,documentRoot:A,readOnly:F=!1,title:h="Files",showBinaryPreviewHeader:_=!0,dockPresentation:D=!1,useWordPressTooltips:P=!1}){const z=e.useRef(null),Z=e.useRef(null),S=e.useMemo(()=>s?H.dirname(s):f??A,[s,A]),[q,w]=e.useState(!1);e.useEffect(()=>{!s||!z.current||(l(H.dirname(s)),z.current.focusPath(s,{select:!0,domFocus:!1,notify:!1}),z.current.expandToPath(s))},[s,l]);const R=async(y,j)=>{try{const O=await n.read(y),V=await sn(O);if(V.type==="too-large"){const G=Ft/1024/1024;if(!D){await k(y,e.createElement(e.Fragment,null,e.createElement("p",null,`File too large to open (>${G}MB).`),e.createElement("p",null,"Open or download it outside the in-browser editor.")));return}const M=H.basename(y)||"download";await k(y,e.createElement(e.Fragment,null,e.createElement("p",null,`File too large to open (>${G}MB).`),e.createElement("p",null,e.createElement(X.Button,{type:"button",variant:"link",onClick:()=>{U(y,M)}},"Download ",M))));return}const p=V.data,N=H.basename(y)||"download";if(Ut(p)){const G=qt(N),{url:M,filename:ae}=Dt(p,N);if(Gt(G)){const Q=new Blob([p],{type:G}),he=URL.createObjectURL(Q);await k(y,e.createElement(Lt.BinaryFilePreview,{filename:ae,mimeType:G,dataUrl:he,downloadUrl:M,showHeader:_}));return}await k(y,e.createElement(e.Fragment,null,e.createElement("p",null,"Binary file. Cannot be edited."),e.createElement("p",null,e.createElement("a",{href:M,download:ae},"Download ",ae))));return}const le=new TextDecoder("utf-8").decode(p);await C(y,le,j)}catch(O){Je.logger.error("Could not open file",O),await k(null,"Could not open file.")}},U=async(y,j)=>{try{const O=await n.read(y),V=new Uint8Array(await O.arrayBuffer()),{url:p}=Dt(V,j),N=document.createElement("a");N.href=p,N.download=j,document.body.appendChild(N),N.click(),document.body.removeChild(N)}catch(O){Je.logger.error("Could not download file",O),await k(y,"Could not download file.")}},J=y=>{var O;const j=Array.from(y.target.files??[]);y.target.value="",j.length!==0&&((O=z.current)==null||O.importFiles(j,f??A).catch(V=>Je.logger.error("Failed to import files",V)))},ne=y=>{var j;y.dataTransfer.types.includes("application/x-wp-playground-path")||(y.preventDefault(),!F&&((j=z.current)==null||j.importDataTransfer(y.dataTransfer,f??A).catch(O=>Je.logger.error("Failed to import dropped files",O))))};return e.createElement("div",{className:De(Ce.fileExplorerContainer,{[Ce.dropActive]:q,[Ce.dockPresentation]:D}),onDragEnter:y=>{y.dataTransfer.types.includes("application/x-wp-playground-path")||(y.preventDefault(),F||w(!0))},onDragOver:y=>{y.dataTransfer.types.includes("application/x-wp-playground-path")||(y.preventDefault(),y.dataTransfer.dropEffect=F?"none":"copy")},onDragLeave:y=>{const j=y.relatedTarget;(!j||!y.currentTarget.contains(j))&&w(!1)},onDropCapture:()=>w(!1),onDrop:ne},e.createElement("div",{className:Ce.fileExplorerHeader},e.createElement("span",{className:Ce.fileExplorerTitle},h),F?null:e.createElement("div",{className:Ce.fileExplorerActions},e.createElement(Pt,{label:"Create new file",useWordPressTooltip:P},e.createElement("button",{className:De(Ce.fileExplorerButton,Ce.fileExplorerIconButton),type:"button",onClick:()=>{z.current&&z.current.createFile()},"aria-label":"Create new file",title:P?void 0:"Create new file"},D?e.createElement(un,null):e.createElement(X.Icon,{icon:wr,size:20}))),e.createElement(Pt,{label:"Create new folder",useWordPressTooltip:P},e.createElement("button",{className:De(Ce.fileExplorerButton,Ce.fileExplorerIconButton),type:"button",onClick:()=>{z.current&&z.current.createFolder()},"aria-label":"Create new folder",title:P?void 0:"Create new folder"},D?e.createElement(fn,null):e.createElement(X.Icon,{icon:vr,size:20}))),e.createElement(Pt,{label:"Upload files",useWordPressTooltip:P},e.createElement("button",{className:De(Ce.fileExplorerButton,Ce.fileExplorerIconButton,Ce.fileExplorerUploadButton),type:"button",onClick:()=>{var y;return(y=Z.current)==null?void 0:y.click()},"aria-label":"Upload files",title:P?void 0:"Upload files"},e.createElement(X.Icon,{icon:Er,size:D?16:20}))),e.createElement("input",{ref:Z,type:"file",multiple:!0,style:{display:"none"},onChange:J}))),e.createElement("div",{className:Ce.fileExplorerTree},e.createElement(Lt.FilePickerTree,{ref:z,readOnly:F,filesystem:n,root:A,initialSelectedPath:S,onSelect:async y=>{if(!y){l(A),await d();return}try{if(await n.isDir(y)){l(y);return}}catch{}l(H.dirname(y)),await R(y,!1)},onDoubleClickFile:async y=>{await R(y,!0)}})))}function Pt({label:n,useWordPressTooltip:s,children:f}){return s?e.createElement(X.Tooltip,{text:n,delay:0,placement:"top"},f):f}const un=()=>e.createElement("svg",{viewBox:"0 0 32 32",width:"24",height:"24","aria-hidden":"true"},e.createElement("path",{d:"M11 6h7l5 5v12a2 2 0 0 1-2 2H11a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2z",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinejoin:"round"}),e.createElement("path",{d:"M18 6v5h5",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinejoin:"round"}),e.createElement("g",{transform:"translate(19 19)"},e.createElement("circle",{cx:"5",cy:"5",r:"8",fill:"var(--paper-2, #fff)"}),e.createElement("path",{d:"M5 1.5v7M1.5 5h7",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"}))),fn=()=>e.createElement("svg",{viewBox:"0 0 32 32",width:"24",height:"24","aria-hidden":"true"},e.createElement("path",{d:"M6 9h7l3 3h10v11a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2V9z",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinejoin:"round"}),e.createElement("path",{d:"M6 9V8a2 2 0 0 1 2-2h5l3 3",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinejoin:"round"}),e.createElement("g",{transform:"translate(19 19)"},e.createElement("circle",{cx:"5",cy:"5",r:"8",fill:"var(--paper-2, #fff)"}),e.createElement("path",{d:"M5 1.5v7M1.5 5h7",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"}))),dn="_container_18l2z_1",mn="_content_18l2z_9",pn="_sidebarWrapper_18l2z_17",hn="_editorWrapper_18l2z_28",vn="_editorHeader_18l2z_37",wn="_editorPath_18l2z_49",En="_editorPathDirectory_18l2z_61",gn="_editorPathFilename_18l2z_68",yn="_editorPathPlaceholder_18l2z_73",_n="_editorPathPortaled_18l2z_77",bn="_editorHeaderActions_18l2z_83",Cn="_saveStatus_18l2z_90",Rn="_saveStatusSaving_18l2z_97",xn="_saveStatusPending_18l2z_98",Sn="_saveStatusError_18l2z_102",kn="_editor_18l2z_28",Pn="_placeholder_18l2z_124",Tn="_messageArea_18l2z_135",Dn="_mobileToggle_18l2z_171",An="_mobileOverlay_18l2z_175",Fn="_dockPresentation_18l2z_181",Nn="_dockDirtyIndicator_18l2z_205",In="_dockSaveButton_18l2z_214",Ln="_sidebarOpen_18l2z_269",Mn="_editorHeaderPathPortaled_18l2z_367",K={container:dn,content:mn,sidebarWrapper:pn,editorWrapper:hn,editorHeader:vn,editorPath:wn,editorPathDirectory:En,editorPathFilename:gn,editorPathPlaceholder:yn,editorPathPortaled:_n,editorHeaderActions:bn,saveStatus:Cn,saveStatusSaving:Rn,saveStatusPending:xn,saveStatusError:Sn,editor:kn,placeholder:Pn,messageArea:Tn,mobileToggle:Dn,mobileOverlay:An,dockPresentation:Fn,dockDirtyIndicator:Nn,dockSaveButton:In,sidebarOpen:Ln,editorHeaderPathPortaled:Mn},Bn=1500,jn=700,On=1e3,L={IDLE:"idle",PENDING:"pending",SAVING:"saving",SAVED:"saved",ERROR:"error"};function Vn({filesystem:n,isVisible:s=!0,documentRoot:f,initialPath:l=null,placeholderText:C="Select a file to view or edit its contents.",dockPresentation:d=!1,mobileHeaderTarget:k=null}){const[A,F]=e.useState(f),[h,_]=e.useState(null),[D,P]=e.useState(""),[z,Z]=e.useState(!0),[S,q]=e.useState(L.IDLE),[w,R]=e.useState(null),[U,J]=e.useState("idle"),[ne,y]=e.useState(!1),[j,O]=e.useState(null),V=e.useRef(null),p=e.useRef(null),N=e.useRef(!1),le=e.useRef(h),G=e.useRef(n),M=e.useRef(null),ae=e.useRef(null),Q=e.useRef(new WeakMap),he=e.useRef(!0),pe=e.useRef(new Map),Fe=e.useRef(!1);G.current=n,e.useEffect(()=>{le.current=h},[h]);const ke=e.useCallback(async b=>{const{filesystem:T,path:oe,content:ie}=b,ce=ae.current===b,ye=Q.current,we=(ye.get(T)??Promise.resolve()).catch(()=>{}).then(()=>T.writeFile(oe,ie));ye.set(T,we);let Ie=!1;try{await we}catch(He){Ie=!0,Je.logger.error("Failed to save file",He)}const tt=he.current&&ye.get(T)===we&&G.current===T&&le.current===oe&&M.current===null;ye.get(T)===we&&ye.delete(T),ae.current===b&&(ae.current=null),tt&&(q(Ie?L.ERROR:L.SAVED),R(Ie?"Could not save changes. Try again.":null),ce&&J(Ie?"idle":"saved"))},[]),ee=e.useCallback(()=>{const b=M.current;b&&(p.current!==null&&(window.clearTimeout(p.current),p.current=null),M.current=null,ke(b))},[ke]);e.useEffect(()=>(he.current=!0,()=>{he.current=!1}),[]),e.useEffect(()=>()=>{var b;((b=M.current)==null?void 0:b.filesystem)===n&&ee()},[f,n,ee]),e.useEffect(()=>{N.current=!0,F(f),P(""),_(null),Z(!0),q(L.IDLE),R(null),y(!1),O(null),pe.current.clear(),Fe.current=!1},[f,n]),e.useEffect(()=>{if(!n||!l||Fe.current)return;let b=!1;return(async()=>{try{if(await n.fileExists(l)&&!b){const ie=await n.readFileAsText(l);if(b)return;N.current=!0,_(l),P(ie),Z(!1),q(L.IDLE),R(null),setTimeout(()=>{var ce;(ce=V.current)==null||ce.focus()},100)}}catch(oe){Je.logger.debug("Could not auto-open initial path:",oe)}finally{b||(Fe.current=!0)}})(),()=>{b=!0}},[n,l]),e.useEffect(()=>{if(!n||!h){p.current!==null&&(window.clearTimeout(p.current),p.current=null),M.current=null,h||q(L.IDLE);return}if(N.current){N.current=!1,M.current=null;return}p.current!==null&&(window.clearTimeout(p.current),p.current=null),q(L.PENDING);const b={filesystem:n,path:h,content:D};M.current=b;const T=window.setTimeout(()=>{M.current===b&&(p.current=null,M.current=null,q(L.SAVING),ke(b))},Bn);return p.current=T,()=>{p.current===T&&(window.clearTimeout(T),p.current=null)}},[D,h,n,ke]),e.useEffect(()=>{if(S!==L.SAVED)return;const b=window.setTimeout(()=>{q(T=>T===L.SAVED?L.IDLE:T)},2e3);return()=>window.clearTimeout(b)},[S]),e.useEffect(()=>{U==="idle"||S===L.SAVING||S===L.SAVED||J("idle")},[U,S]),e.useEffect(()=>{if(U!=="saved")return;const b=window.setTimeout(()=>J("idle"),On);return()=>window.clearTimeout(b)},[U]),e.useEffect(()=>{if(U!=="waiting")return;const b=window.setTimeout(()=>J(T=>T==="waiting"?"saving":T),jn);return()=>window.clearTimeout(b)},[U]);const Le=e.useCallback(async(b,T,oe=!0)=>{var ce;const ie=(ce=V.current)==null?void 0:ce.getCursorPosition();ie!=null&&le.current&&pe.current.set(le.current,ie),N.current=!0,_(b),P(T),O(null),Z(!1),q(L.IDLE),R(null),y(!1),setTimeout(()=>{var Ve,we,Ie;const ye=pe.current.get(b);ye!==void 0&&((Ve=V.current)==null||Ve.setCursorPosition(ye)),oe?(we=V.current)==null||we.focus():(Ie=V.current)==null||Ie.blur()},50)},[]);e.useEffect(()=>{var oe;if(!h)return;const b=setInterval(()=>{var ce;const ie=(ce=V.current)==null?void 0:ce.getCursorPosition();ie!=null&&pe.current.set(h,ie)},1e3),T=(oe=V.current)==null?void 0:oe.getCursorPosition();return T!=null&&pe.current.set(h,T),()=>{var ce;clearInterval(b);const ie=(ce=V.current)==null?void 0:ce.getCursorPosition();ie!=null&&pe.current.set(h,ie)}},[h]),e.useEffect(()=>{if(!s||!h)return;const b=setTimeout(()=>{var oe;const T=pe.current.get(h);T!==void 0&&((oe=V.current)==null||oe.setCursorPosition(T))},100);return()=>clearTimeout(b)},[s,h]);const te=e.useCallback(async()=>{var T;const b=(T=V.current)==null?void 0:T.getCursorPosition();b!=null&&le.current&&pe.current.set(le.current,b),N.current=!0,_(null),P(""),O(null),Z(!0),q(L.IDLE),R(null)},[]),Be=e.useCallback(async(b,T)=>{N.current=!0,_(null),typeof T=="string"?(P(T),O(null)):(P(""),O(T)),Z(!0),q(L.IDLE),R(null),y(!1)},[]),ge=e.useCallback(()=>{M.current&&(ae.current=M.current,J("waiting"),q(L.SAVING),ee())},[ee]),xe=e.useCallback(()=>{!M.current&&S===L.ERROR&&n&&h&&(M.current={filesystem:n,path:h,content:D}),M.current&&(R(null),ge())},[D,h,n,ge,S]),Ne=zn(S,w),Pe=$n(S,K),fe=Wn(S);let $="Save";S===L.ERROR?$="Retry":S===L.SAVED&&U==="saved"?$="Saved":S===L.SAVING&&U==="saving"&&($="Saving…");const E=S===L.PENDING||S===L.SAVING||S===L.ERROR;if(!n)return e.createElement("div",{className:De(K.container,{[K.dockPresentation]:d})},e.createElement("div",{className:K.placeholder},C));const me=h?H.dirname(h):null,de=h?H.basename(h):null,ve=e.createElement("div",{className:De(K.editorPath,{[K.editorPathPlaceholder]:!(h!=null&&h.length),[K.editorPathPortaled]:k}),title:h??void 0},me&&de?e.createElement(e.Fragment,null,e.createElement("span",{className:K.editorPathDirectory},me==="/"?"":me),e.createElement("span",{className:K.editorPathFilename},"/",de)):`Browse files under ${f}`);return e.createElement("div",{className:De(K.container,{[K.dockPresentation]:d})},e.createElement("div",{className:De(K.content,{[K.sidebarOpen]:ne})},e.createElement("div",{className:K.mobileOverlay,onClick:()=>y(!1)}),e.createElement("aside",{className:K.sidebarWrapper},e.createElement(Yt,{filesystem:n,currentPath:h,selectedDirPath:A,setSelectedDirPath:F,onFileOpened:Le,onSelectionCleared:te,onShowMessage:Be,documentRoot:f,dockPresentation:d,useWordPressTooltips:d})),e.createElement("section",{className:K.editorWrapper},e.createElement("div",{className:De(K.editorHeader,{[K.editorHeaderPathPortaled]:k})},e.createElement(X.Button,{className:K.mobileToggle,variant:"secondary",onClick:()=>y(b=>!b)},ne?"Hide files":"Browse files"),k?ar.createPortal(ve,k):ve,d&&!z&&h?e.createElement("div",{className:K.editorHeaderActions},E?e.createElement("span",{className:K.dockDirtyIndicator,"aria-hidden":"true"}):null,e.createElement(X.Tooltip,{text:fe,placement:"top"},e.createElement(X.Button,{variant:"secondary",className:K.dockSaveButton,isDestructive:S===L.ERROR,onClick:xe},$))):d?null:e.createElement("div",{className:De(K.saveStatus,Pe)},Ne),d&&!z&&h?e.createElement(X.VisuallyHidden,{role:"status","aria-live":"polite"},fe):null),w?e.createElement("div",{style:{padding:"8px 16px"}},e.createElement(X.Notice,{status:"error",isDismissible:!1},w)):null,h||D||j?j?e.createElement("div",{className:K.messageArea},j):e.createElement(At,{ref:V,code:D,onChange:P,currentPath:h,className:K.editor,onSaveShortcut:ge,readOnly:z}):e.createElement("div",{className:K.placeholder},C))))}function zn(n,s){switch(n){case L.PENDING:case L.SAVING:return"Saving…";case L.SAVED:return"Saved";case L.ERROR:return s??"Save failed";default:return""}}function $n(n,s){switch(n){case L.PENDING:return s.saveStatusPending;case L.SAVING:return s.saveStatusSaving;case L.ERROR:return s.saveStatusError;default:return}}function Wn(n){switch(n){case L.PENDING:return"Unsaved changes. Click to save now.";case L.SAVING:return"Saving changes…";case L.ERROR:return"Saving failed. Click to retry.";default:return"All changes saved."}}exports.BinaryFilePreview=qr;exports.ClockIcon=lr;exports.CodeEditor=At;exports.FileExplorerSidebar=Yt;exports.FilePickerControl=Ir;exports.FilePickerTree=Wt;exports.MAX_INLINE_FILE_BYTES=Ft;exports.PlaygroundFileEditor=Vn;exports.SiteManagerIcon=fr;exports.WordPressIcon=sr;exports.createDownloadUrl=Dt;exports.file=$t;exports.folder=zt;exports.getLogoDataURL=ur;exports.getMimeType=qt;exports.isPreviewableBinary=Gt;exports.layout=cr;exports.playgroundLogo=or;exports.seemsLikeBinary=Ut;exports.temporaryStorage=ir;
31
31
  //# sourceMappingURL=index.cjs.map