@wp-playground/components 3.1.55 → 3.1.56

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.
@@ -5,6 +5,11 @@ export type FileNode = {
5
5
  type: 'file' | 'folder';
6
6
  children?: FileNode[];
7
7
  };
8
+ /** A small icon + tooltip shown next to a specific file/folder path. */
9
+ export type PathBadge = {
10
+ icon: React.ReactNode;
11
+ tooltip: string;
12
+ };
8
13
  export type FilePickerTreeProps = {
9
14
  withContextMenu?: boolean;
10
15
  /** Disables filesystem mutations while preserving selection and previews. */
@@ -14,6 +19,22 @@ export type FilePickerTreeProps = {
14
19
  initialSelectedPath?: string;
15
20
  onSelect?: (path: string | null) => void;
16
21
  onDoubleClickFile?: (path: string) => void;
22
+ /** Badges to render next to specific paths, keyed by absolute path. */
23
+ pathBadges?: Record<string, PathBadge>;
24
+ /**
25
+ * Called when the user picks "Mount via git…" from the context menu on
26
+ * the top-level `wp-content/plugins` or `wp-content/themes` folder.
27
+ * Host-agnostic — the repository can be on GitHub, GitLab, or any other
28
+ * git remote.
29
+ */
30
+ onMountFromGit?: (kind: 'plugin' | 'theme', parentPath: string) => void;
31
+ /**
32
+ * Called after a folder is successfully renamed (not for files).
33
+ * Awaited before the rename operation settles, so a caller that persists
34
+ * provenance keyed by path (e.g. git-mount metadata) can serialize
35
+ * consecutive renames instead of racing a stale read of its own state.
36
+ */
37
+ onPathRenamed?: (oldPath: string, newPath: string) => void | Promise<void>;
17
38
  };
18
39
  export type FilePickerTreeHandle = {
19
40
  focusPath: (path: string, options?: {
@@ -25,6 +46,7 @@ export type FilePickerTreeHandle = {
25
46
  getSelectedPath: () => string | null;
26
47
  expandToPath: (path: string) => Promise<void>;
27
48
  refresh: (path: string) => Promise<FileNode[] | undefined>;
49
+ revealPath: (path: string) => Promise<void>;
28
50
  remapPath: (from: string, to: string) => void;
29
51
  createFile: (absSelectedPath?: string) => Promise<void>;
30
52
  createFolder: (absSelectedPath?: string) => Promise<void>;
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ export interface MountGitDirectorySubmission {
3
+ url: string;
4
+ ref: string;
5
+ path?: string;
6
+ }
7
+ /**
8
+ * Prompts for a git repository to mount a plugin/theme directory from.
9
+ * Host-agnostic by design — the repository can be on GitHub, GitLab, or any
10
+ * other git remote reachable over HTTPS. The install location
11
+ * (`wp-content/plugins` or `wp-content/themes`) and the mounted folder's
12
+ * name are both inferred, not asked for here.
13
+ */
14
+ export declare function MountGitDirectoryModal({ kind, isBusy, error, onSubmit, onCancel, }: {
15
+ kind: 'plugin' | 'theme';
16
+ isBusy: boolean;
17
+ error: string | null;
18
+ onSubmit: (submission: MountGitDirectorySubmission) => void;
19
+ onCancel: () => void;
20
+ }): React.JSX.Element;
@@ -1,4 +1,5 @@
1
1
  import React, { type Dispatch, type SetStateAction } from 'react';
2
+ import { type PathBadge } from '../index.ts';
2
3
  import type { AsyncWritableFilesystem } from '../../../storage/src/index.ts';
3
4
  export type FileExplorerSidebarProps = {
4
5
  filesystem: AsyncWritableFilesystem;
@@ -15,8 +16,20 @@ export type FileExplorerSidebarProps = {
15
16
  showBinaryPreviewHeader?: boolean;
16
17
  dockPresentation?: boolean;
17
18
  useWordPressTooltips?: boolean;
19
+ /** Badges to render next to specific paths in the file tree, keyed by absolute path. */
20
+ pathBadges?: Record<string, PathBadge>;
21
+ /** See `FilePickerTreeProps.onMountFromGit`. */
22
+ onMountFromGit?: (kind: 'plugin' | 'theme', parentPath: string) => void;
23
+ /** See `FilePickerTreeProps.onPathRenamed`. */
24
+ onPathRenamed?: (oldPath: string, newPath: string) => void | Promise<void>;
25
+ };
26
+ export type FileExplorerSidebarHandle = {
27
+ /** Re-fetches a folder's children, e.g. after writing files outside the tree's own UI. */
28
+ refreshPath: (path: string) => Promise<void>;
29
+ /** Expands, selects, and scrolls an externally created path into view. */
30
+ revealPath: (path: string) => Promise<void>;
18
31
  };
19
32
  /**
20
33
  * Renders the file explorer and opens selected files in the editor preview area.
21
34
  */
22
- export declare function FileExplorerSidebar({ filesystem, currentPath, selectedDirPath, setSelectedDirPath, onFileOpened, onSelectionCleared, onShowMessage, documentRoot, readOnly, title, mobileSubsectionTitle, showBinaryPreviewHeader, dockPresentation, useWordPressTooltips, }: FileExplorerSidebarProps): React.JSX.Element;
35
+ export declare const FileExplorerSidebar: React.ForwardRefExoticComponent<FileExplorerSidebarProps & React.RefAttributes<FileExplorerSidebarHandle>>;
@@ -1,4 +1,4 @@
1
1
  export { CodeEditor, type CodeEditorHandle, type CodeEditorProps, } from './code-editor';
2
- export { FileExplorerSidebar, type FileExplorerSidebarProps, } from './file-explorer-sidebar';
3
- export { PlaygroundFileEditor, type PlaygroundFileEditorProps, } from './playground-file-editor';
2
+ export { FileExplorerSidebar, type FileExplorerSidebarHandle, type FileExplorerSidebarProps, } from './file-explorer-sidebar';
3
+ export { PlaygroundFileEditor, type PlaygroundFileEditorHandle, type PlaygroundFileEditorProps, } from './playground-file-editor';
4
4
  export { MAX_INLINE_FILE_BYTES, seemsLikeBinary, createDownloadUrl, getMimeType, isPreviewableBinary, } from './file-utils';
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import type { AsyncWritableFilesystem } from '../../../storage/src/index.ts';
3
+ import type { PathBadge } from '../FilePickerTree';
3
4
  export type PlaygroundFileEditorProps = {
4
5
  filesystem: AsyncWritableFilesystem | null;
5
6
  isVisible?: boolean;
@@ -9,10 +10,22 @@ export type PlaygroundFileEditorProps = {
9
10
  dockPresentation?: boolean;
10
11
  /** Mobile Dock title row where the current path should be rendered. */
11
12
  mobileHeaderTarget?: Element | null;
13
+ /** Badges to render next to specific paths in the file tree, keyed by absolute path. */
14
+ pathBadges?: Record<string, PathBadge>;
15
+ /** See `FilePickerTreeProps.onMountFromGit`. */
16
+ onMountFromGit?: (kind: 'plugin' | 'theme', parentPath: string) => void;
17
+ /** See `FilePickerTreeProps.onPathRenamed`. */
18
+ onPathRenamed?: (oldPath: string, newPath: string) => void | Promise<void>;
19
+ };
20
+ export type PlaygroundFileEditorHandle = {
21
+ /** Re-fetches a folder's children, e.g. after writing files outside the tree's own UI. */
22
+ refreshPath: (path: string) => Promise<void>;
23
+ /** Expands, selects, and scrolls an externally created path into view. */
24
+ revealPath: (path: string) => Promise<void>;
12
25
  };
13
26
  /**
14
27
  * A reusable file browser component with a file tree on the left and
15
28
  * a code editor on the right. Supports auto-save with debouncing,
16
29
  * cursor position preservation, and binary file handling.
17
30
  */
18
- export declare function PlaygroundFileEditor({ filesystem, isVisible, documentRoot, initialPath, placeholderText, dockPresentation, mobileHeaderTarget, }: PlaygroundFileEditorProps): React.JSX.Element;
31
+ export declare const PlaygroundFileEditor: React.ForwardRefExoticComponent<PlaygroundFileEditorProps & React.RefAttributes<PlaygroundFileEditorHandle>>;
package/index.cjs CHANGED
@@ -1,4 +1,4 @@
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 _ of Qt(s))!tr.call(n,_)&&_!==f&&Nt(n,_,{get:()=>s[_],enumerable:!(l=Xt(s,_))||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"),U=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"})),$t=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"})),Wt=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={};/**
1
+ "use strict";var Qt=Object.create;var Ft=Object.defineProperty;var er=Object.getOwnPropertyDescriptor;var tr=Object.getOwnPropertyNames;var rr=Object.getPrototypeOf,nr=Object.prototype.hasOwnProperty;var ar=(i,s,f,u)=>{if(s&&typeof s=="object"||typeof s=="function")for(let w of tr(s))!nr.call(i,w)&&w!==f&&Ft(i,w,{get:()=>s[w],enumerable:!(u=er(s,w))||u.enumerable});return i};var ot=(i,s,f)=>(f=i!=null?Qt(rr(i)):{},ar(s||!i||!i.__esModule?Ft(f,"default",{value:i,enumerable:!0}):f,i));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react"),U=require("@php-wasm/util"),z=require("@wordpress/components"),Ae=require("classnames"),Ht=require("react-dom"),Ue=require("@php-wasm/logger"),Et=require("@wordpress/element"),or=require("clsx"),Ve=require("@codemirror/state"),Pe=require("@codemirror/view"),wt=require("@codemirror/commands"),It=require("@codemirror/search"),vt=require("@codemirror/autocomplete"),Ke=require("@codemirror/language"),lt=require("@codemirror/lang-php"),Mt=require("@wp-playground/components"),Lt=require("@php-wasm/universal/mime-types"),ir=i=>t.createElement("svg",{width:"32",height:"32",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg",...i},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"})),sr=i=>t.createElement("svg",{width:"16",height:"17",viewBox:"0 0 16 17",fill:"none",xmlns:"http://www.w3.org/2000/svg",...i},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"})),lr=i=>t.createElement("svg",{width:"20",height:"21",viewBox:"0 0 20 21",fill:"none",xmlns:"http://www.w3.org/2000/svg",...i},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"})),Wt=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"})),Ut=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"})),cr=i=>t.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"18",height:"18",viewBox:"0 0 14 14",fill:"none",...i},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"})),ur=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 fr(i){return`data:${i.mime};base64,${i.data}`}function dr({size:i=24,sidebarActive:s=!1}){return t.createElement("svg",{width:i,height:i,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"}),s?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 jt=Et.forwardRef(({icon:i,size:s=24,...f},u)=>Et.cloneElement(i,{width:s,height:s,...f,ref:u}));var Tt={exports:{}},it={};/**
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 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,_=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,d={key:!0,ref:!0,__self:!0,__source:!0};function k(A,T,v){var D,b={},S=null,G=null;v!==void 0&&(S=""+v),T.key!==void 0&&(S=""+T.key),T.ref!==void 0&&(G=T.ref);for(D in T)l.call(T,D)&&!d.hasOwnProperty(D)&&(b[D]=T[D]);if(A&&A.defaultProps)for(D in T=A.defaultProps,T)b[D]===void 0&&(b[D]=T[D]);return{$$typeof:s,type:A,key:S,ref:G,props:b,_owner:_.current}}return at.Fragment=f,at.jsx=k,at.jsxs=k,at}var ot={};/**
9
+ */var Ot;function mr(){if(Ot)return it;Ot=1;var i=t,s=Symbol.for("react.element"),f=Symbol.for("react.fragment"),u=Object.prototype.hasOwnProperty,w=i.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,h={key:!0,ref:!0,__self:!0,__source:!0};function C(g,R,b){var D,P={},F=null,X=null;b!==void 0&&(F=""+b),R.key!==void 0&&(F=""+R.key),R.ref!==void 0&&(X=R.ref);for(D in R)u.call(R,D)&&!h.hasOwnProperty(D)&&(P[D]=R[D]);if(g&&g.defaultProps)for(D in R=g.defaultProps,R)P[D]===void 0&&(P[D]=R[D]);return{$$typeof:s,type:g,key:F,ref:X,props:P,_owner:w.current}}return it.Fragment=f,it.jsx=C,it.jsxs=C,it}var st={};/**
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 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"),_=Symbol.for("react.strict_mode"),d=Symbol.for("react.profiler"),k=Symbol.for("react.provider"),A=Symbol.for("react.context"),T=Symbol.for("react.forward_ref"),v=Symbol.for("react.suspense"),D=Symbol.for("react.suspense_list"),b=Symbol.for("react.memo"),S=Symbol.for("react.lazy"),G=Symbol.for("react.offscreen"),j=Symbol.iterator,x="@@iterator";function Y(t){if(t===null||typeof t!="object")return null;var c=j&&t[j]||t[x];return typeof c=="function"?c:null}var $=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function m(t){{for(var c=arguments.length,p=new Array(c>1?c-1:0),R=1;R<c;R++)p[R-1]=arguments[R];O("error",t,p)}}function O(t,c,p){{var R=$.ReactDebugCurrentFrame,H=R.getStackAddendum();H!==""&&(c+="%s",p=p.concat([H]));var q=p.map(function(B){return String(B)});q.unshift("Warning: "+c),Function.prototype.apply.call(console[t],console,q)}}var K=!1,le=!1,Q=!1,E=!1,V=!1,F;F=Symbol.for("react.module.reference");function h(t){return!!(typeof t=="string"||typeof t=="function"||t===l||t===d||V||t===_||t===v||t===D||E||t===G||K||le||Q||typeof t=="object"&&t!==null&&(t.$$typeof===S||t.$$typeof===b||t.$$typeof===k||t.$$typeof===A||t.$$typeof===T||t.$$typeof===F||t.getModuleId!==void 0))}function M(t,c,p){var R=t.displayName;if(R)return R;var H=c.displayName||c.name||"";return H!==""?p+"("+H+")":p}function z(t){return t.displayName||"Context"}function te(t){if(t==null)return null;if(typeof t.tag=="number"&&m("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 _:return"StrictMode";case v:return"Suspense";case D:return"SuspenseList"}if(typeof t=="object")switch(t.$$typeof){case A:var c=t;return z(c)+".Consumer";case k:var p=t;return z(p._context)+".Provider";case T:return M(t,t.render,"ForwardRef");case b:var R=t.displayName||null;return R!==null?R:te(t.type)||"Memo";case S:{var H=t,q=H._payload,B=H._init;try{return te(B(q))}catch{return null}}}return null}var I=Object.assign,ee=0,J,he,de,Fe,ke,re,Le;function ne(){}ne.__reactDisabledLog=!0;function Be(){{if(ee===0){J=console.log,he=console.info,de=console.warn,Fe=console.error,ke=console.group,re=console.groupCollapsed,Le=console.groupEnd;var t={configurable:!0,enumerable:!0,value:ne,writable:!0};Object.defineProperties(console,{info:t,log:t,warn:t,error:t,group:t,groupCollapsed:t,groupEnd:t})}ee++}}function ye(){{if(ee--,ee===0){var t={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:I({},t,{value:J}),info:I({},t,{value:he}),warn:I({},t,{value:de}),error:I({},t,{value:Fe}),group:I({},t,{value:ke}),groupCollapsed:I({},t,{value:re}),groupEnd:I({},t,{value:Le})})}ee<0&&m("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var Re=$.ReactCurrentDispatcher,Ne;function Pe(t,c,p){{if(Ne===void 0)try{throw Error()}catch(H){var R=H.stack.trim().match(/\n( *(at )?)/);Ne=R&&R[1]||""}return`
18
- `+Ne+t}}var fe=!1,W;{var g=typeof WeakMap=="function"?WeakMap:Map;W=new g}function pe(t,c){if(!t||fe)return"";{var p=W.get(t);if(p!==void 0)return p}var R;fe=!0;var H=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var q;q=Re.current,Re.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(Ce){R=Ce}Reflect.construct(t,[],B)}else{try{B.call()}catch(Ce){R=Ce}t.call(B.prototype)}}else{try{throw Error()}catch(Ce){R=Ce}t()}}catch(Ce){if(Ce&&R&&typeof Ce.stack=="string"){for(var N=Ce.stack.split(`
19
- `),Ee=R.stack.split(`
20
- `),se=N.length-1,ue=Ee.length-1;se>=1&&ue>=0&&N[se]!==Ee[ue];)ue--;for(;se>=1&&ue>=0;se--,ue--)if(N[se]!==Ee[ue]){if(se!==1||ue!==1)do if(se--,ue--,ue<0||N[se]!==Ee[ue]){var Te=`
21
- `+N[se].replace(" at new "," at ");return t.displayName&&Te.includes("<anonymous>")&&(Te=Te.replace("<anonymous>",t.displayName)),typeof t=="function"&&W.set(t,Te),Te}while(se>=1&&ue>=0);break}}}finally{fe=!1,Re.current=q,ye(),Error.prepareStackTrace=H}var Ze=t?t.displayName||t.name:"",We=Ze?Pe(Ze):"";return typeof t=="function"&&W.set(t,We),We}function me(t,c,p){return pe(t,!1)}function ve(t){var c=t.prototype;return!!(c&&c.isReactComponent)}function C(t,c,p){if(t==null)return"";if(typeof t=="function")return pe(t,ve(t));if(typeof t=="string")return Pe(t);switch(t){case v:return Pe("Suspense");case D:return Pe("SuspenseList")}if(typeof t=="object")switch(t.$$typeof){case T:return me(t.render);case b:return C(t.type,c,p);case S:{var R=t,H=R._payload,q=R._init;try{return C(q(H),c,p)}catch{}}}return""}var P=Object.prototype.hasOwnProperty,oe={},ie=$.ReactDebugCurrentFrame;function ce(t){if(t){var c=t._owner,p=C(t.type,t._source,c?c.type:null);ie.setExtraStackFrame(p)}else ie.setExtraStackFrame(null)}function _e(t,c,p,R,H){{var q=Function.call.bind(P);for(var B in t)if(q(t,B)){var N=void 0;try{if(typeof t[B]!="function"){var Ee=Error((R||"React class")+": "+p+" 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}N=t[B](c,B,R,p,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(se){N=se}N&&!(N instanceof Error)&&(ce(H),m("%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).",R||"React class",p,B,typeof N),ce(null)),N instanceof Error&&!(N.message in oe)&&(oe[N.message]=!0,ce(H),m("Failed %s type: %s",p,N.message),ce(null))}}}var Ve=Array.isArray;function we(t){return Ve(t)}function Ie(t){{var c=typeof Symbol=="function"&&Symbol.toStringTag,p=c&&t[Symbol.toStringTag]||t.constructor.name||"Object";return p}}function tt(t){try{return Ue(t),!1}catch{return!0}}function Ue(t){return""+t}function st(t){if(tt(t))return m("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",Ie(t)),Ue(t)}var lt=$.ReactCurrentOwner,wt={key:!0,ref:!0,__self:!0,__source:!0},ct,$e;function ze(t){if(P.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(P.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 p=function(){ct||(ct=!0,m("%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))};p.isReactWarning=!0,Object.defineProperty(t,"key",{get:p,configurable:!0})}}function _t(t,c){{var p=function(){$e||($e=!0,m("%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))};p.isReactWarning=!0,Object.defineProperty(t,"ref",{get:p,configurable:!0})}}var bt=function(t,c,p,R,H,q,B){var N={$$typeof:s,type:t,key:c,ref:p,props:B,_owner:q};return N._store={},Object.defineProperty(N._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(N,"_self",{configurable:!1,enumerable:!1,writable:!1,value:R}),Object.defineProperty(N,"_source",{configurable:!1,enumerable:!1,writable:!1,value:H}),Object.freeze&&(Object.freeze(N.props),Object.freeze(N)),N};function ut(t,c,p,R,H){{var q,B={},N=null,Ee=null;p!==void 0&&(st(p),N=""+p),Et(c)&&(st(c.key),N=""+c.key),ze(c)&&(Ee=c.ref,gt(c,H));for(q in c)P.call(c,q)&&!wt.hasOwnProperty(q)&&(B[q]=c[q]);if(t&&t.defaultProps){var se=t.defaultProps;for(q in se)B[q]===void 0&&(B[q]=se[q])}if(N||Ee){var ue=typeof t=="function"?t.displayName||t.name||"Unknown":t;N&&yt(B,ue),Ee&&_t(B,ue)}return bt(t,N,Ee,H,R,lt.current,B)}}var qe=$.ReactCurrentOwner,rt=$.ReactDebugCurrentFrame;function je(t){if(t){var c=t._owner,p=C(t.type,t._source,c?c.type:null);rt.setExtraStackFrame(p)}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=te(qe.current.type);if(t)return`
17
+ */var Bt;function pr(){return Bt||(Bt=1,process.env.NODE_ENV!=="production"&&function(){var i=t,s=Symbol.for("react.element"),f=Symbol.for("react.portal"),u=Symbol.for("react.fragment"),w=Symbol.for("react.strict_mode"),h=Symbol.for("react.profiler"),C=Symbol.for("react.provider"),g=Symbol.for("react.context"),R=Symbol.for("react.forward_ref"),b=Symbol.for("react.suspense"),D=Symbol.for("react.suspense_list"),P=Symbol.for("react.memo"),F=Symbol.for("react.lazy"),X=Symbol.for("react.offscreen"),K=Symbol.iterator,v="@@iterator";function Y(e){if(e===null||typeof e!="object")return null;var n=K&&e[K]||e[v];return typeof n=="function"?n:null}var k=i.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function m(e){{for(var n=arguments.length,l=new Array(n>1?n-1:0),p=1;p<n;p++)l[p-1]=arguments[p];A("error",e,l)}}function A(e,n,l){{var p=k.ReactDebugCurrentFrame,T=p.getStackAddendum();T!==""&&(n+="%s",l=l.concat([T]));var M=l.map(function(N){return String(N)});M.unshift("Warning: "+n),Function.prototype.apply.call(console[e],console,M)}}var j=!1,I=!1,H=!1,te=!1,re=!1,J;J=Symbol.for("react.module.reference");function ne(e){return!!(typeof e=="string"||typeof e=="function"||e===u||e===h||re||e===w||e===b||e===D||te||e===X||j||I||H||typeof e=="object"&&e!==null&&(e.$$typeof===F||e.$$typeof===P||e.$$typeof===C||e.$$typeof===g||e.$$typeof===R||e.$$typeof===J||e.getModuleId!==void 0))}function y(e,n,l){var p=e.displayName;if(p)return p;var T=n.displayName||n.name||"";return T!==""?l+"("+T+")":l}function d(e){return e.displayName||"Context"}function S(e){if(e==null)return null;if(typeof e.tag=="number"&&m("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 u:return"Fragment";case f:return"Portal";case h:return"Profiler";case w:return"StrictMode";case b:return"Suspense";case D:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case g:var n=e;return d(n)+".Consumer";case C:var l=e;return d(l._context)+".Provider";case R:return y(e,e.render,"ForwardRef");case P:var p=e.displayName||null;return p!==null?p:S(e.type)||"Memo";case F:{var T=e,M=T._payload,N=T._init;try{return S(N(M))}catch{return null}}}return null}var B=Object.assign,W=0,V,q,le,de,G,Q,ce;function Re(){}Re.__reactDisabledLog=!0;function ae(){{if(W===0){V=console.log,q=console.info,le=console.warn,de=console.error,G=console.group,Q=console.groupCollapsed,ce=console.groupEnd;var e={configurable:!0,enumerable:!0,value:Re,writable:!0};Object.defineProperties(console,{info:e,log:e,warn:e,error:e,group:e,groupCollapsed:e,groupEnd:e})}W++}}function ke(){{if(W--,W===0){var e={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:B({},e,{value:V}),info:B({},e,{value:q}),warn:B({},e,{value:le}),error:B({},e,{value:de}),group:B({},e,{value:G}),groupCollapsed:B({},e,{value:Q}),groupEnd:B({},e,{value:ce})})}W<0&&m("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var we=k.ReactCurrentDispatcher,Ce;function oe(e,n,l){{if(Ce===void 0)try{throw Error()}catch(T){var p=T.stack.trim().match(/\n( *(at )?)/);Ce=p&&p[1]||""}return`
18
+ `+Ce+e}}var je=!1,ve;{var Te=typeof WeakMap=="function"?WeakMap:Map;ve=new Te}function E(e,n){if(!e||je)return"";{var l=ve.get(e);if(l!==void 0)return l}var p;je=!0;var T=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var M;M=we.current,we.current=null,ae();try{if(n){var N=function(){throw Error()};if(Object.defineProperty(N.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(N,[])}catch(xe){p=xe}Reflect.construct(e,[],N)}else{try{N.call()}catch(xe){p=xe}e.call(N.prototype)}}else{try{throw Error()}catch(xe){p=xe}e()}}catch(xe){if(xe&&p&&typeof xe.stack=="string"){for(var L=xe.stack.split(`
19
+ `),_e=p.stack.split(`
20
+ `),ee=L.length-1,se=_e.length-1;ee>=1&&se>=0&&L[ee]!==_e[se];)se--;for(;ee>=1&&se>=0;ee--,se--)if(L[ee]!==_e[se]){if(ee!==1||se!==1)do if(ee--,se--,se<0||L[ee]!==_e[se]){var Ne=`
21
+ `+L[ee].replace(" at new "," at ");return e.displayName&&Ne.includes("<anonymous>")&&(Ne=Ne.replace("<anonymous>",e.displayName)),typeof e=="function"&&ve.set(e,Ne),Ne}while(ee>=1&&se>=0);break}}}finally{je=!1,we.current=M,ke(),Error.prepareStackTrace=T}var Ze=e?e.displayName||e.name:"",He=Ze?oe(Ze):"";return typeof e=="function"&&ve.set(e,He),He}function Ee(e,n,l){return E(e,!1)}function pe(e){var n=e.prototype;return!!(n&&n.isReactComponent)}function $(e,n,l){if(e==null)return"";if(typeof e=="function")return E(e,pe(e));if(typeof e=="string")return oe(e);switch(e){case b:return oe("Suspense");case D:return oe("SuspenseList")}if(typeof e=="object")switch(e.$$typeof){case R:return Ee(e.render);case P:return $(e.type,n,l);case F:{var p=e,T=p._payload,M=p._init;try{return $(M(T),n,l)}catch{}}}return""}var ue=Object.prototype.hasOwnProperty,$e={},he=k.ReactDebugCurrentFrame;function ge(e){if(e){var n=e._owner,l=$(e.type,e._source,n?n.type:null);he.setExtraStackFrame(l)}else he.setExtraStackFrame(null)}function Oe(e,n,l,p,T){{var M=Function.call.bind(ue);for(var N in e)if(M(e,N)){var L=void 0;try{if(typeof e[N]!="function"){var _e=Error((p||"React class")+": "+l+" type `"+N+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof e[N]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw _e.name="Invariant Violation",_e}L=e[N](n,N,p,l,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(ee){L=ee}L&&!(L instanceof Error)&&(ge(T),m("%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).",p||"React class",l,N,typeof L),ge(null)),L instanceof Error&&!(L.message in $e)&&($e[L.message]=!0,ge(T),m("Failed %s type: %s",l,L.message),ge(null))}}}var x=Array.isArray;function _(e){return x(e)}function me(e){{var n=typeof Symbol=="function"&&Symbol.toStringTag,l=n&&e[Symbol.toStringTag]||e.constructor.name||"Object";return l}}function fe(e){try{return ie(e),!1}catch{return!0}}function ie(e){return""+e}function Se(e){if(fe(e))return m("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",me(e)),ie(e)}var Me=k.ReactCurrentOwner,Ie={key:!0,ref:!0,__self:!0,__source:!0},De,ze;function et(e){if(ue.call(e,"ref")){var n=Object.getOwnPropertyDescriptor(e,"ref").get;if(n&&n.isReactWarning)return!1}return e.ref!==void 0}function gt(e){if(ue.call(e,"key")){var n=Object.getOwnPropertyDescriptor(e,"key").get;if(n&&n.isReactWarning)return!1}return e.key!==void 0}function yt(e,n){typeof e.ref=="string"&&Me.current}function _t(e,n){{var l=function(){De||(De=!0,m("%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)",n))};l.isReactWarning=!0,Object.defineProperty(e,"key",{get:l,configurable:!0})}}function qe(e,n){{var l=function(){ze||(ze=!0,m("%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)",n))};l.isReactWarning=!0,Object.defineProperty(e,"ref",{get:l,configurable:!0})}}var Ge=function(e,n,l,p,T,M,N){var L={$$typeof:s,type:e,key:n,ref:l,props:N,_owner:M};return L._store={},Object.defineProperty(L._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(L,"_self",{configurable:!1,enumerable:!1,writable:!1,value:p}),Object.defineProperty(L,"_source",{configurable:!1,enumerable:!1,writable:!1,value:T}),Object.freeze&&(Object.freeze(L.props),Object.freeze(L)),L};function bt(e,n,l,p,T){{var M,N={},L=null,_e=null;l!==void 0&&(Se(l),L=""+l),gt(n)&&(Se(n.key),L=""+n.key),et(n)&&(_e=n.ref,yt(n,T));for(M in n)ue.call(n,M)&&!Ie.hasOwnProperty(M)&&(N[M]=n[M]);if(e&&e.defaultProps){var ee=e.defaultProps;for(M in ee)N[M]===void 0&&(N[M]=ee[M])}if(L||_e){var se=typeof e=="function"?e.displayName||e.name||"Unknown":e;L&&_t(N,se),_e&&qe(N,se)}return Ge(e,L,_e,T,p,Me.current,N)}}var tt=k.ReactCurrentOwner,ct=k.ReactDebugCurrentFrame;function Be(e){if(e){var n=e._owner,l=$(e.type,e._source,n?n.type:null);ct.setExtraStackFrame(l)}else ct.setExtraStackFrame(null)}var rt;rt=!1;function Ye(e){return typeof e=="object"&&e!==null&&e.$$typeof===s}function nt(){{if(tt.current){var e=S(tt.current.type);if(e)return`
22
22
 
23
- Check the render method of \``+t+"`."}return""}}function Ct(t){return""}var dt={};function xt(t){{var c=ft();if(!c){var p=typeof t=="string"?t:t.displayName||t.name;p&&(c=`
23
+ Check the render method of \``+e+"`."}return""}}function ut(e){return""}var ft={};function dt(e){{var n=nt();if(!n){var l=typeof e=="string"?e:e.displayName||e.name;l&&(n=`
24
24
 
25
- Check the top-level render call using <`+p+">.")}return c}}function mt(t,c){{if(!t._store||t._store.validated||t.key!=null)return;t._store.validated=!0;var p=xt(c);if(dt[p])return;dt[p]=!0;var R="";t&&t._owner&&t._owner!==qe.current&&(R=" It was passed a child from "+te(t._owner.type)+"."),je(t),m('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',p,R),je(null)}}function r(t,c){{if(typeof t!="object")return;if(we(t))for(var p=0;p<t.length;p++){var R=t[p];Ye(R)&&mt(R,c)}else if(Ye(t))t._store&&(t._store.validated=!0);else if(t){var H=Y(t);if(typeof H=="function"&&H!==t.entries)for(var q=H.call(t),B;!(B=q.next()).done;)Ye(B.value)&&mt(B.value,c)}}}function a(t){{var c=t.type;if(c==null||typeof c=="string")return;var p;if(typeof c=="function")p=c.propTypes;else if(typeof c=="object"&&(c.$$typeof===T||c.$$typeof===b))p=c.propTypes;else return;if(p){var R=te(c);_e(p,t.props,"prop",R,t)}else if(c.PropTypes!==void 0&&!Ge){Ge=!0;var H=te(c);m("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",H||"Unknown")}typeof c.getDefaultProps=="function"&&!c.getDefaultProps.isReactClassApproved&&m("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),p=0;p<c.length;p++){var R=c[p];if(R!=="children"&&R!=="key"){je(t),m("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",R),je(null);break}}t.ref!==null&&(je(t),m("Invalid attribute `ref` supplied to `React.Fragment`."),je(null))}}var i={};function u(t,c,p,R,H,q){{var B=h(t);if(!B){var N="";(t===void 0||typeof t=="object"&&t!==null&&Object.keys(t).length===0)&&(N+=" 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?N+=Ee:N+=ft();var se;t===null?se="null":we(t)?se="array":t!==void 0&&t.$$typeof===s?(se="<"+(te(t.type)||"Unknown")+" />",N=" Did you accidentally export a JSX literal instead of a component?"):se=typeof t,m("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",se,N)}var ue=ut(t,c,p,H,q);if(ue==null)return ue;if(B){var Te=c.children;if(Te!==void 0)if(R)if(we(Te)){for(var Ze=0;Ze<Te.length;Ze++)r(Te[Ze],t);Object.freeze&&Object.freeze(Te)}else m("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(P.call(c,"key")){var We=te(t),Ce=Object.keys(c).filter(function(Kt){return Kt!=="key"}),Rt=Ce.length>0?"{key: someKey, "+Ce.join(": ..., ")+": ...}":"{key: someKey}";if(!i[We+Rt]){var Zt=Ce.length>0?"{"+Ce.join(": ..., ")+": ...}":"{}";m(`A props object containing a "key" prop is being spread into JSX:
25
+ Check the top-level render call using <`+l+">.")}return n}}function at(e,n){{if(!e._store||e._store.validated||e.key!=null)return;e._store.validated=!0;var l=dt(n);if(ft[l])return;ft[l]=!0;var p="";e&&e._owner&&e._owner!==tt.current&&(p=" It was passed a child from "+S(e._owner.type)+"."),Be(e),m('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',l,p),Be(null)}}function mt(e,n){{if(typeof e!="object")return;if(_(e))for(var l=0;l<e.length;l++){var p=e[l];Ye(p)&&at(p,n)}else if(Ye(e))e._store&&(e._store.validated=!0);else if(e){var T=Y(e);if(typeof T=="function"&&T!==e.entries)for(var M=T.call(e),N;!(N=M.next()).done;)Ye(N.value)&&at(N.value,n)}}}function Ct(e){{var n=e.type;if(n==null||typeof n=="string")return;var l;if(typeof n=="function")l=n.propTypes;else if(typeof n=="object"&&(n.$$typeof===R||n.$$typeof===P))l=n.propTypes;else return;if(l){var p=S(n);Oe(l,e.props,"prop",p,e)}else if(n.PropTypes!==void 0&&!rt){rt=!0;var T=S(n);m("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",T||"Unknown")}typeof n.getDefaultProps=="function"&&!n.getDefaultProps.isReactClassApproved&&m("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function xt(e){{for(var n=Object.keys(e.props),l=0;l<n.length;l++){var p=n[l];if(p!=="children"&&p!=="key"){Be(e),m("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",p),Be(null);break}}e.ref!==null&&(Be(e),m("Invalid attribute `ref` supplied to `React.Fragment`."),Be(null))}}var pt={};function ht(e,n,l,p,T,M){{var N=ne(e);if(!N){var L="";(e===void 0||typeof e=="object"&&e!==null&&Object.keys(e).length===0)&&(L+=" 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 _e=ut();_e?L+=_e:L+=nt();var ee;e===null?ee="null":_(e)?ee="array":e!==void 0&&e.$$typeof===s?(ee="<"+(S(e.type)||"Unknown")+" />",L=" Did you accidentally export a JSX literal instead of a component?"):ee=typeof e,m("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",ee,L)}var se=bt(e,n,l,T,M);if(se==null)return se;if(N){var Ne=n.children;if(Ne!==void 0)if(p)if(_(Ne)){for(var Ze=0;Ze<Ne.length;Ze++)mt(Ne[Ze],e);Object.freeze&&Object.freeze(Ne)}else m("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 mt(Ne,e)}if(ue.call(n,"key")){var He=S(e),xe=Object.keys(n).filter(function(Xt){return Xt!=="key"}),Rt=xe.length>0?"{key: someKey, "+xe.join(": ..., ")+": ...}":"{key: someKey}";if(!pt[He+Rt]){var Jt=xe.length>0?"{"+xe.join(": ..., ")+": ...}":"{}";m(`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,We,Zt,We),i[We+Rt]=!0}}return t===l?o(ue):a(ue),ue}}function w(t,c,p){return u(t,c,p,!0)}function y(t,c,p){return u(t,c,p,!1)}var ae=y,be=w;ot.Fragment=l,ot.jsx=ae,ot.jsxs=be}()),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 _={...f,className:nr(n,{"is-pressed":s})||void 0,"aria-hidden":!0,focusable:!1};return Ae.jsx("svg",{..._,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",xr="_dropTargetInvalid_ad9od_95",Rr="_renaming_ad9od_104",Sr="_renameInput_ad9od_109",kr="_file-name_ad9od_124",xe={filePickerTree:gr,fileNodeButton:yr,selected:_r,focused:br,dropTarget:Cr,dropTargetInvalid:xr,renaming:Rr,renameInput:Sr,fileName:kr};function St(n){if(!n)return[];const s=U.normalizePath(n),f=s.startsWith("/"),l=s.split("/").filter(Boolean),_=[];let d=f?"/":"";f&&_.push("/");for(const k of l)!d||d==="/"?d=d==="/"?`/${k}`:k:d=`${d}/${k}`,_.push(d);return _}function He(n,s,f){return n&&(n===s?f:n.startsWith(s==="/"?"/":`${s}/`)?f+n.slice(s.length):n)}const Ht=e.forwardRef(function({withContextMenu:s=!0,readOnly:f=!1,filesystem:l,root:_="/wordpress",initialSelectedPath:d,onSelect:k=()=>{},onDoubleClickFile:A},T){const v=e.useMemo(()=>U.joinPaths("/",_||"/"),[_]),[D,b]=e.useState(()=>{if(!d)return{};const r={};for(const a of St(d))r[a]=!0;return r}),[S,G]=e.useState(()=>d??null),[j,x]=e.useState(()=>d??null),[Y,$]=e.useState({}),[m,O]=e.useState({}),[K,le]=e.useState(null),[Q,E]=e.useState(null),V=e.useRef({}),F=e.useRef(!1),h=e.useRef(null),M=e.useRef(null),z=e.useRef(m),te=e.useRef(Y),I=()=>{for(const r of Object.keys(V.current))clearTimeout(V.current[r]),delete V.current[r]},ee=r=>{const a=V.current[r];a&&(clearTimeout(a),delete V.current[r])};e.useEffect(()=>{z.current=m},[m]),e.useEffect(()=>{te.current=Y},[Y]);const J=r=>{var o;const a=(o=h.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?U.joinPaths(a,r.name):U.joinPaths("/",r.name),de=(r,a)=>r.children?r.children:Y[a],Fe=async(r,a)=>{const o=await r.listFiles(a),i=[];for(const u of o){const w=a==="/"?`/${u}`:`${a}/${u}`,y=await r.isDir(w);i.push({name:u,type:y?"folder":"file"})}return i.sort((u,w)=>{var t;if(u.type!==w.type)return u.type==="folder"?-1:1;const y=a==="/"?`/${u.name}`:`${a}/${u.name}`,ae=a==="/"?`/${w.name}`:`${a}/${w.name}`,be=(t=ve.current)==null?void 0:t.tempPath;if(be){if(y===be)return-1;if(ae===be)return 1}return u.name.localeCompare(w.name)}),i},ke=async r=>await Fe(l,r),re=(r,a)=>{if(a.type!=="folder")return a.children;const o=a.children??te.current[r];return o||z.current[r]?o:(O(i=>({...i,[r]:!0})),new Promise(i=>{ke(r).then(u=>{$(w=>({...w,[r]:u??[]})),i(u??[])}).catch(()=>{i([])}).finally(()=>{O(u=>{const w={...u};return delete w[r],w})})}))},Le=(r,a)=>{a.type==="folder"&&(typeof window>"u"||V.current[r]||(V.current[r]=window.setTimeout(()=>{b(o=>o[r]?o:{...o,[r]:!0}),re(r,a),delete V.current[r]},600)))},ne=r=>(O(a=>({...a,[r]:!0})),new Promise(a=>{ke(r).then(o=>{$(i=>({...i,[r]:o??[]})),a(o??[])}).catch(()=>{a([])}).finally(()=>{O(o=>{const i={...o};return delete i[r],i})})})),Be=(r,a,o)=>{b(i=>({...i,[r]:o})),o?re(r,a):$(i=>{if(i[r]===void 0)return i;const u={...i};return delete u[r],u})},ye=async r=>{if(!r)return;const a=St(r);if(a.length===0)return;b(u=>{const w={...u};for(const y of a)w[y]=!0;return w});let o=[{name:v,type:"folder"}],i="";for(const u of a){const w=o==null?void 0:o.find(ae=>he(ae,i)===u);if(!w||w.type!=="folder"){i=u,o=[];continue}o=await re(u,w)??te.current[u],i=u}},Re=(r,a)=>{!r||!a||r===a||(b(o=>{let i=!1;const u={...o};for(const w of Object.keys(o)){const y=He(w,r,a);y&&y!==w&&(u[y]=o[w],delete u[w],i=!0)}return i?u:o}),$(o=>{let i=!1;const u={...o};for(const w of Object.keys(o)){const y=He(w,r,a);y&&y!==w&&(u[y]=o[w],delete u[w],i=!0)}return i?u:o}),G(o=>He(o,r,a)),x(o=>He(o,r,a)))},Ne=()=>{le(null),E(null),I()},Pe=(r,a=!0)=>{G(r),a&&k(r)},fe=e.useMemo(()=>[{name:v,type:"folder"}],[v]),[W,g]=e.useState(null),[pe,me]=e.useState(null),ve=e.useRef(null),C=f?null:pe;e.useImperativeHandle(T,()=>({focusPath:(r,a={})=>{if(!r)return;const{select:o=!0,domFocus:i=!0,notify:u=!1}=a;o&&Pe(r,u),x(r),i&&J(r)},selectPath:r=>{r&&(Pe(r),x(r),J(r))},getSelectedPath:()=>S,expandToPath:async r=>await ye(r),refresh:async r=>await ne(r),remapPath:Re,createFile:async r=>{f||await ze(r,"file","untitled.php")},createFolder:async r=>{f||await ze(r,"folder","New Folder")},importFiles:async(r,a)=>{f||await je(r,a)},importDataTransfer:async(r,a)=>{f||await Ge(r,a)}}),[S,ne,Re,ye,f]);const P=e.useRef(!1),oe=e.useRef(d??null),ie=e.useRef(d);e.useEffect(()=>{F.current=!1},[v]),e.useEffect(()=>{d&&d!==ie.current?oe.current=d:d||(oe.current=null),ie.current=d},[d]),e.useEffect(()=>{if(!d||P.current)return;P.current=!0;const r=St(d);b(o=>{const i={...o};for(const u of r)i[u]=!0;return i});const a=r[r.length-1]||d;x(a),G(a),ye(d)},[d,ye]),e.useEffect(()=>{const r=oe.current;!r||fe.length===0||(oe.current=null,ye(r))},[fe,ye]),e.useEffect(()=>{if(!j){if(fe.length>0){const r=he(fe[0]);x(r)}return}C&&C===j||J(j)},[fe,j,C]),e.useEffect(()=>{if(fe.length===0)return;const r=fe[0];if((r==null?void 0:r.type)!=="folder"||F.current)return;const a=r.name;F.current=!0,b(o=>o[a]?o:{...o,[a]:!0}),!te.current[a]&&!z.current[a]&&re(a,r)},[fe,re,v]),e.useEffect(()=>()=>{M.current&&clearTimeout(M.current),I()},[]),e.useEffect(()=>{W&&setTimeout(()=>{const r=document.querySelector('[role="menu"] [role="menuitem"]');r&&typeof r.focus=="function"&&r.focus()},0)},[W]);const[ce,_e]=e.useState(""),Ve=(r,a)=>{if(r.type==="folder")return a;const o=U.dirname(a);return o&&o||"/"},we=(r,a,o)=>{const i=Ve(r,a);return i?o&&U.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"||(le(o),E(null),r.dataTransfer&&(r.dataTransfer.effectAllowed="move",r.dataTransfer.setData("application/x-wp-playground-path",o),r.dataTransfer.setData("text/plain",o)))},tt=()=>{Ne()},Ue=(r,a,o)=>{const i=we(a,o,K);i.allowed&&a.type==="folder"&&Le(o,a),E(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,K);i.allowed&&i.destination?(r.preventDefault(),r.dataTransfer&&(r.dataTransfer.dropEffect=K?"move":"copy"),a.type==="folder"&&Le(o,a),E(u=>(u==null?void 0:u.path)===o&&u.state===i.state?u:{path:o,state:i.state})):(r.dataTransfer&&(r.dataTransfer.dropEffect="none"),ee(o),E(u=>(u==null?void 0:u.path)===o&&u.state==="invalid"?u:{path:o,state:"invalid"}))},lt=(r,a,o)=>{ee(o);const i=r.relatedTarget;i&&r.currentTarget.contains(i)||E(u=>(u==null?void 0:u.path)===o?null:u)},wt=async(r,a,o)=>{const i=K,u=we(a,o,i);if(!u.allowed||!u.destination){Ne();return}r.preventDefault(),r.stopPropagation(),ee(o),E(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(),me(null),g({absPath:o,type:a.type,x:r.clientX,y:r.clientY}))},$e=async(r,a)=>{let o=a,i=0;const u=y=>{const ae=y.lastIndexOf(".");return ae>0?{stem:y.slice(0,ae),ext:y.slice(ae)}:{stem:y,ext:""}},w=r==="/"?"":r;for(;await(l==null?void 0:l.fileExists(`${w}/${o}`))||await(l==null?void 0:l.isDir(`${w}/${o}`));){i+=1;const{stem:y,ext:ae}=u(a);o=`${y} (${i})${ae}`}return o},ze=async(r,a,o)=>{if(!l)return;let i=r||S||v;try{await l.isDir(i)||(i=U.dirname(i))}catch{i=U.dirname(i)}const u=i,w=await $e(u,o),y=U.joinPaths(u,w);a==="folder"?await l.mkdir(y):await l.writeFile(y,""),ve.current={type:a,tempPath:y},me(y),await ne(u),setTimeout(()=>{x(y),J(y)},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=U.basename(r),i=U.joinPaths(a,o);if(i===r||await Et(i))return;const u=U.dirname(r);try{await l.mv(r,i),Re(r,i);const w=He(S,r,i);S&&(S===r||S.startsWith(`${r}/`))&&k(w),x(y=>He(y,r,i)),b(y=>({...y,[a]:!0})),await Promise.all([ne(u),ne(a)]),G(y=>He(y,r,i)),J(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 $e(a,o),u=U.joinPaths(a,i),w=new Uint8Array(await r.arrayBuffer());await l.writeFile(u,w)},qe=async(r,a)=>{const o=await bt(r);await ut(o,a)},rt=async(r,a)=>{const o=await $e(a,r.name||"New Folder"),i=U.joinPaths(a,o);await gt(i);const u=r.createReader(),w=()=>new Promise((y,ae)=>{u.readEntries(be=>y(Array.from(be)),ae)});for(;;){const y=await w();if(!y.length)break;for(const ae of y)ae.isFile?await qe(ae,i):ae.isDirectory&&await rt(ae,i)}},je=(r,a)=>Ye([],r,a),Ge=(r,a)=>{const i=Array.from(r.items).filter(w=>w.kind==="file").map(w=>_t(w)).filter(w=>!!w),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 ne(o),b(i=>({...i,[o]:!0}))}},ft=async(r,a)=>{if(!l)return;const o=r;g(null);try{a==="folder"?await l.rmdir(o,{recursive:!0}):await l.unlink(o)}catch{}finally{me(null);const i=U.dirname(o);await ne(i),S&&(S===o||S.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),w=document.createElement("a");w.href=u,w.download=U.basename(r)||"download",document.body.appendChild(w),w.click(),document.body.removeChild(w),setTimeout(()=>URL.revokeObjectURL(u),6e4)}catch(a){console.error("Failed to download file",a)}},dt=r=>{var a;if(!pe)if(r.key.length===1&&r.key.match(/\S/)){const o=ce+r.key.toLowerCase();if(_e(o),M.current&&clearTimeout(M.current),M.current=setTimeout(()=>{_e("")},1e3),!h.current)return;const i=Array.from(h.current.querySelectorAll(".file-node-button")),u=document.activeElement;let w=0;u&&i.includes(u)&&(w=i.indexOf(u));for(let y=0;y<i.length;y++){const ae=(w+y)%i.length,be=i[ae];if((a=be.textContent)!=null&&a.toLowerCase().trim().startsWith(o)){be.focus();const t=be.getAttribute("data-path");t&&x(t);break}}}else _e(""),M.current&&clearTimeout(M.current)},xt=async(r,a)=>{if(f)return;const o=ve.current,i=(o==null?void 0:o.tempPath)===r,u=U.dirname(r);if(!a||a==="."||a===".."||U.basename(a)!==a){if(i){try{o.type==="folder"?await l.rmdir(r,{recursive:!0}):await l.unlink(r)}catch{}ve.current=null}me(i?null:r);return}let w=U.joinPaths(u,a),y=w;if(y===r){me(null);const c=i&&(o==null?void 0:o.type)==="file";i&&(ve.current=null),setTimeout(()=>{x(y),J(y),c&&A&&A(y)},0);return}const ae=await l.fileExists(y),be=await l.isDir(y);if((ae||be)&&y!==r)if(i)try{const c=await $e(u==="/"?"/":u,a);w=U.joinPaths(u,c),y=w}catch{}else{me(r);return}let t=(o==null?void 0:o.type)==="folder";try{await l.mv(r,w),o||(t=await l.isDir(w)),t&&Re(r,y),S===r&&k(y),await ne(u),x(y),J(y),i&&!t&&A&&A(y)}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,me(null)}},mt=async r=>{const a=ve.current;if(!l||(a==null?void 0:a.tempPath)!==r){me(i=>i===r?null:i);return}try{a.type==="folder"?await l.rmdir(r,{recursive:!0}):await l.unlink(r)}catch{}ve.current=null,me(null);const o=U.dirname(r);await ne(o),x(o),J(o)};return e.createElement("div",{onKeyDown:dt,ref:h},e.createElement(X.__experimentalTreeGrid,{className:xe.filePickerTree},fe.map((r,a)=>e.createElement(Ut,{key:r.name,node:r,level:0,position:a+1,setSize:fe.length,expandedNodePaths:D,onToggle:Be,selectedNode:S,focusPath:o=>x(o),focusedNode:j,selectPath:Pe,generatePath:he,getChildren:de,onContextMenu:f?void 0:ct,renamingPath:C,onRename:xt,onRenameCancel:mt,dropIndicator:Q,onDragStart:f?void 0:Ie,onDragEnd:f?void 0:tt,onDragEnter:f?void 0:Ue,onDragOver:f?void 0:st,onDragLeave:f?void 0:lt,onDrop:f?void 0:wt,rootPath:v,onDoubleClickFile:A}))),!f&&W&&e.createElement(X.Popover,{placement:"bottom-start",onClose:()=>g(null),anchor:{getBoundingClientRect:()=>({x:W.x,y:W.y,width:0,height:0,top:W.y,left:W.x,right:W.x,bottom:W.y,toJSON:()=>({})}),ownerDocument:document},noArrow:!0,resize:!1,focusOnMount:"firstElement"},e.createElement(X.NavigableMenu,{role:"menu"},W.type==="folder"&&e.createElement(X.MenuItem,{role:"menuitem",onClick:async()=>{g(null),await ze(W.absPath,"file","untitled.php")}},"Create file"),W.type==="folder"&&e.createElement(X.MenuItem,{role:"menuitem",onClick:async()=>{g(null),await ze(W.absPath,"folder","New Folder")}},"Create directory"),e.createElement(X.MenuItem,{role:"menuitem",onClick:()=>{g(null),me(W.absPath)}},"Rename"),W.type==="file"&&e.createElement(X.MenuItem,{role:"menuitem",onClick:async()=>{g(null),await Ct(W.absPath)}},"Download"),e.createElement(X.MenuItem,{role:"menuitem",onClick:()=>ft(W.absPath,W.type)},"Delete"))))}),Ut=({node:n,level:s,position:f,setSize:l,expandedNodePaths:_,onToggle:d,selectedNode:k,focusPath:A,focusedNode:T,selectPath:v,generatePath:D,getChildren:b,onContextMenu:S,renamingPath:G,onRename:j,onRenameCancel:x,parentPath:Y="",dropIndicator:$,onDragStart:m,onDragEnd:O,onDragEnter:K,onDragOver:le,onDragLeave:Q,onDrop:E,rootPath:V,onDoubleClickFile:F})=>{const h=D(n,Y),M=_[h],z=G===h,te=e.useRef(null),[I,ee]=e.useState(n.name),J=e.useRef(!1),he=($==null?void 0:$.path)===h,de=he&&($==null?void 0:$.state)==="valid",Fe=he&&($==null?void 0:$.state)==="invalid",ke=!!m&&!z&&h!==V,re=e.useRef(null),Le={onDragEnter:g=>K==null?void 0:K(g,n,h),onDragOver:g=>le==null?void 0:le(g,n,h),onDragLeave:g=>Q==null?void 0:Q(g,n,h),onDrop:g=>E==null?void 0:E(g,n,h)},ne=b(n,h)??[];e.useEffect(()=>{var g;z?(ee(n.name),J.current=!1,typeof window<"u"&&requestAnimationFrame?requestAnimationFrame(()=>{var pe;(pe=te.current)==null||pe.select()}):(g=te.current)==null||g.select()):J.current=!1},[z,n.name]);const Be=()=>{n.type==="folder"&&d(h,n,!M)},ye=g=>{var pe,me;if(g.key==="ArrowLeft")M?Be():(pe=document.querySelector(`[data-path="${CSS.escape(Y)}"]`))==null||pe.focus(),g.preventDefault(),g.stopPropagation();else if(g.key==="ArrowRight"){if(M){if(ne!=null&&ne.length){const ve=D(ne[0],h);(me=document.querySelector(`[data-path="${CSS.escape(ve)}"]`))==null||me.focus()}}else Be();g.preventDefault(),g.stopPropagation()}else g.key===" "||g.key==="Space"||g.key==="Spacebar"?(n.type==="folder"&&d(h,n,!M),g.preventDefault()):g.key==="Enter"&&(n.type==="folder"?d(h,n,!M):(v(h,!1),A(h),F?F(h):v(h,!0)),g.preventDefault())},Re=g=>{S==null||S(g,n,h)},Ne=g=>{g.preventDefault(),J.current=!0,j==null||j(h,I)},Pe=g=>{if(g.key==="Escape"){g.preventDefault(),g.stopPropagation(),J.current=!0,x==null||x(h);return}(g.key==="ArrowLeft"||g.key==="ArrowRight"||g.key==="ArrowUp"||g.key==="ArrowDown")&&g.stopPropagation()},fe=()=>{J.current||x==null||x(h),J.current=!1},W=()=>{if(n.type==="folder"){Be(),v(h),A(h);return}const g=re.current!==null;if(g&&re.current&&clearTimeout(re.current),re.current=null,g){F?F(h):v(h,!0);return}v(h,!1),A(h),v(h,!0),re.current=window.setTimeout(()=>{re.current=null},300)};return e.useEffect(()=>()=>{re.current!==null&&typeof window<"u"&&clearTimeout(re.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,z?e.createElement("form",{onSubmit:Ne,className:De(xe.fileNodeButton,xe.renaming,"file-node-button",{[xe.selected]:k===h,[xe.focused]:T===h,[xe.dropTarget]:de,[xe.dropTargetInvalid]:Fe}),"data-path":h,onContextMenu:Re,...Le},e.createElement(Vt,{node:n,isOpen:n.type==="folder"&&M,level:s,hideName:!0}),e.createElement("input",{ref:te,className:xe.renameInput,value:I,onChange:g=>ee(g.target.value),onBlur:fe,onFocus:()=>A(h),onKeyDown:Pe})):e.createElement(X.Button,{...Le,draggable:ke,onDragStart:g=>m==null?void 0:m(g,n,h),onDragEnd:g=>O==null?void 0:O(g,n,h),onClick:W,onKeyDown:ye,onFocus:()=>{A(h)},onContextMenu:Re,className:De(xe.fileNodeButton,"file-node-button",{[xe.selected]:k===h,[xe.focused]:T===h,[xe.dropTarget]:de,[xe.dropTargetInvalid]:Fe}),"data-path":h,"data-expanded":M?"true":"false"},e.createElement(Vt,{node:n,isOpen:n.type==="folder"&&M,level:s}))))),M&&ne&&ne.map((g,pe)=>e.createElement(Ut,{key:g.name,node:g,level:s+1,position:pe+1,setSize:ne.length,expandedNodePaths:_,onToggle:d,selectedNode:k,focusPath:A,focusedNode:T,selectPath:v,generatePath:D,getChildren:b,onContextMenu:S,renamingPath:G,onRename:j,onRenameCancel:x,parentPath:h,dropIndicator:$,onDragStart:m,onDragEnd:O,onDragEnter:K,onDragOver:le,onDragLeave:Q,onDrop:E,rootPath:V,onDoubleClickFile:F})))},Vt=({node:n,level:s,isOpen:f,hideName:l=!1})=>{const _=[];for(let d=0;d<s;d++)_.push("&nbsp;&nbsp;&nbsp;&nbsp;");return e.createElement(e.Fragment,null,e.createElement("span",{"aria-hidden":"true",dangerouslySetInnerHTML:{__html:_.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"?$t:Wt}),!l&&e.createElement("span",{className:xe.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,_]=e.useState(!1),d=()=>_(!0),k=()=>_(!1),[A,T]=e.useState(n||null);function v(D){D==null||D.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:v},e.createElement(Ht,{filesystem:f,initialSelectedPath:n,onSelect:T}),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",$r="_videoPreview_1h0az_57",Wr="_audioPreview_1h0az_64",Hr="_unsupportedMessage_1h0az_68",Ur="_actions_1h0az_74",Me={container:Lr,header:Mr,filename:Br,downloadLink:jr,previewArea:Or,imagePreview:Vr,videoPreview:$r,audioPreview:Wr,unsupportedMessage:Hr,actions:Ur},zr=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:_=!0}){const{isImage:d,isVideo:k,isAudio:A}=zr(s),T=_!==!1,v=!!(l&&n),D=()=>v?e.createElement("a",{className:Me.downloadLink,href:l,download:n},"Download"):null,b=()=>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."),v?e.createElement("p",null,D()):e.createElement("p",null,"Download the file to inspect its contents."));return e.createElement("div",{className:Me.container},T&&e.createElement("div",{className:Me.header},e.createElement("span",{className:Me.filename,title:n},n),D()),e.createElement("div",{className:Me.previewArea},b()),!T&&v&&e.createElement("div",{className:Me.actions},D()))}const kt=new Map,Gr=async n=>{var _;if(!n)return it.php();const s=(_=n.split(".").pop())==null?void 0:_.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 _=this.view.state.doc.length,d=Oe.EditorSelection.create([Oe.EditorSelection.range(_,_)]);this.view.dispatch({selection:d,effects:Se.EditorView.scrollIntoView(_,{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,language:_,className:d,onSaveShortcut:k,readOnly:A=!1,additionalExtensions:T},v){const D=e.useRef(null),b=e.useRef(null),S=e.useRef(new Oe.Compartment),G=e.useRef(new Oe.Compartment),j=e.useRef(new Oe.Compartment),x=e.useRef(s),Y=e.useRef(f),$=e.useRef(!1);return e.useImperativeHandle(v,()=>({focus:()=>{var m;(m=b.current)==null||m.focus()},blur:()=>{const m=b.current;m&&m.contentDOM.blur()},getCursorPosition:()=>b.current?b.current.state.selection.main.anchor:null,setCursorPosition:m=>{if(!b.current)return;const O=Math.min(m,b.current.state.doc.length),K=Oe.EditorSelection.create([Oe.EditorSelection.range(O,O)]);b.current.dispatch({selection:K,scrollIntoView:!0})}})),e.useEffect(()=>{x.current=s},[s]),e.useEffect(()=>{Y.current=f},[f]),e.useEffect(()=>{if(b.current)return;const m=D.current;if(!m)return;const O=Oe.EditorState.create({doc:s,extensions:[j.current.of(T??[]),Se.lineNumbers(),Se.highlightActiveLineGutter(),Se.highlightActiveLine(),Ke.foldGutter(),Se.dropCursor(),Se.rectangularSelection(),Se.crosshairCursor(),Zr,S.current.of(_??it.php()),G.current.of(Se.EditorView.editable.of(!A)),Ke.syntaxHighlighting(Ke.defaultHighlightStyle),Ke.indentOnInput(),Ke.bracketMatching(),ht.closeBrackets(),pt.history(),It.highlightSelectionMatches(),ht.autocompletion(),Se.EditorView.updateListener.of(le=>{if(!le.docChanged)return;const Q=le.state.doc.toString();Q!==x.current&&(x.current=Q,Y.current(Q))}),Se.keymap.of([{key:"Mod-s",preventDefault:!0,run:()=>(k==null||k(),!0)},...ht.closeBracketsKeymap,...ht.completionKeymap,...Ke.foldKeymap,...It.searchKeymap,...pt.historyKeymap,...pt.defaultKeymap,pt.indentWithTab])]}),K=new Se.EditorView({state:O,parent:m});return b.current=K,()=>{K.destroy(),b.current=null}},[]),e.useEffect(()=>{const m=b.current;m&&m.dispatch({effects:j.current.reconfigure(T??[])})},[T]),e.useEffect(()=>{const m=b.current;if(!m)return;const O=m.state.doc.toString();s!==O&&m.dispatch({changes:{from:0,to:m.state.doc.length,insert:s}})},[s]),e.useEffect(()=>{var Q;const m=b.current;if(!m)return;if(_){m.dispatch({effects:S.current.reconfigure(_)});return}const O=(Q=l==null?void 0:l.split(".").pop())==null?void 0:Q.toLowerCase();(!O||O==="php")&&m.dispatch({effects:S.current.reconfigure(it.php())});let le=!1;return Gr(l).then(E=>{le||!b.current||b.current.dispatch({effects:S.current.reconfigure(E)})}),()=>{le=!0}},[l,_]),e.useEffect(()=>{const m=b.current;m&&(m.hasFocus&&($.current=!0),m.dispatch({effects:G.current.reconfigure(Se.EditorView.editable.of(!A))}))},[A]),e.useLayoutEffect(()=>{const m=b.current;m&&$.current&&!m.hasFocus&&(m.focus(),$.current=!1)},[l,A]),e.createElement("div",{ref:D,className:d})});At.displayName="CodeEditor";const Kr="_fileExplorerContainer_rb5rx_1",Jr="_dropActive_rb5rx_9",Xr="_fileExplorerHeader_rb5rx_14",Qr="_fileExplorerTitle_rb5rx_23",en="_fileExplorerSubsectionTitle_rb5rx_31",tn="_fileExplorerActions_rb5rx_35",rn="_fileExplorerButton_rb5rx_41",nn="_fileExplorerIconButton_rb5rx_71",an="_fileExplorerTree_rb5rx_83",on="_dockPresentation_rb5rx_92",sn="_fileExplorerUploadButton_rb5rx_152",ge={fileExplorerContainer:Kr,dropActive:Jr,fileExplorerHeader:Xr,fileExplorerTitle:Qr,fileExplorerSubsectionTitle:en,fileExplorerActions:tn,fileExplorerButton:rn,fileExplorerIconButton:nn,fileExplorerTree:an,dockPresentation:on,fileExplorerUploadButton:sn},Ft=1024*1024,zt=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 ln(n,s=Ft){const f=cn(n);if(f!==void 0&&f>s)return{type:"too-large"};if(typeof n.stream=="function")return un(n,s);const l=new Uint8Array(await n.arrayBuffer());return l.byteLength>s?{type:"too-large"}:{type:"inline",data:l}}function cn(n){if(typeof n.filesize=="number")return n.filesize;if(typeof n.size=="number")return n.size}async function un(n,s){const f=n.stream().getReader(),l=[];let _=0;try{for(;;){const{done:d,value:k}=await f.read();if(d)return{type:"inline",data:U.concatUint8Arrays(l)};if(k){if(_+=k.byteLength,_>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:_,onSelectionCleared:d,onShowMessage:k,documentRoot:A,readOnly:T=!1,title:v="Files",mobileSubsectionTitle:D,showBinaryPreviewHeader:b=!0,dockPresentation:S=!1,useWordPressTooltips:G=!1}){const j=e.useRef(null),x=e.useRef(null),Y=e.useMemo(()=>s?U.dirname(s):f??A,[s,A]),[$,m]=e.useState(!1);e.useEffect(()=>{!s||!j.current||(l(U.dirname(s)),j.current.focusPath(s,{select:!0,domFocus:!1,notify:!1}),j.current.expandToPath(s))},[s,l]);const O=async(E,V)=>{try{const F=await n.read(E),h=await ln(F);if(h.type==="too-large"){const I=Ft/1024/1024;if(!S){await k(E,e.createElement(e.Fragment,null,e.createElement("p",null,`File too large to open (>${I}MB).`),e.createElement("p",null,"Open or download it outside the in-browser editor.")));return}const ee=U.basename(E)||"download";await k(E,e.createElement(e.Fragment,null,e.createElement("p",null,`File too large to open (>${I}MB).`),e.createElement("p",null,e.createElement(X.Button,{type:"button",variant:"link",onClick:()=>{K(E,ee)}},"Download ",ee))));return}const M=h.data,z=U.basename(E)||"download";if(zt(M)){const I=qt(z),{url:ee,filename:J}=Dt(M,z);if(Gt(I)){const he=new Blob([M],{type:I}),de=URL.createObjectURL(he);await k(E,e.createElement(Lt.BinaryFilePreview,{filename:J,mimeType:I,dataUrl:de,downloadUrl:ee,showHeader:b}));return}await k(E,e.createElement(e.Fragment,null,e.createElement("p",null,"Binary file. Cannot be edited."),e.createElement("p",null,e.createElement("a",{href:ee,download:J},"Download ",J))));return}const te=new TextDecoder("utf-8").decode(M);await _(E,te,V)}catch(F){Je.logger.error("Could not open file",F),await k(null,"Could not open file.")}},K=async(E,V)=>{try{const F=await n.read(E),h=new Uint8Array(await F.arrayBuffer()),{url:M}=Dt(h,V),z=document.createElement("a");z.href=M,z.download=V,document.body.appendChild(z),z.click(),document.body.removeChild(z)}catch(F){Je.logger.error("Could not download file",F),await k(E,"Could not download file.")}},le=E=>{var F;const V=Array.from(E.target.files??[]);E.target.value="",V.length!==0&&((F=j.current)==null||F.importFiles(V,f??A).catch(h=>Je.logger.error("Failed to import files",h)))},Q=E=>{var V;E.dataTransfer.types.includes("application/x-wp-playground-path")||(E.preventDefault(),!T&&((V=j.current)==null||V.importDataTransfer(E.dataTransfer,f??A).catch(F=>Je.logger.error("Failed to import dropped files",F))))};return e.createElement("div",{className:De(ge.fileExplorerContainer,{[ge.dropActive]:$,[ge.dockPresentation]:S}),onDragEnter:E=>{E.dataTransfer.types.includes("application/x-wp-playground-path")||(E.preventDefault(),T||m(!0))},onDragOver:E=>{E.dataTransfer.types.includes("application/x-wp-playground-path")||(E.preventDefault(),E.dataTransfer.dropEffect=T?"none":"copy")},onDragLeave:E=>{const V=E.relatedTarget;(!V||!E.currentTarget.contains(V))&&m(!1)},onDropCapture:()=>m(!1),onDrop:Q},e.createElement("div",{className:ge.fileExplorerHeader},e.createElement("span",{className:ge.fileExplorerTitle},v),D?e.createElement("span",{className:ge.fileExplorerSubsectionTitle},D):null,T?null:e.createElement("div",{className:ge.fileExplorerActions},e.createElement(Pt,{label:"Create new file",useWordPressTooltip:G},e.createElement("button",{className:De(ge.fileExplorerButton,ge.fileExplorerIconButton),type:"button",onClick:()=>{j.current&&j.current.createFile()},"aria-label":"Create new file",title:G?void 0:"Create new file"},S?e.createElement(fn,null):e.createElement(X.Icon,{icon:wr,size:20}))),e.createElement(Pt,{label:"Create new folder",useWordPressTooltip:G},e.createElement("button",{className:De(ge.fileExplorerButton,ge.fileExplorerIconButton),type:"button",onClick:()=>{j.current&&j.current.createFolder()},"aria-label":"Create new folder",title:G?void 0:"Create new folder"},S?e.createElement(dn,null):e.createElement(X.Icon,{icon:vr,size:20}))),e.createElement(Pt,{label:"Upload files",useWordPressTooltip:G},e.createElement("button",{className:De(ge.fileExplorerButton,ge.fileExplorerIconButton,ge.fileExplorerUploadButton),type:"button",onClick:()=>{var E;return(E=x.current)==null?void 0:E.click()},"aria-label":"Upload files",title:G?void 0:"Upload files"},e.createElement(X.Icon,{icon:Er,size:S?16:20}))),e.createElement("input",{ref:x,type:"file",multiple:!0,style:{display:"none"},onChange:le}))),e.createElement("div",{className:ge.fileExplorerTree},e.createElement(Lt.FilePickerTree,{ref:j,readOnly:T,filesystem:n,root:A,initialSelectedPath:Y,onSelect:async E=>{if(!E){l(A),await d();return}try{if(await n.isDir(E)){l(E);return}}catch{}l(U.dirname(E)),await O(E,!1)},onDoubleClickFile:async E=>{await O(E,!0)}})))}function Pt({label:n,useWordPressTooltip:s,children:f}){return s?e.createElement(X.Tooltip,{text:n,delay:0,placement:"top"},f):f}const fn=()=>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"}))),dn=()=>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"}))),mn="_container_a36e6_1",pn="_content_a36e6_9",hn="_sidebarWrapper_a36e6_17",vn="_editorWrapper_a36e6_28",wn="_editorHeader_a36e6_37",En="_editorPath_a36e6_49",gn="_editorPathDirectory_a36e6_61",yn="_editorPathFilename_a36e6_68",_n="_editorPathPlaceholder_a36e6_73",bn="_editorPathPortaled_a36e6_77",Cn="_editorHeaderActions_a36e6_83",xn="_saveStatus_a36e6_90",Rn="_saveStatusSaving_a36e6_97",Sn="_saveStatusPending_a36e6_98",kn="_saveStatusError_a36e6_102",Pn="_editor_a36e6_28",Tn="_placeholder_a36e6_124",Dn="_messageArea_a36e6_135",An="_mobileToggle_a36e6_171",Fn="_mobileOverlay_a36e6_175",Nn="_dockPresentation_a36e6_181",In="_dockDirtyIndicator_a36e6_205",Ln="_dockSaveButton_a36e6_214",Mn="_sidebarOpen_a36e6_269",Bn="_editorHeaderPathPortaled_a36e6_367",Z={container:mn,content:pn,sidebarWrapper:hn,editorWrapper:vn,editorHeader:wn,editorPath:En,editorPathDirectory:gn,editorPathFilename:yn,editorPathPlaceholder:_n,editorPathPortaled:bn,editorHeaderActions:Cn,saveStatus:xn,saveStatusSaving:Rn,saveStatusPending:Sn,saveStatusError:kn,editor:Pn,placeholder:Tn,messageArea:Dn,mobileToggle:An,mobileOverlay:Fn,dockPresentation:Nn,dockDirtyIndicator:In,dockSaveButton:Ln,sidebarOpen:Mn,editorHeaderPathPortaled:Bn},jn=1500,On=700,Vn=1e3,L={IDLE:"idle",PENDING:"pending",SAVING:"saving",SAVED:"saved",ERROR:"error"};function $n({filesystem:n,isVisible:s=!0,documentRoot:f,initialPath:l=null,placeholderText:_="Select a file to view or edit its contents.",dockPresentation:d=!1,mobileHeaderTarget:k=null}){const[A,T]=e.useState(f),[v,D]=e.useState(null),[b,S]=e.useState(""),[G,j]=e.useState(!0),[x,Y]=e.useState(L.IDLE),[$,m]=e.useState(null),[O,K]=e.useState("idle"),[le,Q]=e.useState(!1),[E,V]=e.useState(null),F=e.useRef(null),h=e.useRef(null),M=e.useRef(!1),z=e.useRef(v),te=e.useRef(n),I=e.useRef(null),ee=e.useRef(null),J=e.useRef(new WeakMap),he=e.useRef(!0),de=e.useRef(new Map),Fe=e.useRef(!1);te.current=n,e.useEffect(()=>{z.current=v},[v]);const ke=e.useCallback(async C=>{const{filesystem:P,path:oe,content:ie}=C,ce=ee.current===C,_e=J.current,we=(_e.get(P)??Promise.resolve()).catch(()=>{}).then(()=>P.writeFile(oe,ie));_e.set(P,we);let Ie=!1;try{await we}catch(Ue){Ie=!0,Je.logger.error("Failed to save file",Ue)}const tt=he.current&&_e.get(P)===we&&te.current===P&&z.current===oe&&I.current===null;_e.get(P)===we&&_e.delete(P),ee.current===C&&(ee.current=null),tt&&(Y(Ie?L.ERROR:L.SAVED),m(Ie?"Could not save changes. Try again.":null),ce&&K(Ie?"idle":"saved"))},[]),re=e.useCallback(()=>{const C=I.current;C&&(h.current!==null&&(window.clearTimeout(h.current),h.current=null),I.current=null,ke(C))},[ke]);e.useEffect(()=>(he.current=!0,()=>{he.current=!1}),[]),e.useEffect(()=>()=>{var C;((C=I.current)==null?void 0:C.filesystem)===n&&re()},[f,n,re]),e.useEffect(()=>{M.current=!0,T(f),S(""),D(null),j(!0),Y(L.IDLE),m(null),Q(!1),V(null),de.current.clear(),Fe.current=!1},[f,n]),e.useEffect(()=>{if(!n||!l||Fe.current)return;let C=!1;return(async()=>{try{if(await n.fileExists(l)&&!C){const ie=await n.readFileAsText(l);if(C)return;M.current=!0,D(l),S(ie),j(!1),Y(L.IDLE),m(null),setTimeout(()=>{var ce;(ce=F.current)==null||ce.focus()},100)}}catch(oe){Je.logger.debug("Could not auto-open initial path:",oe)}finally{C||(Fe.current=!0)}})(),()=>{C=!0}},[n,l]),e.useEffect(()=>{if(!n||!v){h.current!==null&&(window.clearTimeout(h.current),h.current=null),I.current=null,v||Y(L.IDLE);return}if(M.current){M.current=!1,I.current=null;return}h.current!==null&&(window.clearTimeout(h.current),h.current=null),Y(L.PENDING);const C={filesystem:n,path:v,content:b};I.current=C;const P=window.setTimeout(()=>{I.current===C&&(h.current=null,I.current=null,Y(L.SAVING),ke(C))},jn);return h.current=P,()=>{h.current===P&&(window.clearTimeout(P),h.current=null)}},[b,v,n,ke]),e.useEffect(()=>{if(x!==L.SAVED)return;const C=window.setTimeout(()=>{Y(P=>P===L.SAVED?L.IDLE:P)},2e3);return()=>window.clearTimeout(C)},[x]),e.useEffect(()=>{O==="idle"||x===L.SAVING||x===L.SAVED||K("idle")},[O,x]),e.useEffect(()=>{if(O!=="saved")return;const C=window.setTimeout(()=>K("idle"),Vn);return()=>window.clearTimeout(C)},[O]),e.useEffect(()=>{if(O!=="waiting")return;const C=window.setTimeout(()=>K(P=>P==="waiting"?"saving":P),On);return()=>window.clearTimeout(C)},[O]);const Le=e.useCallback(async(C,P,oe=!0)=>{var ce;const ie=(ce=F.current)==null?void 0:ce.getCursorPosition();ie!=null&&z.current&&de.current.set(z.current,ie),M.current=!0,D(C),S(P),V(null),j(!1),Y(L.IDLE),m(null),Q(!1),setTimeout(()=>{var Ve,we,Ie;const _e=de.current.get(C);_e!==void 0&&((Ve=F.current)==null||Ve.setCursorPosition(_e)),oe?(we=F.current)==null||we.focus():(Ie=F.current)==null||Ie.blur()},50)},[]);e.useEffect(()=>{var oe;if(!v)return;const C=setInterval(()=>{var ce;const ie=(ce=F.current)==null?void 0:ce.getCursorPosition();ie!=null&&de.current.set(v,ie)},1e3),P=(oe=F.current)==null?void 0:oe.getCursorPosition();return P!=null&&de.current.set(v,P),()=>{var ce;clearInterval(C);const ie=(ce=F.current)==null?void 0:ce.getCursorPosition();ie!=null&&de.current.set(v,ie)}},[v]),e.useEffect(()=>{if(!s||!v)return;const C=setTimeout(()=>{var oe;const P=de.current.get(v);P!==void 0&&((oe=F.current)==null||oe.setCursorPosition(P))},100);return()=>clearTimeout(C)},[s,v]);const ne=e.useCallback(async()=>{var P;const C=(P=F.current)==null?void 0:P.getCursorPosition();C!=null&&z.current&&de.current.set(z.current,C),M.current=!0,D(null),S(""),V(null),j(!0),Y(L.IDLE),m(null)},[]),Be=e.useCallback(async(C,P)=>{M.current=!0,D(null),typeof P=="string"?(S(P),V(null)):(S(""),V(P)),j(!0),Y(L.IDLE),m(null),Q(!1)},[]),ye=e.useCallback(()=>{I.current&&(ee.current=I.current,K("waiting"),Y(L.SAVING),re())},[re]),Re=e.useCallback(()=>{!I.current&&x===L.ERROR&&n&&v&&(I.current={filesystem:n,path:v,content:b}),I.current&&(m(null),ye())},[b,v,n,ye,x]),Ne=Wn(x,$),Pe=Hn(x,Z),fe=Un(x);let W="Save";x===L.ERROR?W="Retry":x===L.SAVED&&O==="saved"?W="Saved":x===L.SAVING&&O==="saving"&&(W="Saving…");const g=x===L.PENDING||x===L.SAVING||x===L.ERROR;if(!n)return e.createElement("div",{className:De(Z.container,{[Z.dockPresentation]:d})},e.createElement("div",{className:Z.placeholder},_));const pe=v?U.dirname(v):null,me=v?U.basename(v):null,ve=e.createElement("div",{className:De(Z.editorPath,{[Z.editorPathPlaceholder]:!(v!=null&&v.length),[Z.editorPathPortaled]:k}),title:v??void 0},pe&&me?e.createElement(e.Fragment,null,e.createElement("span",{className:Z.editorPathDirectory},pe==="/"?"":pe),e.createElement("span",{className:Z.editorPathFilename},"/",me)):`Browse files under ${f}`);return e.createElement("div",{className:De(Z.container,{[Z.dockPresentation]:d})},e.createElement("div",{className:De(Z.content,{[Z.sidebarOpen]:le})},e.createElement("div",{className:Z.mobileOverlay,onClick:()=>Q(!1)}),e.createElement("aside",{className:Z.sidebarWrapper},e.createElement(Yt,{filesystem:n,currentPath:v,selectedDirPath:A,setSelectedDirPath:T,onFileOpened:Le,onSelectionCleared:ne,onShowMessage:Be,documentRoot:f,dockPresentation:d,useWordPressTooltips:d})),e.createElement("section",{className:Z.editorWrapper},e.createElement("div",{className:De(Z.editorHeader,{[Z.editorHeaderPathPortaled]:k})},e.createElement(X.Button,{className:Z.mobileToggle,variant:"secondary",onClick:()=>Q(C=>!C)},le?"Hide files":"Browse files"),k?ar.createPortal(ve,k):ve,d&&!G&&v?e.createElement("div",{className:Z.editorHeaderActions},g?e.createElement("span",{className:Z.dockDirtyIndicator,"aria-hidden":"true"}):null,e.createElement(X.Tooltip,{text:fe,placement:"top"},e.createElement(X.Button,{variant:"secondary",className:Z.dockSaveButton,isDestructive:x===L.ERROR,onClick:Re},W))):d?null:e.createElement("div",{className:De(Z.saveStatus,Pe)},Ne),d&&!G&&v?e.createElement(X.VisuallyHidden,{role:"status","aria-live":"polite"},fe):null),$?e.createElement("div",{style:{padding:"8px 16px"}},e.createElement(X.Notice,{status:"error",isDismissible:!1},$)):null,v||b||E?E?e.createElement("div",{className:Z.messageArea},E):e.createElement(At,{ref:F,code:b,onChange:S,currentPath:v,className:Z.editor,onSaveShortcut:ye,readOnly:G}):e.createElement("div",{className:Z.placeholder},_))))}function Wn(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 Hn(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 Un(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=Ht;exports.MAX_INLINE_FILE_BYTES=Ft;exports.PlaygroundFileEditor=$n;exports.SiteManagerIcon=fr;exports.WordPressIcon=sr;exports.createDownloadUrl=Dt;exports.file=Wt;exports.folder=$t;exports.getLogoDataURL=ur;exports.getMimeType=qt;exports.isPreviewableBinary=Gt;exports.layout=cr;exports.playgroundLogo=or;exports.seemsLikeBinary=zt;exports.temporaryStorage=ir;
30
+ <%s key={someKey} {...props} />`,Rt,He,Jt,He),pt[He+Rt]=!0}}return e===u?xt(se):Ct(se),se}}function r(e,n,l){return ht(e,n,l,!0)}function a(e,n,l){return ht(e,n,l,!1)}var o=a,c=r;st.Fragment=u,st.jsx=o,st.jsxs=c}()),st}process.env.NODE_ENV==="production"?Tt.exports=mr():Tt.exports=pr();var Fe=Tt.exports,Xe=i=>Et.createElement("path",i),Qe=Et.forwardRef(({className:i,isPressed:s,...f},u)=>{const w={...f,className:or(i,{"is-pressed":s})||void 0,"aria-hidden":!0,focusable:!1};return Fe.jsx("svg",{...w,ref:u})});Qe.displayName="SVG";const hr=Fe.jsx(Qe,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:Fe.jsx(Xe,{d:"M17.5 11.6L12 16l-5.5-4.4.9-1.2L12 14l4.5-3.6 1 1.2z"})}),wr=Fe.jsx(Qe,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:Fe.jsx(Xe,{d:"M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z"})}),vr=Fe.jsx(Qe,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:Fe.jsx(Xe,{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"})}),Er=Fe.jsxs(Qe,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:[Fe.jsx(Xe,{d:"M15.5 7.5h-7V9h7V7.5Zm-7 3.5h7v1.5h-7V11Zm7 3.5h-7V16h7v-1.5Z"}),Fe.jsx(Xe,{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"})]}),gr=Fe.jsx(Qe,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:Fe.jsx(Xe,{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"})}),yr="_file-picker-tree_12ffp_1",_r="_file-node-button_12ffp_17",br="_selected_12ffp_56",Cr="_focused_12ffp_75",xr="_dropTarget_12ffp_83",Rr="_dropTargetInvalid_12ffp_95",Sr="_renaming_12ffp_104",Pr="_renameInput_12ffp_109",kr="_file-name_12ffp_124",Tr="_path-badge_12ffp_128",Dr="_path-badge-tooltip_12ffp_140",ye={filePickerTree:yr,fileNodeButton:_r,selected:br,focused:Cr,dropTarget:xr,dropTargetInvalid:Rr,renaming:Sr,renameInput:Pr,fileName:kr,pathBadge:Tr,pathBadgeTooltip:Dr};function St(i){if(!i)return[];const s=U.normalizePath(i),f=s.startsWith("/"),u=s.split("/").filter(Boolean),w=[];let h=f?"/":"";f&&w.push("/");for(const C of u)!h||h==="/"?h=h==="/"?`/${C}`:C:h=`${h}/${C}`,w.push(h);return w}function We(i,s,f){return i&&(i===s?f:i.startsWith(s==="/"?"/":`${s}/`)?f+i.slice(s.length):i)}const zt=t.forwardRef(function({withContextMenu:s=!0,readOnly:f=!1,filesystem:u,root:w="/wordpress",initialSelectedPath:h,onSelect:C=()=>{},onDoubleClickFile:g,pathBadges:R,onMountFromGit:b,onPathRenamed:D},P){const F=t.useMemo(()=>U.joinPaths("/",w||"/"),[w]),X=t.useMemo(()=>U.joinPaths(F,"wp-content","plugins"),[F]),K=t.useMemo(()=>U.joinPaths(F,"wp-content","themes"),[F]),[v,Y]=t.useState(()=>{if(!h)return{};const r={};for(const a of St(h))r[a]=!0;return r}),[k,m]=t.useState(()=>h??null),[A,j]=t.useState(()=>h??null),[I,H]=t.useState({}),[te,re]=t.useState({}),[J,ne]=t.useState(null),[y,d]=t.useState(null),S=t.useRef({}),B=t.useRef(!1),W=t.useRef(null),V=t.useRef(null),q=t.useRef(te),le=t.useRef(I),de=()=>{for(const r of Object.keys(S.current))clearTimeout(S.current[r]),delete S.current[r]},G=r=>{const a=S.current[r];a&&(clearTimeout(a),delete S.current[r])};t.useEffect(()=>{q.current=te},[te]),t.useEffect(()=>{le.current=I},[I]);const Q=r=>{var o;const a=(o=W.current)==null?void 0:o.querySelector(`[data-path="${CSS.escape(r)}"]`);a&&typeof a.focus=="function"&&(a.focus(),a.scrollIntoView({behavior:"smooth",block:"nearest"}))},ce=(r,a="")=>a?U.joinPaths(a,r.name):U.joinPaths("/",r.name),Re=(r,a)=>r.children?r.children:I[a],ae=async(r,a)=>{const o=await r.listFiles(a),c=[];for(const e of o){const n=a==="/"?`/${e}`:`${a}/${e}`,l=await r.isDir(n);c.push({name:e,type:l?"folder":"file"})}return c.sort((e,n)=>{var M;if(e.type!==n.type)return e.type==="folder"?-1:1;const l=a==="/"?`/${e.name}`:`${a}/${e.name}`,p=a==="/"?`/${n.name}`:`${a}/${n.name}`,T=(M=ge.current)==null?void 0:M.tempPath;if(T){if(l===T)return-1;if(p===T)return 1}return e.name.localeCompare(n.name)}),c},ke=async r=>await ae(u,r),we=(r,a)=>{if(a.type!=="folder")return a.children;const o=a.children??le.current[r];return o||q.current[r]?o:(re(c=>({...c,[r]:!0})),new Promise(c=>{ke(r).then(e=>{H(n=>({...n,[r]:e??[]})),c(e??[])}).catch(()=>{c([])}).finally(()=>{re(e=>{const n={...e};return delete n[r],n})})}))},Ce=(r,a)=>{a.type==="folder"&&(typeof window>"u"||S.current[r]||(S.current[r]=window.setTimeout(()=>{Y(o=>o[r]?o:{...o,[r]:!0}),we(r,a),delete S.current[r]},600)))},oe=r=>(re(a=>({...a,[r]:!0})),new Promise(a=>{ke(r).then(o=>{H(c=>({...c,[r]:o??[]})),a(o??[])}).catch(()=>{a([])}).finally(()=>{re(o=>{const c={...o};return delete c[r],c})})})),je=(r,a,o)=>{Y(c=>({...c,[r]:o})),o?we(r,a):H(c=>{if(c[r]===void 0)return c;const e={...c};return delete e[r],e})},ve=async r=>{if(!r)return;const a=St(r);if(a.length===0)return;Y(e=>{const n={...e};for(const l of a)n[l]=!0;return n});let o=[{name:F,type:"folder"}],c="";for(const e of a){const n=o==null?void 0:o.find(p=>ce(p,c)===e);if(!n||n.type!=="folder"){c=e,o=[];continue}o=await we(e,n)??le.current[e],c=e}},Te=(r,a)=>{!r||!a||r===a||(Y(o=>{let c=!1;const e={...o};for(const n of Object.keys(o)){const l=We(n,r,a);l&&l!==n&&(e[l]=o[n],delete e[n],c=!0)}return c?e:o}),H(o=>{let c=!1;const e={...o};for(const n of Object.keys(o)){const l=We(n,r,a);l&&l!==n&&(e[l]=o[n],delete e[n],c=!0)}return c?e:o}),m(o=>We(o,r,a)),j(o=>We(o,r,a)))},E=()=>{ne(null),d(null),de()},Ee=(r,a=!0)=>{m(r),a&&C(r)},pe=t.useMemo(()=>[{name:F,type:"folder"}],[F]),[$,ue]=t.useState(null),[$e,he]=t.useState(null),ge=t.useRef(null),Oe=f?null:$e;t.useImperativeHandle(P,()=>({focusPath:(r,a={})=>{if(!r)return;const{select:o=!0,domFocus:c=!0,notify:e=!1}=a;o&&Ee(r,e),j(r),c&&Q(r)},selectPath:r=>{r&&(Ee(r),j(r),Q(r))},getSelectedPath:()=>k,expandToPath:async r=>await ve(r),refresh:async r=>await oe(r),revealPath:async r=>{const a=U.dirname(r);await oe(a),await ve(a),await oe(r),Y(o=>({...o,[r]:!0})),Ee(r,!1),j(r),setTimeout(()=>Q(r),0)},remapPath:Te,createFile:async r=>{f||await Ge(r,"file","untitled.php")},createFolder:async r=>{f||await Ge(r,"folder","New Folder")},importFiles:async(r,a)=>{f||await ft(r,a)},importDataTransfer:async(r,a)=>{f||await dt(r,a)}}),[k,oe,Te,ve,f]);const x=t.useRef(!1),_=t.useRef(h??null),me=t.useRef(h);t.useEffect(()=>{B.current=!1},[F]),t.useEffect(()=>{h&&h!==me.current?_.current=h:h||(_.current=null),me.current=h},[h]),t.useEffect(()=>{if(!h||x.current)return;x.current=!0;const r=St(h);Y(o=>{const c={...o};for(const e of r)c[e]=!0;return c});const a=r[r.length-1]||h;j(a),m(a),ve(h)},[h,ve]),t.useEffect(()=>{const r=_.current;!r||pe.length===0||(_.current=null,ve(r))},[pe,ve]),t.useEffect(()=>{if(!A){if(pe.length>0){const r=ce(pe[0]);j(r)}return}Oe&&Oe===A||Q(A)},[pe,A,Oe]),t.useEffect(()=>{if(pe.length===0)return;const r=pe[0];if((r==null?void 0:r.type)!=="folder"||B.current)return;const a=r.name;B.current=!0,Y(o=>o[a]?o:{...o,[a]:!0}),!le.current[a]&&!q.current[a]&&we(a,r)},[pe,we,F]),t.useEffect(()=>()=>{V.current&&clearTimeout(V.current),de()},[]),t.useEffect(()=>{$&&setTimeout(()=>{const r=document.querySelector('[role="menu"] [role="menuitem"]');r&&typeof r.focus=="function"&&r.focus()},0)},[$]);const[fe,ie]=t.useState(""),Se=(r,a)=>{if(r.type==="folder")return a;const o=U.dirname(a);return o&&o||"/"},Me=(r,a,o)=>{const c=Se(r,a);return c?o&&U.isParentOf(o,c)?{allowed:!1,state:"invalid",destination:null}:{allowed:!0,state:"valid",destination:c}:{allowed:!1,state:"invalid",destination:null}},Ie=(r,a,o)=>{a.type!=="folder"&&a.type!=="file"||(ne(o),d(null),r.dataTransfer&&(r.dataTransfer.effectAllowed="move",r.dataTransfer.setData("application/x-wp-playground-path",o),r.dataTransfer.setData("text/plain",o)))},De=()=>{E()},ze=(r,a,o)=>{const c=Me(a,o,J);c.allowed&&a.type==="folder"&&Ce(o,a),d(e=>(e==null?void 0:e.path)===o&&e.state===c.state?e:{path:o,state:c.state})},et=(r,a,o)=>{const c=Me(a,o,J);c.allowed&&c.destination?(r.preventDefault(),r.dataTransfer&&(r.dataTransfer.dropEffect=J?"move":"copy"),a.type==="folder"&&Ce(o,a),d(e=>(e==null?void 0:e.path)===o&&e.state===c.state?e:{path:o,state:c.state})):(r.dataTransfer&&(r.dataTransfer.dropEffect="none"),G(o),d(e=>(e==null?void 0:e.path)===o&&e.state==="invalid"?e:{path:o,state:"invalid"}))},gt=(r,a,o)=>{G(o);const c=r.relatedTarget;c&&r.currentTarget.contains(c)||d(e=>(e==null?void 0:e.path)===o?null:e)},yt=async(r,a,o)=>{const c=J,e=Me(a,o,c);if(!e.allowed||!e.destination){E();return}r.preventDefault(),r.stopPropagation(),G(o),d(null);try{c?await ct(c,e.destination):await dt(r.dataTransfer,e.destination)}finally{E()}},_t=(r,a,o)=>{s&&(r.preventDefault(),r.stopPropagation(),he(null),ue({absPath:o,type:a.type,x:r.clientX,y:r.clientY}))},qe=async(r,a)=>{let o=a,c=0;const e=l=>{const p=l.lastIndexOf(".");return p>0?{stem:l.slice(0,p),ext:l.slice(p)}:{stem:l,ext:""}},n=r==="/"?"":r;for(;await(u==null?void 0:u.fileExists(`${n}/${o}`))||await(u==null?void 0:u.isDir(`${n}/${o}`));){c+=1;const{stem:l,ext:p}=e(a);o=`${l} (${c})${p}`}return o},Ge=async(r,a,o)=>{if(!u)return;let c=r||k||F;try{await u.isDir(c)||(c=U.dirname(c))}catch{c=U.dirname(c)}const e=c,n=await qe(e,o),l=U.joinPaths(e,n);a==="folder"?await u.mkdir(l):await u.writeFile(l,""),ge.current={type:a,tempPath:l},he(l),await oe(e),setTimeout(()=>{j(l),Q(l)},0)},bt=async r=>{if(!u)return!1;try{if(await u.fileExists(r))return!0}catch{}try{if(await u.isDir(r))return!0}catch{}return!1},tt=async r=>{if(u)try{await u.mkdir(r)}catch(a){if(!await u.isDir(r).catch(()=>!1))throw a}},ct=async(r,a)=>{if(!u)return;const o=U.basename(r),c=U.joinPaths(a,o);if(c===r||await bt(c))return;const e=U.dirname(r);try{await u.mv(r,c),Te(r,c);const n=We(k,r,c);k&&(k===r||k.startsWith(`${r}/`))&&C(n),j(l=>We(l,r,c)),Y(l=>({...l,[a]:!0})),await Promise.all([oe(e),oe(a)]),m(l=>We(l,r,c)),Q(c)}catch{}},Be=r=>{const a=r;return a.webkitGetAsEntry?a.webkitGetAsEntry():null},rt=r=>new Promise((a,o)=>{r.file(a,o)}),Ye=async(r,a)=>{if(!u)return;const o=r.name||"untitled",c=await qe(a,o),e=U.joinPaths(a,c),n=new Uint8Array(await r.arrayBuffer());await u.writeFile(e,n)},nt=async(r,a)=>{const o=await rt(r);await Ye(o,a)},ut=async(r,a)=>{const o=await qe(a,r.name||"New Folder"),c=U.joinPaths(a,o);await tt(c);const e=r.createReader(),n=()=>new Promise((l,p)=>{e.readEntries(T=>l(Array.from(T)),p)});for(;;){const l=await n();if(!l.length)break;for(const p of l)p.isFile?await nt(p,c):p.isDirectory&&await ut(p,c)}},ft=(r,a)=>at([],r,a),dt=(r,a)=>{const c=Array.from(r.items).filter(n=>n.kind==="file").map(n=>Be(n)).filter(n=>!!n),e=Array.from(r.files);return at(c,e,a)},at=async(r,a,o)=>{if(u){if(r.length>0)for(const c of r)c.isFile?await nt(c,o):c.isDirectory&&await ut(c,o);else for(const c of a)await Ye(c,o);await oe(o),Y(c=>({...c,[o]:!0}))}},mt=async(r,a)=>{if(!u)return;const o=r;ue(null);try{a==="folder"?await u.rmdir(o,{recursive:!0}):await u.unlink(o)}catch{}finally{he(null);const c=U.dirname(o);await oe(c),k&&(k===o||k.startsWith(`${o}/`))&&C(null)}},Ct=async r=>{if(u)try{const o=await(await u.read(r)).arrayBuffer(),c=new Blob([o]),e=URL.createObjectURL(c),n=document.createElement("a");n.href=e,n.download=U.basename(r)||"download",document.body.appendChild(n),n.click(),document.body.removeChild(n),setTimeout(()=>URL.revokeObjectURL(e),6e4)}catch(a){console.error("Failed to download file",a)}},xt=r=>{var a;if(!$e)if(r.key.length===1&&r.key.match(/\S/)){const o=fe+r.key.toLowerCase();if(ie(o),V.current&&clearTimeout(V.current),V.current=setTimeout(()=>{ie("")},1e3),!W.current)return;const c=Array.from(W.current.querySelectorAll(".file-node-button")),e=document.activeElement;let n=0;e&&c.includes(e)&&(n=c.indexOf(e));for(let l=0;l<c.length;l++){const p=(n+l)%c.length,T=c[p];if((a=T.textContent)!=null&&a.toLowerCase().trim().startsWith(o)){T.focus();const M=T.getAttribute("data-path");M&&j(M);break}}}else ie(""),V.current&&clearTimeout(V.current)},pt=async(r,a)=>{if(f)return;const o=ge.current,c=(o==null?void 0:o.tempPath)===r,e=U.dirname(r);if(!a||a==="."||a===".."||U.basename(a)!==a){if(c){try{o.type==="folder"?await u.rmdir(r,{recursive:!0}):await u.unlink(r)}catch{}ge.current=null}he(c?null:r);return}let n=U.joinPaths(e,a),l=n;if(l===r){he(null);const N=c&&(o==null?void 0:o.type)==="file";c&&(ge.current=null),setTimeout(()=>{j(l),Q(l),N&&g&&g(l)},0);return}const p=await u.fileExists(l),T=await u.isDir(l);if((p||T)&&l!==r)if(c)try{const N=await qe(e==="/"?"/":e,a);n=U.joinPaths(e,N),l=n}catch{}else{he(r);return}let M=(o==null?void 0:o.type)==="folder";try{if(await u.mv(r,n),o||(M=await u.isDir(n)),M&&(Te(r,l),!c))try{await(D==null?void 0:D(r,l))}catch(N){Ue.logger.error("Failed to update metadata after renaming a path",N)}k===r&&C(l),await oe(e),j(l),Q(l),c&&!M&&g&&g(l)}catch{if(c)try{(o==null?void 0:o.type)==="folder"?await u.rmdir(r,{recursive:!0}):await u.unlink(r)}catch{}}finally{ge.current=null,he(null)}},ht=async r=>{const a=ge.current;if(!u||(a==null?void 0:a.tempPath)!==r){he(c=>c===r?null:c);return}try{a.type==="folder"?await u.rmdir(r,{recursive:!0}):await u.unlink(r)}catch{}ge.current=null,he(null);const o=U.dirname(r);await oe(o),j(o),Q(o)};return t.createElement("div",{onKeyDown:xt,ref:W},t.createElement(z.__experimentalTreeGrid,{className:ye.filePickerTree},pe.map((r,a)=>t.createElement(qt,{key:r.name,node:r,level:0,position:a+1,setSize:pe.length,expandedNodePaths:v,onToggle:je,selectedNode:k,focusPath:o=>j(o),focusedNode:A,selectPath:Ee,generatePath:ce,getChildren:Re,onContextMenu:f?void 0:_t,renamingPath:Oe,onRename:pt,onRenameCancel:ht,dropIndicator:y,onDragStart:f?void 0:Ie,onDragEnd:f?void 0:De,onDragEnter:f?void 0:ze,onDragOver:f?void 0:et,onDragLeave:f?void 0:gt,onDrop:f?void 0:yt,rootPath:F,onDoubleClickFile:g,pathBadges:R}))),!f&&$&&t.createElement(z.Popover,{placement:"bottom-start",onClose:()=>ue(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"},t.createElement(z.NavigableMenu,{role:"menu"},$.type==="folder"&&t.createElement(z.MenuItem,{role:"menuitem",onClick:async()=>{ue(null),await Ge($.absPath,"file","untitled.php")}},"Create file"),$.type==="folder"&&t.createElement(z.MenuItem,{role:"menuitem",onClick:async()=>{ue(null),await Ge($.absPath,"folder","New Folder")}},"Create directory"),b&&$.type==="folder"&&($.absPath===X||$.absPath===K)&&t.createElement(z.MenuItem,{role:"menuitem",onClick:()=>{ue(null),b($.absPath===X?"plugin":"theme",$.absPath)}},"Mount via git…"),t.createElement(z.MenuItem,{role:"menuitem",onClick:()=>{ue(null),he($.absPath)}},"Rename"),$.type==="file"&&t.createElement(z.MenuItem,{role:"menuitem",onClick:async()=>{ue(null),await Ct($.absPath)}},"Download"),t.createElement(z.MenuItem,{role:"menuitem",onClick:()=>mt($.absPath,$.type)},"Delete"))))}),qt=({node:i,level:s,position:f,setSize:u,expandedNodePaths:w,onToggle:h,selectedNode:C,focusPath:g,focusedNode:R,selectPath:b,generatePath:D,getChildren:P,onContextMenu:F,renamingPath:X,onRename:K,onRenameCancel:v,parentPath:Y="",dropIndicator:k,onDragStart:m,onDragEnd:A,onDragEnter:j,onDragOver:I,onDragLeave:H,onDrop:te,rootPath:re,onDoubleClickFile:J,pathBadges:ne})=>{const y=D(i,Y),d=w[y],S=X===y,B=t.useRef(null),[W,V]=t.useState(i.name),q=t.useRef(!1),le=(k==null?void 0:k.path)===y,de=le&&(k==null?void 0:k.state)==="valid",G=le&&(k==null?void 0:k.state)==="invalid",Q=!!m&&!S&&y!==re,ce=t.useRef(null),Re={onDragEnter:E=>j==null?void 0:j(E,i,y),onDragOver:E=>I==null?void 0:I(E,i,y),onDragLeave:E=>H==null?void 0:H(E,i,y),onDrop:E=>te==null?void 0:te(E,i,y)},ae=P(i,y)??[];t.useEffect(()=>{var E;S?(V(i.name),q.current=!1,typeof window<"u"&&requestAnimationFrame?requestAnimationFrame(()=>{var Ee;(Ee=B.current)==null||Ee.select()}):(E=B.current)==null||E.select()):q.current=!1},[S,i.name]);const ke=()=>{i.type==="folder"&&h(y,i,!d)},we=E=>{var Ee,pe;if(E.key==="ArrowLeft")d?ke():(Ee=document.querySelector(`[data-path="${CSS.escape(Y)}"]`))==null||Ee.focus(),E.preventDefault(),E.stopPropagation();else if(E.key==="ArrowRight"){if(d){if(ae!=null&&ae.length){const $=D(ae[0],y);(pe=document.querySelector(`[data-path="${CSS.escape($)}"]`))==null||pe.focus()}}else ke();E.preventDefault(),E.stopPropagation()}else E.key===" "||E.key==="Space"||E.key==="Spacebar"?(i.type==="folder"&&h(y,i,!d),E.preventDefault()):E.key==="Enter"&&(i.type==="folder"?h(y,i,!d):(b(y,!1),g(y),J?J(y):b(y,!0)),E.preventDefault())},Ce=E=>{F==null||F(E,i,y)},oe=E=>{E.preventDefault(),q.current=!0,K==null||K(y,W)},je=E=>{if(E.key==="Escape"){E.preventDefault(),E.stopPropagation(),q.current=!0,v==null||v(y);return}(E.key==="ArrowLeft"||E.key==="ArrowRight"||E.key==="ArrowUp"||E.key==="ArrowDown")&&E.stopPropagation()},ve=()=>{q.current||v==null||v(y),q.current=!1},Te=()=>{if(i.type==="folder"){ke(),b(y),g(y);return}const E=ce.current!==null;if(E&&ce.current&&clearTimeout(ce.current),ce.current=null,E){J?J(y):b(y,!0);return}b(y,!1),g(y),b(y,!0),ce.current=window.setTimeout(()=>{ce.current=null},300)};return t.useEffect(()=>()=>{ce.current!==null&&typeof window<"u"&&clearTimeout(ce.current)},[]),t.createElement(t.Fragment,null,t.createElement(z.__experimentalTreeGridRow,{level:s,positionInSet:f,setSize:u},t.createElement(z.__experimentalTreeGridCell,null,()=>t.createElement(t.Fragment,null,S?t.createElement("form",{onSubmit:oe,className:Ae(ye.fileNodeButton,ye.renaming,"file-node-button",{[ye.selected]:C===y,[ye.focused]:R===y,[ye.dropTarget]:de,[ye.dropTargetInvalid]:G}),"data-path":y,onContextMenu:Ce,...Re},t.createElement(Vt,{node:i,isOpen:i.type==="folder"&&d,level:s,hideName:!0,badge:ne==null?void 0:ne[y]}),t.createElement("input",{ref:B,className:ye.renameInput,value:W,onChange:E=>V(E.target.value),onBlur:ve,onFocus:()=>g(y),onKeyDown:je})):t.createElement(z.Button,{...Re,draggable:Q,onDragStart:E=>m==null?void 0:m(E,i,y),onDragEnd:E=>A==null?void 0:A(E,i,y),onClick:Te,onKeyDown:we,onFocus:()=>{g(y)},onContextMenu:Ce,className:Ae(ye.fileNodeButton,"file-node-button",{[ye.selected]:C===y,[ye.focused]:R===y,[ye.dropTarget]:de,[ye.dropTargetInvalid]:G}),"data-path":y,"data-expanded":d?"true":"false"},t.createElement(Vt,{node:i,isOpen:i.type==="folder"&&d,level:s,badge:ne==null?void 0:ne[y]}))))),d&&ae&&ae.map((E,Ee)=>t.createElement(qt,{key:E.name,node:E,level:s+1,position:Ee+1,setSize:ae.length,expandedNodePaths:w,onToggle:h,selectedNode:C,focusPath:g,focusedNode:R,selectPath:b,generatePath:D,getChildren:P,onContextMenu:F,renamingPath:X,onRename:K,onRenameCancel:v,parentPath:y,dropIndicator:k,onDragStart:m,onDragEnd:A,onDragEnter:j,onDragOver:I,onDragLeave:H,onDrop:te,rootPath:re,onDoubleClickFile:J,pathBadges:ne})))},Vt=({node:i,level:s,isOpen:f,hideName:u=!1,badge:w})=>{const h=[];for(let b=0;b<s;b++)h.push("&nbsp;&nbsp;&nbsp;&nbsp;");const C=t.useRef(null),[g,R]=t.useState(null);return t.useEffect(()=>{if(!g)return;const b=()=>R(null);return window.addEventListener("scroll",b,!0),window.addEventListener("resize",b),()=>{window.removeEventListener("scroll",b,!0),window.removeEventListener("resize",b)}},[g]),t.createElement(t.Fragment,null,t.createElement("span",{"aria-hidden":"true",dangerouslySetInnerHTML:{__html:h.join("")}}),i.type==="folder"?t.createElement(jt,{width:16,icon:f?hr:wr}):t.createElement("div",{style:{width:16}}," "),t.createElement(jt,{width:16,icon:i.type==="folder"?Wt:Ut}),!u&&t.createElement("span",{className:ye.fileName},i.name),w?t.createElement("span",{ref:C,className:ye.pathBadge,"aria-label":w.tooltip,onMouseEnter:()=>{var D;const b=(D=C.current)==null?void 0:D.getBoundingClientRect();b&&R({top:b.top,left:b.left})},onMouseLeave:()=>R(null)},w.icon,g?Ht.createPortal(t.createElement("span",{className:ye.pathBadgeTooltip,role:"tooltip",style:{top:g.top,left:g.left}},w.tooltip),document.body):null):null)},Nr="_control_kp9d9_1",Ar="_browse-label_kp9d9_11",Fr="_path-preview_kp9d9_37",Ir="_modal_kp9d9_43",Mr="_modal-footer_kp9d9_48",Je={control:Nr,browseLabel:Ar,pathPreview:Fr,modal:Ir,modalFooter:Mr};function Lr({path:i}){if(!i)return t.createElement("div",{className:Je.pathPreview},t.createElement("i",null,"Select a path"));const s=i.split("/");let f=(s.length>2?"/":"")+s.pop();f.length>10&&(f=f.substring(f.length-10));const u=i.substring(0,i.length-f.length);return t.createElement("div",{className:Je.pathPreview,"data-content-start":u,"data-content-end":f})}function jr({value:i="",onChange:s,filesystem:f}){const[u,w]=t.useState(!1),h=()=>w(!0),C=()=>w(!1),[g,R]=t.useState(i||null);function b(D){D==null||D.preventDefault(),s(g||""),C()}return t.createElement(t.Fragment,null,t.createElement(z.Button,{variant:"tertiary",className:Je.control,onClick:h},t.createElement("span",{className:Je.browseLabel},"Browse"),t.createElement(Lr,{path:i||""})),u&&t.createElement(z.Modal,{title:"Select a path ",onRequestClose:C,className:Je.modal},t.createElement("form",{onSubmit:b},t.createElement(zt,{filesystem:f,initialSelectedPath:i,onSelect:R}),t.createElement("div",{className:Je.modalFooter},t.createElement(z.Button,{type:"submit",variant:"primary"},"Select Path")))))}const Or="_container_1h0az_1",Br="_header_1h0az_9",Vr="_filename_1h0az_18",$r="_downloadLink_1h0az_26",Hr="_previewArea_1h0az_38",Wr="_imagePreview_1h0az_51",Ur="_videoPreview_1h0az_57",zr="_audioPreview_1h0az_64",qr="_unsupportedMessage_1h0az_68",Gr="_actions_1h0az_74",Le={container:Or,header:Br,filename:Vr,downloadLink:$r,previewArea:Hr,imagePreview:Wr,videoPreview:Ur,audioPreview:zr,unsupportedMessage:qr,actions:Gr},Yr=i=>{if(!i)return{isImage:!1,isVideo:!1,isAudio:!1};const s=i.toLowerCase();return{isImage:s.startsWith("image/"),isVideo:s.startsWith("video/"),isAudio:s.startsWith("audio/")}};function Zr({filename:i,mimeType:s,dataUrl:f,downloadUrl:u,showHeader:w=!0}){const{isImage:h,isVideo:C,isAudio:g}=Yr(s),R=w!==!1,b=!!(u&&i),D=()=>b?t.createElement("a",{className:Le.downloadLink,href:u,download:i},"Download"):null,P=()=>h?t.createElement("img",{className:Le.imagePreview,src:f,alt:i||"Preview"}):C?t.createElement("video",{className:Le.videoPreview,controls:!0,preload:"metadata"},t.createElement("source",{src:f,type:s}),"Your browser does not support the video tag."):g?t.createElement("audio",{className:Le.audioPreview,controls:!0},t.createElement("source",{src:f,type:s}),"Your browser does not support the audio tag."):t.createElement("div",{className:Le.unsupportedMessage},t.createElement("p",null,"Preview unavailable for this file type."),b?t.createElement("p",null,D()):t.createElement("p",null,"Download the file to inspect its contents."));return t.createElement("div",{className:Le.container},R&&t.createElement("div",{className:Le.header},t.createElement("span",{className:Le.filename,title:i},i),D()),t.createElement("div",{className:Le.previewArea},P()),!R&&b&&t.createElement("div",{className:Le.actions},D()))}const Pt=new Map,Kr=async i=>{var w;if(!i)return lt.php();const s=(w=i.split(".").pop())==null?void 0:w.toLowerCase();if(!s||s==="php")return lt.php();const f=i;if(Pt.has(f))return Pt.get(f);let u;switch(s){case"css":u=await import("@codemirror/lang-css").then(h=>h.css());break;case"js":case"jsx":case"ts":case"tsx":u=await import("@codemirror/lang-javascript").then(h=>h.javascript({jsx:s==="jsx"||s==="tsx",typescript:s==="ts"||s==="tsx"}));break;case"json":u=await import("@codemirror/lang-json").then(h=>h.json());break;case"html":case"htm":u=await import("@codemirror/lang-html").then(h=>h.html());break;case"md":case"markdown":u=await import("@codemirror/lang-markdown").then(h=>h.markdown());break;default:u=lt.php()}return Pt.set(f,u),u};class Jr{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 w=this.view.state.doc.length,h=Ve.EditorSelection.create([Ve.EditorSelection.range(w,w)]);this.view.dispatch({selection:h,effects:Pe.EditorView.scrollIntoView(w,{y:"center"})}),this.view.focus(),s.preventDefault()}}destroy(){this.view.dom.removeEventListener("mousedown",this.handleClick)}}const Xr=Pe.ViewPlugin.define(i=>new Jr(i)),Nt=t.forwardRef(function({code:s,onChange:f,currentPath:u,language:w,className:h,onSaveShortcut:C,readOnly:g=!1,additionalExtensions:R},b){const D=t.useRef(null),P=t.useRef(null),F=t.useRef(new Ve.Compartment),X=t.useRef(new Ve.Compartment),K=t.useRef(new Ve.Compartment),v=t.useRef(s),Y=t.useRef(f),k=t.useRef(!1);return t.useImperativeHandle(b,()=>({focus:()=>{var m;(m=P.current)==null||m.focus()},blur:()=>{const m=P.current;m&&m.contentDOM.blur()},getCursorPosition:()=>P.current?P.current.state.selection.main.anchor:null,setCursorPosition:m=>{if(!P.current)return;const A=Math.min(m,P.current.state.doc.length),j=Ve.EditorSelection.create([Ve.EditorSelection.range(A,A)]);P.current.dispatch({selection:j,scrollIntoView:!0})}})),t.useEffect(()=>{v.current=s},[s]),t.useEffect(()=>{Y.current=f},[f]),t.useEffect(()=>{if(P.current)return;const m=D.current;if(!m)return;const A=Ve.EditorState.create({doc:s,extensions:[K.current.of(R??[]),Pe.lineNumbers(),Pe.highlightActiveLineGutter(),Pe.highlightActiveLine(),Ke.foldGutter(),Pe.dropCursor(),Pe.rectangularSelection(),Pe.crosshairCursor(),Xr,F.current.of(w??lt.php()),X.current.of(Pe.EditorView.editable.of(!g)),Ke.syntaxHighlighting(Ke.defaultHighlightStyle),Ke.indentOnInput(),Ke.bracketMatching(),vt.closeBrackets(),wt.history(),It.highlightSelectionMatches(),vt.autocompletion(),Pe.EditorView.updateListener.of(I=>{if(!I.docChanged)return;const H=I.state.doc.toString();H!==v.current&&(v.current=H,Y.current(H))}),Pe.keymap.of([{key:"Mod-s",preventDefault:!0,run:()=>(C==null||C(),!0)},...vt.closeBracketsKeymap,...vt.completionKeymap,...Ke.foldKeymap,...It.searchKeymap,...wt.historyKeymap,...wt.defaultKeymap,wt.indentWithTab])]}),j=new Pe.EditorView({state:A,parent:m});return P.current=j,()=>{j.destroy(),P.current=null}},[]),t.useEffect(()=>{const m=P.current;m&&m.dispatch({effects:K.current.reconfigure(R??[])})},[R]),t.useEffect(()=>{const m=P.current;if(!m)return;const A=m.state.doc.toString();s!==A&&m.dispatch({changes:{from:0,to:m.state.doc.length,insert:s}})},[s]),t.useEffect(()=>{var H;const m=P.current;if(!m)return;if(w){m.dispatch({effects:F.current.reconfigure(w)});return}const A=(H=u==null?void 0:u.split(".").pop())==null?void 0:H.toLowerCase();(!A||A==="php")&&m.dispatch({effects:F.current.reconfigure(lt.php())});let I=!1;return Kr(u).then(te=>{I||!P.current||P.current.dispatch({effects:F.current.reconfigure(te)})}),()=>{I=!0}},[u,w]),t.useEffect(()=>{const m=P.current;m&&(m.hasFocus&&(k.current=!0),m.dispatch({effects:X.current.reconfigure(Pe.EditorView.editable.of(!g))}))},[g]),t.useLayoutEffect(()=>{const m=P.current;m&&k.current&&!m.hasFocus&&(m.focus(),k.current=!1)},[u,g]),t.createElement("div",{ref:D,className:h})});Nt.displayName="CodeEditor";const Qr="_fileExplorerContainer_rb5rx_1",en="_dropActive_rb5rx_9",tn="_fileExplorerHeader_rb5rx_14",rn="_fileExplorerTitle_rb5rx_23",nn="_fileExplorerSubsectionTitle_rb5rx_31",an="_fileExplorerActions_rb5rx_35",on="_fileExplorerButton_rb5rx_41",sn="_fileExplorerIconButton_rb5rx_71",ln="_fileExplorerTree_rb5rx_83",cn="_dockPresentation_rb5rx_92",un="_fileExplorerUploadButton_rb5rx_152",be={fileExplorerContainer:Qr,dropActive:en,fileExplorerHeader:tn,fileExplorerTitle:rn,fileExplorerSubsectionTitle:nn,fileExplorerActions:an,fileExplorerButton:on,fileExplorerIconButton:sn,fileExplorerTree:ln,dockPresentation:cn,fileExplorerUploadButton:un},At=1024*1024,Gt=i=>{const s=i.byteLength;for(let f=0;f<Math.min(s,4096);f++)if(i[f]===0)return!0;try{return new TextDecoder("utf-8",{fatal:!0}).decode(i),!1}catch{return!0}},Dt=(i,s)=>{const f=new Blob([i]),u=URL.createObjectURL(f);return setTimeout(()=>URL.revokeObjectURL(u),6e4),{url:u,filename:s}};async function fn(i,s=At){const f=dn(i);if(f!==void 0&&f>s)return{type:"too-large"};if(typeof i.stream=="function")return mn(i,s);const u=new Uint8Array(await i.arrayBuffer());return u.byteLength>s?{type:"too-large"}:{type:"inline",data:u}}function dn(i){if(typeof i.filesize=="number")return i.filesize;if(typeof i.size=="number")return i.size}async function mn(i,s){const f=i.stream().getReader(),u=[];let w=0;try{for(;;){const{done:h,value:C}=await f.read();if(h)return{type:"inline",data:U.concatUint8Arrays(u)};if(C){if(w+=C.byteLength,w>s)return await f.cancel().catch(()=>{}),{type:"too-large"};u.push(C)}}}finally{f.releaseLock()}}const Yt=i=>{const s=i.split(".").pop();return Lt[s]||Lt._default},Zt=i=>i.startsWith("image/")||i.startsWith("video/")||i.startsWith("audio/"),Kt=t.forwardRef(function({filesystem:s,currentPath:f,selectedDirPath:u,setSelectedDirPath:w,onFileOpened:h,onSelectionCleared:C,onShowMessage:g,documentRoot:R,readOnly:b=!1,title:D="Files",mobileSubsectionTitle:P,showBinaryPreviewHeader:F=!0,dockPresentation:X=!1,useWordPressTooltips:K=!1,pathBadges:v,onMountFromGit:Y,onPathRenamed:k},m){const A=t.useRef(null),j=t.useRef(null);t.useImperativeHandle(m,()=>({refreshPath:async d=>{var S;await((S=A.current)==null?void 0:S.refresh(d))},revealPath:async d=>{var S;await((S=A.current)==null?void 0:S.revealPath(d))}}),[]);const I=t.useMemo(()=>f?U.dirname(f):u??R,[f,R]),[H,te]=t.useState(!1);t.useEffect(()=>{!f||!A.current||(w(U.dirname(f)),A.current.focusPath(f,{select:!0,domFocus:!1,notify:!1}),A.current.expandToPath(f))},[f,w]);const re=async(d,S)=>{try{const B=await s.read(d),W=await fn(B);if(W.type==="too-large"){const de=At/1024/1024;if(!X){await g(d,t.createElement(t.Fragment,null,t.createElement("p",null,`File too large to open (>${de}MB).`),t.createElement("p",null,"Open or download it outside the in-browser editor.")));return}const G=U.basename(d)||"download";await g(d,t.createElement(t.Fragment,null,t.createElement("p",null,`File too large to open (>${de}MB).`),t.createElement("p",null,t.createElement(z.Button,{type:"button",variant:"link",onClick:()=>{J(d,G)}},"Download ",G))));return}const V=W.data,q=U.basename(d)||"download";if(Gt(V)){const de=Yt(q),{url:G,filename:Q}=Dt(V,q);if(Zt(de)){const ce=new Blob([V],{type:de}),Re=URL.createObjectURL(ce);await g(d,t.createElement(Mt.BinaryFilePreview,{filename:Q,mimeType:de,dataUrl:Re,downloadUrl:G,showHeader:F}));return}await g(d,t.createElement(t.Fragment,null,t.createElement("p",null,"Binary file. Cannot be edited."),t.createElement("p",null,t.createElement("a",{href:G,download:Q},"Download ",Q))));return}const le=new TextDecoder("utf-8").decode(V);await h(d,le,S)}catch(B){Ue.logger.error("Could not open file",B),await g(null,"Could not open file.")}},J=async(d,S)=>{try{const B=await s.read(d),W=new Uint8Array(await B.arrayBuffer()),{url:V}=Dt(W,S),q=document.createElement("a");q.href=V,q.download=S,document.body.appendChild(q),q.click(),document.body.removeChild(q)}catch(B){Ue.logger.error("Could not download file",B),await g(d,"Could not download file.")}},ne=d=>{var B;const S=Array.from(d.target.files??[]);d.target.value="",S.length!==0&&((B=A.current)==null||B.importFiles(S,u??R).catch(W=>Ue.logger.error("Failed to import files",W)))},y=d=>{var S;d.dataTransfer.types.includes("application/x-wp-playground-path")||(d.preventDefault(),!b&&((S=A.current)==null||S.importDataTransfer(d.dataTransfer,u??R).catch(B=>Ue.logger.error("Failed to import dropped files",B))))};return t.createElement("div",{className:Ae(be.fileExplorerContainer,{[be.dropActive]:H,[be.dockPresentation]:X}),onDragEnter:d=>{d.dataTransfer.types.includes("application/x-wp-playground-path")||(d.preventDefault(),b||te(!0))},onDragOver:d=>{d.dataTransfer.types.includes("application/x-wp-playground-path")||(d.preventDefault(),d.dataTransfer.dropEffect=b?"none":"copy")},onDragLeave:d=>{const S=d.relatedTarget;(!S||!d.currentTarget.contains(S))&&te(!1)},onDropCapture:()=>te(!1),onDrop:y},t.createElement("div",{className:be.fileExplorerHeader},t.createElement("span",{className:be.fileExplorerTitle},D),P?t.createElement("span",{className:be.fileExplorerSubsectionTitle},P):null,b?null:t.createElement("div",{className:be.fileExplorerActions},t.createElement(kt,{label:"Create new file",useWordPressTooltip:K},t.createElement("button",{className:Ae(be.fileExplorerButton,be.fileExplorerIconButton),type:"button",onClick:()=>{A.current&&A.current.createFile()},"aria-label":"Create new file",title:K?void 0:"Create new file"},X?t.createElement(pn,null):t.createElement(z.Icon,{icon:Er,size:20}))),t.createElement(kt,{label:"Create new folder",useWordPressTooltip:K},t.createElement("button",{className:Ae(be.fileExplorerButton,be.fileExplorerIconButton),type:"button",onClick:()=>{A.current&&A.current.createFolder()},"aria-label":"Create new folder",title:K?void 0:"Create new folder"},X?t.createElement(hn,null):t.createElement(z.Icon,{icon:vr,size:20}))),t.createElement(kt,{label:"Upload files",useWordPressTooltip:K},t.createElement("button",{className:Ae(be.fileExplorerButton,be.fileExplorerIconButton,be.fileExplorerUploadButton),type:"button",onClick:()=>{var d;return(d=j.current)==null?void 0:d.click()},"aria-label":"Upload files",title:K?void 0:"Upload files"},t.createElement(z.Icon,{icon:gr,size:X?16:20}))),t.createElement("input",{ref:j,type:"file",multiple:!0,style:{display:"none"},onChange:ne}))),t.createElement("div",{className:be.fileExplorerTree},t.createElement(Mt.FilePickerTree,{ref:A,readOnly:b,filesystem:s,root:R,initialSelectedPath:I,pathBadges:v,onMountFromGit:Y,onPathRenamed:k,onSelect:async d=>{if(!d){w(R),await C();return}try{if(await s.isDir(d)){w(d);return}}catch{}w(U.dirname(d)),await re(d,!1)},onDoubleClickFile:async d=>{await re(d,!0)}})))});function kt({label:i,useWordPressTooltip:s,children:f}){return s?t.createElement(z.Tooltip,{text:i,delay:0,placement:"top"},f):f}const pn=()=>t.createElement("svg",{viewBox:"0 0 32 32",width:"24",height:"24","aria-hidden":"true"},t.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"}),t.createElement("path",{d:"M18 6v5h5",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinejoin:"round"}),t.createElement("g",{transform:"translate(19 19)"},t.createElement("circle",{cx:"5",cy:"5",r:"8",fill:"var(--paper-2, #fff)"}),t.createElement("path",{d:"M5 1.5v7M1.5 5h7",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"}))),hn=()=>t.createElement("svg",{viewBox:"0 0 32 32",width:"24",height:"24","aria-hidden":"true"},t.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"}),t.createElement("path",{d:"M6 9V8a2 2 0 0 1 2-2h5l3 3",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinejoin:"round"}),t.createElement("g",{transform:"translate(19 19)"},t.createElement("circle",{cx:"5",cy:"5",r:"8",fill:"var(--paper-2, #fff)"}),t.createElement("path",{d:"M5 1.5v7M1.5 5h7",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"}))),wn="_container_a36e6_1",vn="_content_a36e6_9",En="_sidebarWrapper_a36e6_17",gn="_editorWrapper_a36e6_28",yn="_editorHeader_a36e6_37",_n="_editorPath_a36e6_49",bn="_editorPathDirectory_a36e6_61",Cn="_editorPathFilename_a36e6_68",xn="_editorPathPlaceholder_a36e6_73",Rn="_editorPathPortaled_a36e6_77",Sn="_editorHeaderActions_a36e6_83",Pn="_saveStatus_a36e6_90",kn="_saveStatusSaving_a36e6_97",Tn="_saveStatusPending_a36e6_98",Dn="_saveStatusError_a36e6_102",Nn="_editor_a36e6_28",An="_placeholder_a36e6_124",Fn="_messageArea_a36e6_135",In="_mobileToggle_a36e6_171",Mn="_mobileOverlay_a36e6_175",Ln="_dockPresentation_a36e6_181",jn="_dockDirtyIndicator_a36e6_205",On="_dockSaveButton_a36e6_214",Bn="_sidebarOpen_a36e6_269",Vn="_editorHeaderPathPortaled_a36e6_367",Z={container:wn,content:vn,sidebarWrapper:En,editorWrapper:gn,editorHeader:yn,editorPath:_n,editorPathDirectory:bn,editorPathFilename:Cn,editorPathPlaceholder:xn,editorPathPortaled:Rn,editorHeaderActions:Sn,saveStatus:Pn,saveStatusSaving:kn,saveStatusPending:Tn,saveStatusError:Dn,editor:Nn,placeholder:An,messageArea:Fn,mobileToggle:In,mobileOverlay:Mn,dockPresentation:Ln,dockDirtyIndicator:jn,dockSaveButton:On,sidebarOpen:Bn,editorHeaderPathPortaled:Vn},$n=1500,Hn=700,Wn=1e3,O={IDLE:"idle",PENDING:"pending",SAVING:"saving",SAVED:"saved",ERROR:"error"},Un=t.forwardRef(function({filesystem:s,isVisible:f=!0,documentRoot:u,initialPath:w=null,placeholderText:h="Select a file to view or edit its contents.",dockPresentation:C=!1,mobileHeaderTarget:g=null,pathBadges:R,onMountFromGit:b,onPathRenamed:D},P){const F=t.useRef(null);t.useImperativeHandle(P,()=>({refreshPath:async x=>{var _;await((_=F.current)==null?void 0:_.refreshPath(x))},revealPath:async x=>{var _;await((_=F.current)==null?void 0:_.revealPath(x))}}),[]);const[X,K]=t.useState(u),[v,Y]=t.useState(null),[k,m]=t.useState(""),[A,j]=t.useState(!0),[I,H]=t.useState(O.IDLE),[te,re]=t.useState(null),[J,ne]=t.useState("idle"),[y,d]=t.useState(!1),[S,B]=t.useState(null),W=t.useRef(null),V=t.useRef(null),q=t.useRef(!1),le=t.useRef(v),de=t.useRef(s),G=t.useRef(null),Q=t.useRef(null),ce=t.useRef(new WeakMap),Re=t.useRef(!0),ae=t.useRef(new Map),ke=t.useRef(!1);de.current=s,t.useEffect(()=>{le.current=v},[v]);const we=t.useCallback(async x=>{const{filesystem:_,path:me,content:fe}=x,ie=Q.current===x,Se=ce.current,Ie=(Se.get(_)??Promise.resolve()).catch(()=>{}).then(()=>_.writeFile(me,fe));Se.set(_,Ie);let De=!1;try{await Ie}catch(et){De=!0,Ue.logger.error("Failed to save file",et)}const ze=Re.current&&Se.get(_)===Ie&&de.current===_&&le.current===me&&G.current===null;Se.get(_)===Ie&&Se.delete(_),Q.current===x&&(Q.current=null),ze&&(H(De?O.ERROR:O.SAVED),re(De?"Could not save changes. Try again.":null),ie&&ne(De?"idle":"saved"))},[]),Ce=t.useCallback(()=>{const x=G.current;x&&(V.current!==null&&(window.clearTimeout(V.current),V.current=null),G.current=null,we(x))},[we]);t.useEffect(()=>(Re.current=!0,()=>{Re.current=!1}),[]),t.useEffect(()=>()=>{var x;((x=G.current)==null?void 0:x.filesystem)===s&&Ce()},[u,s,Ce]),t.useEffect(()=>{q.current=!0,K(u),m(""),Y(null),j(!0),H(O.IDLE),re(null),d(!1),B(null),ae.current.clear(),ke.current=!1},[u,s]),t.useEffect(()=>{if(!s||!w||ke.current)return;let x=!1;return(async()=>{try{if(await s.fileExists(w)&&!x){const fe=await s.readFileAsText(w);if(x)return;q.current=!0,Y(w),m(fe),j(!1),H(O.IDLE),re(null),setTimeout(()=>{var ie;(ie=W.current)==null||ie.focus()},100)}}catch(me){Ue.logger.debug("Could not auto-open initial path:",me)}finally{x||(ke.current=!0)}})(),()=>{x=!0}},[s,w]),t.useEffect(()=>{if(!s||!v){V.current!==null&&(window.clearTimeout(V.current),V.current=null),G.current=null,v||H(O.IDLE);return}if(q.current){q.current=!1,G.current=null;return}V.current!==null&&(window.clearTimeout(V.current),V.current=null),H(O.PENDING);const x={filesystem:s,path:v,content:k};G.current=x;const _=window.setTimeout(()=>{G.current===x&&(V.current=null,G.current=null,H(O.SAVING),we(x))},$n);return V.current=_,()=>{V.current===_&&(window.clearTimeout(_),V.current=null)}},[k,v,s,we]),t.useEffect(()=>{if(I!==O.SAVED)return;const x=window.setTimeout(()=>{H(_=>_===O.SAVED?O.IDLE:_)},2e3);return()=>window.clearTimeout(x)},[I]),t.useEffect(()=>{J==="idle"||I===O.SAVING||I===O.SAVED||ne("idle")},[J,I]),t.useEffect(()=>{if(J!=="saved")return;const x=window.setTimeout(()=>ne("idle"),Wn);return()=>window.clearTimeout(x)},[J]),t.useEffect(()=>{if(J!=="waiting")return;const x=window.setTimeout(()=>ne(_=>_==="waiting"?"saving":_),Hn);return()=>window.clearTimeout(x)},[J]);const oe=t.useCallback(async(x,_,me=!0)=>{var ie;const fe=(ie=W.current)==null?void 0:ie.getCursorPosition();fe!=null&&le.current&&ae.current.set(le.current,fe),q.current=!0,Y(x),m(_),B(null),j(!1),H(O.IDLE),re(null),d(!1),setTimeout(()=>{var Me,Ie,De;const Se=ae.current.get(x);Se!==void 0&&((Me=W.current)==null||Me.setCursorPosition(Se)),me?(Ie=W.current)==null||Ie.focus():(De=W.current)==null||De.blur()},50)},[]);t.useEffect(()=>{var me;if(!v)return;const x=setInterval(()=>{var ie;const fe=(ie=W.current)==null?void 0:ie.getCursorPosition();fe!=null&&ae.current.set(v,fe)},1e3),_=(me=W.current)==null?void 0:me.getCursorPosition();return _!=null&&ae.current.set(v,_),()=>{var ie;clearInterval(x);const fe=(ie=W.current)==null?void 0:ie.getCursorPosition();fe!=null&&ae.current.set(v,fe)}},[v]),t.useEffect(()=>{if(!f||!v)return;const x=setTimeout(()=>{var me;const _=ae.current.get(v);_!==void 0&&((me=W.current)==null||me.setCursorPosition(_))},100);return()=>clearTimeout(x)},[f,v]);const je=t.useCallback(async()=>{var _;const x=(_=W.current)==null?void 0:_.getCursorPosition();x!=null&&le.current&&ae.current.set(le.current,x),q.current=!0,Y(null),m(""),B(null),j(!0),H(O.IDLE),re(null)},[]),ve=t.useCallback(async(x,_)=>{q.current=!0,Y(null),typeof _=="string"?(m(_),B(null)):(m(""),B(_)),j(!0),H(O.IDLE),re(null),d(!1)},[]),Te=t.useCallback(()=>{G.current&&(Q.current=G.current,ne("waiting"),H(O.SAVING),Ce())},[Ce]),E=t.useCallback(()=>{!G.current&&I===O.ERROR&&s&&v&&(G.current={filesystem:s,path:v,content:k}),G.current&&(re(null),Te())},[k,v,s,Te,I]),Ee=zn(I,te),pe=qn(I,Z),$=Gn(I);let ue="Save";I===O.ERROR?ue="Retry":I===O.SAVED&&J==="saved"?ue="Saved":I===O.SAVING&&J==="saving"&&(ue="Saving…");const $e=I===O.PENDING||I===O.SAVING||I===O.ERROR;if(!s)return t.createElement("div",{className:Ae(Z.container,{[Z.dockPresentation]:C})},t.createElement("div",{className:Z.placeholder},h));const he=v?U.dirname(v):null,ge=v?U.basename(v):null,Oe=t.createElement("div",{className:Ae(Z.editorPath,{[Z.editorPathPlaceholder]:!(v!=null&&v.length),[Z.editorPathPortaled]:g}),title:v??void 0},he&&ge?t.createElement(t.Fragment,null,t.createElement("span",{className:Z.editorPathDirectory},he==="/"?"":he),t.createElement("span",{className:Z.editorPathFilename},"/",ge)):`Browse files under ${u}`);return t.createElement("div",{className:Ae(Z.container,{[Z.dockPresentation]:C})},t.createElement("div",{className:Ae(Z.content,{[Z.sidebarOpen]:y})},t.createElement("div",{className:Z.mobileOverlay,onClick:()=>d(!1)}),t.createElement("aside",{className:Z.sidebarWrapper},t.createElement(Kt,{ref:F,filesystem:s,currentPath:v,selectedDirPath:X,setSelectedDirPath:K,onFileOpened:oe,onSelectionCleared:je,onShowMessage:ve,documentRoot:u,dockPresentation:C,useWordPressTooltips:C,pathBadges:R,onMountFromGit:b,onPathRenamed:D})),t.createElement("section",{className:Z.editorWrapper},t.createElement("div",{className:Ae(Z.editorHeader,{[Z.editorHeaderPathPortaled]:g})},t.createElement(z.Button,{className:Z.mobileToggle,variant:"secondary",onClick:()=>d(x=>!x)},y?"Hide files":"Browse files"),g?Ht.createPortal(Oe,g):Oe,C&&!A&&v?t.createElement("div",{className:Z.editorHeaderActions},$e?t.createElement("span",{className:Z.dockDirtyIndicator,"aria-hidden":"true"}):null,t.createElement(z.Tooltip,{text:$,placement:"top"},t.createElement(z.Button,{variant:"secondary",className:Z.dockSaveButton,isDestructive:I===O.ERROR,onClick:E},ue))):C?null:t.createElement("div",{className:Ae(Z.saveStatus,pe)},Ee),C&&!A&&v?t.createElement(z.VisuallyHidden,{role:"status","aria-live":"polite"},$):null),te?t.createElement("div",{style:{padding:"8px 16px"}},t.createElement(z.Notice,{status:"error",isDismissible:!1},te)):null,v||k||S?S?t.createElement("div",{className:Z.messageArea},S):t.createElement(Nt,{ref:W,code:k,onChange:m,currentPath:v,className:Z.editor,onSaveShortcut:Te,readOnly:A}):t.createElement("div",{className:Z.placeholder},h))))});function zn(i,s){switch(i){case O.PENDING:case O.SAVING:return"Saving…";case O.SAVED:return"Saved";case O.ERROR:return s??"Save failed";default:return""}}function qn(i,s){switch(i){case O.PENDING:return s.saveStatusPending;case O.SAVING:return s.saveStatusSaving;case O.ERROR:return s.saveStatusError;default:return}}function Gn(i){switch(i){case O.PENDING:return"Unsaved changes. Click to save now.";case O.SAVING:return"Saving changes…";case O.ERROR:return"Saving failed. Click to retry.";default:return"All changes saved."}}const Yn="_modal_1i30f_1",Zn="_actions_1i30f_5",$t={modal:Yn,actions:Zn};function Kn({kind:i,isBusy:s,error:f,onSubmit:u,onCancel:w}){const[h,C]=t.useState(""),[g,R]=t.useState(""),[b,D]=t.useState(""),P=h.trim(),F=v=>{const Y=Jn(v);if(Y){C(Y.url),R(Y.ref);return}C(v)},X=()=>{!P||s||u({url:P,ref:g.trim()||"HEAD",path:b.trim()||void 0})},K=()=>{s||w()};return t.createElement(z.Modal,{title:`Mount ${i} via git`,onRequestClose:K,isDismissible:!s,className:$t.modal},t.createElement("form",{onSubmit:v=>{v.preventDefault(),X()},style:{display:"flex",flexDirection:"column",gap:12}},t.createElement(z.TextControl,{__nextHasNoMarginBottom:!0,label:"Repository URL",value:h,onChange:F,placeholder:"github.com/owner/repo",autoFocus:!0,disabled:s}),t.createElement(z.TextControl,{__nextHasNoMarginBottom:!0,label:"Branch, tag, or commit",value:g,onChange:v=>R(v),placeholder:"HEAD",disabled:s}),t.createElement(z.TextControl,{__nextHasNoMarginBottom:!0,label:"Path within the repository (optional)",value:b,onChange:v=>D(v),placeholder:"Leave empty to use the repository root",disabled:s}),f?t.createElement("p",{role:"alert"},f):null,t.createElement(z.Flex,{justify:"end",className:$t.actions},t.createElement(z.Button,{type:"button",variant:"link",disabled:s,onClick:w},"Cancel"),t.createElement(z.Button,{type:"submit",variant:"primary",isBusy:s,disabled:!P||s},"Mount ",i))))}function Jn(i){const s=i.trim().match(/^(?:https?:\/\/)?(?:www\.)?github\.com\/([^/]+)\/([^/]+)\/tree\/(.+)$/i);if(!s)return null;const[,f,u,w]=s;return{url:`https://github.com/${f}/${u.replace(/\.git$/i,"")}`,ref:w}}exports.BinaryFilePreview=Zr;exports.ClockIcon=cr;exports.CodeEditor=Nt;exports.FileExplorerSidebar=Kt;exports.FilePickerControl=jr;exports.FilePickerTree=zt;exports.MAX_INLINE_FILE_BYTES=At;exports.MountGitDirectoryModal=Kn;exports.PlaygroundFileEditor=Un;exports.SiteManagerIcon=dr;exports.WordPressIcon=lr;exports.createDownloadUrl=Dt;exports.file=Ut;exports.folder=Wt;exports.getLogoDataURL=fr;exports.getMimeType=Yt;exports.isPreviewableBinary=Zt;exports.layout=ur;exports.playgroundLogo=ir;exports.seemsLikeBinary=Gt;exports.temporaryStorage=sr;
31
31
  //# sourceMappingURL=index.cjs.map