diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/404.html b/404.html new file mode 100644 index 000000000..75f584f94 --- /dev/null +++ b/404.html @@ -0,0 +1,19 @@ + + + + + +Page Not Found | Yazi + + + + + + + + + +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

+ + \ No newline at end of file diff --git a/assets/css/styles.e625017d.css b/assets/css/styles.e625017d.css new file mode 100644 index 000000000..613a94c99 --- /dev/null +++ b/assets/css/styles.e625017d.css @@ -0,0 +1 @@ +.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,.hash-link{-webkit-user-select:none}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}.toggleButton_opfx,html{-webkit-tap-highlight-color:transparent}*,.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:#0000;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:#0000000d;--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 #0000001a;--ifm-global-shadow-md:0 5px 40px #0003;--ifm-global-shadow-tl:0 12px 28px 0 #0003,0 2px 4px 0 #0000001a;--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:#0000;--ifm-table-stripe-background:#00000008;--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--docusaurus-progress-bar-color:var(--ifm-color-primary);--ifm-color-primary:#2e8555;--ifm-color-primary-dark:#29784c;--ifm-color-primary-darker:#277148;--ifm-color-primary-darkest:#205d3b;--ifm-color-primary-light:#33925d;--ifm-color-primary-lighter:#359962;--ifm-color-primary-lightest:#3cad6e;--ifm-code-font-size:95%;--docusaurus-highlighted-code-line-bg:#0000001a;--docusaurus-announcement-bar-height:auto;--docusaurus-collapse-button-bg:#0000;--docusaurus-collapse-button-bg-hover:#0000001a;--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px;--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:#656c85cc;--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 #ffffff80,0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px #1e235a66;--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 #45629b1f;--docsearch-primary-color:var(--ifm-color-primary);--docsearch-text-color:var(--ifm-font-color-base);--docusaurus-tag-list-border:var(--ifm-color-emphasis-300)}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:#0000}html{background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;-webkit-text-size-adjust:100%;text-size-adjust:100%}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none,.tabItem_an5g{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.menuExternalLink_pAvS,.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid #0000001a;border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:initial;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul,.tabList_lLR2{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_aReR .wordWrapButtonIcon_WWk0{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.admonitionHeading_QcBQ,.alert__heading,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{list-style:none;padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:#3578e526;--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:#ebedf026;--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:#00a40026;--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:#54c7ec26;--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:#ffba0026;--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:#fa383e26;--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.card--full-height,.navbar__logo img,body,html{height:100%}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:any-link:hover,.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;user-select:none;white-space:nowrap}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:#0000;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column;overflow:hidden}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_iJoM:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}#nprogress,.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;list-style:none;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor #0000;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.docItemContainer_XyYR article>:first-child,.docItemContainer_XyYR header+*,.footer__item{margin-top:0}.admonitionContent_xrGG>:last-child,.collapsibleContent_efbS p:last-child,.details_KFt3>summary>p:last-child,.footer__items,.tabItem_HJm5>:last-child{margin-bottom:0}.codeBlockStandalone_Wcee,[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title,.title_ypgm{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{list-style:none;margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_KFt3[data-collapsed=false].isBrowser_DsYK>summary:before,.details_KFt3[open]:not(.isBrowser_DsYK)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color);text-decoration:none}.menu__caret:before,.menu__link--sublist-caret:after{content:"";height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;filter:var(--ifm-menu-link-sublist-icon-filter)}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;position:fixed;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;left:0;top:0;visibility:hidden}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.announcementBarContent_snsp,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center .navbar__brand{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:#ffffff1a;--ifm-navbar-search-input-placeholder-color:#ffffff80;color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:#ffffff0d;--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:#0009;right:0;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination__link:hover,.sidebarItemLink_UIPt:hover{text-decoration:none}.pagination-nav{display:grid;grid-gap:var(--ifm-spacing-horizontal);gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.DocSearch-Hit[aria-selected=true] mark,.content_ywzz a{text-decoration:underline}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs,:not(.containsTaskList_mWur>li)>.containsTaskList_mWur{padding-left:0}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto}.tabs__item{border-bottom:3px solid #0000;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:#ffffff0d;--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:#ffffff1a;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:#ffffff12;--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec;--docsearch-text-color:#f5f6f7;--docsearch-container-background:#090a11cc;--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 #0304094d;--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 #494c6a80,0 -4px 8px 0 #0003;--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}[data-theme=dark]{--ifm-color-primary:#25c2a0;--ifm-color-primary-dark:#21af90;--ifm-color-primary-darker:#1fa588;--ifm-color-primary-darkest:#1a8870;--ifm-color-primary-light:#29d5b0;--ifm-color-primary-lighter:#32d8b4;--ifm-color-primary-lightest:#4fddbf;--docusaurus-highlighted-code-line-bg:#0000004d}pre.prism-code{tab-size:4}div[class^=announcementBar_]{background:repeating-linear-gradient(35deg,#e8d7ff,#e8d7ff 20px,#ffe9d1 0,#ffe9d1 40px)!important;font-size:20px;font-weight:700}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}#__docusaurus-base-url-issue-banner-container,.docSidebarContainer_J78T,.navbarSearchContainer_dDWb:empty,.sidebarLogo_E5y3,.themedComponent_MU6j,[data-theme=dark] .lightToggleIcon_gnuG,[data-theme=light] .darkToggleIcon_dlSY,html[data-announcement-bar-initially-dismissed=true] .announcementBar_ON6v{display:none}.skipToContent_Kzag{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_Kzag:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_KAc_{line-height:0;padding:0}.content_ywzz{font-size:85%;padding:5px 0;text-align:center}.content_ywzz a{color:inherit}.announcementBar_ON6v{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.announcementBarPlaceholder_Usd8{flex:0 0 10px}.announcementBarClose_j27w{align-self:stretch;flex:0 0 30px}.toggle_TiUU{height:2rem;width:2rem}.toggleButton_opfx{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_opfx:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_jsqO{cursor:not-allowed}.darkNavbarColorModeToggle_D_4u:hover{background:var(--ifm-color-gray-800)}[data-theme=dark] .themedComponent--dark_eHrL,[data-theme=light] .themedComponent--light_uY59,html:not([data-theme]) .themedComponent--light_uY59{display:initial}.iconExternalLink_ylYq{margin-left:.3rem}.dropdownNavbarItemMobile_dv8G{cursor:pointer}.iconLanguage_UaRh{margin-right:5px;vertical-align:text-bottom}.navbarHideable_fWn9{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_u0mJ{transform:translate3d(0,calc(-100% - 2px),0)}.errorBoundaryError_jk6f{color:red;white-space:pre-wrap}.errorBoundaryFallback_O5DU{color:red;padding:.55rem}.footerLogoLink_WaJj{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.footerLogoLink_WaJj:hover,.hash-link:focus,:hover>.hash-link{opacity:1}.anchorWithStickyNavbar_Nfoc{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_WwFx{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);user-select:none}.hash-link:before{content:"#"}.mainWrapper_J0GB{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.searchQueryInput_lKI6,.searchVersionInput_APoU{background:var(--docsearch-searchbox-focus-background);border:2px solid var(--ifm-toc-border-color);border-radius:var(--ifm-global-radius);color:var(--docsearch-text-color);font:var(--ifm-font-size-base) var(--ifm-font-family-base);margin-bottom:.5rem;padding:.8rem;transition:border var(--ifm-transition-fast) ease;width:100%}.searchQueryInput_lKI6:focus,.searchVersionInput_APoU:focus{border-color:var(--docsearch-primary-color);outline:0}.searchQueryInput_lKI6::placeholder{color:var(--docsearch-muted-color)}.searchResultsColumn_HwVW{font-size:.9rem;font-weight:700}.algoliaLogo__qtz{max-width:150px}.algoliaLogoPathFill_zNeS{fill:var(--ifm-font-color-base)}.searchResultItem_ntkJ{border-bottom:1px solid var(--ifm-toc-border-color);padding:1rem 0}.searchResultItemHeading_x5B1{font-weight:400;margin-bottom:0}.searchResultItemPath_Qgl1{color:var(--ifm-color-content-secondary);font-size:.8rem;--ifm-breadcrumb-separator-size-multiplier:1}.searchResultItemSummary_BVj8{font-style:italic;margin:.5rem 0 0}.loadingSpinner_yE92{animation:1s linear infinite a;border:.4em solid #eee;border-radius:50%;border-top:.4em solid var(--ifm-color-primary);height:3rem;margin:0 auto;width:3rem}@keyframes a{to{transform:rotate(1turn)}}.loader_aLdW{margin-top:2rem}.search-result-match{background:#ffd78e40;color:var(--docsearch-hit-color);padding:.09em 0}.features_jVLO{align-items:center;display:flex;padding:2rem 0;width:100%}.featureSvg_km3_{height:200px;width:200px}.heroBanner_qdFl{overflow:hidden;padding:4rem 0;position:relative;text-align:center}.buttons_AeoN{align-items:center;display:flex;justify-content:center}.sidebar_jZ8h{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 2rem)}.sidebarItemTitle_i_F0{font-size:var(--ifm-h3-font-size);font-weight:var(--ifm-font-weight-bold)}.container_V1vW,.sidebarItemList_VXC9{font-size:.9rem}.sidebarItem_Obzz{margin-top:.7rem}.sidebarItemLink_UIPt{color:var(--ifm-font-color-base);display:block}.sidebarItemLinkActive_gFTN{color:var(--ifm-color-primary)!important}.authorCol_rGg_{flex-grow:1!important;max-width:inherit!important}.imageOnlyAuthorRow_aGDk{display:flex;flex-flow:row wrap}.imageOnlyAuthorCol_blYy{margin-left:.3rem;margin-right:.3rem}.backToTopButton_H0zO{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.backToTopButton_H0zO:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_v69L{opacity:1;transform:scale(1);visibility:visible}[data-theme=dark]:root{--docusaurus-collapse-button-bg:#ffffff0d;--docusaurus-collapse-button-bg-hover:#ffffff1a}.collapseSidebarButton_QR0K{display:none;margin:0}.docMainContainer_CxMK,.docRoot_bcxd{display:flex;width:100%}.docsWrapper_xqoa{display:flex;flex:1 0 auto}.cards_fs6L{display:grid;gap:24px;grid-template-columns:repeat(auto-fill,minmax(400px,1fr))}.space_jwe0{display:inline-flex;gap:.5rem}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:0}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Hit-Tree,.DocSearch-Hit-action,.DocSearch-Hit-icon,.DocSearch-Reset{stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 2px;position:relative;top:-1px;width:20px}.DocSearch--active{overflow:hidden!important}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{appearance:none;background:#0000;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:0;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Cancel,.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator,.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset{animation:.1s ease-in forwards b;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0}.DocSearch-Help,.DocSearch-HitsFooter,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:#0000}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}.DocSearch-Hit--deleting{opacity:0;transition:.25s linear}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:.25s linear .25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon,.tocCollapsibleContent_s1Yi a{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:0;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands li,.DocSearch-Commands-Key{align-items:center;display:flex}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{background:var(--docsearch-key-gradient);border:0;border-radius:2px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;width:20px}.buttonGroup__HhZ button,.codeBlockContainer_heBY{background:var(--prism-background-color);color:var(--prism-color)}@keyframes b{0%{opacity:0}to{opacity:1}}.DocSearch-Button{margin:0;transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.DocSearch-Container{z-index:calc(var(--ifm-z-index-fixed) + 1)}.codeBlockContainer_heBY{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlockContent_BhwS{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_zlXl{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlock_Dgv8{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockTitle_zlXl+.codeBlockContent_BhwS .codeBlock_Dgv8{border-top-left-radius:0;border-top-right-radius:0}.codeBlockLines_QBCl{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_pRUo{display:table;padding:var(--ifm-pre-padding) 0}.buttonGroup__HhZ{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup__HhZ button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup__HhZ button:focus-visible,.buttonGroup__HhZ button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup__HhZ button{opacity:.4}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_NJ7j{counter-increment:a;display:table-row}.codeLineNumber_iJoM{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_iJoM:before{content:counter(a);opacity:.4}.codeLineContent_jKor{padding-right:var(--ifm-pre-padding)}.theme-code-block:hover .copyButtonCopied_v6tn{opacity:1!important}.copyButtonIcons_zIeB{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_t_7i,.copyButtonSuccessIcon_csuP{left:0;position:absolute;top:0;fill:currentColor;height:inherit;opacity:inherit;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_csuP{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_v6tn .copyButtonIcon_t_7i{opacity:0;transform:scale(.33)}.copyButtonCopied_v6tn .copyButtonSuccessIcon_csuP{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.tag_rUuC{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_rUuC:hover{--docusaurus-tag-list-border:var(--ifm-link-color);text-decoration:none}.tagRegular_CfVh{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_k_Cs{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_k_Cs:after,.tagWithCount_k_Cs:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_k_Cs:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_k_Cs:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_k_Cs span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.wordWrapButtonIcon_WWk0{height:1.2rem;width:1.2rem}.tags_RUyX{display:inline}.tag_vZP1{display:inline-block;margin:0 .4rem .5rem 0}.iconEdit_PC7L{margin-right:.3em;vertical-align:sub}.lastUpdated_RTW_{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_DG7b{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_DG7b:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_XuEV:after,.tocCollapsibleExpanded_bRYl{transform:none}.tocCollapsible_T9Uj{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_s1Yi>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_s1Yi ul li{margin:.4rem .8rem}.details_KFt3{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_KFt3>summary{cursor:pointer;list-style:none;padding-left:1rem;position:relative}.details_KFt3>summary::-webkit-details-marker{display:none}.details_KFt3>summary:before{border-color:#0000 #0000 #0000 var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_efbS{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.details_iNoR{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.containsTaskList_mWur{list-style:none}.img_axuv{height:auto}.tableOfContents_r_Qc{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.admonition_AflD{margin-bottom:1em}.admonitionHeading_QcBQ{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family)}.admonitionHeading_QcBQ:not(:last-child){margin-bottom:.3rem}.admonitionHeading_QcBQ code{text-transform:none}.admonitionIcon_sAlq{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_sAlq svg{display:inline-block;height:1.6em;width:1.6em;fill:var(--ifm-alert-foreground-color)}.breadcrumbHomeIcon_ucFT{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer__GJO{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}@media (min-width:997px){.collapseSidebarButton_QR0K,.expandButton_ufpw{background-color:var(--docusaurus-collapse-button-bg)}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_j27w,.announcementBarPlaceholder_Usd8{flex-basis:50px}.navbarSearchContainer_dDWb{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.collapseSidebarButton_QR0K{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_M9kn{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_SwZr,[dir=rtl] .collapseSidebarButtonIcon_M9kn{transform:rotate(0)}.collapseSidebarButton_QR0K:focus,.collapseSidebarButton_QR0K:hover,.expandButton_ufpw:focus,.expandButton_ufpw:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.menuHtmlItem_QgMK{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_mg8w{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_mg8w{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_awgL{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_MTJx{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_j34c{padding-top:0}.sidebarHidden_sYHa{opacity:0;visibility:hidden}.sidebarLogo_E5y3{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_E5y3 img{height:2rem;margin-right:.5rem}.expandButton_ufpw{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[dir=rtl] .expandButtonIcon_SwZr{transform:rotate(180deg)}.docSidebarContainer_J78T{border-right:1px solid var(--ifm-toc-border-color);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_YUaV{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_iMXG{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_CxMK{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_BgyR{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_GccM{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}.lastUpdated_RTW_{text-align:right}.tocMobile_m67Q{display:none}.docItemCol_CS7P{max-width:75%!important}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_z618,.footer__link-separator,.navbar__item,.sidebar_jZ8h,.tableOfContents_r_Qc{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.navbarSearchContainer_dDWb{position:absolute;right:var(--ifm-navbar-padding-horizontal)}.docItemContainer_LSLx{padding:0 .3rem}}@media only screen and (max-width:996px){.searchQueryColumn_pDz4,.searchResultsColumn_HwVW{max-width:60%!important}.searchLogoColumn_CSzm,.searchVersionColumn_W3RZ{max-width:40%!important}.searchLogoColumn_CSzm{padding-left:0!important}}@media screen and (max-width:996px){.heroBanner_qdFl{padding:2rem}}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder,.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%;max-height:calc(var(--docsearch-vh,1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh,1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh,1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Cancel{appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:0;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}.title_ypgm{font-size:2rem}}@media screen and (max-width:576px){.searchQueryColumn_pDz4{max-width:100%!important}.searchVersionColumn_W3RZ{max-width:100%!important;padding-left:var(--ifm-spacing-horizontal)!important}}@media (hover:hover){.backToTopButton_H0zO:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit--deleting,.DocSearch-Hit--favoriting{transition:none}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}@media print{.announcementBar_ON6v,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_m67Q{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_QBCl{white-space:pre-wrap}} \ No newline at end of file diff --git a/assets/js/0058b4c6.d9b5b6f7.js b/assets/js/0058b4c6.d9b5b6f7.js new file mode 100644 index 000000000..d8d6caf4e --- /dev/null +++ b/assets/js/0058b4c6.d9b5b6f7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[88],{6462:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docsSidebar":[{"type":"link","label":"Installation","href":"/docs/installation","docId":"installation","unlisted":false},{"type":"link","label":"Quick Start","href":"/docs/quick-start","docId":"quick-start","unlisted":false},{"type":"category","label":"Configuration","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"yazi.toml","href":"/docs/configuration/yazi","docId":"configuration/yazi","unlisted":false},{"type":"link","label":"keymap.toml","href":"/docs/configuration/keymap","docId":"configuration/keymap","unlisted":false},{"type":"link","label":"theme.toml","href":"/docs/configuration/theme","docId":"configuration/theme","unlisted":false}],"href":"/docs/configuration/overview"},{"type":"link","label":"Image Preview","href":"/docs/image-preview","docId":"image-preview","unlisted":false},{"type":"category","label":"Plugins (BETA)","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Types","href":"/docs/plugins/types","docId":"plugins/types","unlisted":false},{"type":"link","label":"Layout","href":"/docs/plugins/layout","docId":"plugins/layout","unlisted":false},{"type":"link","label":"Utils","href":"/docs/plugins/utils","docId":"plugins/utils","unlisted":false},{"type":"link","label":"Config","href":"/docs/plugins/config","docId":"plugins/config","unlisted":false}],"href":"/docs/plugins/overview"},{"type":"link","label":"Flavors (BETA)","href":"/docs/flavors/overview","docId":"flavors/overview","unlisted":false},{"type":"link","label":"DDS","href":"/docs/dds","docId":"dds","unlisted":false},{"type":"link","label":"Tips","href":"/docs/tips","docId":"tips","unlisted":false},{"type":"link","label":"Resources","href":"/docs/resources","docId":"resources","unlisted":false},{"type":"link","label":"Frequently Asked Questions","href":"/docs/faq","docId":"faq","unlisted":false}]},"docs":{"configuration/keymap":{"id":"configuration/keymap","title":"keymap.toml","description":"Learn how to configure keyboard shortcuts with Yazi.","sidebar":"docsSidebar"},"configuration/overview":{"id":"configuration/overview","title":"Configuration","description":"Learn how to configure Yazi.","sidebar":"docsSidebar"},"configuration/theme":{"id":"configuration/theme","title":"theme.toml","description":"Learn how to configure your Yazi theme.","sidebar":"docsSidebar"},"configuration/yazi":{"id":"configuration/yazi","title":"yazi.toml","description":"Learn how to configure Yazi\'s basic functionality.","sidebar":"docsSidebar"},"dds":{"id":"dds","title":"DDS","description":"Data Distribution Service","sidebar":"docsSidebar"},"faq":{"id":"faq","title":"Frequently Asked Questions","description":"Answers to some frequently asked questions about Yazi.","sidebar":"docsSidebar"},"flavors/overview":{"id":"flavors/overview","title":"Flavors (BETA)","description":"Learn how to use Yazi flavors.","sidebar":"docsSidebar"},"image-preview":{"id":"image-preview","title":"Image Preview","description":"How to preview images in Yazi.","sidebar":"docsSidebar"},"installation":{"id":"installation","title":"Installation","description":"How to install Yazi on various operating systems.","sidebar":"docsSidebar"},"plugins/config":{"id":"plugins/config","title":"Config","description":"Learn how to use Yazi\'s Lua API.","sidebar":"docsSidebar"},"plugins/layout":{"id":"plugins/layout","title":"Layout","description":"Learn how to use Yazi\'s Lua API.","sidebar":"docsSidebar"},"plugins/overview":{"id":"plugins/overview","title":"Plugins (BETA)","description":"Learn how to extend Yazi with Lua plugins.","sidebar":"docsSidebar"},"plugins/types":{"id":"plugins/types","title":"Types","description":"Learn how to use Yazi\'s Lua API.","sidebar":"docsSidebar"},"plugins/utils":{"id":"plugins/utils","title":"Utils","description":"Learn how to use Yazi\'s Lua API.","sidebar":"docsSidebar"},"quick-start":{"id":"quick-start","title":"Quick Start","description":"A quick guide on the basic usage of Yazi.","sidebar":"docsSidebar"},"resources":{"id":"resources","title":"Resources","description":"Some awesome plugins for Yazi.","sidebar":"docsSidebar"},"tips":{"id":"tips","title":"Tips","description":"A few helpful tips for using Yazi.","sidebar":"docsSidebar"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/017b72a7.4aeb2942.js b/assets/js/017b72a7.4aeb2942.js new file mode 100644 index 000000000..c17de2294 --- /dev/null +++ b/assets/js/017b72a7.4aeb2942.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[213],{5728:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>d,contentTitle:()=>r,default:()=>h,frontMatter:()=>l,metadata:()=>c,toc:()=>a});var s=i(1527),t=i(6225);const l={id:"overview",sidebar_position:0,sidebar_label:"Plugins (BETA)",description:"Learn how to extend Yazi with Lua plugins."},r="Plugins (BETA)",c={id:"plugins/overview",title:"Plugins (BETA)",description:"Learn how to extend Yazi with Lua plugins.",source:"@site/docs/plugins/overview.md",sourceDirName:"plugins",slug:"/plugins/overview",permalink:"/docs/plugins/overview",draft:!1,unlisted:!1,editUrl:"https://github.com/yazi-rs/yazi-rs.github.io/edit/main/docs/plugins/overview.md",tags:[],version:"current",sidebarPosition:0,frontMatter:{id:"overview",sidebar_position:0,sidebar_label:"Plugins (BETA)",description:"Learn how to extend Yazi with Lua plugins."},sidebar:"docsSidebar",previous:{title:"Image Preview",permalink:"/docs/image-preview"},next:{title:"Types",permalink:"/docs/plugins/types"}},d={},a=[{value:"Usage",id:"usage",level:2},{value:"Functional plugin",id:"functional-plugin",level:3},{value:"Sync vs Async",id:"sync-vs-async",level:2},{value:"Sync context",id:"sync-context",level:3},{value:"Async context",id:"async-context",level:3},{value:"Interface",id:"interface",level:2},{value:"Previewer",id:"previewer",level:3},{value:"Preloader",id:"preloader",level:3},{value:"Sendable value",id:"sendable",level:2},{value:"Debugging",id:"debugging",level:2},{value:"Logging",id:"logging",level:3}];function o(e){const n={a:"a",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"plugins-beta",children:"Plugins (BETA)"}),"\n",(0,s.jsxs)(n.p,{children:["You can extend Yazi's functionality through Lua plugins, which need to be placed in the ",(0,s.jsx)(n.code,{children:"plugins"})," subdirectory of Yazi's configuration directory, so either:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"~/.config/yazi/plugins/"})," on Unix-like systems."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"C:\\Users\\USERNAME\\AppData\\Roaming\\yazi\\config\\plugins\\"})," on Windows."]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"~/.config/yazi/\n\u251c\u2500\u2500 init.lua\n\u251c\u2500\u2500 plugins/\n\u2502\xa0\xa0 \u251c\u2500\u2500 foo.yazi/\n\u2502\xa0\xa0 \u2514\u2500\u2500 bar.yazi/\n\u2514\u2500\u2500 yazi.toml\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Each plugin is a directory with a ",(0,s.jsx)(n.a,{href:"https://developer.mozilla.org/en-US/docs/Glossary/Kebab_case",children:"kebab-case"})," name, ending in ",(0,s.jsx)(n.code,{children:".yazi"}),", and containing at least the following files:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"~/.config/yazi/plugins/bar.yazi/\n\u251c\u2500\u2500 init.lua\n\u251c\u2500\u2500 README.md\n\u2514\u2500\u2500 LICENSE\n"})}),"\n",(0,s.jsx)(n.p,{children:"Where:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"init.lua"})," is the entry point of this plugin."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"README.md"})," is the documentation of this plugin."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"LICENSE"})," is the license file for this plugin."]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"usage",children:"Usage"}),"\n",(0,s.jsx)(n.p,{children:"A plugin has two usages:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#functional-plugin",children:"Functional plugin"}),": Bind the ",(0,s.jsx)(n.code,{children:"plugin"})," command to a key in ",(0,s.jsx)(n.code,{children:"keymap.toml"}),", and activate it by pressing the key."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"/docs/configuration/yazi#plugin",children:"Custom previewers, preloaders"}),": Configure them as ",(0,s.jsx)(n.code,{children:"previewers"})," or ",(0,s.jsx)(n.code,{children:"preloaders"})," in your ",(0,s.jsx)(n.code,{children:"[plugin]"})," of ",(0,s.jsx)(n.code,{children:"yazi.toml"})," file."]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"functional-plugin",children:"Functional plugin"}),"\n",(0,s.jsxs)(n.p,{children:["You can bind a ",(0,s.jsx)(n.code,{children:"plugin"})," command to a specific key in your ",(0,s.jsx)(n.code,{children:"keymap.toml"})," with:"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Argument/Option"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"[name]"})}),(0,s.jsx)(n.td,{children:"The name of the plugin to run."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"--sync"})}),(0,s.jsx)(n.td,{children:"Run the plugin in a sync context."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"--args=[args]"})}),(0,s.jsx)(n.td,{children:"Shell-style arguments passed to the plugin."})]})]})]}),"\n",(0,s.jsxs)(n.p,{children:["For example, ",(0,s.jsx)(n.code,{children:"plugin test --sync --args='hello world'"})," will run the ",(0,s.jsx)(n.code,{children:"test"})," plugin with the arguments ",(0,s.jsx)(n.code,{children:"hello"})," and ",(0,s.jsx)(n.code,{children:"world"})," in a sync context."]}),"\n",(0,s.jsxs)(n.p,{children:["To receive the arguments in the plugin, use ",(0,s.jsx)(n.code,{children:"args"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'-- ~/.config/yazi/plugins/test.yazi/init.lua\nreturn {\n\tentry = function(self, args)\n\t\tya.err(args[1]) -- "hello"\n\t\tya.err(args[2]) -- "world"\n\tend,\n}\n'})}),"\n",(0,s.jsx)(n.h2,{id:"sync-vs-async",children:"Sync vs Async"}),"\n",(0,s.jsxs)(n.p,{children:["The plugin system is designed with an async-first philosophy. Therefore, unless specifically specified, such as the ",(0,s.jsx)(n.code,{children:"--sync"})," for the ",(0,s.jsx)(n.code,{children:"plugin"})," command, all plugins run in an async context."]}),"\n",(0,s.jsxs)(n.p,{children:["There is one exception - all ",(0,s.jsx)(n.code,{children:"init.lua"})," are synchronous, which includes:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["The ",(0,s.jsx)(n.code,{children:"init.lua"})," for Yazi itself, i.e. ",(0,s.jsx)(n.code,{children:"~/.config/yazi/init.lua"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:["The ",(0,s.jsx)(n.code,{children:"init.lua"})," for each plugin, e.g. ",(0,s.jsx)(n.code,{children:"~/.config/yazi/plugins/bar.yazi/init.lua"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["This is because ",(0,s.jsx)(n.code,{children:"init.lua"})," is commonly used to initialize plugin configurations, and this process is synchronous:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'-- ~/.config/yazi/init.lua\nrequire("bar"):setup {\n\tkey1 = "value1",\n\tkey2 = "value2",\n\t-- ...\n}\n'})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:"-- ~/.config/yazi/plugins/bar.yazi/init.lua\nreturn {\n\tsetup = function(state, opts)\n\t\t-- Save the user configuration to the plugin's state\n\t\tstate.key1 = opts.key1\n\t\tstate.key2 = opts.key2\n\tend,\n}\n"})}),"\n",(0,s.jsx)(n.h3,{id:"sync-context",children:"Sync context"}),"\n",(0,s.jsxs)(n.p,{children:["The sync context accompanies the entire app lifecycle, which is active during UI rendering (UI plugins), and on executing sync functional plugins (",(0,s.jsx)(n.code,{children:"plugin"})," command with ",(0,s.jsx)(n.code,{children:"--sync"}),")."]}),"\n",(0,s.jsx)(n.p,{children:"For better performance, the sync context is created only at the app's start and remains singular throughout. Thus, plugins running within this context share states,\nprompting plugin developers to use plugin-specific state persistence for their plugins to prevent global space contamination:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'-- ~/.config/yazi/test.yazi/init.lua\nreturn {\n entry = function(state)\n state.i = state.i or 0\n ya.err("i = " .. state.i)\n\n state.i = state.i + 1\n end,\n}\n'})}),"\n",(0,s.jsxs)(n.p,{children:["Yazi initializes the ",(0,s.jsx)(n.code,{children:"state"})," for each ",(0,s.jsx)(n.em,{children:"sync"})," plugin before running, and it exists independently for them throughout the entire lifecycle.\nDo the ",(0,s.jsx)(n.code,{children:"plugin --sync test"})," three times, and you will see the log output:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"i = 0\ni = 1\ni = 2\n"})}),"\n",(0,s.jsx)(n.h3,{id:"async-context",children:"Async context"}),"\n",(0,s.jsx)(n.p,{children:"When a plugin is executed asynchronously, an isolated async context is created for it automatically."}),"\n",(0,s.jsx)(n.p,{children:"In this context, you can use all the async functions supported by Yazi, and it operates concurrently with the main thread, ensuring that the main thread is not blocked."}),"\n",(0,s.jsxs)(n.p,{children:["You can also obtain ",(0,s.jsx)(n.a,{href:"#sendable",children:"a small amount"}),' of app data from the sync context by calling a "sync function":']}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'-- ~/.config/yazi/plugins/my-async-plugin.yazi/init.lua\nlocal set_state = ya.sync(function(state, a)\n\t-- You can get/set the state of the plugin through `state` parameter\n\t-- in the `sync()` block\n\tstate.a = a\nend)\n\nlocal get_state = ya.sync(function(state, b)\n\t-- You can access all app data through the `cx`,\n\t-- within the `sync()` block, in an async plugin\n\tlocal h = cx.active.current.hovered\n\treturn h and state.a .. tostring(h.url) or b\nend)\n\nreturn {\n\tentry = function()\n\t\tset_state("this is a")\n\t\tlocal h = get_state("this is b")\n\t\t-- Do some time-consuming work, such as reading file, network request, etc.\n\t\t-- It will execute concurrently with the main thread\n\tend,\n}\n'})}),"\n",(0,s.jsxs)(n.p,{children:["Note that ",(0,s.jsx)(n.code,{children:"ya.sync()"})," call must be at the top level:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:"-- Wrong !!!\nlocal get_state\nif some_condition then\n\tget_state = ya.sync(function(state)\n\t\t-- ...\n\tend)\nend\n"})}),"\n",(0,s.jsx)(n.h2,{id:"interface",children:"Interface"}),"\n",(0,s.jsx)(n.h3,{id:"previewer",children:"Previewer"}),"\n",(0,s.jsxs)(n.p,{children:["A previewer needs to return a table that implements the ",(0,s.jsx)(n.code,{children:"peek"})," and ",(0,s.jsx)(n.code,{children:"seek"})," functions. Both functions take a table parameter ",(0,s.jsx)(n.code,{children:"self"})," and do not return any values:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:"return {\n\tpeek = function(self) return end,\n\tseek = function(self) return end,\n}\n"})}),"\n",(0,s.jsxs)(n.p,{children:["When the user presses ",(0,s.jsx)("kbd",{children:"j"})," or ",(0,s.jsx)("kbd",{children:"k"})," to switch between hovering files, ",(0,s.jsx)(n.code,{children:"peek"})," is called, with:"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Key"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"file"})}),(0,s.jsxs)(n.td,{children:["The ",(0,s.jsx)(n.a,{href:"/docs/plugins/types#shared.file",children:"File"})," to be previewed."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"skip"})}),(0,s.jsx)(n.td,{children:"The number of units to skip. The units largely depend on your previewer, such as lines for code and percentages for videos."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"area"})}),(0,s.jsxs)(n.td,{children:["The ",(0,s.jsx)(n.a,{href:"/docs/plugins/layout#rect",children:"Rect"})," of the available preview area."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"window"})}),(0,s.jsxs)(n.td,{children:["The ",(0,s.jsx)(n.a,{href:"/docs/plugins/layout#rect",children:"Rect"})," of the entire terminal window."]})]})]})]}),"\n",(0,s.jsxs)(n.p,{children:["When the user presses ",(0,s.jsx)("kbd",{children:"Alt-j"})," or ",(0,s.jsx)("kbd",{children:"Alt-k"})," to scroll the preview of this file, ",(0,s.jsx)(n.code,{children:"seek"})," is called, with:"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Key"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"file"})}),(0,s.jsxs)(n.td,{children:["The ",(0,s.jsx)(n.a,{href:"/docs/plugins/types#shared.file",children:"File"})," being scrolled."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"area"})}),(0,s.jsxs)(n.td,{children:["The ",(0,s.jsx)(n.a,{href:"/docs/plugins/layout#rect",children:"Rect"})," of the available preview area."]})]})]})]}),"\n",(0,s.jsxs)(n.p,{children:["The task of ",(0,s.jsx)(n.code,{children:"peek"})," is to draw in the preview area based on the values of ",(0,s.jsx)(n.code,{children:"file"})," and ",(0,s.jsx)(n.code,{children:"skip"}),". This process is asynchronous."]}),"\n",(0,s.jsxs)(n.p,{children:["The task of ",(0,s.jsx)(n.code,{children:"seek"})," is to change the value of ",(0,s.jsx)(n.code,{children:"skip"})," based on user behavior and trigger ",(0,s.jsx)(n.code,{children:"peek"})," again. It is synchronous, meaning you can access ",(0,s.jsx)(n.a,{href:"/docs/plugins/types#app-data",children:"app data"})," through ",(0,s.jsx)(n.code,{children:"cx"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["Here are some preset previewers and preloaders you can refer to: ",(0,s.jsx)(n.a,{href:"https://github.com/sxyazi/yazi/tree/latest/yazi-plugin/preset/plugins",children:"Yazi Preset Plugins"})]}),"\n",(0,s.jsx)(n.h3,{id:"preloader",children:"Preloader"}),"\n",(0,s.jsxs)(n.p,{children:["You need to return a table that implements the ",(0,s.jsx)(n.code,{children:"preload"})," function, it receives a ",(0,s.jsx)(n.code,{children:"self"})," parameter, which is a table with the same fields as ",(0,s.jsx)(n.a,{href:"#previewer",children:(0,s.jsx)(n.code,{children:"peek()"})}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:"return {\n\tpreload = function(self)\n\t\treturn 1\n\tend,\n}\n"})}),"\n",(0,s.jsx)(n.p,{children:"And has the following return values:"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Binary"}),(0,s.jsx)(n.th,{children:"Decimal"}),(0,s.jsx)(n.th,{})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"0 0"})}),(0,s.jsx)(n.td,{children:"0"}),(0,s.jsx)(n.td,{children:"Failure, don't continue"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"0 1"})}),(0,s.jsx)(n.td,{children:"1"}),(0,s.jsx)(n.td,{children:"Success, don't continue"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"1 0"})}),(0,s.jsx)(n.td,{children:"2"}),(0,s.jsx)(n.td,{children:"Failure, continue"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"1 1"})}),(0,s.jsx)(n.td,{children:"3"}),(0,s.jsx)(n.td,{children:"Success, continue"})]})]})]}),"\n",(0,s.jsx)(n.p,{children:'When "continue" is set, the preloader can reload the files that have already been loaded at the next time point, such as when the user scrolls, leading to a page switch. This is usually done for the either:'}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Retrying in case of file loading failure"}),"\n",(0,s.jsx)(n.li,{children:"Refreshing the file status upon successful loading"}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["Yazi will automatically invoke the ",(0,s.jsx)(n.code,{children:"preload"})," concurrently for each file that matches the preload rules on the page."]}),"\n",(0,s.jsxs)(n.p,{children:["When the user specifies ",(0,s.jsx)(n.a,{href:"/docs/configuration/yazi#plugin.preloaders",children:(0,s.jsx)(n.code,{children:"multi = true"})})," for it, the plugin allows preloading multiple files at once. In this case, ",(0,s.jsx)(n.code,{children:"self.file"})," will be replaced by ",(0,s.jsx)(n.code,{children:"self.files"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["Typically, a preloader only needs to implement one of them - either single or multiple. This depends on the specific task and the magnitude of the workload.\nIf it truly requires loading multiple files at once, the user needs to be prompted to enable the ",(0,s.jsx)(n.code,{children:"multi"})," option for it."]}),"\n",(0,s.jsx)(n.h2,{id:"sendable",children:"Sendable value"}),"\n",(0,s.jsx)(n.p,{children:"Yazi's plugin can run concurrently on multiple threads. For better performance, only the following types of combinations can be used for inter-thread data exchange:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Nil"}),"\n",(0,s.jsx)(n.li,{children:"Boolean"}),"\n",(0,s.jsx)(n.li,{children:"Number"}),"\n",(0,s.jsx)(n.li,{children:"String"}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"/docs/plugins/types#shared.url",children:"Url"})}),"\n",(0,s.jsx)(n.li,{children:"Table and nested tables, with the above types as values"}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"debugging",children:"Debugging"}),"\n",(0,s.jsxs)(n.p,{children:["Please ensure that your ",(0,s.jsx)(n.code,{children:"~/.config/yazi/init.lua"})," includes valid Lua code with the correct syntax, otherwise will result in Yazi being unable to parse and execute your ",(0,s.jsx)(n.code,{children:"init.lua"})," to initialize."]}),"\n",(0,s.jsxs)(n.p,{children:["We recommend installing a Lua plugin in your editor for syntax checking to avoid any syntax errors.\nFor example, install the ",(0,s.jsx)(n.a,{href:"https://marketplace.visualstudio.com/items?itemName=sumneko.lua",children:"Lua plugin"})," for VSCode, and for Neovim, use ",(0,s.jsx)(n.a,{href:"https://github.com/neovim/nvim-lspconfig",children:"nvim-lspconfig"})," to configure your Lua LSP."]}),"\n",(0,s.jsxs)(n.p,{children:["If you have no experience with Lua, you can quickly get started through ",(0,s.jsx)(n.a,{href:"https://learnxinyminutes.com/docs/lua/",children:"https://learnxinyminutes.com/docs/lua/"})]}),"\n",(0,s.jsx)(n.h3,{id:"logging",children:"Logging"}),"\n",(0,s.jsxs)(n.p,{children:["If you want to debug some runtime data, use ",(0,s.jsx)(n.a,{href:"/docs/plugins/utils#ya.dbg",children:(0,s.jsx)(n.code,{children:"ya.dbg()"})})," and ",(0,s.jsx)(n.a,{href:"/docs/plugins/utils#ya.err",children:(0,s.jsx)(n.code,{children:"ya.err()"})})," to print what you want to debug to either:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"~/.local/state/yazi/yazi.log"})," on Unix-like systems."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"C:\\Users\\USERNAME\\AppData\\Roaming\\yazi\\state\\yazi.log"})," on Windows."]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(o,{...e})}):o(e)}},6225:(e,n,i)=>{i.d(n,{Z:()=>c,a:()=>r});var s=i(959);const t={},l=s.createContext(t);function r(e){const n=s.useContext(l);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),s.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/0480b142.8e06eea5.js b/assets/js/0480b142.8e06eea5.js new file mode 100644 index 000000000..89b388c84 --- /dev/null +++ b/assets/js/0480b142.8e06eea5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[836],{1718:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>h,contentTitle:()=>a,default:()=>c,frontMatter:()=>o,metadata:()=>r,toc:()=>l});var s=n(1527),i=n(6225);const o={sidebar_position:10,description:"Answers to some frequently asked questions about Yazi."},a="Frequently Asked Questions",r={id:"faq",title:"Frequently Asked Questions",description:"Answers to some frequently asked questions about Yazi.",source:"@site/docs/faq.md",sourceDirName:".",slug:"/faq",permalink:"/docs/faq",draft:!1,unlisted:!1,editUrl:"https://github.com/yazi-rs/yazi-rs.github.io/edit/main/docs/faq.md",tags:[],version:"current",sidebarPosition:10,frontMatter:{sidebar_position:10,description:"Answers to some frequently asked questions about Yazi."},sidebar:"docsSidebar",previous:{title:"Resources",permalink:"/docs/resources"}},h={},l=[{value:"Why is Yazi fast?",id:"why-yazi-fast",level:2},{value:"Why can't I edit text files?",id:"why-cant-edit",level:2},{value:"Why can't I open/edit/preview files on Windows?",id:"why-cant-preview",level:2},{value:"Why is my text color not distinct?",id:"why-text-indistinct",level:2},{value:"Why can't "Open" and "Enter" be a single command?",id:"why-separate-open-enter",level:2},{value:"Why do my icons shrink in kitty, and enlarge when scrolling?",id:"why-icons-shrink",level:2},{value:"Why is "orphan" set to false by default?",id:"why-orphan-false",level:2},{value:"I don't like nerd\u2010fonts!",id:"dont-like-nerd-fonts",level:2},{value:"Why doesn't the XXX feature exist?",id:"why-no-xxx",level:2}];function d(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",p:"p",pre:"pre",...(0,i.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"frequently-asked-questions",children:"Frequently Asked Questions"}),"\n",(0,s.jsx)(t.h2,{id:"why-yazi-fast",children:"Why is Yazi fast?"}),"\n",(0,s.jsxs)(t.p,{children:["See ",(0,s.jsx)(t.a,{href:"/blog/why-is-yazi-fast",children:"Why is Yazi fast?"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"why-cant-edit",children:"Why can't I edit text files?"}),"\n",(0,s.jsxs)(t.p,{children:["Yazi defaults to using ",(0,s.jsx)(t.code,{children:"$EDITOR"})," as the text editor for Linux/macOS.\nIf you are unable to edit files, please check your Bash/Zsh/Fish configuration file for settings like ",(0,s.jsx)(t.code,{children:"export EDITOR=vim"}),". You can also ",(0,s.jsx)(t.a,{href:"/docs/configuration/yazi#opener",children:"change Yazi's text opener"})," from ",(0,s.jsx)(t.code,{children:"$EDITOR"})," to vim/nvim/nano."]}),"\n",(0,s.jsxs)(t.p,{children:["For Windows, there is no concept of ",(0,s.jsx)(t.code,{children:"$EDITOR"}),", so users need to modify the text opener as needed."]}),"\n",(0,s.jsx)(t.h2,{id:"why-cant-preview",children:"Why can't I open/edit/preview files on Windows?"}),"\n",(0,s.jsxs)(t.p,{children:["Please make sure you have set the ",(0,s.jsx)(t.code,{children:"YAZI_FILE_ONE"})," environment variable as per the ",(0,s.jsx)(t.a,{href:"/docs/installation#requirements",children:"Windows Requirements"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"why-text-indistinct",children:"Why is my text color not distinct?"}),"\n",(0,s.jsx)(t.p,{children:"Yazi's default theme uses base16 colors to match the user's terminal theme as closely as possible."}),"\n",(0,s.jsxs)(t.p,{children:["Unfortunately, this cannot cater to all users, and even the colors needed by the same user in light/dark mode can vary, not to mention that some terminals have poor default color schemes, like this ",(0,s.jsx)(t.a,{href:"https://github.com/sxyazi/yazi/issues/149#issuecomment-1798349727",children:"#149 (comment)"}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["So, please ",(0,s.jsx)(t.a,{href:"https://github.com/yazi-rs/flavors",children:"use a Yazi flavor"})," that matches your terminal theme. Of course, if you find a color that better covers most terminals, feel free to create a PR!"]}),"\n",(0,s.jsx)(t.h2,{id:"why-separate-open-enter",children:'Why can\'t "Open" and "Enter" be a single command?'}),"\n",(0,s.jsxs)(t.p,{children:["The decision to separate ",(0,s.jsx)(t.code,{children:"enter"})," and ",(0,s.jsx)(t.code,{children:"open"})," commands was intentional."]}),"\n",(0,s.jsx)(t.p,{children:"Yazi will be adding the ability to treat an archive as a directory in the future, allowing direct operations on the files inside."}),"\n",(0,s.jsx)(t.p,{children:'An archive is a file, so it\'s "openable", but it\'s also "enterable" as a directory; so the user can choose the action they want to do.'}),"\n",(0,s.jsx)(t.p,{children:"This is true for a actual directory as well - a directory can be entered (in Yazi), or opened (in programs like VSCode or desktop file managers)."}),"\n",(0,s.jsxs)(t.p,{children:["If you truly don't need to distinguish between them, use this ",(0,s.jsx)(t.a,{href:"/docs/tips#smart-enter",children:"smart-enter tip"}),"."]}),"\n",(0,s.jsxs)(t.h2,{id:"why-icons-shrink",children:["Why do my icons shrink in ",(0,s.jsx)(t.a,{href:"https://sw.kovidgoyal.net/kitty/",children:"kitty"}),", and enlarge when scrolling?"]}),"\n",(0,s.jsxs)(t.p,{children:["TL;DR: Use a flavor for Yazi, ",(0,s.jsx)(t.a,{href:"https://github.com/yazi-rs/flavors",children:"https://github.com/yazi-rs/flavors"})]}),"\n",(0,s.jsx)(t.p,{children:"This might be a bug in kitty (or feature? I don't know). In kitty, you have to add a style to file list items (like foreground color) to make the icons match the text size. However, Yazi's default theme can't add that color, because it can't predict whether the user's terminal has a white background with black text, or a black background with white text."}),"\n",(0,s.jsx)(t.p,{children:"So it inherits the default terminal font color. This causes the icon size issue, and I've only found this problem in kitty - other terminals don't have it. Therefore, please use a Yazi flavor for the kitty terminal."}),"\n",(0,s.jsx)(t.h2,{id:"why-orphan-false",children:'Why is "orphan" set to false by default?'}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.code,{children:"orphan=true"})," is an emergency exit; once specified, your task will not be managed by Yazi."]}),"\n",(0,s.jsxs)(t.p,{children:["For instance, if you realize that you've used ",(0,s.jsx)(t.code,{children:"unzip"})," on the wrong files, and you need to cancel it, with ",(0,s.jsx)(t.code,{children:"orphan=false"}),", you can easily do that by pressing ",(0,s.jsx)(t.code,{children:"x"})," in Yazi's task manager.\nHowever, with ",(0,s.jsx)(t.code,{children:"orphan=true"}),", you can only return to the shell to terminate it."]}),"\n",(0,s.jsxs)(t.p,{children:["On the other hand, tasks with ",(0,s.jsx)(t.code,{children:"orphan=false"})," are scheduled through the Yazi task system. It can limit the number of concurrent tasks (configurable by the user), to prevent system resource depletion, such as when you're extracting 100 files."]}),"\n",(0,s.jsx)(t.h2,{id:"dont-like-nerd-fonts",children:"I don't like nerd\u2010fonts!"}),"\n",(0,s.jsxs)(t.p,{children:["Yazi has ",(0,s.jsx)(t.code,{children:"nerd-fonts"})," enabled by default, it looks really cool!"]}),"\n",(0,s.jsxs)(t.p,{children:["If you don't want to use it and want things to be calm, sure, you can modify these icons as much as you want in ",(0,s.jsx)(t.a,{href:"/docs/configuration/theme",children:(0,s.jsx)(t.code,{children:"theme.toml"})}),":"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-toml",children:'[status]\nseparator_open = ""\nseparator_close = ""\n\n[icon]\nrules = []\n'})}),"\n",(0,s.jsxs)(t.p,{children:["The above code changed all icons to ",(0,s.jsx)(t.code,{children:'""'}),", and the whole world went quiet, nice!"]}),"\n",(0,s.jsx)(t.h2,{id:"why-no-xxx",children:"Why doesn't the XXX feature exist?"}),"\n",(0,s.jsx)(t.p,{children:"Yazi is a new project, with less than 3 months (as of Sep 20, 2023) since its first commit, and some features are still heavily being developed."}),"\n",(0,s.jsxs)(t.p,{children:["If you find that the XXX feature is missing, please check if it has already been mentioned in the ",(0,s.jsx)(t.a,{href:"https://github.com/sxyazi/yazi/issues/51",children:"Feature Requests"})," and search for related issues. If not, you can create a new request."]}),"\n",(0,s.jsx)(t.p,{children:"Our time slices are limited, and they are allocated to what we consider critical issues, such as bug fixes and making Yazi stable, which includes addressing proposals that could potentially lead to broken changes in the future."}),"\n",(0,s.jsx)(t.p,{children:"Most maintainers have their full-time jobs, so please understand if your request isn't implemented promptly. Of course, we welcome any constructive PR to help expedite the implementation of your desired feature!"})]})}function c(e={}){const{wrapper:t}={...(0,i.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},6225:(e,t,n)=>{n.d(t,{Z:()=>r,a:()=>a});var s=n(959);const i={},o=s.createContext(i);function a(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),s.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/0f425520.c85b7cfa.js b/assets/js/0f425520.c85b7cfa.js new file mode 100644 index 000000000..d528fbb72 --- /dev/null +++ b/assets/js/0f425520.c85b7cfa.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[240],{6822:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>h,frontMatter:()=>t,metadata:()=>a,toc:()=>d});var o=i(1527),r=i(6225);const t={id:"overview",sidebar_position:0,sidebar_label:"Configuration",description:"Learn how to configure Yazi."},s="Configuration",a={id:"configuration/overview",title:"Configuration",description:"Learn how to configure Yazi.",source:"@site/docs/configuration/overview.md",sourceDirName:"configuration",slug:"/configuration/overview",permalink:"/docs/configuration/overview",draft:!1,unlisted:!1,editUrl:"https://github.com/yazi-rs/yazi-rs.github.io/edit/main/docs/configuration/overview.md",tags:[],version:"current",sidebarPosition:0,frontMatter:{id:"overview",sidebar_position:0,sidebar_label:"Configuration",description:"Learn how to configure Yazi."},sidebar:"docsSidebar",previous:{title:"Quick Start",permalink:"/docs/quick-start"},next:{title:"yazi.toml",permalink:"/docs/configuration/yazi"}},c={},d=[{value:"Configuration mixing",id:"mixing",level:2},{value:"Custom config directory",id:"custom-directory",level:2}];function l(e){const n={a:"a",code:"code",em:"em",h1:"h1",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h1,{id:"configuration",children:"Configuration"}),"\n",(0,o.jsx)(n.p,{children:"There are three configuration files for Yazi:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"/docs/configuration/yazi",children:(0,o.jsx)(n.code,{children:"yazi.toml"})})," - General configuration."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"/docs/configuration/keymap",children:(0,o.jsx)(n.code,{children:"keymap.toml"})})," - Keybindings configuration."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"/docs/configuration/theme",children:(0,o.jsx)(n.code,{children:"theme.toml"})})," - Color scheme configuration."]}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["You can find the default configuration files on the ",(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.em,{children:(0,o.jsx)(n.code,{children:"latest"})})})," tag ",(0,o.jsxs)(n.a,{href:"https://github.com/sxyazi/yazi/tree/latest/yazi-config/preset",children:["https://github.com/sxyazi/yazi/tree/",(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.em,{children:"latest"})}),"/yazi-config/preset"]}),"."]}),"\n",(0,o.jsx)(n.p,{children:"To override any of the defaults, begin by creating the corresponding file (from the directory linked above) to:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"~/.config/yazi/"})," on Unix-like systems."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"C:\\Users\\USERNAME\\AppData\\Roaming\\yazi\\config\\"})," on Windows."]}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["For example, to change the visible status of hidden files, start by creating a ",(0,o.jsx)(n.code,{children:"yazi.toml"})," file to:"]}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"~/.config/yazi/yazi.toml"})," on Unix-like systems."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"C:\\Users\\USERNAME\\AppData\\Roaming\\yazi\\config\\yazi.toml"})," on Windows."]}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["Then ",(0,o.jsx)(n.a,{href:"https://github.com/sxyazi/yazi/blob/latest/yazi-config/preset/yazi.toml",children:"copy the required part"})," into it, here is ",(0,o.jsx)(n.code,{children:"show_hidden"}),":"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-toml",children:"# yazi.toml\n[manager]\nshow_hidden = true\n"})}),"\n",(0,o.jsx)(n.h2,{id:"mixing",children:"Configuration mixing"}),"\n",(0,o.jsx)(n.p,{children:"The options from your configuration file will be used to override the default. However, for key bindings, if you don't want to override the default directly:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-toml",children:"# keymap.toml\n[manager]\nkeymap = [\n\t# ...\n]\n"})}),"\n",(0,o.jsxs)(n.p,{children:["And instead want to customize your keys upon the default, you can use ",(0,o.jsx)(n.code,{children:"prepend_*"})," or ",(0,o.jsx)(n.code,{children:"append_*"})," directories to prepend or append them to the default (See ",(0,o.jsx)(n.a,{href:"/docs/configuration/keymap",children:"keymap.toml"})," for details):"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-toml",children:"# keymap.toml\n[manager]\nprepend_keymap = [\n\t# ...\n]\nappend_keymap = [\n\t# ...\n]\n"})}),"\n",(0,o.jsx)(n.p,{children:"They are also available for open, icon, previewer, and preloader rules."}),"\n",(0,o.jsx)(n.h2,{id:"custom-directory",children:"Custom config directory"}),"\n",(0,o.jsxs)(n.p,{children:["You can change the Yazi configuration directory by exporting the ",(0,o.jsx)(n.code,{children:"YAZI_CONFIG_HOME"})," environment variable. For example:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-sh",children:'env "YAZI_CONFIG_HOME=~/.config/yazi-alt" yazi\n'})}),"\n",(0,o.jsxs)(n.p,{children:["will start Yazi with ",(0,o.jsx)(n.code,{children:"~/.config/yazi-alt"})," as the configuration directory, and can have its own ",(0,o.jsx)(n.code,{children:"yazi.toml"}),", ",(0,o.jsx)(n.code,{children:"keymap.toml"}),", ",(0,o.jsx)(n.code,{children:"init.lua"}),", etc. files within it."]})]})}function h(e={}){const{wrapper:n}={...(0,r.a)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},6225:(e,n,i)=>{i.d(n,{Z:()=>a,a:()=>s});var o=i(959);const r={},t=o.createContext(r);function s(e){const n=o.useContext(t);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),o.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/115d3643.4afc0214.js b/assets/js/115d3643.4afc0214.js new file mode 100644 index 000000000..ae58c6fe4 --- /dev/null +++ b/assets/js/115d3643.4afc0214.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[418],{3701:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>d,contentTitle:()=>t,default:()=>o,frontMatter:()=>r,metadata:()=>c,toc:()=>h});var s=i(1527),l=i(6225);const r={sidebar_position:2,description:"Learn how to use Yazi's Lua API."},t="Layout",c={id:"plugins/layout",title:"Layout",description:"Learn how to use Yazi's Lua API.",source:"@site/docs/plugins/layout.md",sourceDirName:"plugins",slug:"/plugins/layout",permalink:"/docs/plugins/layout",draft:!1,unlisted:!1,editUrl:"https://github.com/yazi-rs/yazi-rs.github.io/edit/main/docs/plugins/layout.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2,description:"Learn how to use Yazi's Lua API."},sidebar:"docsSidebar",previous:{title:"Types",permalink:"/docs/plugins/types"},next:{title:"Utils",permalink:"/docs/plugins/utils"}},d={},h=[{value:"Bar",id:"bar",level:2},{value:"Border",id:"border",level:2},{value:"Clear",id:"clear",level:2},{value:"Constraint",id:"constraint",level:2},{value:"Gauge",id:"gauge",level:2},{value:"Layout",id:"layout",level:2},{value:"Line",id:"line",level:2},{value:"List",id:"list",level:2},{value:"ListItem",id:"list-item",level:2},{value:"Padding",id:"padding",level:2},{value:"Paragraph",id:"paragraph",level:2},{value:"Rect",id:"rect",level:2},{value:"Span",id:"span",level:2},{value:"Style",id:"style",level:2}];function a(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,l.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"layout",children:"Layout"}),"\n",(0,s.jsx)(n.p,{children:"Paragraph, List, Bar, Border, and Gauge are renderable widgets; others need to be placed within any of them."}),"\n",(0,s.jsx)(n.h2,{id:"bar",children:"Bar"}),"\n",(0,s.jsx)(n.p,{children:"Create a bar:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:"ui.Bar(rect, direction)\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The first attribute is a ",(0,s.jsx)(n.a,{href:"#rect",children:"Rect"}),", representing the position of this bar.\nThe second denotes the direction of the bar and accepts the following constants:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"ui.Bar.NONE"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"ui.Bar.TOP"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"ui.Bar.RIGHT"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"ui.Bar.BOTTOM"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"ui.Bar.LEFT"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"ui.Bar.ALL"})}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["Methods (all methods return ",(0,s.jsx)(n.code,{children:"self"}),"):"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"symbol(symbol)"})," - accepts a string, specifying the symbol for the bar"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"style(style)"})," - accepts a ",(0,s.jsx)(n.a,{href:"#style",children:"Style"}),", specifying the style of the bar"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"border",children:"Border"}),"\n",(0,s.jsx)(n.p,{children:"Create a border:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:"ui.Border(rect, position)\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The first attribute is a ",(0,s.jsx)(n.a,{href:"#rect",children:"Rect"}),", representing the position of this border.\nThe second denotes the position of the border and accepts the following constants:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"ui.Border.NONE"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"ui.Border.TOP"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"ui.Border.RIGHT"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"ui.Border.BOTTOM"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"ui.Border.LEFT"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"ui.Border.ALL"})}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["You can also use ",(0,s.jsx)(n.code,{children:"ui.Border:type(type)"})," to specify different types for the border. It accepts the following type constants:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"ui.Border.PLAIN"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"ui.Border.ROUNDED"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"ui.Border.DOUBLE"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"ui.Border.THICK"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"ui.Border.QUADRANT_INSIDE"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"ui.Border.QUADRANT_OUTSIDE"})}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["Methods (all methods return ",(0,s.jsx)(n.code,{children:"self"}),"):"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"style(style)"})," - accepts a ",(0,s.jsx)(n.a,{href:"#style",children:"Style"}),", specifying the style of the border"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"clear",children:"Clear"}),"\n",(0,s.jsx)(n.p,{children:"Clear the content of a specific area. Place it followed by the component that you want to clear:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:"local components = {\n\tui.Paragraph(rect, {}),\n\t-- ...\n\n\tui.Clear(rect),\n}\n"})}),"\n",(0,s.jsx)(n.h2,{id:"constraint",children:"Constraint"}),"\n",(0,s.jsx)(n.p,{children:"Constraints are used to define the size of a layout."}),"\n",(0,s.jsx)(n.p,{children:"They can be used to define a fixed size, a percentage of the available space, a ratio of the available space, or a minimum or maximum size:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:"ui.Constraint.Percentage(50) -- Apply a percentage to a given amount\nui.Constraint.Ratio(1, 3) -- Apply a ratio\nui.Constraint.Length(10) -- Apply no more than the given amount (currently roughly equal to `ui.Constraint.Max`)\nui.Constraint.Max(5) -- Apply at most the given amount\nui.Constraint.Min(3) -- Apply at least the given amount\n"})}),"\n",(0,s.jsx)(n.h2,{id:"gauge",children:"Gauge"}),"\n",(0,s.jsx)(n.p,{children:"Create a gauge:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:"ui.Gauge(rect)\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Methods (all methods return ",(0,s.jsx)(n.code,{children:"self"}),"):"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"percent(percent)"})," - Set the percentage of the gauge"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"ratio(ratio)"})," - Set the ratio of the gauge"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"label(label)"})," - Set the label of the gauge"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"style(style)"})," - Set the style of everything except the bar itself, which accepts a ",(0,s.jsx)(n.a,{href:"#style",children:"Style"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gauge_style(style)"})," - Set the style of the bar, which accepts a ",(0,s.jsx)(n.a,{href:"#style",children:"Style"})]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"layout",children:"Layout"}),"\n",(0,s.jsx)(n.p,{children:"Create a layout:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:"local areas = ui.Layout()\n\t:direction(ui.Layout.HORIZONTAL)\n\t:constraints({ ui.Constraint.Percentage(50), ui.Constraint.Percentage(50) })\n\t:split(area)\n\nlocal left = areas[1] -- The first rect\nlocal right = areas[2] -- The second rect\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Methods (all methods return ",(0,s.jsx)(n.code,{children:"self"}),"):"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"direction(direction)"})," - Set the direction of the layout, which accepts the following constants:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"ui.Layout.HORIZONTAL"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"ui.Layout.VERTICAL"})}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"margin(margin)"})," - Set the margin of the layout, which accepts an positive integer."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"margin_h(margin)"})," - Set the horizontal margin of the layout, which accepts an positive integer."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"margin_v(margin)"})," - Set the vertical margin of the layout, which accepts an positive integer."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"constraints({ constraint, ... })"})," - Set the constraints of the layout, which accepts a list of ",(0,s.jsx)(n.a,{href:"#constraint",children:"Constraint"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"split(rect)"})," - Accepts a ",(0,s.jsx)(n.a,{href:"#rect",children:"Rect"})," and split it into multiple ",(0,s.jsx)(n.a,{href:"#rect",children:"Rect"})," according to the constraints."]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"line",children:"Line"}),"\n",(0,s.jsxs)(n.p,{children:["Create a line, which accepts a string, or a list of ",(0,s.jsx)(n.a,{href:"#span",children:"Span"})," and ",(0,s.jsx)(n.a,{href:"#line",children:"Line"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'ui.Line("string")\nui.Line { span, line, span, ... }\n'})}),"\n",(0,s.jsxs)(n.p,{children:["Methods (all methods return ",(0,s.jsx)(n.code,{children:"self"}),"):"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"width()"})," - Get the width of the line, which returns an integer."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"style(style)"})," - Set the style of the line, which accepts a ",(0,s.jsx)(n.a,{href:"#style",children:"Style"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"align(alignment)"})," - Set the alignment of the line. It accepts the following constants:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"ui.Line.LEFT"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"ui.Line.CENTER"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"ui.Line.RIGHT"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"list",children:"List"}),"\n",(0,s.jsx)(n.p,{children:"Create a list:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:"ui.List(rect, items)\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The first attribute is a ",(0,s.jsx)(n.a,{href:"#rect",children:"Rect"}),", representing the position of this list.\nThe second denotes the items of the list and accepts a list of ",(0,s.jsx)(n.a,{href:"#list-item",children:"ListItem"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"list-item",children:"ListItem"}),"\n",(0,s.jsx)(n.p,{children:"Create a list item:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'ui.ListItem(line)\nui.ListItem(span)\nui.ListItem("string")\n'})}),"\n",(0,s.jsxs)(n.p,{children:["Methods (all methods return ",(0,s.jsx)(n.code,{children:"self"}),"):"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"style(style)"})," - Set the style of the list item, which accepts a ",(0,s.jsx)(n.a,{href:"#style",children:"Style"})]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"padding",children:"Padding"}),"\n",(0,s.jsx)(n.p,{children:"All parameters for padding are integers:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:"ui.Padding(left, right, top, bottom)\n"})}),"\n",(0,s.jsx)(n.p,{children:"If you want to specify only one of them, you can:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"ui.Padding.left(left)"})," equal to ",(0,s.jsx)(n.code,{children:"ui.Padding(left, 0, 0, 0)"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"ui.Padding.right(right)"})," equal to ",(0,s.jsx)(n.code,{children:"ui.Padding(0, right, 0, 0)"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"ui.Padding.top(top)"})," equal to ",(0,s.jsx)(n.code,{children:"ui.Padding(0, 0, top, 0)"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"ui.Padding.bottom(bottom)"})," equal to ",(0,s.jsx)(n.code,{children:"ui.Padding(0, 0, 0, bottom)"})]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Or specify a particular direction for them:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"ui.Padding.x(x)"})," equal to ",(0,s.jsx)(n.code,{children:"ui.Padding(x, x, 0, 0)"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"ui.Padding.y(y)"})," equal to ",(0,s.jsx)(n.code,{children:"ui.Padding(0, 0, y, y)"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"ui.Padding.xy(x, y)"})," equal to ",(0,s.jsx)(n.code,{children:"ui.Padding(x, x, y, y)"})]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Properties:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"left"})," - left padding"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"right"})," - right padding"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"top"})," - top padding"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"bottom"})," - bottom padding"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"paragraph",children:"Paragraph"}),"\n",(0,s.jsx)(n.p,{children:"Create a paragraph:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:"ui.Paragraph(rect, { line, line, ... })\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The first attribute is a ",(0,s.jsx)(n.a,{href:"#rect",children:"Rect"}),", representing the position of this paragraph.\nThe second denotes the lines of the paragraph and accepts a list of ",(0,s.jsx)(n.a,{href:"#line",children:"Line"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["You can also use ",(0,s.jsx)(n.code,{children:"ui.Paragraph.parse(string)"})," to parse an ",(0,s.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/ANSI_escape_code",children:"ANSI escape sequence"})," string into a paragraph."]}),"\n",(0,s.jsxs)(n.p,{children:["Methods (all methods return ",(0,s.jsx)(n.code,{children:"self"}),"):"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"style(style)"})," - Set the style of the paragraph, which accepts a ",(0,s.jsx)(n.a,{href:"#style",children:"Style"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"wrap(wrap)"})," - Set the wrap of the paragraph, which accepts the following constants:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"ui.Paragraph.WRAP_NO"})," - No wrap"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"ui.Paragraph.WRAP"})," - Wrap at the end of the line"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"ui.Paragraph.WRAP_TRIM"})," - Wrap at the end of the line, and trim the leading whitespace"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"align(alignment)"})," - Set the alignment of the paragraph. It accepts the following constants:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"ui.Paragraph.LEFT"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"ui.Paragraph.CENTER"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"ui.Paragraph.RIGHT"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"rect",children:"Rect"}),"\n",(0,s.jsx)(n.p,{children:"A Rect is represented an area within the terminal by four attributes:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:"ui.Rect {\n\tx = 10, -- x position\n\ty = 10, -- y position\n\tw = 20, -- width\n\th = 30, -- height\n}\n\nui.Rect.default -- Equal to `ui.Rect { x = 0, y = 0, w = 0, h = 0 }`\n"})}),"\n",(0,s.jsxs)(n.p,{children:["You can obtain a pre-computed ",(0,s.jsx)(n.code,{children:"Rect"})," through ",(0,s.jsx)(n.a,{href:"#layout",children:"Yazi's layout system"}),"."]}),"\n",(0,s.jsx)(n.p,{children:"Note that if you intend to create it yourself, ensure these values are calculated accurately; otherwise, it may cause Yazi to crash!"}),"\n",(0,s.jsx)(n.p,{children:"Properties:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"x"})," - x position"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"y"})," - y position"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"w"})," - width"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"h"})," - height"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"left"})," - left position"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"right"})," - right position"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"top"})," - top position"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"bottom"})," - bottom position"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["Methods (all methods return ",(0,s.jsx)(n.code,{children:"self"}),"):"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"padding(padding)"})," - Set padding. It accepts a ",(0,s.jsx)(n.a,{href:"#padding",children:"Padding"})]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"span",children:"Span"}),"\n",(0,s.jsx)(n.p,{children:"Create a span:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'ui.Span("string")\n'})}),"\n",(0,s.jsxs)(n.p,{children:["Methods (all methods return ",(0,s.jsx)(n.code,{children:"self"}),"):"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"fg(color)"})," - Set the foreground color of the span, which accepts a ",(0,s.jsx)(n.a,{href:"/docs/configuration/theme#types.color",children:"Color"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"bg(color)"})," - Set the background color of the span, which accepts a ",(0,s.jsx)(n.a,{href:"/docs/configuration/theme#types.color",children:"Color"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"bold()"})," - Set the span to bold"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"dim()"})," - Set the span to dim"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"italic()"})," - Set the span to italic"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"underline()"})," - Set the span to underline"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blink()"})," - Set the span to blink"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blink_rapid()"})," - Set the span to blink rapidly"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"hidden()"})," - Set the span to hidden"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"crossed()"})," - Set the span to crossed"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"reset()"})," - Reset the style of the span"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"style(style)"})," - Set the style of the span, which accepts a ",(0,s.jsx)(n.a,{href:"#style",children:"Style"})]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"style",children:"Style"}),"\n",(0,s.jsx)(n.p,{children:"Create a style:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:"ui.Style()\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Methods (all methods return ",(0,s.jsx)(n.code,{children:"self"}),"):"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"fg(string)"})," - Set the foreground color of the style, which accepts a ",(0,s.jsx)(n.a,{href:"/docs/configuration/theme#types.color",children:"Color"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"bg(string)"})," - Set the background color of the style, which accepts a ",(0,s.jsx)(n.a,{href:"/docs/configuration/theme#types.color",children:"Color"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"bold()"})," - Set the style to bold"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"dim()"})," - Set the style to dim"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"italic()"})," - Set the style to italic"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"underline()"})," - Set the style to underline"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blink()"})," - Set the style to blink"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blink_rapid()"})," - Set the style to blink rapidly"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"hidden()"})," - Set the style to hidden"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"crossed()"})," - Set the style to crossed"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"reset()"})," - Reset the style"]}),"\n"]})]})}function o(e={}){const{wrapper:n}={...(0,l.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},6225:(e,n,i)=>{i.d(n,{Z:()=>c,a:()=>t});var s=i(959);const l={},r=s.createContext(l);function t(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:t(e.components),s.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/153.aa6c0280.js b/assets/js/153.aa6c0280.js new file mode 100644 index 000000000..da29d0ccd --- /dev/null +++ b/assets/js/153.aa6c0280.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[153],{4153:(e,s,k)=>{k.r(s)}}]); \ No newline at end of file diff --git a/assets/js/17896441.1da012cb.js b/assets/js/17896441.1da012cb.js new file mode 100644 index 000000000..7e4d882e2 --- /dev/null +++ b/assets/js/17896441.1da012cb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[918],{4068:(e,n,t)=>{t.r(n),t.d(n,{default:()=>ae});var s=t(959),a=t(5938),i=t(3272),o=t(1527);const l=s.createContext(null);function r(e){let{children:n,content:t}=e;const a=function(e){return(0,s.useMemo)((()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc})),[e])}(t);return(0,o.jsx)(l.Provider,{value:a,children:n})}function c(){const e=(0,s.useContext)(l);if(null===e)throw new i.i6("DocProvider");return e}function d(){const{metadata:e,frontMatter:n,assets:t}=c();return(0,o.jsx)(a.d,{title:e.title,description:e.description,keywords:n.keywords,image:t.image??n.image})}var u=t(5341),m=t(6563),h=t(259),v=t(8582);function b(e){const{previous:n,next:t}=e;return(0,o.jsxs)("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,h.I)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"}),children:[n&&(0,o.jsx)(v.Z,{...n,subLabel:(0,o.jsx)(h.Z,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc",children:"Previous"})}),t&&(0,o.jsx)(v.Z,{...t,subLabel:(0,o.jsx)(h.Z,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc",children:"Next"}),isNext:!0})]})}function x(){const{metadata:e}=c();return(0,o.jsx)(b,{previous:e.previous,next:e.next})}var f=t(8927),p=t(6788),g=t(9775),j=t(961),L=t(2632),C=t(4517);const N={unreleased:function(e){let{siteTitle:n,versionMetadata:t}=e;return(0,o.jsx)(h.Z,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:n,versionLabel:(0,o.jsx)("b",{children:t.label})},children:"This is unreleased documentation for {siteTitle} {versionLabel} version."})},unmaintained:function(e){let{siteTitle:n,versionMetadata:t}=e;return(0,o.jsx)(h.Z,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:n,versionLabel:(0,o.jsx)("b",{children:t.label})},children:"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained."})}};function k(e){const n=N[e.versionMetadata.banner];return(0,o.jsx)(n,{...e})}function _(e){let{versionLabel:n,to:t,onClick:s}=e;return(0,o.jsx)(h.Z,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:n,latestVersionLink:(0,o.jsx)("b",{children:(0,o.jsx)(p.Z,{to:t,onClick:s,children:(0,o.jsx)(h.Z,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label",children:"latest version"})})})},children:"For up-to-date documentation, see the {latestVersionLink} ({versionLabel})."})}function Z(e){let{className:n,versionMetadata:t}=e;const{siteConfig:{title:s}}=(0,f.Z)(),{pluginId:a}=(0,g.gA)({failfast:!0}),{savePreferredVersionName:i}=(0,L.J)(a),{latestDocSuggestion:l,latestVersionSuggestion:r}=(0,g.Jo)(a),c=l??(d=r).docs.find((e=>e.id===d.mainDocId));var d;return(0,o.jsxs)("div",{className:(0,u.Z)(n,j.k.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert",children:[(0,o.jsx)("div",{children:(0,o.jsx)(k,{siteTitle:s,versionMetadata:t})}),(0,o.jsx)("div",{className:"margin-top--md",children:(0,o.jsx)(_,{versionLabel:r.label,to:c.path,onClick:()=>i(r.name)})})]})}function H(e){let{className:n}=e;const t=(0,C.E)();return t.banner?(0,o.jsx)(Z,{className:n,versionMetadata:t}):null}function T(e){let{className:n}=e;const t=(0,C.E)();return t.badge?(0,o.jsx)("span",{className:(0,u.Z)(n,j.k.docs.docVersionBadge,"badge badge--secondary"),children:(0,o.jsx)(h.Z,{id:"theme.docs.versionBadge.label",values:{versionLabel:t.label},children:"Version: {versionLabel}"})}):null}var M=t(1851),I=t(151);function y(){const{metadata:e}=c(),{editUrl:n,lastUpdatedAt:t,lastUpdatedBy:s,tags:a}=e,i=a.length>0,l=!!(n||t||s);return i||l?(0,o.jsxs)("footer",{className:(0,u.Z)(j.k.docs.docFooter,"docusaurus-mt-lg"),children:[i&&(0,o.jsx)("div",{className:(0,u.Z)("row margin-top--sm",j.k.docs.docFooterTagsRow),children:(0,o.jsx)("div",{className:"col",children:(0,o.jsx)(M.Z,{tags:a})})}),l&&(0,o.jsx)(I.Z,{className:(0,u.Z)("margin-top--sm",j.k.docs.docFooterEditMetaRow),editUrl:n,lastUpdatedAt:t,lastUpdatedBy:s})]}):null}var w=t(5267),E=t(6305);const A={tocCollapsibleButton:"tocCollapsibleButton_DG7b",tocCollapsibleButtonExpanded:"tocCollapsibleButtonExpanded_XuEV"};function B(e){let{collapsed:n,...t}=e;return(0,o.jsx)("button",{type:"button",...t,className:(0,u.Z)("clean-btn",A.tocCollapsibleButton,!n&&A.tocCollapsibleButtonExpanded,t.className),children:(0,o.jsx)(h.Z,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component",children:"On this page"})})}const O={tocCollapsible:"tocCollapsible_T9Uj",tocCollapsibleContent:"tocCollapsibleContent_s1Yi",tocCollapsibleExpanded:"tocCollapsibleExpanded_bRYl"};function S(e){let{toc:n,className:t,minHeadingLevel:s,maxHeadingLevel:a}=e;const{collapsed:i,toggleCollapsed:l}=(0,w.u)({initialState:!0});return(0,o.jsxs)("div",{className:(0,u.Z)(O.tocCollapsible,!i&&O.tocCollapsibleExpanded,t),children:[(0,o.jsx)(B,{collapsed:i,onClick:l}),(0,o.jsx)(w.z,{lazy:!0,className:O.tocCollapsibleContent,collapsed:i,children:(0,o.jsx)(E.Z,{toc:n,minHeadingLevel:s,maxHeadingLevel:a})})]})}const V={tocMobile:"tocMobile_m67Q"};function P(){const{toc:e,frontMatter:n}=c();return(0,o.jsx)(S,{toc:e,minHeadingLevel:n.toc_min_heading_level,maxHeadingLevel:n.toc_max_heading_level,className:(0,u.Z)(j.k.docs.docTocMobile,V.tocMobile)})}var R=t(2104);function U(){const{toc:e,frontMatter:n}=c();return(0,o.jsx)(R.Z,{toc:e,minHeadingLevel:n.toc_min_heading_level,maxHeadingLevel:n.toc_max_heading_level,className:j.k.docs.docTocDesktop})}var F=t(7623),D=t(4879);function z(e){let{children:n}=e;const t=function(){const{metadata:e,frontMatter:n,contentTitle:t}=c();return n.hide_title||void 0!==t?null:e.title}();return(0,o.jsxs)("div",{className:(0,u.Z)(j.k.docs.docMarkdown,"markdown"),children:[t&&(0,o.jsx)("header",{children:(0,o.jsx)(F.Z,{as:"h1",children:t})}),(0,o.jsx)(D.Z,{children:n})]})}var G=t(5079),J=t(9057),Y=t(2915);function $(e){return(0,o.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,o.jsx)("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"})})}const q={breadcrumbHomeIcon:"breadcrumbHomeIcon_ucFT"};function Q(){const e=(0,Y.ZP)("/");return(0,o.jsx)("li",{className:"breadcrumbs__item",children:(0,o.jsx)(p.Z,{"aria-label":(0,h.I)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e,children:(0,o.jsx)($,{className:q.breadcrumbHomeIcon})})})}const X={breadcrumbsContainer:"breadcrumbsContainer__GJO"};function K(e){let{children:n,href:t,isLast:s}=e;const a="breadcrumbs__link";return s?(0,o.jsx)("span",{className:a,itemProp:"name",children:n}):t?(0,o.jsx)(p.Z,{className:a,href:t,itemProp:"item",children:(0,o.jsx)("span",{itemProp:"name",children:n})}):(0,o.jsx)("span",{className:a,children:n})}function W(e){let{children:n,active:t,index:s,addMicrodata:a}=e;return(0,o.jsxs)("li",{...a&&{itemScope:!0,itemProp:"itemListElement",itemType:"https://schema.org/ListItem"},className:(0,u.Z)("breadcrumbs__item",{"breadcrumbs__item--active":t}),children:[n,(0,o.jsx)("meta",{itemProp:"position",content:String(s+1)})]})}function ee(){const e=(0,G.s1)(),n=(0,J.Ns)();return e?(0,o.jsx)("nav",{className:(0,u.Z)(j.k.docs.docBreadcrumbs,X.breadcrumbsContainer),"aria-label":(0,h.I)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"}),children:(0,o.jsxs)("ul",{className:"breadcrumbs",itemScope:!0,itemType:"https://schema.org/BreadcrumbList",children:[n&&(0,o.jsx)(Q,{}),e.map(((n,t)=>{const s=t===e.length-1,a="category"===n.type&&n.linkUnlisted?void 0:n.href;return(0,o.jsx)(W,{active:s,index:t,addMicrodata:!!a,children:(0,o.jsx)(K,{href:a,isLast:s,children:n.label})},t)}))]})}):null}var ne=t(3494);const te={docItemContainer:"docItemContainer_XyYR",docItemCol:"docItemCol_CS7P"};function se(e){let{children:n}=e;const t=function(){const{frontMatter:e,toc:n}=c(),t=(0,m.i)(),s=e.hide_table_of_contents,a=!s&&n.length>0;return{hidden:s,mobile:a?(0,o.jsx)(P,{}):void 0,desktop:!a||"desktop"!==t&&"ssr"!==t?void 0:(0,o.jsx)(U,{})}}(),{metadata:{unlisted:s}}=c();return(0,o.jsxs)("div",{className:"row",children:[(0,o.jsxs)("div",{className:(0,u.Z)("col",!t.hidden&&te.docItemCol),children:[s&&(0,o.jsx)(ne.Z,{}),(0,o.jsx)(H,{}),(0,o.jsxs)("div",{className:te.docItemContainer,children:[(0,o.jsxs)("article",{children:[(0,o.jsx)(ee,{}),(0,o.jsx)(T,{}),t.mobile,(0,o.jsx)(z,{children:n}),(0,o.jsx)(y,{})]}),(0,o.jsx)(x,{})]})]}),t.desktop&&(0,o.jsx)("div",{className:"col col--3",children:t.desktop})]})}function ae(e){const n=`docs-doc-id-${e.content.metadata.id}`,t=e.content;return(0,o.jsx)(r,{content:e.content,children:(0,o.jsxs)(a.FG,{className:n,children:[(0,o.jsx)(d,{}),(0,o.jsx)(se,{children:(0,o.jsx)(t,{})})]})})}},2104:(e,n,t)=>{t.d(n,{Z:()=>c});t(959);var s=t(5341),a=t(6305);const i={tableOfContents:"tableOfContents_r_Qc",docItemContainer:"docItemContainer_LSLx"};var o=t(1527);const l="table-of-contents__link toc-highlight",r="table-of-contents__link--active";function c(e){let{className:n,...t}=e;return(0,o.jsx)("div",{className:(0,s.Z)(i.tableOfContents,"thin-scrollbar",n),children:(0,o.jsx)(a.Z,{...t,linkClassName:l,linkActiveClassName:r})})}},6305:(e,n,t)=>{t.d(n,{Z:()=>b});var s=t(959),a=t(475);function i(e){const n=e.map((e=>({...e,parentIndex:-1,children:[]}))),t=Array(7).fill(-1);n.forEach(((e,n)=>{const s=t.slice(2,e.level);e.parentIndex=Math.max(...s),t[e.level]=n}));const s=[];return n.forEach((e=>{const{parentIndex:t,...a}=e;t>=0?n[t].children.push(a):s.push(a)})),s}function o(e){let{toc:n,minHeadingLevel:t,maxHeadingLevel:s}=e;return n.flatMap((e=>{const n=o({toc:e.children,minHeadingLevel:t,maxHeadingLevel:s});return function(e){return e.level>=t&&e.level<=s}(e)?[{...e,children:n}]:n}))}function l(e){const n=e.getBoundingClientRect();return n.top===n.bottom?l(e.parentNode):n}function r(e,n){let{anchorTopOffset:t}=n;const s=e.find((e=>l(e).top>=t));if(s){return function(e){return e.top>0&&e.bottom{e.current=n?0:document.querySelector(".navbar").clientHeight}),[n]),e}function d(e){const n=(0,s.useRef)(void 0),t=c();(0,s.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:s,linkActiveClassName:a,minHeadingLevel:i,maxHeadingLevel:o}=e;function l(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(s),l=function(e){let{minHeadingLevel:n,maxHeadingLevel:t}=e;const s=[];for(let a=n;a<=t;a+=1)s.push(`h${a}.anchor`);return Array.from(document.querySelectorAll(s.join()))}({minHeadingLevel:i,maxHeadingLevel:o}),c=r(l,{anchorTopOffset:t.current}),d=e.find((e=>c&&c.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,t){t?(n.current&&n.current!==e&&n.current.classList.remove(a),e.classList.add(a),n.current=e):e.classList.remove(a)}(e,e===d)}))}return document.addEventListener("scroll",l),document.addEventListener("resize",l),l(),()=>{document.removeEventListener("scroll",l),document.removeEventListener("resize",l)}}),[e,t])}var u=t(6788),m=t(1527);function h(e){let{toc:n,className:t,linkClassName:s,isChild:a}=e;return n.length?(0,m.jsx)("ul",{className:a?void 0:t,children:n.map((e=>(0,m.jsxs)("li",{children:[(0,m.jsx)(u.Z,{to:`#${e.id}`,className:s??void 0,dangerouslySetInnerHTML:{__html:e.value}}),(0,m.jsx)(h,{isChild:!0,toc:e.children,className:t,linkClassName:s})]},e.id)))}):null}const v=s.memo(h);function b(e){let{toc:n,className:t="table-of-contents table-of-contents__left-border",linkClassName:l="table-of-contents__link",linkActiveClassName:r,minHeadingLevel:c,maxHeadingLevel:u,...h}=e;const b=(0,a.L)(),x=c??b.tableOfContents.minHeadingLevel,f=u??b.tableOfContents.maxHeadingLevel,p=function(e){let{toc:n,minHeadingLevel:t,maxHeadingLevel:a}=e;return(0,s.useMemo)((()=>o({toc:i(n),minHeadingLevel:t,maxHeadingLevel:a})),[n,t,a])}({toc:n,minHeadingLevel:x,maxHeadingLevel:f});return d((0,s.useMemo)((()=>{if(l&&r)return{linkClassName:l,linkActiveClassName:r,minHeadingLevel:x,maxHeadingLevel:f}}),[l,r,x,f])),(0,m.jsx)(v,{toc:p,className:t,linkClassName:l,...h})}},3494:(e,n,t)=>{t.d(n,{Z:()=>h});t(959);var s=t(5341),a=t(259),i=t(2058),o=t(1527);function l(){return(0,o.jsx)(a.Z,{id:"theme.unlistedContent.title",description:"The unlisted content banner title",children:"Unlisted page"})}function r(){return(0,o.jsx)(a.Z,{id:"theme.unlistedContent.message",description:"The unlisted content banner message",children:"This page is unlisted. Search engines will not index it, and only users having a direct link can access it."})}function c(){return(0,o.jsx)(i.Z,{children:(0,o.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}var d=t(961),u=t(8301);function m(e){let{className:n}=e;return(0,o.jsx)(u.Z,{type:"caution",title:(0,o.jsx)(l,{}),className:(0,s.Z)(n,d.k.common.unlistedBanner),children:(0,o.jsx)(r,{})})}function h(e){return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(c,{}),(0,o.jsx)(m,{...e})]})}}}]); \ No newline at end of file diff --git a/assets/js/1a4e3797.3741dc58.js b/assets/js/1a4e3797.3741dc58.js new file mode 100644 index 000000000..f9cff7a7c --- /dev/null +++ b/assets/js/1a4e3797.3741dc58.js @@ -0,0 +1,2 @@ +/*! For license information please see 1a4e3797.3741dc58.js.LICENSE.txt */ +(self.webpackChunk=self.webpackChunk||[]).push([[920],{3698:e=>{function t(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function r(e){return"function"==typeof e}function n(e){return"object"==typeof e&&null!==e}function i(e){return void 0===e}e.exports=t,t.prototype._events=void 0,t.prototype._maxListeners=void 0,t.defaultMaxListeners=10,t.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},t.prototype.emit=function(e){var t,s,a,c,u,o;if(this._events||(this._events={}),"error"===e&&(!this._events.error||n(this._events.error)&&!this._events.error.length)){if((t=arguments[1])instanceof Error)throw t;var h=new Error('Uncaught, unspecified "error" event. ('+t+")");throw h.context=t,h}if(i(s=this._events[e]))return!1;if(r(s))switch(arguments.length){case 1:s.call(this);break;case 2:s.call(this,arguments[1]);break;case 3:s.call(this,arguments[1],arguments[2]);break;default:c=Array.prototype.slice.call(arguments,1),s.apply(this,c)}else if(n(s))for(c=Array.prototype.slice.call(arguments,1),a=(o=s.slice()).length,u=0;u0&&this._events[e].length>a&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},t.prototype.on=t.prototype.addListener,t.prototype.once=function(e,t){if(!r(t))throw TypeError("listener must be a function");var n=!1;function i(){this.removeListener(e,i),n||(n=!0,t.apply(this,arguments))}return i.listener=t,this.on(e,i),this},t.prototype.removeListener=function(e,t){var i,s,a,c;if(!r(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(a=(i=this._events[e]).length,s=-1,i===t||r(i.listener)&&i.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(n(i)){for(c=a;c-- >0;)if(i[c]===t||i[c].listener&&i[c].listener===t){s=c;break}if(s<0)return this;1===i.length?(i.length=0,delete this._events[e]):i.splice(s,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},t.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(r(n=this._events[e]))this.removeListener(e,n);else if(n)for(;n.length;)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},t.prototype.listeners=function(e){return this._events&&this._events[e]?r(this._events[e])?[this._events[e]]:this._events[e].slice():[]},t.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(r(t))return 1;if(t)return t.length}return 0},t.listenerCount=function(e,t){return e.listenerCount(t)}},1635:(e,t,r)=>{"use strict";var n=r(2302),i=r(6118),s=r(2445);function a(e,t,r){return new n(e,t,r)}a.version=r(476),a.AlgoliaSearchHelper=n,a.SearchParameters=i,a.SearchResults=s,e.exports=a},2598:(e,t,r)=>{"use strict";var n=r(3698);function i(e,t){this.main=e,this.fn=t,this.lastResults=null}r(5101)(i,n),i.prototype.detach=function(){this.removeAllListeners(),this.main.detachDerivedHelper(this)},i.prototype.getModifiedState=function(e){return this.fn(e)},e.exports=i},816:(e,t,r)=>{"use strict";var n=r(2781),i=r(3757),s=r(3131),a={addRefinement:function(e,t,r){if(a.isRefined(e,t,r))return e;var i=""+r,s=e[t]?e[t].concat(i):[i],c={};return c[t]=s,n({},c,e)},removeRefinement:function(e,t,r){if(void 0===r)return a.clearRefinement(e,(function(e,r){return t===r}));var n=""+r;return a.clearRefinement(e,(function(e,r){return t===r&&n===e}))},toggleRefinement:function(e,t,r){if(void 0===r)throw new Error("toggleRefinement should be used with a value");return a.isRefined(e,t,r)?a.removeRefinement(e,t,r):a.addRefinement(e,t,r)},clearRefinement:function(e,t,r){if(void 0===t)return i(e)?{}:e;if("string"==typeof t)return s(e,[t]);if("function"==typeof t){var n=!1,a=Object.keys(e).reduce((function(i,s){var a=e[s]||[],c=a.filter((function(e){return!t(e,s,r)}));return c.length!==a.length&&(n=!0),i[s]=c,i}),{});return n?a:e}},isRefined:function(e,t,r){var n=Boolean(e[t])&&e[t].length>0;if(void 0===r||!n)return n;var i=""+r;return-1!==e[t].indexOf(i)}};e.exports=a},6118:(e,t,r)=>{"use strict";var n=r(2781),i=r(6461),s=r(9546),a=r(9556),c=r(3757),u=r(3131),o=r(2708),h=r(8853),f=r(816);function l(e,t){return Array.isArray(e)&&Array.isArray(t)?e.length===t.length&&e.every((function(e,r){return l(t[r],e)})):e===t}function m(e){var t=e?m._parseNumbers(e):{};void 0===t.userToken||h(t.userToken)||console.warn("[algoliasearch-helper] The `userToken` parameter is invalid. This can lead to wrong analytics.\n - Format: [a-zA-Z0-9_-]{1,64}"),this.facets=t.facets||[],this.disjunctiveFacets=t.disjunctiveFacets||[],this.hierarchicalFacets=t.hierarchicalFacets||[],this.facetsRefinements=t.facetsRefinements||{},this.facetsExcludes=t.facetsExcludes||{},this.disjunctiveFacetsRefinements=t.disjunctiveFacetsRefinements||{},this.numericRefinements=t.numericRefinements||{},this.tagRefinements=t.tagRefinements||[],this.hierarchicalFacetsRefinements=t.hierarchicalFacetsRefinements||{};var r=this;Object.keys(t).forEach((function(e){var n=-1!==m.PARAMETERS.indexOf(e),i=void 0!==t[e];!n&&i&&(r[e]=t[e])}))}m.PARAMETERS=Object.keys(new m),m._parseNumbers=function(e){if(e instanceof m)return e;var t={};if(["aroundPrecision","aroundRadius","getRankingInfo","minWordSizefor2Typos","minWordSizefor1Typo","page","maxValuesPerFacet","distinct","minimumAroundRadius","hitsPerPage","minProximity"].forEach((function(r){var n=e[r];if("string"==typeof n){var i=parseFloat(n);t[r]=isNaN(i)?n:i}})),Array.isArray(e.insideBoundingBox)&&(t.insideBoundingBox=e.insideBoundingBox.map((function(e){return Array.isArray(e)?e.map((function(e){return parseFloat(e)})):e}))),e.numericRefinements){var r={};Object.keys(e.numericRefinements).forEach((function(t){var n=e.numericRefinements[t]||{};r[t]={},Object.keys(n).forEach((function(e){var i=n[e].map((function(e){return Array.isArray(e)?e.map((function(e){return"string"==typeof e?parseFloat(e):e})):"string"==typeof e?parseFloat(e):e}));r[t][e]=i}))})),t.numericRefinements=r}return a({},e,t)},m.make=function(e){var t=new m(e);return(e.hierarchicalFacets||[]).forEach((function(e){if(e.rootPath){var r=t.getHierarchicalRefinement(e.name);r.length>0&&0!==r[0].indexOf(e.rootPath)&&(t=t.clearRefinements(e.name)),0===(r=t.getHierarchicalRefinement(e.name)).length&&(t=t.toggleHierarchicalFacetRefinement(e.name,e.rootPath))}})),t},m.validate=function(e,t){var r=t||{};return e.tagFilters&&r.tagRefinements&&r.tagRefinements.length>0?new Error("[Tags] Cannot switch from the managed tag API to the advanced API. It is probably an error, if it is really what you want, you should first clear the tags with clearTags method."):e.tagRefinements.length>0&&r.tagFilters?new Error("[Tags] Cannot switch from the advanced tag API to the managed API. It is probably an error, if it is not, you should first clear the tags with clearTags method."):e.numericFilters&&r.numericRefinements&&c(r.numericRefinements)?new Error("[Numeric filters] Can't switch from the advanced to the managed API. It is probably an error, if this is really what you want, you have to first clear the numeric filters."):c(e.numericRefinements)&&r.numericFilters?new Error("[Numeric filters] Can't switch from the managed API to the advanced. It is probably an error, if this is really what you want, you have to first clear the numeric filters."):null},m.prototype={constructor:m,clearRefinements:function(e){var t={numericRefinements:this._clearNumericRefinements(e),facetsRefinements:f.clearRefinement(this.facetsRefinements,e,"conjunctiveFacet"),facetsExcludes:f.clearRefinement(this.facetsExcludes,e,"exclude"),disjunctiveFacetsRefinements:f.clearRefinement(this.disjunctiveFacetsRefinements,e,"disjunctiveFacet"),hierarchicalFacetsRefinements:f.clearRefinement(this.hierarchicalFacetsRefinements,e,"hierarchicalFacet")};return t.numericRefinements===this.numericRefinements&&t.facetsRefinements===this.facetsRefinements&&t.facetsExcludes===this.facetsExcludes&&t.disjunctiveFacetsRefinements===this.disjunctiveFacetsRefinements&&t.hierarchicalFacetsRefinements===this.hierarchicalFacetsRefinements?this:this.setQueryParameters(t)},clearTags:function(){return void 0===this.tagFilters&&0===this.tagRefinements.length?this:this.setQueryParameters({tagFilters:void 0,tagRefinements:[]})},setIndex:function(e){return e===this.index?this:this.setQueryParameters({index:e})},setQuery:function(e){return e===this.query?this:this.setQueryParameters({query:e})},setPage:function(e){return e===this.page?this:this.setQueryParameters({page:e})},setFacets:function(e){return this.setQueryParameters({facets:e})},setDisjunctiveFacets:function(e){return this.setQueryParameters({disjunctiveFacets:e})},setHitsPerPage:function(e){return this.hitsPerPage===e?this:this.setQueryParameters({hitsPerPage:e})},setTypoTolerance:function(e){return this.typoTolerance===e?this:this.setQueryParameters({typoTolerance:e})},addNumericRefinement:function(e,t,r){var n=o(r);if(this.isNumericRefined(e,t,n))return this;var i=a({},this.numericRefinements);return i[e]=a({},i[e]),i[e][t]?(i[e][t]=i[e][t].slice(),i[e][t].push(n)):i[e][t]=[n],this.setQueryParameters({numericRefinements:i})},getConjunctiveRefinements:function(e){return this.isConjunctiveFacet(e)&&this.facetsRefinements[e]||[]},getDisjunctiveRefinements:function(e){return this.isDisjunctiveFacet(e)&&this.disjunctiveFacetsRefinements[e]||[]},getHierarchicalRefinement:function(e){return this.hierarchicalFacetsRefinements[e]||[]},getExcludeRefinements:function(e){return this.isConjunctiveFacet(e)&&this.facetsExcludes[e]||[]},removeNumericRefinement:function(e,t,r){var n=r;return void 0!==n?this.isNumericRefined(e,t,n)?this.setQueryParameters({numericRefinements:this._clearNumericRefinements((function(r,i){return i===e&&r.op===t&&l(r.val,o(n))}))}):this:void 0!==t?this.isNumericRefined(e,t)?this.setQueryParameters({numericRefinements:this._clearNumericRefinements((function(r,n){return n===e&&r.op===t}))}):this:this.isNumericRefined(e)?this.setQueryParameters({numericRefinements:this._clearNumericRefinements((function(t,r){return r===e}))}):this},getNumericRefinements:function(e){return this.numericRefinements[e]||{}},getNumericRefinement:function(e,t){return this.numericRefinements[e]&&this.numericRefinements[e][t]},_clearNumericRefinements:function(e){if(void 0===e)return c(this.numericRefinements)?{}:this.numericRefinements;if("string"==typeof e)return u(this.numericRefinements,[e]);if("function"==typeof e){var t=!1,r=this.numericRefinements,n=Object.keys(r).reduce((function(n,i){var s=r[i],a={};return s=s||{},Object.keys(s).forEach((function(r){var n=s[r]||[],c=[];n.forEach((function(t){e({val:t,op:r},i,"numeric")||c.push(t)})),c.length!==n.length&&(t=!0),a[r]=c})),n[i]=a,n}),{});return t?n:this.numericRefinements}},addFacet:function(e){return this.isConjunctiveFacet(e)?this:this.setQueryParameters({facets:this.facets.concat([e])})},addDisjunctiveFacet:function(e){return this.isDisjunctiveFacet(e)?this:this.setQueryParameters({disjunctiveFacets:this.disjunctiveFacets.concat([e])})},addHierarchicalFacet:function(e){if(this.isHierarchicalFacet(e.name))throw new Error("Cannot declare two hierarchical facets with the same name: `"+e.name+"`");return this.setQueryParameters({hierarchicalFacets:this.hierarchicalFacets.concat([e])})},addFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return f.isRefined(this.facetsRefinements,e,t)?this:this.setQueryParameters({facetsRefinements:f.addRefinement(this.facetsRefinements,e,t)})},addExcludeRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return f.isRefined(this.facetsExcludes,e,t)?this:this.setQueryParameters({facetsExcludes:f.addRefinement(this.facetsExcludes,e,t)})},addDisjunctiveFacetRefinement:function(e,t){if(!this.isDisjunctiveFacet(e))throw new Error(e+" is not defined in the disjunctiveFacets attribute of the helper configuration");return f.isRefined(this.disjunctiveFacetsRefinements,e,t)?this:this.setQueryParameters({disjunctiveFacetsRefinements:f.addRefinement(this.disjunctiveFacetsRefinements,e,t)})},addTagRefinement:function(e){if(this.isTagRefined(e))return this;var t={tagRefinements:this.tagRefinements.concat(e)};return this.setQueryParameters(t)},removeFacet:function(e){return this.isConjunctiveFacet(e)?this.clearRefinements(e).setQueryParameters({facets:this.facets.filter((function(t){return t!==e}))}):this},removeDisjunctiveFacet:function(e){return this.isDisjunctiveFacet(e)?this.clearRefinements(e).setQueryParameters({disjunctiveFacets:this.disjunctiveFacets.filter((function(t){return t!==e}))}):this},removeHierarchicalFacet:function(e){return this.isHierarchicalFacet(e)?this.clearRefinements(e).setQueryParameters({hierarchicalFacets:this.hierarchicalFacets.filter((function(t){return t.name!==e}))}):this},removeFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return f.isRefined(this.facetsRefinements,e,t)?this.setQueryParameters({facetsRefinements:f.removeRefinement(this.facetsRefinements,e,t)}):this},removeExcludeRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return f.isRefined(this.facetsExcludes,e,t)?this.setQueryParameters({facetsExcludes:f.removeRefinement(this.facetsExcludes,e,t)}):this},removeDisjunctiveFacetRefinement:function(e,t){if(!this.isDisjunctiveFacet(e))throw new Error(e+" is not defined in the disjunctiveFacets attribute of the helper configuration");return f.isRefined(this.disjunctiveFacetsRefinements,e,t)?this.setQueryParameters({disjunctiveFacetsRefinements:f.removeRefinement(this.disjunctiveFacetsRefinements,e,t)}):this},removeTagRefinement:function(e){if(!this.isTagRefined(e))return this;var t={tagRefinements:this.tagRefinements.filter((function(t){return t!==e}))};return this.setQueryParameters(t)},toggleRefinement:function(e,t){return this.toggleFacetRefinement(e,t)},toggleFacetRefinement:function(e,t){if(this.isHierarchicalFacet(e))return this.toggleHierarchicalFacetRefinement(e,t);if(this.isConjunctiveFacet(e))return this.toggleConjunctiveFacetRefinement(e,t);if(this.isDisjunctiveFacet(e))return this.toggleDisjunctiveFacetRefinement(e,t);throw new Error("Cannot refine the undeclared facet "+e+"; it should be added to the helper options facets, disjunctiveFacets or hierarchicalFacets")},toggleConjunctiveFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return this.setQueryParameters({facetsRefinements:f.toggleRefinement(this.facetsRefinements,e,t)})},toggleExcludeFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return this.setQueryParameters({facetsExcludes:f.toggleRefinement(this.facetsExcludes,e,t)})},toggleDisjunctiveFacetRefinement:function(e,t){if(!this.isDisjunctiveFacet(e))throw new Error(e+" is not defined in the disjunctiveFacets attribute of the helper configuration");return this.setQueryParameters({disjunctiveFacetsRefinements:f.toggleRefinement(this.disjunctiveFacetsRefinements,e,t)})},toggleHierarchicalFacetRefinement:function(e,t){if(!this.isHierarchicalFacet(e))throw new Error(e+" is not defined in the hierarchicalFacets attribute of the helper configuration");var r=this._getHierarchicalFacetSeparator(this.getHierarchicalFacetByName(e)),i={};return void 0!==this.hierarchicalFacetsRefinements[e]&&this.hierarchicalFacetsRefinements[e].length>0&&(this.hierarchicalFacetsRefinements[e][0]===t||0===this.hierarchicalFacetsRefinements[e][0].indexOf(t+r))?-1===t.indexOf(r)?i[e]=[]:i[e]=[t.slice(0,t.lastIndexOf(r))]:i[e]=[t],this.setQueryParameters({hierarchicalFacetsRefinements:n({},i,this.hierarchicalFacetsRefinements)})},addHierarchicalFacetRefinement:function(e,t){if(this.isHierarchicalFacetRefined(e))throw new Error(e+" is already refined.");if(!this.isHierarchicalFacet(e))throw new Error(e+" is not defined in the hierarchicalFacets attribute of the helper configuration.");var r={};return r[e]=[t],this.setQueryParameters({hierarchicalFacetsRefinements:n({},r,this.hierarchicalFacetsRefinements)})},removeHierarchicalFacetRefinement:function(e){if(!this.isHierarchicalFacetRefined(e))return this;var t={};return t[e]=[],this.setQueryParameters({hierarchicalFacetsRefinements:n({},t,this.hierarchicalFacetsRefinements)})},toggleTagRefinement:function(e){return this.isTagRefined(e)?this.removeTagRefinement(e):this.addTagRefinement(e)},isDisjunctiveFacet:function(e){return this.disjunctiveFacets.indexOf(e)>-1},isHierarchicalFacet:function(e){return void 0!==this.getHierarchicalFacetByName(e)},isConjunctiveFacet:function(e){return this.facets.indexOf(e)>-1},isFacetRefined:function(e,t){return!!this.isConjunctiveFacet(e)&&f.isRefined(this.facetsRefinements,e,t)},isExcludeRefined:function(e,t){return!!this.isConjunctiveFacet(e)&&f.isRefined(this.facetsExcludes,e,t)},isDisjunctiveFacetRefined:function(e,t){return!!this.isDisjunctiveFacet(e)&&f.isRefined(this.disjunctiveFacetsRefinements,e,t)},isHierarchicalFacetRefined:function(e,t){if(!this.isHierarchicalFacet(e))return!1;var r=this.getHierarchicalRefinement(e);return t?-1!==r.indexOf(t):r.length>0},isNumericRefined:function(e,t,r){if(void 0===r&&void 0===t)return Boolean(this.numericRefinements[e]);var n=this.numericRefinements[e]&&void 0!==this.numericRefinements[e][t];if(void 0===r||!n)return n;var s,a,c=o(r),u=void 0!==(s=this.numericRefinements[e][t],a=c,i(s,(function(e){return l(e,a)})));return n&&u},isTagRefined:function(e){return-1!==this.tagRefinements.indexOf(e)},getRefinedDisjunctiveFacets:function(){var e=this,t=s(Object.keys(this.numericRefinements).filter((function(t){return Object.keys(e.numericRefinements[t]).length>0})),this.disjunctiveFacets);return Object.keys(this.disjunctiveFacetsRefinements).filter((function(t){return e.disjunctiveFacetsRefinements[t].length>0})).concat(t).concat(this.getRefinedHierarchicalFacets()).sort()},getRefinedHierarchicalFacets:function(){var e=this;return s(this.hierarchicalFacets.map((function(e){return e.name})),Object.keys(this.hierarchicalFacetsRefinements).filter((function(t){return e.hierarchicalFacetsRefinements[t].length>0}))).sort()},getUnrefinedDisjunctiveFacets:function(){var e=this.getRefinedDisjunctiveFacets();return this.disjunctiveFacets.filter((function(t){return-1===e.indexOf(t)}))},managedParameters:["index","facets","disjunctiveFacets","facetsRefinements","hierarchicalFacets","facetsExcludes","disjunctiveFacetsRefinements","numericRefinements","tagRefinements","hierarchicalFacetsRefinements"],getQueryParams:function(){var e=this.managedParameters,t={},r=this;return Object.keys(this).forEach((function(n){var i=r[n];-1===e.indexOf(n)&&void 0!==i&&(t[n]=i)})),t},setQueryParameter:function(e,t){if(this[e]===t)return this;var r={};return r[e]=t,this.setQueryParameters(r)},setQueryParameters:function(e){if(!e)return this;var t=m.validate(this,e);if(t)throw t;var r=this,n=m._parseNumbers(e),i=Object.keys(this).reduce((function(e,t){return e[t]=r[t],e}),{}),s=Object.keys(n).reduce((function(e,t){var r=void 0!==e[t],i=void 0!==n[t];return r&&!i?u(e,[t]):(i&&(e[t]=n[t]),e)}),i);return new this.constructor(s)},resetPage:function(){return void 0===this.page?this:this.setPage(0)},_getHierarchicalFacetSortBy:function(e){return e.sortBy||["isRefined:desc","name:asc"]},_getHierarchicalFacetSeparator:function(e){return e.separator||" > "},_getHierarchicalRootPath:function(e){return e.rootPath||null},_getHierarchicalShowParentLevel:function(e){return"boolean"!=typeof e.showParentLevel||e.showParentLevel},getHierarchicalFacetByName:function(e){return i(this.hierarchicalFacets,(function(t){return t.name===e}))},getHierarchicalFacetBreadcrumb:function(e){if(!this.isHierarchicalFacet(e))return[];var t=this.getHierarchicalRefinement(e)[0];if(!t)return[];var r=this._getHierarchicalFacetSeparator(this.getHierarchicalFacetByName(e));return t.split(r).map((function(e){return e.trim()}))},toString:function(){return JSON.stringify(this,null,2)}},e.exports=m},409:(e,t,r)=>{"use strict";e.exports=function(e){return function(t,r){var n=e.hierarchicalFacets[r],o=e.hierarchicalFacetsRefinements[n.name]&&e.hierarchicalFacetsRefinements[n.name][0]||"",h=e._getHierarchicalFacetSeparator(n),f=e._getHierarchicalRootPath(n),l=e._getHierarchicalShowParentLevel(n),m=s(e._getHierarchicalFacetSortBy(n)),d=t.every((function(e){return e.exhaustive})),p=function(e,t,r,n,s){return function(o,h,f){var l=o;if(f>0){var m=0;for(l=o;m{"use strict";var n=r(1346),i=r(2781),s=r(2710),a=r(6461),c=r(4274),u=r(9934),o=r(9556),h=r(4798),f=s.escapeFacetValue,l=s.unescapeFacetValue,m=r(409);function d(e){var t={};return e.forEach((function(e,r){t[e]=r})),t}function p(e,t,r){t&&t[r]&&(e.stats=t[r])}function v(e,t,r){var s=t[0];this._rawResults=t;var u=this;Object.keys(s).forEach((function(e){u[e]=s[e]})),Object.keys(r||{}).forEach((function(e){u[e]=r[e]})),this.processingTimeMS=t.reduce((function(e,t){return void 0===t.processingTimeMS?e:e+t.processingTimeMS}),0),this.disjunctiveFacets=[],this.hierarchicalFacets=e.hierarchicalFacets.map((function(){return[]})),this.facets=[];var h=e.getRefinedDisjunctiveFacets(),f=d(e.facets),v=d(e.disjunctiveFacets),g=1,y=s.facets||{};Object.keys(y).forEach((function(t){var r,n,i=y[t],o=(r=e.hierarchicalFacets,n=t,a(r,(function(e){return(e.attributes||[]).indexOf(n)>-1})));if(o){var h=o.attributes.indexOf(t),l=c(e.hierarchicalFacets,(function(e){return e.name===o.name}));u.hierarchicalFacets[l][h]={attribute:t,data:i,exhaustive:s.exhaustiveFacetsCount}}else{var m,d=-1!==e.disjunctiveFacets.indexOf(t),g=-1!==e.facets.indexOf(t);d&&(m=v[t],u.disjunctiveFacets[m]={name:t,data:i,exhaustive:s.exhaustiveFacetsCount},p(u.disjunctiveFacets[m],s.facets_stats,t)),g&&(m=f[t],u.facets[m]={name:t,data:i,exhaustive:s.exhaustiveFacetsCount},p(u.facets[m],s.facets_stats,t))}})),this.hierarchicalFacets=n(this.hierarchicalFacets),h.forEach((function(r){var n=t[g],a=n&&n.facets?n.facets:{},h=e.getHierarchicalFacetByName(r);Object.keys(a).forEach((function(t){var r,f=a[t];if(h){r=c(e.hierarchicalFacets,(function(e){return e.name===h.name}));var m=c(u.hierarchicalFacets[r],(function(e){return e.attribute===t}));if(-1===m)return;u.hierarchicalFacets[r][m].data=o({},u.hierarchicalFacets[r][m].data,f)}else{r=v[t];var d=s.facets&&s.facets[t]||{};u.disjunctiveFacets[r]={name:t,data:i({},f,d),exhaustive:n.exhaustiveFacetsCount},p(u.disjunctiveFacets[r],n.facets_stats,t),e.disjunctiveFacetsRefinements[t]&&e.disjunctiveFacetsRefinements[t].forEach((function(n){!u.disjunctiveFacets[r].data[n]&&e.disjunctiveFacetsRefinements[t].indexOf(l(n))>-1&&(u.disjunctiveFacets[r].data[n]=0)}))}})),g++})),e.getRefinedHierarchicalFacets().forEach((function(r){var n=e.getHierarchicalFacetByName(r),s=e._getHierarchicalFacetSeparator(n),a=e.getHierarchicalRefinement(r);0===a.length||a[0].split(s).length<2||t.slice(g).forEach((function(t){var r=t&&t.facets?t.facets:{};Object.keys(r).forEach((function(t){var o=r[t],h=c(e.hierarchicalFacets,(function(e){return e.name===n.name})),f=c(u.hierarchicalFacets[h],(function(e){return e.attribute===t}));if(-1!==f){var l={};if(a.length>0){var m=a[0].split(s)[0];l[m]=u.hierarchicalFacets[h][f].data[m]}u.hierarchicalFacets[h][f].data=i(l,o,u.hierarchicalFacets[h][f].data)}})),g++}))})),Object.keys(e.facetsExcludes).forEach((function(t){var r=e.facetsExcludes[t],n=f[t];u.facets[n]={name:t,data:y[t],exhaustive:s.exhaustiveFacetsCount},r.forEach((function(e){u.facets[n]=u.facets[n]||{name:t},u.facets[n].data=u.facets[n].data||{},u.facets[n].data[e]=0}))})),this.hierarchicalFacets=this.hierarchicalFacets.map(m(e)),this.facets=n(this.facets),this.disjunctiveFacets=n(this.disjunctiveFacets),this._state=e}function g(e,t){function r(e){return e.name===t}if(e._state.isConjunctiveFacet(t)){var n=a(e.facets,r);return n?Object.keys(n.data).map((function(r){var i=f(r);return{name:r,escapedValue:i,count:n.data[r],isRefined:e._state.isFacetRefined(t,i),isExcluded:e._state.isExcludeRefined(t,r)}})):[]}if(e._state.isDisjunctiveFacet(t)){var i=a(e.disjunctiveFacets,r);return i?Object.keys(i.data).map((function(r){var n=f(r);return{name:r,escapedValue:n,count:i.data[r],isRefined:e._state.isDisjunctiveFacetRefined(t,n)}})):[]}if(e._state.isHierarchicalFacet(t)){var s=a(e.hierarchicalFacets,r);if(!s)return s;var c=e._state.getHierarchicalFacetByName(t),u=e._state._getHierarchicalFacetSeparator(c),o=l(e._state.getHierarchicalRefinement(t)[0]||"");0===o.indexOf(c.rootPath)&&(o=o.replace(c.rootPath+u,""));var h=o.split(u);return h.unshift(t),y(s,h,0),s}}function y(e,t,r){e.isRefined=e.name===t[r],e.data&&e.data.forEach((function(e){y(e,t,r+1)}))}function R(e,t,r,n){if(n=n||0,Array.isArray(t))return e(t,r[n]);if(!t.data||0===t.data.length)return t;var s=t.data.map((function(t){return R(e,t,r,n+1)})),a=e(s,r[n]);return i({data:a},t)}function F(e,t){var r=a(e,(function(e){return e.name===t}));return r&&r.stats}function b(e,t,r,n,i){var s=a(i,(function(e){return e.name===r})),c=s&&s.data&&s.data[n]?s.data[n]:0,u=s&&s.exhaustive||!1;return{type:t,attributeName:r,name:n,count:c,exhaustive:u}}v.prototype.getFacetByName=function(e){function t(t){return t.name===e}return a(this.facets,t)||a(this.disjunctiveFacets,t)||a(this.hierarchicalFacets,t)},v.DEFAULT_SORT=["isRefined:desc","count:desc","name:asc"],v.prototype.getFacetValues=function(e,t){var r=g(this,e);if(r){var n,s=i({},t,{sortBy:v.DEFAULT_SORT,facetOrdering:!(t&&t.sortBy)}),a=this;if(Array.isArray(r))n=[e];else n=a._state.getHierarchicalFacetByName(r.name).attributes;return R((function(e,t){if(s.facetOrdering){var r=function(e,t){return e.renderingContent&&e.renderingContent.facetOrdering&&e.renderingContent.facetOrdering.values&&e.renderingContent.facetOrdering.values[t]}(a,t);if(r)return function(e,t){var r=[],n=[],i=(t.order||[]).reduce((function(e,t,r){return e[t]=r,e}),{});e.forEach((function(e){var t=e.path||e.name;void 0!==i[t]?r[i[t]]=e:n.push(e)})),r=r.filter((function(e){return e}));var s,a=t.sortRemainingBy;return"hidden"===a?r:(s="alpha"===a?[["path","name"],["asc","asc"]]:[["count"],["desc"]],r.concat(h(n,s[0],s[1])))}(e,r)}if(Array.isArray(s.sortBy)){var n=u(s.sortBy,v.DEFAULT_SORT);return h(e,n[0],n[1])}if("function"==typeof s.sortBy)return function(e,t){return t.sort(e)}(s.sortBy,e);throw new Error("options.sortBy is optional but if defined it must be either an array of string (predicates) or a sorting function")}),r,n)}},v.prototype.getFacetStats=function(e){return this._state.isConjunctiveFacet(e)?F(this.facets,e):this._state.isDisjunctiveFacet(e)?F(this.disjunctiveFacets,e):void 0},v.prototype.getRefinements=function(){var e=this._state,t=this,r=[];return Object.keys(e.facetsRefinements).forEach((function(n){e.facetsRefinements[n].forEach((function(i){r.push(b(e,"facet",n,i,t.facets))}))})),Object.keys(e.facetsExcludes).forEach((function(n){e.facetsExcludes[n].forEach((function(i){r.push(b(e,"exclude",n,i,t.facets))}))})),Object.keys(e.disjunctiveFacetsRefinements).forEach((function(n){e.disjunctiveFacetsRefinements[n].forEach((function(i){r.push(b(e,"disjunctive",n,i,t.disjunctiveFacets))}))})),Object.keys(e.hierarchicalFacetsRefinements).forEach((function(n){e.hierarchicalFacetsRefinements[n].forEach((function(i){r.push(function(e,t,r,n){var i=e.getHierarchicalFacetByName(t),s=e._getHierarchicalFacetSeparator(i),c=r.split(s),u=a(n,(function(e){return e.name===t})),o=c.reduce((function(e,t){var r=e&&a(e.data,(function(e){return e.name===t}));return void 0!==r?r:e}),u),h=o&&o.count||0,f=o&&o.exhaustive||!1,l=o&&o.path||"";return{type:"hierarchical",attributeName:t,name:l,count:h,exhaustive:f}}(e,n,i,t.hierarchicalFacets))}))})),Object.keys(e.numericRefinements).forEach((function(t){var n=e.numericRefinements[t];Object.keys(n).forEach((function(e){n[e].forEach((function(n){r.push({type:"numeric",attributeName:t,name:n,numericValue:n,operator:e})}))}))})),e.tagRefinements.forEach((function(e){r.push({type:"tag",attributeName:"_tags",name:e})})),r},e.exports=v},2302:(e,t,r)=>{"use strict";var n=r(3698),i=r(2598),s=r(2710).escapeFacetValue,a=r(5101),c=r(9556),u=r(3757),o=r(3131),h=r(2323),f=r(6118),l=r(2445),m=r(476);function d(e,t,r){"function"==typeof e.addAlgoliaAgent&&e.addAlgoliaAgent("JS Helper ("+m+")"),this.setClient(e);var n=r||{};n.index=t,this.state=f.make(n),this.lastResults=null,this._queryId=0,this._lastQueryIdReceived=-1,this.derivedHelpers=[],this._currentNbQueries=0}function p(e){if(e<0)throw new Error("Page requested below 0.");return this._change({state:this.state.setPage(e),isPageReset:!1}),this}function v(){return this.state.page}a(d,n),d.prototype.search=function(){return this._search({onlyWithDerivedHelpers:!1}),this},d.prototype.searchOnlyWithDerivedHelpers=function(){return this._search({onlyWithDerivedHelpers:!0}),this},d.prototype.getQuery=function(){var e=this.state;return h._getHitsSearchParams(e)},d.prototype.searchOnce=function(e,t){var r=e?this.state.setQueryParameters(e):this.state,n=h._getQueries(r.index,r),i=this;if(this._currentNbQueries++,this.emit("searchOnce",{state:r}),!t)return this.client.search(n).then((function(e){return i._currentNbQueries--,0===i._currentNbQueries&&i.emit("searchQueueEmpty"),{content:new l(r,e.results),state:r,_originalResponse:e}}),(function(e){throw i._currentNbQueries--,0===i._currentNbQueries&&i.emit("searchQueueEmpty"),e}));this.client.search(n).then((function(e){i._currentNbQueries--,0===i._currentNbQueries&&i.emit("searchQueueEmpty"),t(null,new l(r,e.results),r)})).catch((function(e){i._currentNbQueries--,0===i._currentNbQueries&&i.emit("searchQueueEmpty"),t(e,null,r)}))},d.prototype.findAnswers=function(e){console.warn("[algoliasearch-helper] answers is no longer supported");var t=this.state,r=this.derivedHelpers[0];if(!r)return Promise.resolve([]);var n=r.getModifiedState(t),i=c({attributesForPrediction:e.attributesForPrediction,nbHits:e.nbHits},{params:o(h._getHitsSearchParams(n),["attributesToSnippet","hitsPerPage","restrictSearchableAttributes","snippetEllipsisText"])}),s="search for answers was called, but this client does not have a function client.initIndex(index).findAnswers";if("function"!=typeof this.client.initIndex)throw new Error(s);var a=this.client.initIndex(n.index);if("function"!=typeof a.findAnswers)throw new Error(s);return a.findAnswers(n.query,e.queryLanguages,i)},d.prototype.searchForFacetValues=function(e,t,r,n){var i="function"==typeof this.client.searchForFacetValues,a="function"==typeof this.client.initIndex;if(!i&&!a&&"function"!=typeof this.client.search)throw new Error("search for facet values (searchable) was called, but this client does not have a function client.searchForFacetValues or client.initIndex(index).searchForFacetValues");var c=this.state.setQueryParameters(n||{}),u=c.isDisjunctiveFacet(e),o=h.getSearchForFacetQuery(e,t,r,c);this._currentNbQueries++;var f,l=this;return i?f=this.client.searchForFacetValues([{indexName:c.index,params:o}]):a?f=this.client.initIndex(c.index).searchForFacetValues(o):(delete o.facetName,f=this.client.search([{type:"facet",facet:e,indexName:c.index,params:o}]).then((function(e){return e.results[0]}))),this.emit("searchForFacetValues",{state:c,facet:e,query:t}),f.then((function(t){return l._currentNbQueries--,0===l._currentNbQueries&&l.emit("searchQueueEmpty"),(t=Array.isArray(t)?t[0]:t).facetHits.forEach((function(t){t.escapedValue=s(t.value),t.isRefined=u?c.isDisjunctiveFacetRefined(e,t.escapedValue):c.isFacetRefined(e,t.escapedValue)})),t}),(function(e){throw l._currentNbQueries--,0===l._currentNbQueries&&l.emit("searchQueueEmpty"),e}))},d.prototype.setQuery=function(e){return this._change({state:this.state.resetPage().setQuery(e),isPageReset:!0}),this},d.prototype.clearRefinements=function(e){return this._change({state:this.state.resetPage().clearRefinements(e),isPageReset:!0}),this},d.prototype.clearTags=function(){return this._change({state:this.state.resetPage().clearTags(),isPageReset:!0}),this},d.prototype.addDisjunctiveFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().addDisjunctiveFacetRefinement(e,t),isPageReset:!0}),this},d.prototype.addDisjunctiveRefine=function(){return this.addDisjunctiveFacetRefinement.apply(this,arguments)},d.prototype.addHierarchicalFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().addHierarchicalFacetRefinement(e,t),isPageReset:!0}),this},d.prototype.addNumericRefinement=function(e,t,r){return this._change({state:this.state.resetPage().addNumericRefinement(e,t,r),isPageReset:!0}),this},d.prototype.addFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().addFacetRefinement(e,t),isPageReset:!0}),this},d.prototype.addRefine=function(){return this.addFacetRefinement.apply(this,arguments)},d.prototype.addFacetExclusion=function(e,t){return this._change({state:this.state.resetPage().addExcludeRefinement(e,t),isPageReset:!0}),this},d.prototype.addExclude=function(){return this.addFacetExclusion.apply(this,arguments)},d.prototype.addTag=function(e){return this._change({state:this.state.resetPage().addTagRefinement(e),isPageReset:!0}),this},d.prototype.removeNumericRefinement=function(e,t,r){return this._change({state:this.state.resetPage().removeNumericRefinement(e,t,r),isPageReset:!0}),this},d.prototype.removeDisjunctiveFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().removeDisjunctiveFacetRefinement(e,t),isPageReset:!0}),this},d.prototype.removeDisjunctiveRefine=function(){return this.removeDisjunctiveFacetRefinement.apply(this,arguments)},d.prototype.removeHierarchicalFacetRefinement=function(e){return this._change({state:this.state.resetPage().removeHierarchicalFacetRefinement(e),isPageReset:!0}),this},d.prototype.removeFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().removeFacetRefinement(e,t),isPageReset:!0}),this},d.prototype.removeRefine=function(){return this.removeFacetRefinement.apply(this,arguments)},d.prototype.removeFacetExclusion=function(e,t){return this._change({state:this.state.resetPage().removeExcludeRefinement(e,t),isPageReset:!0}),this},d.prototype.removeExclude=function(){return this.removeFacetExclusion.apply(this,arguments)},d.prototype.removeTag=function(e){return this._change({state:this.state.resetPage().removeTagRefinement(e),isPageReset:!0}),this},d.prototype.toggleFacetExclusion=function(e,t){return this._change({state:this.state.resetPage().toggleExcludeFacetRefinement(e,t),isPageReset:!0}),this},d.prototype.toggleExclude=function(){return this.toggleFacetExclusion.apply(this,arguments)},d.prototype.toggleRefinement=function(e,t){return this.toggleFacetRefinement(e,t)},d.prototype.toggleFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().toggleFacetRefinement(e,t),isPageReset:!0}),this},d.prototype.toggleRefine=function(){return this.toggleFacetRefinement.apply(this,arguments)},d.prototype.toggleTag=function(e){return this._change({state:this.state.resetPage().toggleTagRefinement(e),isPageReset:!0}),this},d.prototype.nextPage=function(){var e=this.state.page||0;return this.setPage(e+1)},d.prototype.previousPage=function(){var e=this.state.page||0;return this.setPage(e-1)},d.prototype.setCurrentPage=p,d.prototype.setPage=p,d.prototype.setIndex=function(e){return this._change({state:this.state.resetPage().setIndex(e),isPageReset:!0}),this},d.prototype.setQueryParameter=function(e,t){return this._change({state:this.state.resetPage().setQueryParameter(e,t),isPageReset:!0}),this},d.prototype.setState=function(e){return this._change({state:f.make(e),isPageReset:!1}),this},d.prototype.overrideStateWithoutTriggeringChangeEvent=function(e){return this.state=new f(e),this},d.prototype.hasRefinements=function(e){return!!u(this.state.getNumericRefinements(e))||(this.state.isConjunctiveFacet(e)?this.state.isFacetRefined(e):this.state.isDisjunctiveFacet(e)?this.state.isDisjunctiveFacetRefined(e):!!this.state.isHierarchicalFacet(e)&&this.state.isHierarchicalFacetRefined(e))},d.prototype.isExcluded=function(e,t){return this.state.isExcludeRefined(e,t)},d.prototype.isDisjunctiveRefined=function(e,t){return this.state.isDisjunctiveFacetRefined(e,t)},d.prototype.hasTag=function(e){return this.state.isTagRefined(e)},d.prototype.isTagRefined=function(){return this.hasTagRefinements.apply(this,arguments)},d.prototype.getIndex=function(){return this.state.index},d.prototype.getCurrentPage=v,d.prototype.getPage=v,d.prototype.getTags=function(){return this.state.tagRefinements},d.prototype.getRefinements=function(e){var t=[];if(this.state.isConjunctiveFacet(e))this.state.getConjunctiveRefinements(e).forEach((function(e){t.push({value:e,type:"conjunctive"})})),this.state.getExcludeRefinements(e).forEach((function(e){t.push({value:e,type:"exclude"})}));else if(this.state.isDisjunctiveFacet(e)){this.state.getDisjunctiveRefinements(e).forEach((function(e){t.push({value:e,type:"disjunctive"})}))}var r=this.state.getNumericRefinements(e);return Object.keys(r).forEach((function(e){var n=r[e];t.push({value:n,operator:e,type:"numeric"})})),t},d.prototype.getNumericRefinement=function(e,t){return this.state.getNumericRefinement(e,t)},d.prototype.getHierarchicalFacetBreadcrumb=function(e){return this.state.getHierarchicalFacetBreadcrumb(e)},d.prototype._search=function(e){var t=this.state,r=[],n=[];e.onlyWithDerivedHelpers||(n=h._getQueries(t.index,t),r.push({state:t,queriesCount:n.length,helper:this}),this.emit("search",{state:t,results:this.lastResults}));var i=this.derivedHelpers.map((function(e){var n=e.getModifiedState(t),i=n.index?h._getQueries(n.index,n):[];return r.push({state:n,queriesCount:i.length,helper:e}),e.emit("search",{state:n,results:e.lastResults}),i})),s=Array.prototype.concat.apply(n,i),a=this._queryId++;if(this._currentNbQueries++,!s.length)return Promise.resolve({results:[]}).then(this._dispatchAlgoliaResponse.bind(this,r,a));try{this.client.search(s).then(this._dispatchAlgoliaResponse.bind(this,r,a)).catch(this._dispatchAlgoliaError.bind(this,a))}catch(c){this.emit("error",{error:c})}},d.prototype._dispatchAlgoliaResponse=function(e,t,r){if(!(t0},d.prototype._change=function(e){var t=e.state,r=e.isPageReset;t!==this.state&&(this.state=t,this.emit("change",{state:this.state,results:this.lastResults,isPageReset:r}))},d.prototype.clearCache=function(){return this.client.clearCache&&this.client.clearCache(),this},d.prototype.setClient=function(e){return this.client===e||("function"==typeof e.addAlgoliaAgent&&e.addAlgoliaAgent("JS Helper ("+m+")"),this.client=e),this},d.prototype.getClient=function(){return this.client},d.prototype.derive=function(e){var t=new i(this,e);return this.derivedHelpers.push(t),t},d.prototype.detachDerivedHelper=function(e){var t=this.derivedHelpers.indexOf(e);if(-1===t)throw new Error("Derived helper already detached");this.derivedHelpers.splice(t,1)},d.prototype.hasPendingRequests=function(){return this._currentNbQueries>0},e.exports=d},1346:e=>{"use strict";e.exports=function(e){return Array.isArray(e)?e.filter(Boolean):[]}},2781:e=>{"use strict";e.exports=function(){return Array.prototype.slice.call(arguments).reduceRight((function(e,t){return Object.keys(Object(t)).forEach((function(r){void 0!==t[r]&&(void 0!==e[r]&&delete e[r],e[r]=t[r])})),e}),{})}},2710:e=>{"use strict";e.exports={escapeFacetValue:function(e){return"string"!=typeof e?e:String(e).replace(/^-/,"\\-")},unescapeFacetValue:function(e){return"string"!=typeof e?e:e.replace(/^\\-/,"-")}}},6461:e=>{"use strict";e.exports=function(e,t){if(Array.isArray(e))for(var r=0;r{"use strict";e.exports=function(e,t){if(!Array.isArray(e))return-1;for(var r=0;r{"use strict";var n=r(6461);e.exports=function(e,t){var r=(t||[]).map((function(e){return e.split(":")}));return e.reduce((function(e,t){var i=t.split(":"),s=n(r,(function(e){return e[0]===i[0]}));return i.length>1||!s?(e[0].push(i[0]),e[1].push(i[1]),e):(e[0].push(s[0]),e[1].push(s[1]),e)}),[[],[]])}},5101:e=>{"use strict";e.exports=function(e,t){e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}},9546:e=>{"use strict";e.exports=function(e,t){return e.filter((function(r,n){return t.indexOf(r)>-1&&e.indexOf(r)===n}))}},9556:e=>{"use strict";function t(e){return"function"==typeof e||Array.isArray(e)||"[object Object]"===Object.prototype.toString.call(e)}function r(e,n){if(e===n)return e;for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)&&"__proto__"!==i&&"constructor"!==i){var s=n[i],a=e[i];void 0!==a&&void 0===s||(t(a)&&t(s)?e[i]=r(a,s):e[i]="object"==typeof(c=s)&&null!==c?r(Array.isArray(c)?[]:{},c):c)}var c;return e}e.exports=function(e){t(e)||(e={});for(var n=1,i=arguments.length;n{"use strict";e.exports=function(e){return e&&Object.keys(e).length>0}},3131:e=>{"use strict";e.exports=function(e,t){if(null===e)return{};var r,n,i={},s=Object.keys(e);for(n=0;n=0||(i[r]=e[r]);return i}},4798:e=>{"use strict";function t(e,t){if(e!==t){var r=void 0!==e,n=null===e,i=void 0!==t,s=null===t;if(!s&&e>t||n&&i||!r)return 1;if(!n&&e=n.length?s:"desc"===n[i]?-s:s}return e.index-r.index})),i.map((function(e){return e.value}))}},2708:e=>{"use strict";e.exports=function e(t){if("number"==typeof t)return t;if("string"==typeof t)return parseFloat(t);if(Array.isArray(t))return t.map(e);throw new Error("The value should be a number, a parsable string or an array of those.")}},2323:(e,t,r)=>{"use strict";var n=r(9556);function i(e){return Object.keys(e).sort().reduce((function(t,r){return t[r]=e[r],t}),{})}var s={_getQueries:function(e,t){var r=[];return r.push({indexName:e,params:s._getHitsSearchParams(t)}),t.getRefinedDisjunctiveFacets().forEach((function(n){r.push({indexName:e,params:s._getDisjunctiveFacetSearchParams(t,n)})})),t.getRefinedHierarchicalFacets().forEach((function(n){var i=t.getHierarchicalFacetByName(n),a=t.getHierarchicalRefinement(n),c=t._getHierarchicalFacetSeparator(i);if(a.length>0&&a[0].split(c).length>1){var u=a[0].split(c).slice(0,-1).reduce((function(e,t,r){return e.concat({attribute:i.attributes[r],value:0===r?t:[e[e.length-1].value,t].join(c)})}),[]);u.forEach((function(n,a){var c=s._getDisjunctiveFacetSearchParams(t,n.attribute,0===a);function o(e){return i.attributes.some((function(t){return t===e.split(":")[0]}))}var h=(c.facetFilters||[]).reduce((function(e,t){if(Array.isArray(t)){var r=t.filter((function(e){return!o(e)}));r.length>0&&e.push(r)}return"string"!=typeof t||o(t)||e.push(t),e}),[]),f=u[a-1];c.facetFilters=a>0?h.concat(f.attribute+":"+f.value):h.length>0?h:void 0,r.push({indexName:e,params:c})}))}})),r},_getHitsSearchParams:function(e){var t=e.facets.concat(e.disjunctiveFacets).concat(s._getHitsHierarchicalFacetsAttributes(e)).sort(),r=s._getFacetFilters(e),a=s._getNumericFilters(e),c=s._getTagFilters(e),u={facets:t.indexOf("*")>-1?["*"]:t,tagFilters:c};return r.length>0&&(u.facetFilters=r),a.length>0&&(u.numericFilters=a),i(n({},e.getQueryParams(),u))},_getDisjunctiveFacetSearchParams:function(e,t,r){var a=s._getFacetFilters(e,t,r),c=s._getNumericFilters(e,t),u=s._getTagFilters(e),o={hitsPerPage:0,page:0,analytics:!1,clickAnalytics:!1};u.length>0&&(o.tagFilters=u);var h=e.getHierarchicalFacetByName(t);return o.facets=h?s._getDisjunctiveHierarchicalFacetAttribute(e,h,r):t,c.length>0&&(o.numericFilters=c),a.length>0&&(o.facetFilters=a),i(n({},e.getQueryParams(),o))},_getNumericFilters:function(e,t){if(e.numericFilters)return e.numericFilters;var r=[];return Object.keys(e.numericRefinements).forEach((function(n){var i=e.numericRefinements[n]||{};Object.keys(i).forEach((function(e){var s=i[e]||[];t!==n&&s.forEach((function(t){if(Array.isArray(t)){var i=t.map((function(t){return n+e+t}));r.push(i)}else r.push(n+e+t)}))}))})),r},_getTagFilters:function(e){return e.tagFilters?e.tagFilters:e.tagRefinements.join(",")},_getFacetFilters:function(e,t,r){var n=[],i=e.facetsRefinements||{};Object.keys(i).sort().forEach((function(e){(i[e]||[]).sort().forEach((function(t){n.push(e+":"+t)}))}));var s=e.facetsExcludes||{};Object.keys(s).sort().forEach((function(e){(s[e]||[]).sort().forEach((function(t){n.push(e+":-"+t)}))}));var a=e.disjunctiveFacetsRefinements||{};Object.keys(a).sort().forEach((function(e){var r=a[e]||[];if(e!==t&&r&&0!==r.length){var i=[];r.sort().forEach((function(t){i.push(e+":"+t)})),n.push(i)}}));var c=e.hierarchicalFacetsRefinements||{};return Object.keys(c).sort().forEach((function(i){var s=(c[i]||[])[0];if(void 0!==s){var a,u,o=e.getHierarchicalFacetByName(i),h=e._getHierarchicalFacetSeparator(o),f=e._getHierarchicalRootPath(o);if(t===i){if(-1===s.indexOf(h)||!f&&!0===r||f&&f.split(h).length===s.split(h).length)return;f?(u=f.split(h).length-1,s=f):(u=s.split(h).length-2,s=s.slice(0,s.lastIndexOf(h))),a=o.attributes[u]}else u=s.split(h).length-1,a=o.attributes[u];a&&n.push([a+":"+s])}})),n},_getHitsHierarchicalFacetsAttributes:function(e){return e.hierarchicalFacets.reduce((function(t,r){var n=e.getHierarchicalRefinement(r.name)[0];if(!n)return t.push(r.attributes[0]),t;var i=e._getHierarchicalFacetSeparator(r),s=n.split(i).length,a=r.attributes.slice(0,s+1);return t.concat(a)}),[])},_getDisjunctiveHierarchicalFacetAttribute:function(e,t,r){var n=e._getHierarchicalFacetSeparator(t);if(!0===r){var i=e._getHierarchicalRootPath(t),s=0;return i&&(s=i.split(n).length),[t.attributes[s]]}var a=(e.getHierarchicalRefinement(t.name)[0]||"").split(n).length-1;return t.attributes.slice(0,a+1)},getSearchForFacetQuery:function(e,t,r,a){var c=a.isDisjunctiveFacet(e)?a.clearRefinements(e):a,u={facetQuery:t,facetName:e};return"number"==typeof r&&(u.maxFacetHits=r),i(n({},s._getHitsSearchParams(c),u))}};e.exports=s},8853:e=>{"use strict";e.exports=function(e){return null!==e&&/^[a-zA-Z0-9_-]{1,64}$/.test(e)}},476:e=>{"use strict";e.exports="3.15.0"},7740:function(e){e.exports=function(){"use strict";function e(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function t(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function r(r){for(var n=1;n=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}function i(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var r=[],n=!0,i=!1,s=void 0;try{for(var a,c=e[Symbol.iterator]();!(n=(a=c.next()).done)&&(r.push(a.value),!t||r.length!==t);n=!0);}catch(e){i=!0,s=e}finally{try{n||null==c.return||c.return()}finally{if(i)throw s}}return r}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function s(e){return function(e){if(Array.isArray(e)){for(var t=0,r=new Array(e.length);t2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return Promise.resolve().then((function(){c();var t=JSON.stringify(e);return s()[t]})).then((function(e){return Promise.all([e?e.value:t(),void 0!==e])})).then((function(e){var t=i(e,2),n=t[0],s=t[1];return Promise.all([n,s||r.miss(n)])})).then((function(e){return i(e,1)[0]}))},set:function(e,t){return Promise.resolve().then((function(){var i=s();return i[JSON.stringify(e)]={timestamp:(new Date).getTime(),value:t},n().setItem(r,JSON.stringify(i)),t}))},delete:function(e){return Promise.resolve().then((function(){var t=s();delete t[JSON.stringify(e)],n().setItem(r,JSON.stringify(t))}))},clear:function(){return Promise.resolve().then((function(){n().removeItem(r)}))}}}function c(e){var t=s(e.caches),r=t.shift();return void 0===r?{get:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return t().then((function(e){return Promise.all([e,r.miss(e)])})).then((function(e){return i(e,1)[0]}))},set:function(e,t){return Promise.resolve(t)},delete:function(e){return Promise.resolve()},clear:function(){return Promise.resolve()}}:{get:function(e,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return r.get(e,n,i).catch((function(){return c({caches:t}).get(e,n,i)}))},set:function(e,n){return r.set(e,n).catch((function(){return c({caches:t}).set(e,n)}))},delete:function(e){return r.delete(e).catch((function(){return c({caches:t}).delete(e)}))},clear:function(){return r.clear().catch((function(){return c({caches:t}).clear()}))}}}function u(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{serializable:!0},t={};return{get:function(r,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}},s=JSON.stringify(r);if(s in t)return Promise.resolve(e.serializable?JSON.parse(t[s]):t[s]);var a=n(),c=i&&i.miss||function(){return Promise.resolve()};return a.then((function(e){return c(e)})).then((function(){return a}))},set:function(r,n){return t[JSON.stringify(r)]=e.serializable?JSON.stringify(n):n,Promise.resolve(n)},delete:function(e){return delete t[JSON.stringify(e)],Promise.resolve()},clear:function(){return t={},Promise.resolve()}}}function o(e){for(var t=e.length-1;t>0;t--){var r=Math.floor(Math.random()*(t+1)),n=e[t];e[t]=e[r],e[r]=n}return e}function h(e,t){return t?(Object.keys(t).forEach((function(r){e[r]=t[r](e)})),e):e}function f(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n0?n:void 0,timeout:r.timeout||t,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}var d={Read:1,Write:2,Any:3},p=1,v=2,g=3;function y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:p;return r(r({},e),{},{status:t,lastUpdate:Date.now()})}function R(e){return"string"==typeof e?{protocol:"https",url:e,accept:d.Any}:{protocol:e.protocol||"https",url:e.url,accept:e.accept||d.Any}}var F="GET",b="POST";function j(e,t){return Promise.all(t.map((function(t){return e.get(t,(function(){return Promise.resolve(y(t))}))}))).then((function(e){var r=e.filter((function(e){return function(e){return e.status===p||Date.now()-e.lastUpdate>12e4}(e)})),n=e.filter((function(e){return function(e){return e.status===g&&Date.now()-e.lastUpdate<=12e4}(e)})),i=[].concat(s(r),s(n));return{getTimeout:function(e,t){return(0===n.length&&0===e?1:n.length+3+e)*t},statelessHosts:i.length>0?i.map((function(e){return R(e)})):t}}))}function P(e,t,n,i){var a=[],c=function(e,t){if(e.method!==F&&(void 0!==e.data||void 0!==t.data)){var n=Array.isArray(e.data)?e.data:r(r({},e.data),t.data);return JSON.stringify(n)}}(n,i),u=function(e,t){var n=r(r({},e.headers),t.headers),i={};return Object.keys(n).forEach((function(e){var t=n[e];i[e.toLowerCase()]=t})),i}(e,i),o=n.method,h=n.method!==F?{}:r(r({},n.data),i.data),f=r(r(r({"x-algolia-agent":e.userAgent.value},e.queryParameters),h),i.queryParameters),l=0,m=function t(r,s){var h=r.pop();if(void 0===h)throw{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:w(a)};var m={data:c,headers:u,method:o,url:_(h,n.path,f),connectTimeout:s(l,e.timeouts.connect),responseTimeout:s(l,i.timeout)},d=function(e){var t={request:m,response:e,host:h,triesLeft:r.length};return a.push(t),t},p={onSuccess:function(e){return function(e){try{return JSON.parse(e.content)}catch(t){throw function(e,t){return{name:"DeserializationError",message:e,response:t}}(t.message,e)}}(e)},onRetry:function(n){var i=d(n);return n.isTimedOut&&l++,Promise.all([e.logger.info("Retryable failure",O(i)),e.hostsCache.set(h,y(h,n.isTimedOut?g:v))]).then((function(){return t(r,s)}))},onFail:function(e){throw d(e),function(e,t){var r=e.content,n=e.status,i=r;try{i=JSON.parse(r).message}catch(e){}return function(e,t,r){return{name:"ApiError",message:e,status:t,transporterStackTrace:r}}(i,n,t)}(e,w(a))}};return e.requester.send(m).then((function(e){return function(e,t){return function(e){var t=e.status;return e.isTimedOut||function(e){var t=e.isTimedOut,r=e.status;return!t&&0==~~r}(e)||2!=~~(t/100)&&4!=~~(t/100)}(e)?t.onRetry(e):2==~~(e.status/100)?t.onSuccess(e):t.onFail(e)}(e,p)}))};return j(e.hostsCache,t).then((function(e){return m(s(e.statelessHosts).reverse(),e.getTimeout)}))}function x(e){var t={value:"Algolia for JavaScript (".concat(e,")"),add:function(e){var r="; ".concat(e.segment).concat(void 0!==e.version?" (".concat(e.version,")"):"");return-1===t.value.indexOf(r)&&(t.value="".concat(t.value).concat(r)),t}};return t}function _(e,t,r){var n=E(r),i="".concat(e.protocol,"://").concat(e.url,"/").concat("/"===t.charAt(0)?t.substr(1):t);return n.length&&(i+="?".concat(n)),i}function E(e){return Object.keys(e).map((function(t){return f("%s=%s",t,(r=e[t],"[object Object]"===Object.prototype.toString.call(r)||"[object Array]"===Object.prototype.toString.call(r)?JSON.stringify(e[t]):e[t]));var r})).join("&")}function w(e){return e.map((function(e){return O(e)}))}function O(e){var t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return r(r({},e),{},{request:r(r({},e.request),{},{headers:r(r({},e.request.headers),t)})})}var N=function(e){var t=e.appId,n=function(e,t,r){var n={"x-algolia-api-key":r,"x-algolia-application-id":t};return{headers:function(){return e===l.WithinHeaders?n:{}},queryParameters:function(){return e===l.WithinQueryParameters?n:{}}}}(void 0!==e.authMode?e.authMode:l.WithinHeaders,t,e.apiKey),s=function(e){var t=e.hostsCache,r=e.logger,n=e.requester,s=e.requestsCache,a=e.responsesCache,c=e.timeouts,u=e.userAgent,o=e.hosts,h=e.queryParameters,f={hostsCache:t,logger:r,requester:n,requestsCache:s,responsesCache:a,timeouts:c,userAgent:u,headers:e.headers,queryParameters:h,hosts:o.map((function(e){return R(e)})),read:function(e,t){var r=m(t,f.timeouts.read),n=function(){return P(f,f.hosts.filter((function(e){return 0!=(e.accept&d.Read)})),e,r)};if(!0!==(void 0!==r.cacheable?r.cacheable:e.cacheable))return n();var s={request:e,mappedRequestOptions:r,transporter:{queryParameters:f.queryParameters,headers:f.headers}};return f.responsesCache.get(s,(function(){return f.requestsCache.get(s,(function(){return f.requestsCache.set(s,n()).then((function(e){return Promise.all([f.requestsCache.delete(s),e])}),(function(e){return Promise.all([f.requestsCache.delete(s),Promise.reject(e)])})).then((function(e){var t=i(e,2);return t[0],t[1]}))}))}),{miss:function(e){return f.responsesCache.set(s,e)}})},write:function(e,t){return P(f,f.hosts.filter((function(e){return 0!=(e.accept&d.Write)})),e,m(t,f.timeouts.write))}};return f}(r(r({hosts:[{url:"".concat(t,"-dsn.algolia.net"),accept:d.Read},{url:"".concat(t,".algolia.net"),accept:d.Write}].concat(o([{url:"".concat(t,"-1.algolianet.com")},{url:"".concat(t,"-2.algolianet.com")},{url:"".concat(t,"-3.algolianet.com")}]))},e),{},{headers:r(r(r({},n.headers()),{"content-type":"application/x-www-form-urlencoded"}),e.headers),queryParameters:r(r({},n.queryParameters()),e.queryParameters)}));return h({transporter:s,appId:t,addAlgoliaAgent:function(e,t){s.userAgent.add({segment:e,version:t})},clearCache:function(){return Promise.all([s.requestsCache.clear(),s.responsesCache.clear()]).then((function(){}))}},e.methods)},A=function(e){return function(t,r){return t.method===F?e.transporter.read(t,r):e.transporter.write(t,r)}},H=function(e){return function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return h({transporter:e.transporter,appId:e.appId,indexName:t},r.methods)}},S=function(e){return function(t,n){var i=t.map((function(e){return r(r({},e),{},{params:E(e.params||{})})}));return e.transporter.read({method:b,path:"1/indexes/*/queries",data:{requests:i},cacheable:!0},n)}},T=function(e){return function(t,i){return Promise.all(t.map((function(t){var s=t.params,a=s.facetName,c=s.facetQuery,u=n(s,["facetName","facetQuery"]);return H(e)(t.indexName,{methods:{searchForFacetValues:I}}).searchForFacetValues(a,c,r(r({},i),u))})))}},Q=function(e){return function(t,r,n){return e.transporter.read({method:b,path:f("1/answers/%s/prediction",e.indexName),data:{query:t,queryLanguages:r},cacheable:!0},n)}},C=function(e){return function(t,r){return e.transporter.read({method:b,path:f("1/indexes/%s/query",e.indexName),data:{query:t},cacheable:!0},r)}},I=function(e){return function(t,r,n){return e.transporter.read({method:b,path:f("1/indexes/%s/facets/%s/query",e.indexName,t),data:{facetQuery:r},cacheable:!0},n)}},D=1,k=2,q=3;function V(e,t,n){var i,s={appId:e,apiKey:t,timeouts:{connect:1,read:2,write:30},requester:{send:function(e){return new Promise((function(t){var r=new XMLHttpRequest;r.open(e.method,e.url,!0),Object.keys(e.headers).forEach((function(t){return r.setRequestHeader(t,e.headers[t])}));var n,i=function(e,n){return setTimeout((function(){r.abort(),t({status:0,content:n,isTimedOut:!0})}),1e3*e)},s=i(e.connectTimeout,"Connection timeout");r.onreadystatechange=function(){r.readyState>r.OPENED&&void 0===n&&(clearTimeout(s),n=i(e.responseTimeout,"Socket timeout"))},r.onerror=function(){0===r.status&&(clearTimeout(s),clearTimeout(n),t({content:r.responseText||"Network request failed",status:r.status,isTimedOut:!1}))},r.onload=function(){clearTimeout(s),clearTimeout(n),t({content:r.responseText,status:r.status,isTimedOut:!1})},r.send(e.data)}))}},logger:(i=q,{debug:function(e,t){return D>=i&&console.debug(e,t),Promise.resolve()},info:function(e,t){return k>=i&&console.info(e,t),Promise.resolve()},error:function(e,t){return console.error(e,t),Promise.resolve()}}),responsesCache:u(),requestsCache:u({serializable:!1}),hostsCache:c({caches:[a({key:"".concat("4.20.0","-").concat(e)}),u()]}),userAgent:x("4.20.0").add({segment:"Browser",version:"lite"}),authMode:l.WithinQueryParameters};return N(r(r(r({},s),n),{},{methods:{search:S,searchForFacetValues:T,multipleQueries:S,multipleSearchForFacetValues:T,customRequest:A,initIndex:function(e){return function(t){return H(e)(t,{methods:{search:C,searchForFacetValues:I,findAnswers:Q}})}}}}))}return V.version="4.20.0",V}()},6625:(e,t,r)=>{"use strict";r.d(t,{c:()=>o});var n=r(959),i=r(8927);const s=["zero","one","two","few","many","other"];function a(e){return s.filter((t=>e.includes(t)))}const c={locale:"en",pluralForms:a(["one","other"]),select:e=>1===e?"one":"other"};function u(){const{i18n:{currentLocale:e}}=(0,i.Z)();return(0,n.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:a(t.resolvedOptions().pluralCategories),select:e=>t.select(e)}}(e)}catch(t){return console.error(`Failed to use Intl.PluralRules for locale "${e}".\nDocusaurus will fallback to the default (English) implementation.\nError: ${t.message}\n`),c}}),[e])}function o(){const e=u();return{selectMessage:(t,r)=>function(e,t,r){const n=e.split("|");if(1===n.length)return n[0];n.length>r.pluralForms.length&&console.error(`For locale=${r.locale}, a maximum of ${r.pluralForms.length} plural forms are expected (${r.pluralForms.join(",")}), but the message contains ${n.length}: ${e}`);const i=r.select(t),s=r.pluralForms.indexOf(i);return n[Math.min(s,n.length-1)]}(r,t,e)}}},1803:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>O});var n=r(959),i=r(5341),s=r(1635),a=r.n(s),c=r(7740),u=r.n(c),o=r(3360),h=r(2058),f=r(6788),l=r(9775),m=r(6625),d=r(1029),p=r(3272),v=r(5938),g=r(690),y=r(259),R=r(8927),F=r(6756),b=r(2156),j=r(1576),P=r(7623);const x={searchQueryInput:"searchQueryInput_lKI6",searchVersionInput:"searchVersionInput_APoU",searchResultsColumn:"searchResultsColumn_HwVW",algoliaLogo:"algoliaLogo__qtz",algoliaLogoPathFill:"algoliaLogoPathFill_zNeS",searchResultItem:"searchResultItem_ntkJ",searchResultItemHeading:"searchResultItemHeading_x5B1",searchResultItemPath:"searchResultItemPath_Qgl1",searchResultItemSummary:"searchResultItemSummary_BVj8",searchQueryColumn:"searchQueryColumn_pDz4",searchVersionColumn:"searchVersionColumn_W3RZ",searchLogoColumn:"searchLogoColumn_CSzm",loadingSpinner:"loadingSpinner_yE92","loading-spin":"loading-spin_nb9B",loader:"loader_aLdW"};var _=r(1527);function E(e){let{docsSearchVersionsHelpers:t}=e;const r=Object.entries(t.allDocsData).filter((e=>{let[,t]=e;return t.versions.length>1}));return(0,_.jsx)("div",{className:(0,i.Z)("col","col--3","padding-left--none",x.searchVersionColumn),children:r.map((e=>{let[n,i]=e;const s=r.length>1?`${n}: `:"";return(0,_.jsx)("select",{onChange:e=>t.setSearchVersion(n,e.target.value),defaultValue:t.searchVersions[n],className:x.searchVersionInput,children:i.versions.map(((e,t)=>(0,_.jsx)("option",{label:`${s}${e.label}`,value:e.name},t)))},n)}))})}function w(){const{i18n:{currentLocale:e}}=(0,R.Z)(),{algolia:{appId:t,apiKey:r,indexName:s,contextualSearch:c}}=(0,F.L)(),v=(0,b.l)(),w=function(){const{selectMessage:e}=(0,m.c)();return t=>e(t,(0,y.I)({id:"theme.SearchPage.documentsFound.plurals",description:'Pluralized label for "{count} documents found". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One document found|{count} documents found"},{count:t}))}(),O=function(){const e=(0,l._r)(),[t,r]=(0,n.useState)((()=>Object.entries(e).reduce(((e,t)=>{let[r,n]=t;return{...e,[r]:n.versions[0].name}}),{}))),i=Object.values(e).some((e=>e.versions.length>1));return{allDocsData:e,versioningEnabled:i,searchVersions:t,setSearchVersion:(e,t)=>r((r=>({...r,[e]:t})))}}(),[N,A]=(0,d.K)(),H={items:[],query:null,totalResults:null,totalPages:null,lastPage:null,hasMore:null,loading:null},[S,T]=(0,n.useReducer)(((e,t)=>{switch(t.type){case"reset":return H;case"loading":return{...e,loading:!0};case"update":return N!==t.value.query?e:{...t.value,items:0===t.value.lastPage?t.value.items:e.items.concat(t.value.items)};case"advance":{const t=e.totalPages>e.lastPage+1;return{...e,lastPage:t?e.lastPage+1:e.lastPage,hasMore:t}}default:return e}}),H),Q=c?["language","docusaurus_tag"]:[],C=u()(t,r),I=a()(C,s,{hitsPerPage:15,advancedSyntax:!0,disjunctiveFacets:Q});I.on("result",(e=>{let{results:{query:t,hits:r,page:n,nbHits:i,nbPages:s}}=e;if(""===t||!Array.isArray(r))return void T({type:"reset"});const a=e=>e.replace(/algolia-docsearch-suggestion--highlight/g,"search-result-match"),c=r.map((e=>{let{url:t,_highlightResult:{hierarchy:r},_snippetResult:n={}}=e;const i=Object.keys(r).map((e=>a(r[e].value)));return{title:i.pop(),url:v(t),summary:n.content?`${a(n.content.value)}...`:"",breadcrumbs:i}}));T({type:"update",value:{items:c,query:t,totalResults:i,totalPages:s,lastPage:n,hasMore:s>n+1,loading:!1}})}));const[D,k]=(0,n.useState)(null),q=(0,n.useRef)(0),V=(0,n.useRef)(o.Z.canUseIntersectionObserver&&new IntersectionObserver((e=>{const{isIntersecting:t,boundingClientRect:{y:r}}=e[0];t&&q.current>r&&T({type:"advance"}),q.current=r}),{threshold:1})),L=()=>N?(0,y.I)({id:"theme.SearchPage.existingResultsTitle",message:'Search results for "{query}"',description:"The search page title for non-empty query"},{query:N}):(0,y.I)({id:"theme.SearchPage.emptyResultsTitle",message:"Search the documentation",description:"The search page title for empty query"}),B=(0,p.zX)((function(t){void 0===t&&(t=0),c&&(I.addDisjunctiveFacetRefinement("docusaurus_tag","default"),I.addDisjunctiveFacetRefinement("language",e),Object.entries(O.searchVersions).forEach((e=>{let[t,r]=e;I.addDisjunctiveFacetRefinement("docusaurus_tag",`docs-${t}-${r}`)}))),I.setQuery(N).setPage(t).search()}));return(0,n.useEffect)((()=>{if(!D)return;const e=V.current;return e?(e.observe(D),()=>e.unobserve(D)):()=>!0}),[D]),(0,n.useEffect)((()=>{T({type:"reset"}),N&&(T({type:"loading"}),setTimeout((()=>{B()}),300))}),[N,O.searchVersions,B]),(0,n.useEffect)((()=>{S.lastPage&&0!==S.lastPage&&B(S.lastPage)}),[B,S.lastPage]),(0,_.jsxs)(j.Z,{children:[(0,_.jsxs)(h.Z,{children:[(0,_.jsx)("title",{children:(0,g.p)(L())}),(0,_.jsx)("meta",{property:"robots",content:"noindex, follow"})]}),(0,_.jsxs)("div",{className:"container margin-vert--lg",children:[(0,_.jsx)(P.Z,{as:"h1",children:L()}),(0,_.jsxs)("form",{className:"row",onSubmit:e=>e.preventDefault(),children:[(0,_.jsx)("div",{className:(0,i.Z)("col",x.searchQueryColumn,{"col--9":O.versioningEnabled,"col--12":!O.versioningEnabled}),children:(0,_.jsx)("input",{type:"search",name:"q",className:x.searchQueryInput,placeholder:(0,y.I)({id:"theme.SearchPage.inputPlaceholder",message:"Type your search here",description:"The placeholder for search page input"}),"aria-label":(0,y.I)({id:"theme.SearchPage.inputLabel",message:"Search",description:"The ARIA label for search page input"}),onChange:e=>A(e.target.value),value:N,autoComplete:"off",autoFocus:!0})}),c&&O.versioningEnabled&&(0,_.jsx)(E,{docsSearchVersionsHelpers:O})]}),(0,_.jsxs)("div",{className:"row",children:[(0,_.jsx)("div",{className:(0,i.Z)("col","col--8",x.searchResultsColumn),children:!!S.totalResults&&w(S.totalResults)}),(0,_.jsx)("div",{className:(0,i.Z)("col","col--4","text--right",x.searchLogoColumn),children:(0,_.jsx)(f.Z,{to:"https://www.algolia.com/","aria-label":(0,y.I)({id:"theme.SearchPage.algoliaLabel",message:"Search by Algolia",description:"The ARIA label for Algolia mention"}),children:(0,_.jsx)("svg",{viewBox:"0 0 168 24",className:x.algoliaLogo,children:(0,_.jsxs)("g",{fill:"none",children:[(0,_.jsx)("path",{className:x.algoliaLogoPathFill,d:"M120.925 18.804c-4.386.02-4.386-3.54-4.386-4.106l-.007-13.336 2.675-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-10.846-2.18c.821 0 1.43-.047 1.855-.129v-2.719a6.334 6.334 0 0 0-1.574-.199 5.7 5.7 0 0 0-.897.069 2.699 2.699 0 0 0-.814.24c-.24.116-.439.28-.582.491-.15.212-.219.335-.219.656 0 .628.219.991.616 1.23s.938.362 1.615.362zm-.233-9.7c.883 0 1.629.109 2.231.328.602.218 1.088.525 1.444.915.363.396.609.922.76 1.483.157.56.232 1.175.232 1.85v6.874a32.5 32.5 0 0 1-1.868.314c-.834.123-1.772.185-2.813.185-.69 0-1.327-.069-1.895-.198a4.001 4.001 0 0 1-1.471-.636 3.085 3.085 0 0 1-.951-1.134c-.226-.465-.343-1.12-.343-1.803 0-.656.13-1.073.384-1.525a3.24 3.24 0 0 1 1.047-1.106c.445-.287.95-.492 1.532-.615a8.8 8.8 0 0 1 1.82-.185 8.404 8.404 0 0 1 1.972.24v-.438c0-.307-.035-.6-.11-.874a1.88 1.88 0 0 0-.384-.73 1.784 1.784 0 0 0-.724-.493 3.164 3.164 0 0 0-1.143-.205c-.616 0-1.177.075-1.69.164a7.735 7.735 0 0 0-1.26.307l-.321-2.192c.335-.117.834-.233 1.478-.349a10.98 10.98 0 0 1 2.073-.178zm52.842 9.626c.822 0 1.43-.048 1.854-.13V13.7a6.347 6.347 0 0 0-1.574-.199c-.294 0-.595.021-.896.069a2.7 2.7 0 0 0-.814.24 1.46 1.46 0 0 0-.582.491c-.15.212-.218.335-.218.656 0 .628.218.991.615 1.23.404.245.938.362 1.615.362zm-.226-9.694c.883 0 1.629.108 2.231.327.602.219 1.088.526 1.444.915.355.39.609.923.759 1.483a6.8 6.8 0 0 1 .233 1.852v6.873c-.41.088-1.034.19-1.868.314-.834.123-1.772.184-2.813.184-.69 0-1.327-.068-1.895-.198a4.001 4.001 0 0 1-1.471-.635 3.085 3.085 0 0 1-.951-1.134c-.226-.465-.343-1.12-.343-1.804 0-.656.13-1.073.384-1.524.26-.45.608-.82 1.047-1.107.445-.286.95-.491 1.532-.614a8.803 8.803 0 0 1 2.751-.13c.329.034.671.096 1.04.185v-.437a3.3 3.3 0 0 0-.109-.875 1.873 1.873 0 0 0-.384-.731 1.784 1.784 0 0 0-.724-.492 3.165 3.165 0 0 0-1.143-.205c-.616 0-1.177.075-1.69.164a7.75 7.75 0 0 0-1.26.307l-.321-2.193c.335-.116.834-.232 1.478-.348a11.633 11.633 0 0 1 2.073-.177zm-8.034-1.271a1.626 1.626 0 0 1-1.628-1.62c0-.895.725-1.62 1.628-1.62.904 0 1.63.725 1.63 1.62 0 .895-.733 1.62-1.63 1.62zm1.348 13.22h-2.689V7.27l2.69-.423v11.956zm-4.714 0c-4.386.02-4.386-3.54-4.386-4.107l-.008-13.336 2.676-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-8.698-5.903c0-1.156-.253-2.119-.746-2.788-.493-.677-1.183-1.01-2.067-1.01-.882 0-1.574.333-2.065 1.01-.493.676-.733 1.632-.733 2.788 0 1.168.246 1.953.74 2.63.492.683 1.183 1.018 2.066 1.018.882 0 1.574-.342 2.067-1.019.492-.683.738-1.46.738-2.63zm2.737-.007c0 .902-.13 1.584-.397 2.33a5.52 5.52 0 0 1-1.128 1.906 4.986 4.986 0 0 1-1.752 1.223c-.685.286-1.739.45-2.265.45-.528-.006-1.574-.157-2.252-.45a5.096 5.096 0 0 1-1.744-1.223c-.487-.527-.863-1.162-1.137-1.906a6.345 6.345 0 0 1-.41-2.33c0-.902.123-1.77.397-2.508a5.554 5.554 0 0 1 1.15-1.892 5.133 5.133 0 0 1 1.75-1.216c.679-.287 1.425-.423 2.232-.423.808 0 1.553.142 2.237.423a4.88 4.88 0 0 1 1.753 1.216 5.644 5.644 0 0 1 1.135 1.892c.287.738.431 1.606.431 2.508zm-20.138 0c0 1.12.246 2.363.738 2.882.493.52 1.13.78 1.91.78.424 0 .828-.062 1.204-.178.377-.116.677-.253.917-.417V9.33a10.476 10.476 0 0 0-1.766-.226c-.971-.028-1.71.37-2.23 1.004-.513.636-.773 1.75-.773 2.788zm7.438 5.274c0 1.824-.466 3.156-1.404 4.004-.936.846-2.367 1.27-4.296 1.27-.705 0-2.17-.137-3.34-.396l.431-2.118c.98.205 2.272.26 2.95.26 1.074 0 1.84-.219 2.299-.656.459-.437.684-1.086.684-1.948v-.437a8.07 8.07 0 0 1-1.047.397c-.43.13-.93.198-1.492.198-.739 0-1.41-.116-2.018-.349a4.206 4.206 0 0 1-1.567-1.025c-.431-.45-.774-1.017-1.013-1.694-.24-.677-.363-1.885-.363-2.773 0-.834.13-1.88.384-2.577.26-.696.629-1.298 1.129-1.796.493-.498 1.095-.881 1.8-1.162a6.605 6.605 0 0 1 2.428-.457c.87 0 1.67.109 2.45.24.78.129 1.444.265 1.985.415V18.17zM6.972 6.677v1.627c-.712-.446-1.52-.67-2.425-.67-.585 0-1.045.13-1.38.391a1.24 1.24 0 0 0-.502 1.03c0 .425.164.765.494 1.02.33.256.835.532 1.516.83.447.192.795.356 1.045.495.25.138.537.332.862.582.324.25.563.548.718.894.154.345.23.741.23 1.188 0 .947-.334 1.691-1.004 2.234-.67.542-1.537.814-2.601.814-1.18 0-2.16-.229-2.936-.686v-1.708c.84.628 1.814.942 2.92.942.585 0 1.048-.136 1.388-.407.34-.271.51-.646.51-1.125 0-.287-.1-.55-.302-.79-.203-.24-.42-.42-.655-.542-.234-.123-.585-.29-1.053-.503a61.27 61.27 0 0 1-.582-.271 13.67 13.67 0 0 1-.55-.287 4.275 4.275 0 0 1-.567-.351 6.92 6.92 0 0 1-.455-.4c-.18-.17-.31-.34-.39-.51-.08-.17-.155-.37-.224-.598a2.553 2.553 0 0 1-.104-.742c0-.915.333-1.638.998-2.17.664-.532 1.523-.798 2.576-.798.968 0 1.793.17 2.473.51zm7.468 5.696v-.287c-.022-.607-.187-1.088-.495-1.444-.309-.357-.75-.535-1.324-.535-.532 0-.99.194-1.373.583-.382.388-.622.949-.717 1.683h3.909zm1.005 2.792v1.404c-.596.34-1.383.51-2.362.51-1.255 0-2.255-.377-3-1.132-.744-.755-1.116-1.744-1.116-2.968 0-1.297.34-2.316 1.021-3.055.68-.74 1.548-1.11 2.6-1.11 1.033 0 1.852.323 2.458.966.606.644.91 1.572.91 2.784 0 .33-.033.676-.096 1.038h-5.314c.107.702.405 1.239.894 1.611.49.372 1.106.558 1.85.558.862 0 1.58-.202 2.155-.606zm6.605-1.77h-1.212c-.596 0-1.045.116-1.349.35-.303.234-.454.532-.454.894 0 .372.117.664.35.877.235.213.575.32 1.022.32.51 0 .912-.142 1.204-.424.293-.281.44-.651.44-1.108v-.91zm-4.068-2.554V9.325c.627-.361 1.457-.542 2.489-.542 2.116 0 3.175 1.026 3.175 3.08V17h-1.548v-.957c-.415.68-1.143 1.02-2.186 1.02-.766 0-1.38-.22-1.843-.661-.462-.442-.694-1.003-.694-1.684 0-.776.293-1.38.878-1.81.585-.431 1.404-.647 2.457-.647h1.34V11.8c0-.554-.133-.971-.399-1.253-.266-.282-.707-.423-1.324-.423a4.07 4.07 0 0 0-2.345.718zm9.333-1.93v1.42c.394-1 1.101-1.5 2.123-1.5.148 0 .313.016.494.048v1.531a1.885 1.885 0 0 0-.75-.143c-.542 0-.989.24-1.34.718-.351.479-.527 1.048-.527 1.707V17h-1.563V8.91h1.563zm5.01 4.084c.022.82.272 1.492.75 2.019.479.526 1.15.79 2.01.79.639 0 1.235-.176 1.788-.527v1.404c-.521.319-1.186.479-1.995.479-1.265 0-2.276-.4-3.031-1.197-.755-.798-1.133-1.792-1.133-2.984 0-1.16.38-2.151 1.14-2.975.761-.825 1.79-1.237 3.088-1.237.702 0 1.346.149 1.93.447v1.436a3.242 3.242 0 0 0-1.77-.495c-.84 0-1.513.266-2.019.798-.505.532-.758 1.213-.758 2.042zM40.24 5.72v4.579c.458-1 1.293-1.5 2.505-1.5.787 0 1.42.245 1.899.734.479.49.718 1.17.718 2.042V17h-1.564v-5.106c0-.553-.14-.98-.422-1.284-.282-.303-.652-.455-1.11-.455-.531 0-1.002.202-1.411.606-.41.405-.615 1.022-.615 1.851V17h-1.563V5.72h1.563zm14.966 10.02c.596 0 1.096-.253 1.5-.758.404-.506.606-1.157.606-1.955 0-.915-.202-1.62-.606-2.114-.404-.495-.92-.742-1.548-.742-.553 0-1.05.224-1.491.67-.442.447-.662 1.133-.662 2.058 0 .958.212 1.67.638 2.138.425.469.946.703 1.563.703zM53.004 5.72v4.42c.574-.894 1.388-1.341 2.44-1.341 1.022 0 1.857.383 2.506 1.149.649.766.973 1.781.973 3.047 0 1.138-.309 2.109-.925 2.912-.617.803-1.463 1.205-2.537 1.205-1.075 0-1.894-.447-2.457-1.34V17h-1.58V5.72h1.58zm9.908 11.104l-3.223-7.913h1.739l1.005 2.632 1.26 3.415c.096-.32.48-1.458 1.15-3.415l.909-2.632h1.66l-2.92 7.866c-.777 2.074-1.963 3.11-3.559 3.11a2.92 2.92 0 0 1-.734-.079v-1.34c.17.042.351.064.543.064 1.032 0 1.755-.57 2.17-1.708z"}),(0,_.jsx)("path",{fill:"#5468FF",d:"M78.988.938h16.594a2.968 2.968 0 0 1 2.966 2.966V20.5a2.967 2.967 0 0 1-2.966 2.964H78.988a2.967 2.967 0 0 1-2.966-2.964V3.897A2.961 2.961 0 0 1 78.988.938z"}),(0,_.jsx)("path",{fill:"white",d:"M89.632 5.967v-.772a.978.978 0 0 0-.978-.977h-2.28a.978.978 0 0 0-.978.977v.793c0 .088.082.15.171.13a7.127 7.127 0 0 1 1.984-.28c.65 0 1.295.088 1.917.259.082.02.164-.04.164-.13m-6.248 1.01l-.39-.389a.977.977 0 0 0-1.382 0l-.465.465a.973.973 0 0 0 0 1.38l.383.383c.062.061.15.047.205-.014.226-.307.472-.601.746-.874.281-.28.568-.526.883-.751.068-.042.075-.137.02-.2m4.16 2.453v3.341c0 .096.104.165.192.117l2.97-1.537c.068-.034.089-.117.055-.184a3.695 3.695 0 0 0-3.08-1.866c-.068 0-.136.054-.136.13m0 8.048a4.489 4.489 0 0 1-4.49-4.482 4.488 4.488 0 0 1 4.49-4.482 4.488 4.488 0 0 1 4.489 4.482 4.484 4.484 0 0 1-4.49 4.482m0-10.85a6.363 6.363 0 1 0 0 12.729 6.37 6.37 0 0 0 6.372-6.368 6.358 6.358 0 0 0-6.371-6.36"})]})})})})]}),S.items.length>0?(0,_.jsx)("main",{children:S.items.map(((e,t)=>{let{title:r,url:n,summary:s,breadcrumbs:a}=e;return(0,_.jsxs)("article",{className:x.searchResultItem,children:[(0,_.jsx)(P.Z,{as:"h2",className:x.searchResultItemHeading,children:(0,_.jsx)(f.Z,{to:n,dangerouslySetInnerHTML:{__html:r}})}),a.length>0&&(0,_.jsx)("nav",{"aria-label":"breadcrumbs",children:(0,_.jsx)("ul",{className:(0,i.Z)("breadcrumbs",x.searchResultItemPath),children:a.map(((e,t)=>(0,_.jsx)("li",{className:"breadcrumbs__item",dangerouslySetInnerHTML:{__html:e}},t)))})}),s&&(0,_.jsx)("p",{className:x.searchResultItemSummary,dangerouslySetInnerHTML:{__html:s}})]},t)}))}):[N&&!S.loading&&(0,_.jsx)("p",{children:(0,_.jsx)(y.Z,{id:"theme.SearchPage.noResultsText",description:"The paragraph for empty search result",children:"No results were found"})},"no-results"),!!S.loading&&(0,_.jsx)("div",{className:x.loadingSpinner},"spinner")],S.hasMore&&(0,_.jsx)("div",{className:x.loader,ref:k,children:(0,_.jsx)(y.Z,{id:"theme.SearchPage.fetchingNewResults",description:"The paragraph for fetching new search results",children:"Fetching new results..."})})]})]})}function O(){return(0,_.jsx)(v.FG,{className:"search-page-wrapper",children:(0,_.jsx)(w,{})})}}}]); \ No newline at end of file diff --git a/assets/js/1a4e3797.3741dc58.js.LICENSE.txt b/assets/js/1a4e3797.3741dc58.js.LICENSE.txt new file mode 100644 index 000000000..8c17e740e --- /dev/null +++ b/assets/js/1a4e3797.3741dc58.js.LICENSE.txt @@ -0,0 +1 @@ +/*! algoliasearch-lite.umd.js | 4.20.0 | © Algolia, inc. | https://github.com/algolia/algoliasearch-client-javascript */ diff --git a/assets/js/1df93b7f.7e2a202c.js b/assets/js/1df93b7f.7e2a202c.js new file mode 100644 index 000000000..c21215ce0 --- /dev/null +++ b/assets/js/1df93b7f.7e2a202c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[237],{4183:(e,l,a)=>{a.d(l,{Z:()=>ae});var t,c,r,i,n,h,f,m,d,s,p,E,o,M,x,g,y,v,u,w,Z,b,H,j,z,P,V,O,A,N,L,S,q,k,B,_,I,C,F,G,R,T,U,D,J,K,Q,W,X,Y,$,ee=a(959);function le(){return le=Object.assign?Object.assign.bind():function(e){for(var l=1;l{let{title:l,titleId:a,...ae}=e;return ee.createElement("svg",le({xmlns:"http://www.w3.org/2000/svg",width:855.157,height:581.907,"data-name":"Layer 1",viewBox:"0 0 855.157 581.907","aria-labelledby":a},ae),l?ee.createElement("title",{id:a},l):null,t||(t=ee.createElement("path",{fill:"#e6e6e6",d:"M519.741 326.238a5.5 5.5 0 0 1 5.5 5.5v53.206h105.5a5.5 5.5 0 0 1 0 11h-105.5v184h-11V331.738a5.5 5.5 0 0 1 5.5-5.5"})),c||(c=ee.createElement("path",{fill:"#3f3d56",d:"m226.147 578.694-19.832.548a13.8 13.8 0 0 1-8.486-2.38c-2.154-1.601-3.142-3.767-2.708-5.942l3.902-19.613c.736-3.7 5.27-6.497 10.78-6.649l10.953-.302c5.51-.152 10.191 2.39 11.13 6.044l4.98 19.368c.552 2.147-.315 4.364-2.377 6.083a13.8 13.8 0 0 1-8.342 2.843M346.777 578.134l-19.832.547a13.8 13.8 0 0 1-8.485-2.379c-2.154-1.602-3.142-3.767-2.709-5.942l3.903-19.613c.735-3.7 5.27-6.497 10.78-6.65l10.952-.302c5.51-.152 10.192 2.39 11.13 6.044l4.98 19.368c.552 2.148-.315 4.365-2.377 6.083a13.8 13.8 0 0 1-8.342 2.844M157.282 411.63a4.331 4.331 0 0 1 1.595-8.308l225.468-6.226a4.33 4.33 0 0 1 4.448 4.208 4.336 4.336 0 0 1-4.209 4.449l-225.468 6.225a4.3 4.3 0 0 1-1.834-.349"})),r||(r=ee.createElement("path",{fill:"#e6e6e6",d:"m176.042 338.768 64.449-1.78 6.009 217.598-64.45 1.78z"})),i||(i=ee.createElement("path",{fill:"#ccc",d:"m242.126 333.079-12.389 33.749.011 153.759 15.096 4.329z"})),n||(n=ee.createElement("path",{fill:"#3f3d56",d:"M207.93 280.122c-12.057.342-21.256 21.209-21.035 29.352l.407 14.741 43.659-1.205-.407-14.742c-.229-8.142-10.566-28.47-22.624-28.146M176.878 428.88a8.51 8.51 0 0 1-8.731-8.261l-.663-23.991a8.5 8.5 0 1 1 16.994-.47l.662 23.991a8.51 8.51 0 0 1-8.262 8.732"})),h||(h=ee.createElement("path",{fill:"#3f3d56",d:"m193.233 339.284-.305-15.855 4.158-.103.305 15.804 3.769 230.346-4.159.115"})),f||(f=ee.createElement("path",{fill:"#e6e6e6",d:"m247.881 376.36-74.738 2.065c-7.139-8.706-7.787-45.793 7.11-52.851l5.843-9.92 45.042-2.2 5.265 10.446c7.41 6.305 11.231 43.161 11.478 52.46"})),m||(m=ee.createElement("path",{fill:"#6c63ff",d:"m219.75 358.573-18.9.522c-3.646.101-6.747-4.63-6.91-10.546s2.671-10.811 6.318-10.912l18.9-.522c3.648-.1 6.748 4.631 6.912 10.547s-2.672 10.81-6.32 10.911"})),d||(d=ee.createElement("path",{fill:"#e6e6e6",d:"m183.151 465.568-38.959 27.52-6.806 62.05 45.448-15.185zM300.453 336.103l64.449-1.78 6.009 217.598-64.45 1.78z"})),s||(s=ee.createElement("path",{fill:"#ccc",d:"m301.996 333.806 13.261 33.416 3.979 153.708-14.979 4.719z"})),p||(p=ee.createElement("ellipse",{cx:397.132,cy:262.584,fill:"#e6e6e6",rx:8.447,ry:11.327})),E||(E=ee.createElement("path",{fill:"#3f3d56",d:"M331.083 277.492c-12.057.342-21.257 21.209-21.036 29.352l.407 14.741 43.66-1.205-.407-14.742c-.23-8.143-10.566-28.47-22.624-28.146M343.567 344.247l-.305-15.855 4.158-.104.305 15.805 3.769 230.346-4.159.115"})),o||(o=ee.createElement("path",{fill:"#e6e6e6",d:"m371.034 373.73-74.739 2.064c-1.303-7.876.383-44.632 7.111-52.85l5.843-9.92 45.042-2.2 5.264 10.445c13.299 1.084 17.95 37.204 11.479 52.462"})),M||(M=ee.createElement("path",{fill:"#6c63ff",d:"m342.995 359.254-18.9.522c-3.647.1-6.769-5.374-6.957-12.202s2.626-12.466 6.273-12.567l18.9-.522c3.647-.1 6.768 5.374 6.957 12.202s-2.626 12.466-6.273 12.567"})),x||(x=ee.createElement("path",{fill:"#e6e6e6",d:"m368.086 449.662 37.663 29.268 3.966 62.297-44.706-17.244z"})),g||(g=ee.createElement("path",{fill:"#f2f2f2",d:"M357.568 161.12c-40.413 0-86.857-44.845-127.949-23.538-124.415 64.514-107.288-43.44-143.032-83.589l1.174-2.353c27.06 103.218 51.543 267.692 142.398 83.204 22.76-46.214 97.456 25.22 141.424 23.113l.076 2.83q-6.965.335-14.09.334M454.565 167.467c-32.215 24.4-96.316 16.691-116.208 58.487-60.228 126.545-111.754 30.148-164.488 19.723l-.485-2.584c52.79 4.378 109.414-2.416 163.751-19.648 49.104-15.571 92.914-38.735 126.692-66.962l1.769 2.21q-5.35 4.473-11.03 8.774"})),y||(y=ee.createElement("ellipse",{cx:104.132,cy:150.584,fill:"#e6e6e6",rx:8.447,ry:11.327})),v||(v=ee.createElement("ellipse",{cx:366.132,cy:58.584,fill:"#e6e6e6",rx:8.447,ry:11.327})),u||(u=ee.createElement("path",{fill:"#e6e6e6",d:"M181.47 207.63c-3.861 2.572-7.814-3.552-3.878-6.011 3.862-2.573 7.815 3.551 3.879 6.01M324.47 6.63c-3.861 2.572-7.814-3.552-3.878-6.011 3.862-2.573 7.815 3.551 3.879 6.01M408.749 125.801l-2.457-.539.538-2.458-1.638-.359-.539 2.458-2.457-.538-.359 1.638 2.457.539-.538 2.457 1.638.359.539-2.458 2.457.539z"})),w||(w=ee.createElement("circle",{cx:183.535,cy:32.737,r:10.702,fill:"#ff6584"})),Z||(Z=ee.createElement("path",{fill:"#3f3d56",d:"M261.816 19.19c-12.058.343-21.257 21.21-21.036 29.352l.407 14.742 43.66-1.206-.408-14.741c-.228-8.143-10.565-28.47-22.623-28.147M287.813 577.41l-19.833.547a13.8 13.8 0 0 1-8.485-2.38c-2.154-1.601-3.142-3.767-2.709-5.942l3.903-19.612c.735-3.7 5.27-6.498 10.78-6.65l10.952-.302c5.51-.152 10.192 2.39 11.13 6.044l4.98 19.368c.552 2.147-.315 4.364-2.377 6.083a13.8 13.8 0 0 1-8.341 2.843"})),b||(b=ee.createElement("path",{fill:"#e6e6e6",d:"m232.207 114.816 64.45-1.78 12.145 439.848-64.45 1.78z"})),H||(H=ee.createElement("path",{fill:"#3f3d56",d:"m270.868 325.949-.305-15.855 4.158-.103.305 15.804 3.769 230.346-4.159.115"})),j||(j=ee.createElement("path",{fill:"#e6e6e6",d:"m309.345 153.292-87.326 2.41c-1.522-9.202.447-52.15 8.309-61.751l2.154-11.462 60.297-1.665 3.154 11.17c8.66 7.369 13.124 50.432 13.412 61.298"})),z||(z=ee.createElement("path",{fill:"#e6e6e6",d:"m294.685 82.176-62.223 1.718c-2.297.064-4.193-1.142-4.236-2.693a2 2 0 0 1 .097-.658l9.665-29.776c.414-1.275 2.061-2.211 3.984-2.264l41.265-1.14c1.922-.053 3.619.791 4.103 2.042L298.633 78.6c.578 1.493-.756 3.047-2.98 3.47a6 6 0 0 1-.968.105"})),P||(P=ee.createElement("path",{fill:"#3f3d56",d:"M238.6 323.926a7.6 7.6 0 0 1-1.58-.915 5.6 5.6 0 0 1-2.38-4.321l-2.26-81.878c-.094-3.389 3.225-6.24 7.397-6.356l55.703-1.538c4.173-.116 7.643 2.549 7.737 5.938l2.261 81.878a5.6 5.6 0 0 1-2.137 4.446 8.5 8.5 0 0 1-5.261 1.91l-55.703 1.538a8.9 8.9 0 0 1-3.777-.702"})),V||(V=ee.createElement("path",{fill:"#6c63ff",d:"m274.253 76.907-18.9.522c-3.648.1-6.732-4.02-6.874-9.184s2.71-9.45 6.356-9.55l18.9-.522c3.647-.1 6.731 4.02 6.874 9.184s-2.71 9.45-6.356 9.55"})),O||(O=ee.createElement("path",{fill:"#e6e6e6",d:"M721.009 562.528h-22V402.651c18.402-1.32 32.232-6.955 32.232-13.707 0-7.732-18.132-14-40.5-14s-40.5 6.268-40.5 14c0 6.817 14.1 12.494 32.768 13.742v159.842h-22a8 8 0 0 0 0 16h60a8 8 0 0 0 0-16"})),A||(A=ee.createElement("path",{fill:"#a0616a",d:"m676.847 481.363-7.227 7.875-33.814-24.126 10.665-11.623z"})),N||(N=ee.createElement("path",{fill:"#2f2e41",d:"M658.368 502.148a13.32 13.32 0 0 0 4.336 9.308l.318.296 9.478-10.329 13.82-15.064-10.202-9.366-1.843 2.012-.192.207-9.182 4.343-1.945.925-.333.155-.733 7.865v.008a13.28 13.28 0 0 0-3.522 9.64"})),L||(L=ee.createElement("path",{fill:"#a0616a",d:"m714.287 559.924-10.227 3.107-16.85-37.968 15.094-4.585z"})),S||(S=ee.createElement("path",{fill:"#2f2e41",d:"m686.801 578.643.126.421 32.976-10.017-4.025-13.251-2.604.791-.274.082-12.26-1.125-.362-.03-4.64 6.4a13.413 13.413 0 0 0-8.937 16.729"})),q||(q=ee.createElement("path",{fill:"#2f2e41",d:"M629.957 361.128s-65.294 63.042-24.016 82.556h12.758a84.5 84.5 0 0 1 12.611-25.108c1.206-1.577 5.721-1.257 6.975-2.794 7.657-9.387 15.959-17.448 21.692-17.128l-1.372 43.558-2.22 15.537c-1.165 8.032 31.728 78.161 31.728 78.161l20.674-8.125s-21.54-57.762-21.792-66.09l17.261-91.561Z","data-name":"Path 17"})),k||(k=ee.createElement("path",{fill:"#6c63ff",d:"M624.512 364.237a3.9 3.9 0 0 0 1.273 1.154 9 9 0 0 0 2.67.992c14.702 3.337 62.726 10.254 75.193 6.955 1.532-.4 2.53-.962 2.856-1.702 1.043-2.338.91-12.215.296-24.142-.111-2.234-2.575-4.654-2.723-6.992-.103-1.753 2.109-3.403 1.99-5.186-.813-12.06-1.864-24.349-2.567-32.118-.444-4.994-.747-8.116-.747-8.116l7.583-47.817-.355-.585-.4-.2-24.452-12.104-1.331-3.403a5.27 5.27 0 0 0-4.876-3.337l-16.107-.066a5.25 5.25 0 0 0-4.284 2.175l-4.365 6.044-28.855 18.497.111.34 13.54 41.203.066 3.211v.008l.503 25.821-1.398 3.5 1.576 5.741s-.725 6.71-4.61 11.697c-3.521 4.528-8.005 9.249-10.032 13.081v.007c-1.125 2.117-1.502 3.951-.555 5.342"})),B||(B=ee.createElement("path",{fill:"#2f2e41",d:"m602.806 439.939 3.49 4.41s32.097 22.456 33.2 24.554l5.072 4.8 12.274-13.12-6.383-8a50.1 50.1 0 0 0-19.22-14.716l-9.783-8.679Z","data-name":"Path 18"})),_||(_=ee.createElement("path",{fill:"#a0616a",d:"m718.425 379.131-5.845-56.577-1.543-23.286 16.36-2.958s-.648 16.65 1.495 26.044c2.115 9.27.28 55.535.15 56.772a7.96 7.96 0 1 1-10.617.005"})),I||(I=ee.createElement("path",{fill:"#6c63ff",d:"m698.943 293.447 4.557 9.751 1.59 3.396 4.285 22.433 2.138 2.272 1.842 7.332.866-.178 15.61-3.233 4.551-.94a8.65 8.65 0 0 0-1.568-10.824c-.311-.281-.57-.555-.563-.814.26-15.604-.695-44.096-9.315-55.823-2.737-3.721-4.38-7.428-6.77-10.017-.007-.008-.007-.015-.014-.015l-5.816-9.522-.355-.585-.4-.2Z"})),C||(C=ee.createElement("circle",{cx:672.128,cy:202.131,r:21.431,fill:"#a0616a","data-name":"Ellipse 5"})),F||(F=ee.createElement("path",{fill:"#2f2e41",d:"M697.575 197.52c.628-3.602 1.117-8.27-.68-12.42-1.52-3.493-5.321-6.768-9.546-6.326a4.4 4.4 0 0 0-1.372-4.4 11.56 11.56 0 0 0-4.689-2.204c-3.97-1.167-8.084-2.377-12.331-2.4-4.767-.025-8.99 1.608-11.58 4.487l-.064.093-.776 1.854a1.87 1.87 0 0 1-1.149 1.057 1.84 1.84 0 0 1-1.553-.19 1.695 1.695 0 0 0-2.581 1.366l-.042.79-1.112-.443a1.69 1.69 0 0 0-2.298 1.85l.148.942a1.8 1.8 0 0 0-1.38.31 1.655 1.655 0 0 0-.59 1.86 15.4 15.4 0 0 0 4.285 6.4 12.8 12.8 0 0 0 2.908 1.978q.33.166.685.314a76.3 76.3 0 0 0 26.963 6.108 15.7 15.7 0 0 0-1.674 5.372 5.88 5.88 0 0 0 2.514 5.542 7.4 7.4 0 0 0 1.204.551 8 8 0 0 1 1.154.535 3.598 3.598 0 0 1-.148 6.243s1.595 1.947 1.85 1.914a5 5 0 0 0 2.625-1.553c4.641-4.507 7.746-11.107 9.23-19.63"})),G||(G=ee.createElement("path",{fill:"#f2f2f2",d:"m791.398 528.793.931-20.943a67.64 67.64 0 0 1 31.55-7.987c-15.153 12.389-13.26 36.27-23.532 52.929a40.69 40.69 0 0 1-29.836 18.801l-12.68 7.764a68.18 68.18 0 0 1 14.37-55.246 65.9 65.9 0 0 1 12.103-11.245c3.037 8.008 7.094 15.927 7.094 15.927"})),R||(R=ee.createElement("path",{fill:"#ccc",d:"M855.157 580.354a1.55 1.55 0 0 1-1.554 1.553H1.553a1.553 1.553 0 0 1 0-3.107h852.05a1.55 1.55 0 0 1 1.554 1.554"})),T||(T=ee.createElement("path",{fill:"#3f3d56",d:"M366.498 423.566a8.51 8.51 0 0 1-8.731-8.262l-.663-23.991a8.5 8.5 0 0 1 16.994-.47l.662 23.992a8.51 8.51 0 0 1-8.262 8.731"})),U||(U=ee.createElement("path",{fill:"#ccc",d:"M741.354 511.248q-19.368 0-42.456-1.464c-79.614-5.056-182.738-22.633-290.376-49.492-107.638-26.86-206.93-59.794-279.585-92.734C93.544 351.51 66.38 336.32 48.2 322.41c-19.247-14.727-27.666-27.564-25.024-38.153 5.148-20.629 50.731-25.142 88.064-25.295l.013 3c-51.268.21-81.514 8.387-85.166 23.022-4.651 18.64 33.287 47.74 104.087 79.841 72.496 32.868 171.606 65.74 279.074 92.557 107.467 26.816 210.4 44.363 289.84 49.408 77.578 4.928 124.743-2.938 129.394-21.578 3.862-15.477-21.598-38.276-71.69-64.198l1.38-2.664c36.396 18.835 78.645 45.851 73.221 67.588-2.642 10.59-16.105 17.965-40.015 21.923-13.63 2.256-30.37 3.387-50.025 3.387"})),D||(D=ee.createElement("path",{fill:"#ccc",d:"M56.059 491.595c-10.247 0-16.908-2.546-19.856-7.607-5.814-9.98 3.923-27.494 28.941-52.051l2.102 2.14c-23.24 22.813-33.343 40.001-28.451 48.4 3.096 5.313 12.308 7.218 26.648 5.505 14.236-1.7 33.1-6.765 56.072-15.055 47.291-17.067 106.623-45.856 167.065-81.064 60.44-35.207 114.75-72.617 152.927-105.335 7.332-6.286 13.987-12.333 19.78-17.972a197 197 0 0 0 20.975-23.377c8.563-11.627 11.453-20.581 8.358-25.895-5.17-8.874-26.888-8.04-61.157 2.353l-.87-2.87c36.766-11.15 58.508-11.484 64.619-.992 3.797 6.518.926 16.337-8.534 29.183a200 200 0 0 1-21.3 23.748c-5.836 5.683-12.538 11.772-19.919 18.1-38.31 32.833-92.777 70.353-153.37 105.648-60.593 35.297-120.1 64.168-167.555 81.295-23.185 8.367-42.274 13.486-56.735 15.211a83 83 0 0 1-9.74.635"})),J||(J=ee.createElement("path",{fill:"#e6e6e6",d:"M603.602 368.423c-7.415-.148-47.24-1.291-53.77-1.01-.37-1.293-12.75 14.573-13.052 14.67a1.808 1.808 0 0 0 .605 2.908c.728.443 64.932-.745 65.71-.59a1.79 1.79 0 0 0 1.593-1.038l.43-.962c.044-1.644.582-10.048.1-11.484a1.778 1.778 0 0 0-1.616-2.494"})),ee.createElement("path",{d:"M782.303 559.959c-.377.905-.859 2.043-2.023 2.001l-65.032.73a1.794 1.794 0 0 1-1.565-2.633Z",opacity:.17,style:{isolation:"isolate"},transform:"translate(-177.185 -177.56)"}),K||(K=ee.createElement("path",{fill:"#e6e6e6",d:"M550.135 367.218c-.7-1.21-18.086-87.238-19.537-87.957l-11.87-14.521-1.062-.798c-1.475-.81-5.014-.263-4.695 1.99 2.789 13.37 20.725 89.52 21.118 101.391l2.16 15.124a1.863 1.863 0 0 0 2.3 1.53 3.58 3.58 0 0 0 2.877-2.079c.162-.534 9.522-14.37 8.709-14.68"})),ee.createElement("path",{d:"m695.91 442.3 22.703 117.16c-.759 1.922-4.312 3.268-5.14.747-.014-.003-23.29-116.643-23.314-116.713-.248-2.807 4.39-2.896 5.751-1.195",opacity:.17,style:{isolation:"isolate"},transform:"translate(-177.185 -177.56)"}),Q||(Q=ee.createElement("path",{fill:"#6c63ff",d:"m519.409 269.531 11.53 16.072 12.942 61.465-6.016 5.248z"})),W||(W=ee.createElement("path",{fill:"#2f2e41",d:"m596.159 376.71 3.19.13a12.5 12.5 0 0 1 .46-2.76c.48-2.28.91-4.99-1.08-4.98-1.35-.13-1.81 1.58-2.05 3.44a26.3 26.3 0 0 1-.52 4.17M577.859 372.42l2.15.08 1.04.04c-.02-1.14.51-3.49-.78-4.07a1.6 1.6 0 0 0-.65-.13c-1.21-.07-1.57.85-1.68 1.91-.07.64-.04 1.32-.06 1.85 0 .11-.01.22-.02.32M571.489 372.16l2.16.09 1.03.04c-.02-1.31.67-4.17-1.43-4.21-1.94-.11-1.69 2.36-1.74 3.76 0 .11-.01.22-.02.32M565.119 371.91l2.15.08 1.04.04c-.02-1.3.67-4.16-1.43-4.2-1.94-.12-1.69 2.35-1.74 3.76 0 .11-.01.22-.02.32M558.749 371.65l2.16.09 1.03.04c-.02-1.31.67-4.16-1.43-4.21-1.94-.11-1.69 2.36-1.74 3.76 0 .11-.01.22-.02.32M552.379 371.4l2.15.08 1.04.04c-.02-1.2.56-3.71-.98-4.14h-.01a1.5 1.5 0 0 0-.44-.06 1.5 1.5 0 0 0-.54.05h-.01c-1.34.35-1.15 2.45-1.19 3.71 0 .11-.01.22-.02.32M589.729 370.72l3.19.13c0-.12 0-.25.01-.4a13.3 13.3 0 0 0 .04-2.29c-.11-.84-.47-1.5-1.48-1.52-1.03-.06-1.44.6-1.6 1.45a3 3 0 0 0-.08.44v.01c-.08.78-.03 1.62-.08 2.18M583.359 370.46l3.19.13a23 23 0 0 0 .06-2.58c-.09-.88-.44-1.6-1.49-1.62-1.06-.07-1.47.65-1.63 1.54-.15.86-.07 1.89-.13 2.53"})),X||(X=ee.createElement("path",{fill:"#2f2e41",d:"m576.989 370.21.95.04 2.24.09c-.01-.48.08-1.18.09-1.87a4 4 0 0 0-.02-.62c-.08-.93-.41-1.7-1.5-1.72-1.11-.06-1.5.71-1.64 1.65-.14.84-.06 1.81-.12 2.43M589.789 376.46l3.19.12c-.01-1.3.67-4.16-1.43-4.2-2.1-.13-1.64 2.77-1.76 4.08M583.419 376.2l3.19.13c-.01-1.31.67-4.17-1.43-4.21-2.1-.12-1.64 2.78-1.76 4.08M577.049 375.95l3.19.12c-.01-.93.34-2.65-.23-3.57a1.32 1.32 0 0 0-1.2-.63 1.4 1.4 0 0 0-.93.23c-1.02.67-.73 2.79-.83 3.85M570.679 375.69l3.19.13c-.01-.93.33-2.64-.22-3.57a1.32 1.32 0 0 0-1.21-.64 1.4 1.4 0 0 0-.93.23c-1.02.69-.73 2.8-.83 3.85M564.309 375.44l3.19.12c-.01-.93.34-2.65-.23-3.57a1.32 1.32 0 0 0-1.2-.63 1.4 1.4 0 0 0-.93.23c-1.02.67-.73 2.79-.83 3.85M557.939 375.18l3.19.13c-.01-.93.33-2.64-.22-3.57a1.31 1.31 0 0 0-1.21-.64 1.4 1.4 0 0 0-.93.23c-1.02.69-.73 2.8-.83 3.85M551.569 374.93l3.19.12c-.01-.93.33-2.64-.23-3.57a1.31 1.31 0 0 0-1.2-.63 1.4 1.4 0 0 0-.93.23c-1.02.68-.73 2.79-.83 3.85"})),Y||(Y=ee.createElement("path",{fill:"#a0616a",d:"m587.595 365.686 24.313-51.42 9.193-21.45-14.448-8.227s-4.921 15.92-10.064 24.068c-5.075 8.04-18.719 52.286-19.006 53.496a7.96 7.96 0 1 0 10.012 3.533"})),$||($=ee.createElement("path",{fill:"#6c63ff",d:"m587.447 318.079 18.387 11.093 4.17-6.303 2.778-1.433 11.494-19.737 10.163-10.354 13.427-42.919-17.47 2.621-.023.008c-3.112 1.65-5.896 4.601-9.713 7.202-12.026 8.196-22.395 34.752-27.335 49.559-.081.243-.414.412-.8.578a8.65 8.65 0 0 0-5.078 9.685"})))}},4568:(e,l,a)=>{a.d(l,{Z:()=>he});var t,c,r,i,n,h,f,m,d,s,p,E,o,M,x,g,y,v,u,w,Z,b,H,j,z,P,V,O,A,N,L,S,q,k,B,_,I,C,F,G,R,T,U,D,J,K,Q,W,X,Y,$,ee,le,ae,te,ce,re,ie=a(959);function ne(){return ne=Object.assign?Object.assign.bind():function(e){for(var l=1;l{let{title:l,titleId:a,...he}=e;return ie.createElement("svg",ne({xmlns:"http://www.w3.org/2000/svg",width:717.67,height:453.964,"data-name":"Layer 1",viewBox:"0 0 717.67 453.964","aria-labelledby":a},he),l?ie.createElement("title",{id:a},l):null,t||(t=ie.createElement("path",{fill:"#2f2e41",d:"M271.986 71.477a3.83 3.83 0 0 1-4.314 1.257 6 6 0 0 1-.678-.248 28.8 28.8 0 0 0-.368-7.989 21.4 21.4 0 0 1-1.64 6.57 8.9 8.9 0 0 1-1.76-2.513 22.4 22.4 0 0 1-1.602-6.046c-1.205-7.088-2.393-14.462-.428-21.389 2.88-10.119 11.957-17.393 15.75-27.211l1.867-1.677c3.198 5.445 3.34 12.212 2.036 18.387-1.297 6.187-3.91 11.993-5.975 17.96s-3.613 12.313-2.655 18.556c.22 1.47.556 3.086-.233 4.343"})),c||(c=ie.createElement("path",{fill:"#ffb6b6",d:"m230.469 157.098-12.174 55.681 53.174 17.319-7.819-73z"})),r||(r=ie.createElement("path",{fill:"#e6e6e6",d:"M605.699 452.598h24.096v-110.47a107.653 107.653 0 0 0-107.531-107.53H298.326a107.653 107.653 0 0 0-107.531 107.53v110.47h24.095v-75.47a108.654 108.654 0 0 1 108.531-108.53h173.747A108.654 108.654 0 0 1 605.7 377.128Z"})),i||(i=ie.createElement("path",{fill:"#f2f2f2",d:"m312.894 394.806-25.68-7.775a88.5 88.5 0 0 1-2.51-20.963 8.4 8.4 0 0 1 13.816-6.355c13.773 11.814 33.948 18.118 46.968 31.58a52.07 52.07 0 0 1 13.888 42.946l5.62 18.181a87.26 87.26 0 0 1-63.976-35.285 84.3 84.3 0 0 1-10.122-18.565c10.892-1.235 21.996-3.764 21.996-3.764"})),n||(n=ie.createElement("path",{fill:"#f2f2f2",d:"m379.823 424.58 13.098-3.966.05-.209a8.409 8.409 0 0 0-12.482-9.094c-5.946 3.532-12.548 6.574-17.29 11.477a26.56 26.56 0 0 0-7.083 21.904l-2.867 9.272a44.5 44.5 0 0 0 32.63-17.996 43 43 0 0 0 5.163-9.469c-5.555-.63-11.219-1.92-11.219-1.92"})),h||(h=ie.createElement("path",{fill:"#3f3d56",d:"M485.849 153.13h-51.006a2.72 2.72 0 0 0-2.717 2.724v80.574h56.447v-80.574a2.723 2.723 0 0 0-2.724-2.724m-25.332 45.781a6.05 6.05 0 0 1-6.023-6.023v-9.293a6.023 6.023 0 0 1 12.046 0v9.293a6.05 6.05 0 0 1-6.023 6.023"})),f||(f=ie.createElement("path",{fill:"#3f3d56",d:"M570.31 27.385H352.28a7.08 7.08 0 0 0-7.066 7.067v147.127a7.073 7.073 0 0 0 7.066 7.066h218.03a7.073 7.073 0 0 0 7.066-7.066V34.452a7.08 7.08 0 0 0-7.067-7.067"})),m||(m=ie.createElement("path",{fill:"#fff",d:"M568.49 32.49H354.101a3.787 3.787 0 0 0-3.78 3.786v143.48a3.786 3.786 0 0 0 3.78 3.78h214.387a3.786 3.786 0 0 0 3.78-3.78V36.277a3.787 3.787 0 0 0-3.78-3.787"})),d||(d=ie.createElement("path",{fill:"#3f3d56",d:"M431.95 233.85v7.775a1.523 1.523 0 0 0 1.52 1.52h53.758a1.527 1.527 0 0 0 1.52-1.52v-7.774Z"})),s||(s=ie.createElement("path",{fill:"#3f3d56",d:"M526.73 245.85H399.181a2.346 2.346 0 0 1-2.296-2.83l1.98-9.4a2.356 2.356 0 0 1 2.295-1.863h123.592a2.356 2.356 0 0 1 2.295 1.863l1.98 9.4a2.346 2.346 0 0 1-2.297 2.83"})),p||(p=ie.createElement("rect",{width:3.928,height:2.357,x:402.066,y:233.45,fill:"#e6e6e6",rx:.488})),E||(E=ie.createElement("rect",{width:3.928,height:2.357,x:409.923,y:233.45,fill:"#e6e6e6",rx:.488})),o||(o=ie.createElement("rect",{width:3.928,height:2.357,x:417.779,y:233.45,fill:"#e6e6e6",rx:.488})),M||(M=ie.createElement("rect",{width:3.928,height:2.357,x:425.636,y:233.45,fill:"#e6e6e6",rx:.488})),x||(x=ie.createElement("rect",{width:3.928,height:2.357,x:433.493,y:233.45,fill:"#e6e6e6",rx:.488})),g||(g=ie.createElement("rect",{width:3.928,height:2.357,x:441.35,y:233.45,fill:"#e6e6e6",rx:.488})),y||(y=ie.createElement("rect",{width:3.928,height:2.357,x:449.207,y:233.45,fill:"#e6e6e6",rx:.488})),v||(v=ie.createElement("rect",{width:3.928,height:2.357,x:457.063,y:233.45,fill:"#e6e6e6",rx:.488})),u||(u=ie.createElement("rect",{width:3.928,height:2.357,x:464.92,y:233.45,fill:"#e6e6e6",rx:.488})),w||(w=ie.createElement("rect",{width:3.928,height:2.357,x:472.777,y:233.45,fill:"#e6e6e6",rx:.488})),Z||(Z=ie.createElement("rect",{width:3.928,height:2.357,x:480.634,y:233.45,fill:"#e6e6e6",rx:.488})),b||(b=ie.createElement("rect",{width:3.928,height:2.357,x:488.49,y:233.45,fill:"#e6e6e6",rx:.488})),H||(H=ie.createElement("rect",{width:3.928,height:2.357,x:496.347,y:233.45,fill:"#e6e6e6",rx:.488})),j||(j=ie.createElement("rect",{width:3.928,height:2.357,x:504.204,y:233.45,fill:"#e6e6e6",rx:.488})),z||(z=ie.createElement("rect",{width:3.928,height:2.357,x:512.061,y:233.45,fill:"#e6e6e6",rx:.488})),P||(P=ie.createElement("rect",{width:3.928,height:2.357,x:519.917,y:233.45,fill:"#e6e6e6",rx:.488})),V||(V=ie.createElement("rect",{width:3.928,height:2.357,x:401.973,y:237.378,fill:"#e6e6e6",rx:.488})),O||(O=ie.createElement("rect",{width:3.928,height:2.357,x:409.83,y:237.378,fill:"#e6e6e6",rx:.488})),A||(A=ie.createElement("rect",{width:3.928,height:2.357,x:417.687,y:237.378,fill:"#e6e6e6",rx:.488})),N||(N=ie.createElement("rect",{width:3.928,height:2.357,x:425.543,y:237.378,fill:"#e6e6e6",rx:.488})),L||(L=ie.createElement("rect",{width:3.928,height:2.357,x:433.4,y:237.378,fill:"#e6e6e6",rx:.488})),S||(S=ie.createElement("rect",{width:3.928,height:2.357,x:441.257,y:237.378,fill:"#e6e6e6",rx:.488})),q||(q=ie.createElement("rect",{width:3.928,height:2.357,x:449.114,y:237.378,fill:"#e6e6e6",rx:.488})),k||(k=ie.createElement("rect",{width:3.928,height:2.357,x:456.97,y:237.378,fill:"#e6e6e6",rx:.488})),B||(B=ie.createElement("rect",{width:3.928,height:2.357,x:464.827,y:237.378,fill:"#e6e6e6",rx:.488})),_||(_=ie.createElement("rect",{width:3.928,height:2.357,x:472.684,y:237.378,fill:"#e6e6e6",rx:.488})),I||(I=ie.createElement("rect",{width:3.928,height:2.357,x:480.541,y:237.378,fill:"#e6e6e6",rx:.488})),C||(C=ie.createElement("rect",{width:3.928,height:2.357,x:488.398,y:237.378,fill:"#e6e6e6",rx:.488})),F||(F=ie.createElement("rect",{width:3.928,height:2.357,x:496.254,y:237.378,fill:"#e6e6e6",rx:.488})),G||(G=ie.createElement("rect",{width:3.928,height:2.357,x:504.111,y:237.378,fill:"#e6e6e6",rx:.488})),R||(R=ie.createElement("rect",{width:3.928,height:2.357,x:511.968,y:237.378,fill:"#e6e6e6",rx:.488})),T||(T=ie.createElement("rect",{width:3.928,height:2.357,x:519.825,y:237.378,fill:"#e6e6e6",rx:.488})),U||(U=ie.createElement("rect",{width:31.427,height:2.357,x:439.686,y:242.092,fill:"#e6e6e6",rx:.488})),D||(D=ie.createElement("path",{fill:"#f2f2f2",d:"M536.523 68.508v75.52a19.073 19.073 0 0 1-19.07 19.07h-94.52a19.08 19.08 0 0 1-17.51-11.49 18 18 0 0 1-1.13-3.51 17.4 17.4 0 0 0 6.3 1.17h94.52a17.605 17.605 0 0 0 17.58-17.58v-75.52a17.4 17.4 0 0 0-1.17-6.3 18 18 0 0 1 3.51 1.13 19.08 19.08 0 0 1 11.49 17.51"})),J||(J=ie.createElement("path",{fill:"#ffb6b6",d:"m183.897 368.973-9.375 5.805-27.619-33.95 13.836-8.566z"})),K||(K=ie.createElement("path",{fill:"#2f2e41",d:"m191.99 381.099-7.54 3.367-4.525-6.52-.27 8.66-20 8.928a4.924 4.924 0 0 1-6.214-7.055l11.048-18.162-3.214-7.198 17.248-6.497ZM157.635 362.442l15.834-15.344c-11.764-29.03-12.704-47.022-29.012-82.131 38.693 7.914 66.356 7.433 98.356.337 10.833-2.364 38.785-23.956 36.487-35.027q-.161-.776-.38-1.538c-3.435-11.711-1.017-29.645-8.451-42.641-13.755-5.186-34.653 12.325-51 23-7.883 5.147-2.113 12.16-8 14l-22.57 7.326-55.372-8.943a20.51 20.51 0 0 0-23.376 17.36q-.14.9-.204 1.812c2.548 14.104 5.204 27.837 8.063 40.874.923 4.208-.635 12.275 2.836 12.395s2.073 8.464 3.154 12.543c6.654 25.114 10.863 37.268 33.635 55.977"})),Q||(Q=ie.createElement("path",{fill:"#ffb6b6",d:"m127.329 429.745-9.767-5.098 15.453-40.936 14.415 7.524z"})),W||(W=ie.createElement("path",{fill:"#2f2e41",d:"m125.701 399.184 15.661 10.783c19.195-27.76 31.658-64.854 40.94-106.36 36.138-15.765 67.76-33.801 89.796-57.994a20.915 20.915 0 0 0-1.21-29.095q-.578-.542-1.195-1.038c-9.545-7.603-30.743-3.229-44.292-9.583l-24.204 33.5 2.782 7.802-8.42 4.099-7.11 3.46-8.137 3.963-26.679 12.987a20.484 20.484 0 0 0-9.089 27.63q.405.817.878 1.599l-9.908 49.36s2.726 8.593-1.563 7.79-1.953 9.724-1.953 9.724ZM121.414 452.305l-7.321-3.82 2.3-7.595-6.954 5.165-19.418-10.134a4.924 4.924 0 0 1 1.672-9.252l21.096-2.616 3.648-6.988 15.802 9.486Z"})),X||(X=ie.createElement("path",{fill:"#ffb6b6",d:"m334.892 237.703-11.423-27.605-9 5 5.435 28.082a10.001 10.001 0 1 0 14.988-5.477M143.208 19.407l17.38 24.3 7.634-6.91-11.657-26.12a10.001 10.001 0 1 0-13.357 8.73"})),Y||(Y=ie.createElement("path",{fill:"#6c63ff",d:"M221.697 173.42c-11.274 17.487 30.028 55.587 51.772 46.678 3.807-1.56 16.904-6.713 7.952-13.857s1.038.851 1.274-3.799c.158-3.109-2.25-9.93.262-9.637s3.953-6.971-1.517-8.821a10.62 10.62 0 0 1-7-9c-.523-19.167 5.968-39.178 5.968-39.178l26.498 67.735s-.196 11.719 3.183 8.138 3.134 8.009 3.134 8.009 5.024 3.507 2.135 5.458 3.11 7.952 3.11 7.952l14-1s-.219-10.4-2.61-12.7-1.215-5.92-1.215-5.92-4.929-4.583-2.052-9.982-20.95-101.961-20.95-101.961a25.72 25.72 0 0 0-18.367-19.62l-15.12-4.164-2.685-10.653h-21.292l-3.708 7-34-3s-33.643-30.61-32-33-3.573-7.986-3.573-7.986-4.454-1.458-1.94-2.236-2.238-2.578-2.238-2.578-4.4-1.156-2.324-2.678-6.925-2.522-6.925-2.522l-11.678 9.527 2.36 4.002s-1.439 5.45.44 3.46 2.231 3.784 2.231 3.784.96 6.322 6.646 8.227 10 20 10 20l48 40c-7.31 8.39-5.57 17.166.906 26.141Z"})),$||($=ie.createElement("circle",{cx:258.343,cy:36.964,r:23.056,fill:"#ffb6b6"})),ee||(ee=ie.createElement("path",{fill:"#2f2e41",d:"M278.469 30.098c-.59.17-9.25 1.3-13 2-3.68.69-4.32-4-7.33-3.12a.13.13 0 0 0-.01-.06 28.3 28.3 0 0 0-2.37-7.17 21.2 21.2 0 0 1 .17 6.6 1 1 0 0 1-.02.17c-.01.1-.03.19-.04.29-3.18-1.4-5.2-.15-7.4.29-2.46.49-4.38 1.57-3 10 2.83 17.34 17.55 23.53 15 35-.5 2.27-1.76 5.11-3.34 5.82a28.3 28.3 0 0 0-2.37-7.17 21.2 21.2 0 0 1 .17 6.6c-2.45-2.65-4.22-11.91-12.46-19.25-2.03-1.8-12.2-12.48-13.42-15a32 32 0 0 1 .54 6.11 29.4 29.4 0 0 1-.28 4.1 1.2 1.2 0 0 1-.03.26c-.01.16-.04.3-.06.45-.02.17-.05.33-.08.5-3.33-.48-6.28-1.06-7.67-2.42-6.76-6.58 1.49-19.4 6-31 6.45-16.61 25.18-18.82 27-19 8.02-.81 21.57.91 26 10 3.1 6.37 1.12 15.1-2 16"})),le||(le=ie.createElement("path",{fill:"#2f2e41",d:"m229.854 33.847 16.7-25.98a25.6 25.6 0 0 0-13.187-3.46 16.42 16.42 0 0 0-12.11 5.711c-3.41 4.24-3.996 10.232-2.718 15.521.442 1.827 8.846-4.6 6.846-1.6-1.642 2.349-4.326 12.221-5 15-1.083 4.472-4.063 9.062-1.409 12.82 3.139 4.445 8.74 6.654 14.177 6.878s10.787-1.282 15.954-2.988Z"})),ae||(ae=ie.createElement("path",{fill:"#6c63ff",d:"M236.27 32.822a1 1 0 0 1-.272-1.962c.262-.432.155-2.253.068-3.724-.325-5.524-.87-14.77 8.106-21.01a1 1 0 0 1 1.142 1.642c-8.055 5.6-7.571 13.815-7.251 19.25.182 3.108.315 5.352-1.57 5.78a1 1 0 0 1-.222.024"})),te||(te=ie.createElement("path",{fill:"#ccc",d:"M0 451.95a1.186 1.186 0 0 0 1.183 1.19H716.48a1.19 1.19 0 0 0 0-2.38H1.19A1.186 1.186 0 0 0 0 451.945Z"})),ce||(ce=ie.createElement("path",{fill:"#6c63ff",d:"M442.535 94.85h-15.132a1.513 1.513 0 0 1 0-3.027h15.132a1.513 1.513 0 0 1 0 3.026M469.772 94.85H454.64a1.513 1.513 0 1 1 0-3.027h15.132a1.513 1.513 0 1 1 0 3.026M483.391 106.955H468.26a1.513 1.513 0 1 1 0-3.026h15.132a1.513 1.513 0 1 1 0 3.026M456.237 106.955h-28.834a1.513 1.513 0 0 1 0-3.026h28.834a1.513 1.513 0 0 1 0 3.026M510.713 94.85h-28.835a1.513 1.513 0 0 1 0-3.027h28.835a1.513 1.513 0 1 1 0 3.026M452.895 71.925H424.06a1.513 1.513 0 1 1 0-3.026h28.835a1.513 1.513 0 1 1 0 3.026M455.265 80.766a1.355 1.355 0 0 1-.832-2.425l7.383-5.739a2.714 2.714 0 0 0 .328-3.984l-6.198-6.71a1.355 1.355 0 1 1 1.99-1.84l9.205 9.965a1.355 1.355 0 0 1-.163 1.99l-10.882 8.458a1.35 1.35 0 0 1-.83.285"})),re||(re=ie.createElement("path",{fill:"#6c63ff",d:"M422.601 80.766a1.355 1.355 0 0 0 .832-2.425l-7.383-5.739a2.714 2.714 0 0 1-.328-3.984l6.199-6.71a1.355 1.355 0 0 0-1.99-1.84l-9.206 9.965a1.355 1.355 0 0 0 .164 1.99l10.88 8.458a1.35 1.35 0 0 0 .832.285M467.8 132.906h-28.834a1.513 1.513 0 0 1 0-3.027h28.835a1.513 1.513 0 0 1 0 3.027M472.882 140.391a1.355 1.355 0 0 1-.833-2.425l7.384-5.739a2.714 2.714 0 0 0 .328-3.984l-6.199-6.71a1.355 1.355 0 0 1 1.99-1.84l9.206 9.965a1.355 1.355 0 0 1-.164 1.99l-10.881 8.458a1.35 1.35 0 0 1-.831.285M422.601 140.391a1.355 1.355 0 0 0 .832-2.425l-7.383-5.739a2.714 2.714 0 0 1-.328-3.984l6.199-6.71a1.355 1.355 0 1 0-1.99-1.84l-9.206 9.965a1.355 1.355 0 0 0 .164 1.99l10.88 8.458a1.35 1.35 0 0 0 .832.285M425.174 136.151l6.061-13.865a1.513 1.513 0 0 1 2.773 1.212l-6.06 13.866a1.513 1.513 0 1 1-2.774-1.213"})))}},3061:(e,l,a)=>{a.d(l,{Z:()=>U});var t,c,r,i,n,h,f,m,d,s,p,E,o,M,x,g,y,v,u,w,Z,b,H,j,z,P,V,O,A,N,L,S,q,k,B,_,I,C,F,G,R=a(959);function T(){return T=Object.assign?Object.assign.bind():function(e){for(var l=1;l{let{title:l,titleId:a,...U}=e;return R.createElement("svg",T({xmlns:"http://www.w3.org/2000/svg",width:923.222,height:462.144,"data-name":"Layer 1",viewBox:"0 0 923.222 462.144","aria-labelledby":a},U),l?R.createElement("title",{id:a},l):null,t||(t=R.createElement("path",{fill:"#e5e5e5",d:"M244.347 220.484h-1.722v-47.179A27.305 27.305 0 0 0 215.32 146h-99.954a27.305 27.305 0 0 0-27.305 27.305V432.13a27.305 27.305 0 0 0 27.305 27.305h99.954a27.305 27.305 0 0 0 27.305-27.305V254.066h1.723Z"})),c||(c=R.createElement("path",{fill:"#fff",d:"M216.422 153.104h-13.048a9.688 9.688 0 0 1-8.97 13.347h-57.261a9.688 9.688 0 0 1-8.97-13.347h-12.186a20.39 20.39 0 0 0-20.392 20.391V431.94a20.39 20.39 0 0 0 20.392 20.391h100.435a20.39 20.39 0 0 0 20.391-20.391V173.495a20.39 20.39 0 0 0-20.391-20.391"})),r||(r=R.createElement("path",{fill:"#fff",d:"M123.23 261.812h90.396v60.985H123.23z"})),i||(i=R.createElement("path",{fill:"#3f3d56",d:"M213.937 323.109h-91.019V261.5h91.02Zm-90.396-.624h89.773v-60.362H123.54Z"})),n||(n=R.createElement("path",{fill:"#e6e6e6",d:"M130.869 309.429h75.117v-42.78H130.87Z"})),h||(h=R.createElement("circle",{cx:152.967,cy:285.719,r:7.529,fill:"#6c63ff"})),f||(f=R.createElement("path",{fill:"#3f3d56",d:"M176.576 308.92h-36.934a1 1 0 0 1-.138-.011l17.468-30.258a1.223 1.223 0 0 1 2.13 0l11.722 20.305.562.972Z"})),R.createElement("path",{d:"M176.576 308.92h-12.61l6.19-8.992.446-.648.223-.324.561.972z",opacity:.2,style:{isolation:"isolate"}}),m||(m=R.createElement("path",{fill:"#3f3d56",d:"M197.14 308.92h-31.944l6.19-8.992.446-.648 8.066-11.718a1.63 1.63 0 0 1 2.423-.144 2 2 0 0 1 .116.144Z"})),d||(d=R.createElement("path",{fill:"#e5e5e5",d:"M432.891 459.668H190.608a21.684 21.684 0 0 1-21.66-21.66V86.643a21.684 21.684 0 0 1 21.66-21.66h242.283a21.684 21.684 0 0 1 21.66 21.66v351.365a21.684 21.684 0 0 1-21.66 21.66"})),s||(s=R.createElement("path",{fill:"#fff",d:"M433.318 445.849H190.182a6.685 6.685 0 0 1-6.677-6.677V85.48a6.685 6.685 0 0 1 6.677-6.677h243.136a6.685 6.685 0 0 1 6.677 6.677v353.692a6.685 6.685 0 0 1-6.677 6.677"})),p||(p=R.createElement("circle",{cx:310.828,cy:71.617,r:1.843,fill:"#fff"})),E||(E=R.createElement("path",{fill:"#fff",d:"M221.777 179.774h191.302v129.061H221.777z"})),o||(o=R.createElement("path",{fill:"#3f3d56",d:"M413.738 309.495h-192.62V179.114h192.62Zm-191.302-1.32H412.42V180.433H222.436Z"})),M||(M=R.createElement("path",{fill:"#e6e6e6",d:"M237.943 280.544h158.97v-90.532h-158.97Z"})),x||(x=R.createElement("circle",{cx:284.708,cy:230.367,r:15.933,fill:"#6c63ff"})),g||(g=R.createElement("path",{fill:"#3f3d56",d:"M334.672 279.466H256.51a1.6 1.6 0 0 1-.292-.023l36.967-64.032a2.588 2.588 0 0 1 4.506 0l24.809 42.97 1.188 2.057Z"})),R.createElement("path",{d:"M334.672 279.466h-26.686l13.1-19.028.943-1.371.471-.685 1.188 2.056z",opacity:.2,style:{isolation:"isolate"}}),y||(y=R.createElement("path",{fill:"#3f3d56",d:"M378.192 279.466h-67.604l13.1-19.028.943-1.371 17.071-24.798a3.454 3.454 0 0 1 5.127-.307 3 3 0 0 1 .246.307Z"})),v||(v=R.createElement("path",{fill:"#e6e6e6",d:"m673.435 455.496-12.264-5.164-8.413-61.48H540.724l-9.12 61.229-10.971 5.486a2.605 2.605 0 0 0 1.165 4.935h150.626a2.605 2.605 0 0 0 1.01-5.006"})),u||(u=R.createElement("path",{fill:"#ccc",d:"M872.527 397.032H322.184a10.903 10.903 0 0 1-10.879-10.903v-77.606h572.101v77.606a10.903 10.903 0 0 1-10.879 10.903"})),w||(w=R.createElement("path",{fill:"#e5e5e5",d:"M883.982 345.202H310.803V13.144A13.16 13.16 0 0 1 323.947 0h546.89a13.16 13.16 0 0 1 13.145 13.144Z"})),Z||(Z=R.createElement("path",{fill:"#fff",d:"M849.748 321.1H345.037a10.144 10.144 0 0 1-10.133-10.132V34.234A10.145 10.145 0 0 1 345.037 24.1h504.71a10.145 10.145 0 0 1 10.134 10.134v276.734a10.144 10.144 0 0 1-10.133 10.133"})),b||(b=R.createElement("path",{fill:"#ccc",d:"M921.939 462.144H1.335a1.32 1.32 0 0 1-1.294-.953 1.285 1.285 0 0 1 1.242-1.613h920.55a1.36 1.36 0 0 1 1.359 1.004 1.284 1.284 0 0 1-1.253 1.562"})),H||(H=R.createElement("path",{fill:"#2f2e41",d:"M717.289 122.103c2.59-8.257 8.482-15.83 16.63-18.621 8.148-2.792 22.363-.183 26.206 7.565 5.537 11.167 3.05 24.842.113 36.966a300 300 0 0 0-4.627-.203l-2.192-7.307v7.235c-12.097-.374-24.69-.14-37.291.102-1.13-8.583-1.43-17.48 1.16-25.737"})),j||(j=R.createElement("path",{fill:"#9f616a",d:"m828.442 436.728-10.176 4.264-21.291-37.22 15.019-6.294z"})),z||(z=R.createElement("path",{fill:"#2f2e41",d:"m835.172 445.504-32.812 13.75-.174-.414a13.85 13.85 0 0 1 7.419-18.124l20.04-8.398Z"})),P||(P=R.createElement("path",{fill:"#9f616a",d:"M679.215 260.908a7.634 7.634 0 0 1 3.097-11.288l21.871-65.998 14.648 7.813-26.105 62.416a7.675 7.675 0 0 1-13.511 7.057M706.181 448.559h-11.033l-5.249-42.557h16.284z"})),V||(V=R.createElement("path",{fill:"#2f2e41",d:"m708.995 459.255-35.576-.002v-.45a13.85 13.85 0 0 1 13.847-13.847h.001l21.729.001Z"})),O||(O=R.createElement("path",{fill:"#9f616a",d:"m750.419 206.503 2.5 6.5-.5 6.5-48-6 1.5-5.5 5.5-6.5z"})),A||(A=R.createElement("circle",{cx:734.949,cy:130.535,r:17.475,fill:"#9f616a"})),N||(N=R.createElement("path",{fill:"#6c63ff",d:"m716.419 160.503 10-6 20-2 17.677 4-.177 32.5-11 24-47-5-2-6.54s-13-17.46 1-27.46Z"})),L||(L=R.createElement("path",{fill:"#6c63ff",d:"m718.919 162.003-2.5-1.5s-13.5 2.5-16.5 10.5-6 44-6 44l12.5 1.484 4.5-29.484Z"})),S||(S=R.createElement("path",{fill:"#2f2e41",d:"M752.919 217.003v11.106s13 16.894 6 29.894c0 0 15 28 16 38l14 46s35 35 32 60l2 8-23 10-5-7-39-67-33-61-6 72s4 56-7 62l-1 9h-23.343v-8.555s-8.657-30.445-3.657-53.445l-2-97s9-41 20-48l4-10ZM722.941 107.779a21.95 21.95 0 0 1 33.371 19.156c-9.768.449-20.03.566-30.434.586l-2.46-6.018-1.449 6.023q-4.755 0-9.53-.013a22.41 22.41 0 0 1 10.502-19.734"})),q||(q=R.createElement("path",{fill:"#fff",d:"m459.328 169.738 235.26-59.828 40.363 158.718-235.26 59.828z"})),k||(k=R.createElement("path",{fill:"#3f3d56",d:"m735.968 269.233-236.883 60.24-40.775-160.34 236.883-60.241Zm-235.673 58.205 233.638-59.415-39.95-157.096-233.638 59.415Z"})),B||(B=R.createElement("path",{fill:"#e6e6e6",d:"m510.723 288.608 195.499-49.716-28.313-111.335-195.499 49.716Z"})),_||(_=R.createElement("circle",{cx:552.542,cy:212.275,r:20.218,fill:"#6c63ff"})),I||(I=R.createElement("path",{fill:"#3f3d56",d:"m629.342 257.031-96.122 24.445a2 2 0 0 1-.367.062l25.436-90.307a3.284 3.284 0 0 1 5.541-1.409l43.95 45.086 2.104 2.157Z"})),R.createElement("path",{d:"m629.342 257.031-32.818 8.346 10.159-27.498.731-1.98.366-.991 2.104 2.157z",opacity:.2,style:{isolation:"isolate"}}),C||(C=R.createElement("path",{fill:"#3f3d56",d:"m682.863 243.42-83.138 21.143 10.159-27.498.73-1.98 13.239-35.835a4.383 4.383 0 0 1 6.21-1.981 4 4 0 0 1 .398.3Z"})),F||(F=R.createElement("path",{fill:"#9f616a",d:"M736.296 239.966a8 8 0 0 1 1.183.366l30.507-21-.698-8.97 13.4-2.823 2.779 15.76a5.974 5.974 0 0 1-3.241 6.396l-37.79 18.637a7.84 7.84 0 1 1-6.14-8.366"})),G||(G=R.createElement("path",{fill:"#6c63ff",d:"m756.919 158.003 7.177-1.5s15.823-5.5 16.823 14.5l2 47-14.854 2-6.146-41Z"})))}},7105:(e,l,a)=>{a.d(l,{Z:()=>ae});var t,c,r,i,n,h,f,m,d,s,p,E,o,M,x,g,y,v,u,w,Z,b,H,j,z,P,V,O,A,N,L,S,q,k,B,_,I,C,F,G,R,T,U,D,J,K,Q,W,X,Y,$,ee=a(959);function le(){return le=Object.assign?Object.assign.bind():function(e){for(var l=1;l{let{title:l,titleId:a,...ae}=e;return ee.createElement("svg",le({xmlns:"http://www.w3.org/2000/svg",width:704.362,height:635,"data-name":"Layer 1",viewBox:"0 0 704.362 635","aria-labelledby":a},ae),l?ee.createElement("title",{id:a},l):null,t||(t=ee.createElement("path",{fill:"#e6e6e6",d:"M437.632 369h-258a33.037 33.037 0 0 1-33-33V33a33.037 33.037 0 0 1 33-33H419.66l50.973 40.629V336a33.037 33.037 0 0 1-33 33"})),c||(c=ee.createElement("path",{fill:"#fff",d:"M179.632 9.5a23.527 23.527 0 0 0-23.5 23.5v303a23.527 23.527 0 0 0 23.5 23.5h258a23.527 23.527 0 0 0 23.5-23.5V45.206L416.336 9.5Z"})),r||(r=ee.createElement("path",{fill:"#ccc",d:"M387.451 97.604H269.988a5.495 5.495 0 1 1 0-10.99H387.45a5.495 5.495 0 1 1 0 10.99M410.12 116.151H269.988a5.495 5.495 0 1 1 0-10.99H410.12a5.495 5.495 0 1 1 0 10.99M387.451 180.722H269.988a5.495 5.495 0 1 1 0-10.99H387.45a5.495 5.495 0 1 1 0 10.99M410.12 199.269H269.988a5.495 5.495 0 1 1 0-10.99H410.12a5.495 5.495 0 1 1 0 10.99M387.451 263.84H269.988a5.495 5.495 0 1 1 0-10.991H387.45a5.495 5.495 0 1 1 0 10.99M410.12 282.386H269.988a5.495 5.495 0 0 1 0-10.99H410.12a5.495 5.495 0 1 1 0 10.99"})),i||(i=ee.createElement("circle",{cx:221.073,cy:101.382,r:19.423,fill:"#6c63ff","data-name":"Ellipse 44"})),n||(n=ee.createElement("path",{fill:"#fff",d:"M219.148 108.792a2 2 0 0 1-1.212-.403l-.022-.016-4.564-3.492a2.029 2.029 0 0 1 2.468-3.22l2.957 2.267 6.986-9.115a2.03 2.03 0 0 1 2.843-.375l-.042.06.044-.06a2.03 2.03 0 0 1 .375 2.844l-8.218 10.716a2.03 2.03 0 0 1-1.613.791Z","data-name":"Path 395"})),h||(h=ee.createElement("circle",{cx:223.073,cy:184.5,r:19.423,fill:"#ccc","data-name":"Ellipse 44"})),f||(f=ee.createElement("circle",{cx:221.073,cy:267.618,r:19.423,fill:"#ccc","data-name":"Ellipse 44"})),m||(m=ee.createElement("path",{fill:"#e6e6e6",d:"M469.64 41.936h-39.929a10.99 10.99 0 0 1-10.99-10.99V1.455a.687.687 0 0 1 1.113-.539l50.233 39.795a.687.687 0 0 1-.427 1.225"})),d||(d=ee.createElement("path",{fill:"#fff",d:"M199.348 425.772 46.702 457.947a17.02 17.02 0 0 1-20.14-13.128L.366 320.549a17.02 17.02 0 0 1 13.129-20.14l152.646-32.175a17.02 17.02 0 0 1 20.14 13.128l26.194 124.27a17.02 17.02 0 0 1-13.128 20.14"})),s||(s=ee.createElement("path",{fill:"#3f3d56",d:"M199.348 425.772 46.702 457.947a17.02 17.02 0 0 1-20.14-13.128L.366 320.549a17.02 17.02 0 0 1 13.129-20.14l152.646-32.175a17.02 17.02 0 0 1 20.14 13.128l26.194 124.27a17.02 17.02 0 0 1-13.128 20.14M13.908 302.366a15.017 15.017 0 0 0-11.584 17.771l26.194 124.27A15.017 15.017 0 0 0 46.29 455.99l152.645-32.175a15.017 15.017 0 0 0 11.584-17.771l-26.194-124.27a15.017 15.017 0 0 0-17.77-11.583Z"})),p||(p=ee.createElement("path",{fill:"#ccc",d:"M156.657 309.209 79.62 325.447a2.73 2.73 0 0 1-3.23-1.863 2.63 2.63 0 0 1 2-3.254l78.42-16.53c3.061 1.726 2.094 4.936-.153 5.41Z","data-name":"Path 411"})),E||(E=ee.createElement("path",{fill:"#ccc",d:"M159.506 322.722 82.467 338.96a2.73 2.73 0 0 1-3.23-1.863 2.63 2.63 0 0 1 2-3.254l78.42-16.53c3.062 1.726 2.094 4.936-.152 5.41Z","data-name":"Path 412"})),o||(o=ee.createElement("path",{fill:"#ccc",d:"m67.435 350.165-23.511 4.955a2.96 2.96 0 0 1-3.506-2.285L34.57 325.09a2.96 2.96 0 0 1 2.285-3.506l23.511-4.955a2.963 2.963 0 0 1 3.506 2.285l5.848 27.745a2.96 2.96 0 0 1-2.285 3.506","data-name":"Path 413"})),M||(M=ee.createElement("path",{fill:"#ccc",d:"M165.113 350.437 47.54 375.22a2.73 2.73 0 0 1-3.23-1.863 2.63 2.63 0 0 1 1.999-3.254l118.958-25.074c3.062 1.725 2.094 4.935-.153 5.408","data-name":"Path 414"})),x||(x=ee.createElement("path",{fill:"#ccc",d:"M167.963 363.954 50.388 388.737a2.73 2.73 0 0 1-3.23-1.863 2.63 2.63 0 0 1 2-3.254l118.957-25.074c3.062 1.725 2.094 4.935-.152 5.408","data-name":"Path 415"})),g||(g=ee.createElement("path",{fill:"#ccc",d:"M170.81 377.462 53.235 402.245a2.73 2.73 0 0 1-3.23-1.863 2.63 2.63 0 0 1 2-3.254l118.957-25.074c3.062 1.725 2.094 4.935-.152 5.408","data-name":"Path 416"})),y||(y=ee.createElement("path",{fill:"#ccc",d:"M173.659 390.978 56.084 415.761a2.73 2.73 0 0 1-3.23-1.863 2.63 2.63 0 0 1 2-3.254L173.81 385.57c3.062 1.725 2.094 4.935-.152 5.408","data-name":"Path 417"})),v||(v=ee.createElement("path",{fill:"#ccc",d:"M176.506 404.488 58.932 429.27a2.73 2.73 0 0 1-3.23-1.863 2.63 2.63 0 0 1 1.999-3.254l118.958-25.074c3.062 1.726 2.094 4.935-.153 5.409","data-name":"Path 418"})),u||(u=ee.createElement("path",{fill:"#a0616a",d:"M197.26 342.62a10.5 10.5 0 0 0-.682 1.51l-48.134 11.945-8.373-8.662-14.725 10.928 13.333 16.776a8 8 0 0 0 9.289 2.428l52.23-21.342a10.497 10.497 0 1 0-2.937-13.582M32.964 448.913a10.743 10.743 0 0 0 6.378-15.188l33.125-92.067-23.004-4.077-25.327 91.781a10.8 10.8 0 0 0 8.828 19.551"})),w||(w=ee.createElement("path",{fill:"#6c63ff",d:"m68.26 358.001-22.713-8.717a4.817 4.817 0 0 1-2.47-6.863l11.916-21.125a13.377 13.377 0 0 1 24.95 9.66l-5.256 23.597A4.817 4.817 0 0 1 68.26 358"})),Z||(Z=ee.createElement("path",{fill:"#a0616a",d:"m119.525 621.766 12.26-.001 5.832-47.288-18.094.001z"})),b||(b=ee.createElement("path",{fill:"#2f2e41",d:"M116.398 617.763h24.144a15.386 15.386 0 0 1 15.387 15.386v.5l-39.53.001Z"})),H||(H=ee.createElement("path",{fill:"#a0616a",d:"m50.525 621.766 12.26-.001 5.832-47.288-18.094.001z"})),j||(j=ee.createElement("path",{fill:"#2f2e41",d:"M47.398 617.763h24.144a15.386 15.386 0 0 1 15.387 15.386v.5l-39.53.001ZM63.377 602.733H47.863a4.5 4.5 0 0 1-4.495-4.714l7.37-158.332.464-.013 74.919-1.953 14.66 158.423a4.5 4.5 0 0 1-4.12 4.911l-17.427 1.394a4.5 4.5 0 0 1-4.767-3.582L92.177 486.09a1.454 1.454 0 0 0-1.47-1.199h-.005a1.454 1.454 0 0 0-1.467 1.211l-21.442 113a4.51 4.51 0 0 1-4.416 3.631"})),z||(z=ee.createElement("circle",{cx:91.797,cy:273.914,r:24.561,fill:"#a0616a"})),P||(P=ee.createElement("path",{fill:"#6c63ff",d:"M83.561 458.242c-11.706 0-23.73-3.077-33.698-12.175a4.55 4.55 0 0 1-1.47-3.85c1.068-9.586 6.243-59.08 3.329-92.143a40.02 40.02 0 0 1 12.955-33.305 39.6 39.6 0 0 1 33.962-9.834q.459.082.918.171c19.664 3.806 33.326 22.004 31.78 42.331-2.256 29.66-4.278 69.78-1.103 92.468a4.49 4.49 0 0 1-2.414 4.637c-7.225 3.65-25.326 11.7-44.259 11.7"})),V||(V=ee.createElement("path",{fill:"#6c63ff",d:"M115.61 359.768a4.81 4.81 0 0 1-2.109-3.411l-2.992-23.99a13.377 13.377 0 0 1 25.754-7.248l9.856 22.161a4.817 4.817 0 0 1-3.11 6.598l-23.437 6.522a4.81 4.81 0 0 1-3.961-.632"})),O||(O=ee.createElement("path",{fill:"#2f2e41",d:"M83.223 298.128a17.6 17.6 0 0 1-6.797-1.23c-.952-.366-1.94-.667-2.889-1.034-8.387-3.24-13.911-12.172-14.109-21.16s4.457-17.714 11.37-23.463 15.864-8.702 24.829-9.384c9.657-.735 20.53 1.713 25.926 9.755 1.437 2.141 2.441 4.738 1.59 7.323a4.7 4.7 0 0 1-1.32 2.028c-2.41 2.144-4.812.532-7.27.39-3.376-.196-6.408 2.537-7.498 5.738s-.61 6.727.27 9.993a25 25 0 0 1 1.258 6.076 6.11 6.11 0 0 1-2.531 5.378c-2.11 1.276-4.88.537-6.992-.736s-3.935-3.044-6.216-3.98-5.344-.73-6.671 1.348a7.4 7.4 0 0 0-.844 2.435c-1.19 5.421-.916 5.102-2.106 10.523"})),A||(A=ee.createElement("path",{fill:"#ccc",d:"M191.668 635h-190a1 1 0 0 1 0-2h190a1 1 0 1 1 0 2"})),N||(N=ee.createElement("path",{fill:"#fff",d:"m678.012 428.63-136.057 76.317a17.02 17.02 0 0 1-23.144-6.51l-62.13-110.765a17.02 17.02 0 0 1 6.51-23.144l136.058-76.317a17.02 17.02 0 0 1 23.143 6.51l62.13 110.765a17.02 17.02 0 0 1-6.51 23.143"})),L||(L=ee.createElement("path",{fill:"#3f3d56",d:"m678.012 428.63-136.057 76.317a17.02 17.02 0 0 1-23.144-6.51l-62.13-110.765a17.02 17.02 0 0 1 6.51-23.144l136.058-76.317a17.02 17.02 0 0 1 23.143 6.51l62.13 110.765a17.02 17.02 0 0 1-6.51 23.143M464.17 366.272a15.017 15.017 0 0 0-5.745 20.42l62.13 110.765a15.017 15.017 0 0 0 20.421 5.744l136.058-76.317a15.017 15.017 0 0 0 5.744-20.42L620.648 295.7a15.017 15.017 0 0 0-20.42-5.745Z"})),S||(S=ee.createElement("path",{fill:"#ccc",d:"m602.442 330.148-68.667 38.517a2.73 2.73 0 0 1-3.638-.813 2.63 2.63 0 0 1 .935-3.703l69.898-39.207c3.437.731 3.473 4.084 1.47 5.207Z","data-name":"Path 411"})),q||(q=ee.createElement("path",{fill:"#ccc",d:"m609.198 342.193-68.667 38.516a2.73 2.73 0 0 1-3.638-.813 2.63 2.63 0 0 1 .935-3.703l69.898-39.207c3.437.732 3.473 4.084 1.47 5.207Z","data-name":"Path 412"})),k||(k=ee.createElement("path",{fill:"#ccc",d:"m529.534 395.893-20.957 11.755a2.96 2.96 0 0 1-4.028-1.133l-13.872-24.73a2.96 2.96 0 0 1 1.134-4.029l20.956-11.754a2.963 2.963 0 0 1 4.028 1.133l13.872 24.73a2.96 2.96 0 0 1-1.133 4.028","data-name":"Path 413"})),B||(B=ee.createElement("path",{fill:"#ccc",d:"m622.83 366.966-104.797 58.783a2.73 2.73 0 0 1-3.638-.813 2.63 2.63 0 0 1 .935-3.703l106.03-59.474c3.438.732 3.473 4.084 1.47 5.207","data-name":"Path 414"})),_||(_=ee.createElement("path",{fill:"#ccc",d:"M629.589 379.014 524.79 437.797a2.73 2.73 0 0 1-3.638-.813 2.63 2.63 0 0 1 .935-3.702l106.03-59.475c3.438.732 3.473 4.084 1.47 5.207","data-name":"Path 415"})),I||(I=ee.createElement("path",{fill:"#ccc",d:"m636.343 391.054-104.798 58.783a2.73 2.73 0 0 1-3.639-.813 2.63 2.63 0 0 1 .935-3.702l106.03-59.475c3.438.732 3.474 4.084 1.472 5.207","data-name":"Path 416"})),C||(C=ee.createElement("path",{fill:"#ccc",d:"m643.1 403.102-104.798 58.783a2.73 2.73 0 0 1-3.638-.813 2.63 2.63 0 0 1 .935-3.703l106.03-59.475c3.438.732 3.473 4.084 1.471 5.207","data-name":"Path 417"})),F||(F=ee.createElement("path",{fill:"#ccc",d:"m649.854 415.143-104.797 58.783a2.73 2.73 0 0 1-3.639-.813 2.63 2.63 0 0 1 .935-3.703l106.03-59.474c3.438.731 3.473 4.084 1.471 5.207","data-name":"Path 418"})),G||(G=ee.createElement("path",{fill:"#ffb8b8",d:"M631.571 460.266a9.454 9.454 0 0 0-6.28-13.065l-2.85-33.475-13.706 10.813 4.807 30.13a9.505 9.505 0 0 0 18.03 5.597"})),R||(R=ee.createElement("path",{fill:"#6c63ff",d:"m622.7 443.695-11.383 1.357a4.23 4.23 0 0 1-4.728-4.018l-1.66-38.402-21.577-58.946a12.15 12.15 0 0 1 .641-11.567 16 16 0 0 1 1.808-2.334 12.11 12.11 0 0 1 10.562-3.75 12.63 12.63 0 0 1 9.484 6.59l14.071 29.486a83.77 83.77 0 0 1 8.095 39.573l-1.587 37.988a4.23 4.23 0 0 1-3.67 4.015Z"})),T||(T=ee.createElement("path",{fill:"#ffb8b8",d:"m663.126 609.664-10.554 4.632-22.89-38.503 15.576-6.837z"})),U||(U=ee.createElement("path",{fill:"#2f2e41",d:"m670.309 618.713-34.03 14.937-.19-.43a14.465 14.465 0 0 1 7.431-19.06h.001l20.785-9.123Z"})),D||(D=ee.createElement("path",{fill:"#ffb8b8",d:"M521.437 622.477h-11.526l-5.483-44.457 17.011.001z"})),J||(J=ee.createElement("path",{fill:"#2f2e41",d:"m524.376 633.65-37.164-.001v-.47a14.465 14.465 0 0 1 14.465-14.465h22.7ZM633.652 607.28l-64.206-143.284a1.41 1.41 0 0 0-2.656.188l-39.12 138.394a4.206 4.206 0 0 1-4.504 3.1l-21.366-2.136a4.255 4.255 0 0 1-3.798-4.551c6.796-84.524 17.509-164.298 49.602-216.52l.17-.278 48.544 9.519 64.808 206.373a4.25 4.25 0 0 1-2.751 5.265l-19.543 6.281a4.215 4.215 0 0 1-5.18-2.352"})),K||(K=ee.createElement("circle",{cx:571.237,cy:285.983,r:23.091,fill:"#ffb8b8"})),Q||(Q=ee.createElement("path",{fill:"#6c63ff",d:"m544.62 386.468-.295-.06-.069-.292c-3.111-13.135-3.185-27.47-.22-42.606a33.47 33.47 0 0 1 33.507-27.074 33.523 33.523 0 0 1 32.819 32.23c.99 26.032-9.649 48.6-9.756 48.826l-.159.33Z"})),W||(W=ee.createElement("path",{fill:"#ffb8b8",d:"M482.72 430.397a9.454 9.454 0 0 0 7.582-12.355l26.596-20.526-16.513-5.666-22.724 20.36a9.505 9.505 0 0 0 5.06 18.187"})),X||(X=ee.createElement("path",{fill:"#6c63ff",d:"M497.247 414.917a4.215 4.215 0 0 1-5.401-.952l-7.307-8.834a4.23 4.23 0 0 1 .818-6.15l31.383-22.194 37.865-50.065a12.15 12.15 0 0 1 10.072-5.726 16 16 0 0 1 2.94.257 12.1 12.1 0 0 1 8.873 6.848 12.63 12.63 0 0 1-.403 11.54l-28.038 45.406-.062.1Z"})),Y||(Y=ee.createElement("path",{fill:"#2f2e41",d:"M575.367 284.55c-1.702-2.799-5.458-3.59-8.719-3.27s-6.431 1.465-9.707 1.44c-9.097-.071-16.119-11.158-12.294-19.412 3.136-6.77 10.97-9.742 18.057-12.075 14.858-4.891 31.925-9.59 45.408-1.66a28.21 28.21 0 0 1 13.58 25.14c-.304 6.242-2.694 12.653-.672 18.566 2.332 6.822 9.727 10.482 16.715 12.252 12.25 3.104 25.167 2.604 37.494 5.387s24.96 10.175 28.282 22.368c2.183 8.009-.094 16.63-3.866 24.025a62.223 62.223 0 0 1-86.805 25.461c-14.903-8.702-25.662-23.409-32.076-39.43a132 132 0 0 1-7.632-29c-1.437-9.29-.218-18.679 2.384-27.713a2.55 2.55 0 0 0-.15-2.078"})),$||($=ee.createElement("path",{fill:"#ccc",d:"M658.668 635h-190a1 1 0 0 1 0-2h190a1 1 0 1 1 0 2"})))}},480:(e,l,a)=>{a.r(l),a.d(l,{default:()=>o});var t=a(5924),c=a(6788),r=a(8927),i=a(1576),n=a(7623);const h={features:"features_jVLO",featureSvg:"featureSvg_km3_"};var f=a(1527);const m=[{title:"Full Asynchronous Support",Svg:a(4183).Z,description:(0,f.jsx)(f.Fragment,{children:"All I/O operations are asynchronous, CPU tasks are spread across multiple threads, making the most of available resources."})},{title:"Powerful Async Task Scheduling and Management",Svg:a(7105).Z,description:(0,f.jsx)(f.Fragment,{children:"Provides real-time progress updates, task cancellation, and internal task priority assignment."})},{title:"Built-in Support for Multiple Image Protocols",Svg:a(3061).Z,description:(0,f.jsx)(f.Fragment,{children:"Also integrated with \xdcberzug++, covering almost all terminals."})},{title:"Built-in Code Highlighting and Image Encoding",Svg:a(4568).Z,description:(0,f.jsx)(f.Fragment,{children:"Combined with the pre-caching mechanism, greatly accelerates image and normal file loading."})}];function d(e){let{title:l,Svg:a,description:c}=e;return(0,f.jsxs)("div",{className:(0,t.Z)("col col--3"),children:[(0,f.jsx)("div",{className:"text--center",children:(0,f.jsx)(a,{className:h.featureSvg,role:"img"})}),(0,f.jsxs)("div",{className:"text--center padding-horiz--md",children:[(0,f.jsx)(n.Z,{as:"h3",children:l}),(0,f.jsx)("p",{children:c})]})]})}function s(){return(0,f.jsx)("section",{className:h.features,children:(0,f.jsx)("div",{className:"container",children:(0,f.jsx)("div",{className:"row",children:m.map(((e,l)=>(0,f.jsx)(d,{...e},l)))})})})}const p={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"};function E(){const{siteConfig:e}=(0,r.Z)();return(0,f.jsx)("header",{className:(0,t.Z)("hero hero--primary",p.heroBanner),children:(0,f.jsxs)("div",{className:"container",children:[(0,f.jsx)(n.Z,{as:"h1",className:"hero__title",children:e.title}),(0,f.jsx)("p",{className:"hero__subtitle",children:e.tagline}),(0,f.jsx)("div",{className:p.buttons,children:(0,f.jsx)(c.Z,{className:"button button--secondary button--lg",to:"/docs/installation",children:"Get Started \ud83d\ude80"})})]})})}function o(){return(0,f.jsxs)(i.Z,{description:"Blazing fast terminal file manager written in Rust, based on async I/O.",children:[(0,f.jsx)(E,{}),(0,f.jsx)("main",{children:(0,f.jsx)(s,{})})]})}},5924:(e,l,a)=>{function t(e){var l,a,c="";if("string"==typeof e||"number"==typeof e)c+=e;else if("object"==typeof e)if(Array.isArray(e))for(l=0;lc});const c=function(){for(var e,l,a=0,c="";a{s.r(i),s.d(i,{assets:()=>l,contentTitle:()=>t,default:()=>d,frontMatter:()=>n,metadata:()=>a,toc:()=>c});var o=s(1527),r=s(6225);const n={id:"overview",sidebar_position:0,sidebar_label:"Flavors (BETA)",description:"Learn how to use Yazi flavors."},t="Flavors (BETA)",a={id:"flavors/overview",title:"Flavors (BETA)",description:"Learn how to use Yazi flavors.",source:"@site/docs/flavors/overview.md",sourceDirName:"flavors",slug:"/flavors/overview",permalink:"/docs/flavors/overview",draft:!1,unlisted:!1,editUrl:"https://github.com/yazi-rs/yazi-rs.github.io/edit/main/docs/flavors/overview.md",tags:[],version:"current",sidebarPosition:0,frontMatter:{id:"overview",sidebar_position:0,sidebar_label:"Flavors (BETA)",description:"Learn how to use Yazi flavors."},sidebar:"docsSidebar",previous:{title:"Config",permalink:"/docs/plugins/config"},next:{title:"DDS",permalink:"/docs/dds"}},l={},c=[{value:"Directory structure",id:"structure",level:2},{value:"Usage",id:"usage",level:2},{value:"Cooking a flavor",id:"cooking",level:2}];function h(e){const i={a:"a",code:"code",h1:"h1",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(i.h1,{id:"flavors-beta",children:"Flavors (BETA)"}),"\n",(0,o.jsxs)(i.p,{children:['The "flavor" is a pre-made Yazi theme, while what we typically refer to as a "theme" is the user\'s own theme, i.e. ',(0,o.jsx)(i.code,{children:"~/.config/yazi/theme.toml"})," file."]}),"\n",(0,o.jsx)(i.p,{children:"The purpose of separating them is to allow users to customize their preferences more conveniently on top of an existing flavor, without having to modify those flavor files.\nThis makes it easier to update, as there won't be conflicts when pulling from Git."}),"\n",(0,o.jsxs)(i.p,{children:["Behind the scenes, Yazi merges the user's ",(0,o.jsx)(i.code,{children:"theme.toml"})," with the flavor's ",(0,o.jsx)(i.code,{children:"flavor.toml"})," automatically, and the user's always takes precedence over the flavor."]}),"\n",(0,o.jsx)(i.h2,{id:"structure",children:"Directory structure"}),"\n",(0,o.jsxs)(i.p,{children:["These flavors are placed in the ",(0,o.jsx)(i.code,{children:"flavors"})," subdirectory of the Yazi configuration directory, so either:"]}),"\n",(0,o.jsxs)(i.ul,{children:["\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"~/.config/yazi/flavors/"})," on Unix-like systems."]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"C:\\Users\\USERNAME\\AppData\\Roaming\\yazi\\config\\flavors\\"})," on Windows."]}),"\n"]}),"\n",(0,o.jsx)(i.pre,{children:(0,o.jsx)(i.code,{children:"~/.config/yazi/\n\u251c\u2500\u2500 flavors/\n\u2502\xa0\xa0 \u251c\u2500\u2500 foo.yazi/\n\u2502\xa0\xa0 \u2514\u2500\u2500 bar.yazi/\n\u2514\u2500\u2500 theme.toml\n"})}),"\n",(0,o.jsxs)(i.p,{children:["Each flavor is a directory with a ",(0,o.jsx)(i.a,{href:"https://developer.mozilla.org/en-US/docs/Glossary/Kebab_case",children:"kebab-case"})," name, ending in ",(0,o.jsx)(i.code,{children:".yazi"}),", and containing at least the following files:"]}),"\n",(0,o.jsx)(i.pre,{children:(0,o.jsx)(i.code,{children:"~/.config/yazi/flavors/bar.yazi/\n\u251c\u2500\u2500 flavor.toml\n\u251c\u2500\u2500 tmtheme.xml\n\u251c\u2500\u2500 README.md\n\u251c\u2500\u2500 preview.png\n\u251c\u2500\u2500 LICENSE\n\u2514\u2500\u2500 LICENSE-tmtheme\n"})}),"\n",(0,o.jsx)(i.p,{children:"Where:"}),"\n",(0,o.jsxs)(i.ul,{children:["\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"flavor.toml"})," is this flavor's configuration file, in the format consistent with the ",(0,o.jsxs)(i.a,{href:"/docs/configuration/theme",children:["user's ",(0,o.jsx)(i.code,{children:"theme.toml"})]}),"."]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"tmtheme.xml"})," is a ",(0,o.jsx)(i.a,{href:"https://www.sublimetext.com/docs/color_schemes_tmtheme.html",children:"tmTheme file"})," that matches the colors of this flavor for code highlighting."]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"README.md"})," and ",(0,o.jsx)(i.code,{children:"preview.png"})," are the description and the preview image of this flavor, respectively."]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"LICENSE"})," and ",(0,o.jsx)(i.code,{children:"LICENSE-tmtheme"})," are the licenses for the flavor and the ",(0,o.jsx)(i.code,{children:"tmtheme.xml"})," file, respectively."]}),"\n"]}),"\n",(0,o.jsx)(i.h2,{id:"usage",children:"Usage"}),"\n",(0,o.jsxs)(i.p,{children:["For example, if you want to use the ",(0,o.jsx)(i.code,{children:"bar.yazi"})," flavor, add these lines to your ",(0,o.jsx)(i.code,{children:"theme.toml"}),":"]}),"\n",(0,o.jsx)(i.pre,{children:(0,o.jsx)(i.code,{className:"language-toml",children:'[flavor]\nuse = "bar"\n'})}),"\n",(0,o.jsx)(i.h2,{id:"cooking",children:"Cooking a flavor"}),"\n",(0,o.jsxs)(i.p,{children:["Please use our ",(0,o.jsx)(i.a,{href:"https://github.com/yazi-rs/flavor-template",children:"flavor-template"})," repository as a starting point to create your own flavor."]})]})}function d(e={}){const{wrapper:i}={...(0,r.a)(),...e.components};return i?(0,o.jsx)(i,{...e,children:(0,o.jsx)(h,{...e})}):h(e)}},6225:(e,i,s)=>{s.d(i,{Z:()=>a,a:()=>t});var o=s(959);const r={},n=o.createContext(r);function t(e){const i=o.useContext(n);return o.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function a(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:t(e.components),o.createElement(n.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/340345ee.49d6b340.js b/assets/js/340345ee.49d6b340.js new file mode 100644 index 000000000..4cacf3aad --- /dev/null +++ b/assets/js/340345ee.49d6b340.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[402],{3132:(e,i,s)=>{s.r(i),s.d(i,{assets:()=>c,contentTitle:()=>r,default:()=>o,frontMatter:()=>l,metadata:()=>h,toc:()=>t});var n=s(1527),d=s(6225);const l={sidebar_position:1,description:"Learn how to use Yazi's Lua API."},r="Types",h={id:"plugins/types",title:"Types",description:"Learn how to use Yazi's Lua API.",source:"@site/docs/plugins/types.md",sourceDirName:"plugins",slug:"/plugins/types",permalink:"/docs/plugins/types",draft:!1,unlisted:!1,editUrl:"https://github.com/yazi-rs/yazi-rs.github.io/edit/main/docs/plugins/types.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1,description:"Learn how to use Yazi's Lua API."},sidebar:"docsSidebar",previous:{title:"Plugins (BETA)",permalink:"/docs/plugins/overview"},next:{title:"Layout",permalink:"/docs/plugins/layout"}},c={},t=[{value:"Shared",id:"shared",level:2},{value:"Cha",id:"shared.cha",level:3},{value:"File",id:"shared.file",level:3},{value:"Icon",id:"shared.icon",level:3},{value:"Range",id:"shared.range",level:3},{value:"Url",id:"shared.url",level:3},{value:"Window",id:"shared.window",level:3},{value:"App data",id:"app-data",level:2},{value:"tab::Mode",id:"app-data.tab-mode",level:3},{value:"tab::Config",id:"app-data.tab-config",level:3},{value:"tab::Selected",id:"app-data.tab-selected",level:3},{value:"tab::Preview",id:"app-data.tab-preview",level:3},{value:"folder::Folder",id:"app-data.folder-folder",level:3},{value:"folder::Files",id:"app-data.folder-files",level:3},{value:"folder::File",id:"app-data.folder-file",level:3},{value:"manager::Tabs",id:"app-data.manager-tabs",level:3},{value:"tab::Tab",id:"app-data.tab-tab",level:3},{value:"tasks::Tasks",id:"app-data.tasks-tasks",level:3},{value:"manager::Yanked",id:"app-data.manager-yanked",level:3}];function a(e){const i={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,d.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(i.h1,{id:"types",children:"Types"}),"\n",(0,n.jsx)(i.h2,{id:"shared",children:"Shared"}),"\n",(0,n.jsx)(i.h3,{id:"shared.cha",children:"Cha"}),"\n",(0,n.jsx)(i.p,{children:"Cha means one file's characteristics with the following properties:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"is_dir"})," - Whether this file is a directory"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"is_hidden"})," - Whether this file is hidden (starts with a dot)"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"is_link"})," - Whether this file is a symlink"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"is_orphan"})," - Whether this file is a bad symlink, which points to a non-existent file"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"is_block_device"})," - Whether this file is a block device"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"is_char_device"})," - Whether this file is a character device"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"is_fifo"})," - Whether this file is a fifo"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"is_socket"})," - Whether this file is a socket"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"is_exec"})," - Whether this file is executable"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"is_sticky"})," - Whether this file has the sticky bit set"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"length"})," - The length of this file, returns an integer representing the size in bytes. Note that it can't reflect the size of a directory, use ",(0,n.jsx)(i.a,{href:"#app-data.folder-file",children:(0,n.jsx)(i.code,{children:"size()"})})," instead"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"created"})," - The created time of this file in Unix timestamp, or ",(0,n.jsx)(i.code,{children:"nil"})," if it doesn't have a valid time"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"modified"})," - The modified time of this file in Unix timestamp, or ",(0,n.jsx)(i.code,{children:"nil"})," if it doesn't have a valid time"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"accessed"})," - The accessed time of this file in Unix timestamp, or ",(0,n.jsx)(i.code,{children:"nil"})," if it doesn't have a valid time"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"permissions"})," - Unix permissions of this file in string, e.g. ",(0,n.jsx)(i.code,{children:"drwxr-xr-x"}),". For Windows, it's always ",(0,n.jsx)(i.code,{children:"nil"})]}),"\n"]}),"\n",(0,n.jsx)(i.p,{children:"And the Unix only properties:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"uid"})," - The user id of this file"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"gid"})," - The group id of this file"]}),"\n"]}),"\n",(0,n.jsx)(i.h3,{id:"shared.file",children:"File"}),"\n",(0,n.jsx)(i.p,{children:"Properties:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"url"})," - The ",(0,n.jsx)(i.a,{href:"#shared.url",children:"Url"})," of this file"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"cha"})," - The ",(0,n.jsx)(i.a,{href:"#shared.cha",children:"Cha"})," of this file"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"link_to"})," - The ",(0,n.jsx)(i.a,{href:"#shared.url",children:"Url"})," of this file pointing to, if it's a symlink; otherwise, ",(0,n.jsx)(i.code,{children:"nil"})]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"name"})," - The name of this file"]}),"\n"]}),"\n",(0,n.jsx)(i.h3,{id:"shared.icon",children:"Icon"}),"\n",(0,n.jsx)(i.p,{children:"Properties:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"text"})," - The text of this icon"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"style"})," - The ",(0,n.jsx)(i.a,{href:"/docs/plugins/layout#style",children:"Style"})," of this icon"]}),"\n"]}),"\n",(0,n.jsx)(i.h3,{id:"shared.range",children:"Range"}),"\n",(0,n.jsx)(i.p,{children:"TODO"}),"\n",(0,n.jsx)(i.h3,{id:"shared.url",children:"Url"}),"\n",(0,n.jsx)(i.p,{children:"Create a Url:"}),"\n",(0,n.jsx)(i.pre,{children:(0,n.jsx)(i.code,{className:"language-lua",children:'-- regular file\nlocal url = Url("/root/Downloads/logo.png")\n\n-- `bgm.mp3` from the archive `ost.zip`\nlocal url = Url("archive:///root/ost.zip#bgm.mp3")\n'})}),"\n",(0,n.jsx)(i.p,{children:"Properties:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"frag"})," - The fragment string of this url. Let's say the url ",(0,n.jsx)(i.code,{children:"archive:///root/my-archive.zip#1.jpg"}),", the fragment ",(0,n.jsx)(i.code,{children:"1.jpg"})]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"is_regular"})," - Whether the file represented by this url is a regular file"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"is_search"})," - Whether the file represented by this url from the search result"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"is_archive"})," - Whether the file represented by this url from an archive"]}),"\n"]}),"\n",(0,n.jsx)(i.p,{children:"Methods:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"name()"})," - The file name of this url"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"stem()"})," - The file name without the extension of this url"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"join(url)"})," - Join this url with another url"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"parent()"})," - The url of the parent directory"]}),"\n"]}),"\n",(0,n.jsx)(i.p,{children:"Meta methods:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsx)(i.li,{children:(0,n.jsx)(i.code,{children:"__eq(another_url)"})}),"\n",(0,n.jsx)(i.li,{children:(0,n.jsx)(i.code,{children:"__tostring()"})}),"\n",(0,n.jsx)(i.li,{children:(0,n.jsx)(i.code,{children:"__concat(string)"})}),"\n"]}),"\n",(0,n.jsx)(i.h3,{id:"shared.window",children:"Window"}),"\n",(0,n.jsx)(i.p,{children:"Properties:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"rows"})," - The number of rows of this window"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"cols"})," - The number of columns of this window"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"width"})," - The width of this window in pixels"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"height"})," - The height of this window in pixels"]}),"\n"]}),"\n",(0,n.jsx)(i.h2,{id:"app-data",children:"App data"}),"\n",(0,n.jsxs)(i.p,{children:["You can access all app data through the ",(0,n.jsx)(i.code,{children:"cx"})," within ",(0,n.jsx)(i.a,{href:"/docs/plugins/overview#sync-context",children:"Sync context"}),":"]}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"cx.active"})," - The active tab, which is a ",(0,n.jsx)(i.a,{href:"#app-data.tab-tab",children:"tab::Tab"})]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"cx.tabs"})," - All of tabs, which is a ",(0,n.jsx)(i.a,{href:"#app-data.manager-tabs",children:"manager::Tabs"})]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"cx.tasks"})," - All of tasks, which is a ",(0,n.jsx)(i.a,{href:"#app-data.tasks-tasks",children:"tasks::Tasks"})]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"cx.yanked"})," - The yanked urls, which is a ",(0,n.jsx)(i.a,{href:"#app-data.manager-yanked",children:"manager::Yanked"})]}),"\n"]}),"\n",(0,n.jsx)(i.h3,{id:"app-data.tab-mode",children:(0,n.jsx)(i.code,{children:"tab::Mode"})}),"\n",(0,n.jsx)(i.p,{children:"Visual mode status."}),"\n",(0,n.jsx)(i.p,{children:"Properties:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"is_select"})," - Whether the mode is select"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"is_unset"})," - Whether the mode is unset"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"is_visual"})," - Whether the mode is select or unset"]}),"\n"]}),"\n",(0,n.jsx)(i.p,{children:"Meta methods:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsx)(i.li,{children:(0,n.jsx)(i.code,{children:"__tostring()"})}),"\n"]}),"\n",(0,n.jsx)(i.h3,{id:"app-data.tab-config",children:(0,n.jsx)(i.code,{children:"tab::Config"})}),"\n",(0,n.jsx)(i.p,{children:"Properties:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsx)(i.li,{children:(0,n.jsx)(i.code,{children:"sort_by"})}),"\n",(0,n.jsx)(i.li,{children:(0,n.jsx)(i.code,{children:"sort_sensitive"})}),"\n",(0,n.jsx)(i.li,{children:(0,n.jsx)(i.code,{children:"sort_reverse"})}),"\n",(0,n.jsx)(i.li,{children:(0,n.jsx)(i.code,{children:"sort_dir_first"})}),"\n",(0,n.jsx)(i.li,{children:(0,n.jsx)(i.code,{children:"sort_translit"})}),"\n",(0,n.jsx)(i.li,{children:(0,n.jsx)(i.code,{children:"linemode"})}),"\n",(0,n.jsx)(i.li,{children:(0,n.jsx)(i.code,{children:"show_hidden"})}),"\n"]}),"\n",(0,n.jsxs)(i.p,{children:["These properties are consistent with those in ",(0,n.jsx)(i.a,{href:"/docs/configuration/yazi",children:"yazi.toml"}),", and will not be detailed here."]}),"\n",(0,n.jsx)(i.h3,{id:"app-data.tab-selected",children:(0,n.jsx)(i.code,{children:"tab::Selected"})}),"\n",(0,n.jsx)(i.p,{children:"Meta methods:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsx)(i.li,{children:(0,n.jsx)(i.code,{children:"__len()"})}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"__pairs()"})," - Iterate over the selected ",(0,n.jsx)(i.a,{href:"#shared.url",children:"Url"}),"s."]}),"\n"]}),"\n",(0,n.jsx)(i.h3,{id:"app-data.tab-preview",children:(0,n.jsx)(i.code,{children:"tab::Preview"})}),"\n",(0,n.jsx)(i.p,{children:"Properties:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"skip"})," - The number of units to skip. The units largely depend on your previewer, such as lines for code and percentages for videos."]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"folder"})," - The ",(0,n.jsx)(i.a,{href:"#app-data.folder-folder",children:"folder::Folder"})," being previewed, or ",(0,n.jsx)(i.code,{children:"nil"})," if this preview is not for folders"]}),"\n"]}),"\n",(0,n.jsx)(i.h3,{id:"app-data.folder-folder",children:(0,n.jsx)(i.code,{children:"folder::Folder"})}),"\n",(0,n.jsx)(i.p,{children:"Properties:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"cwd"})," - The current working directory of this folder, which is a ",(0,n.jsx)(i.a,{href:"#shared.url",children:"Url"})]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"offset"})," - The offset of this folder, which is an integer"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"cursor"})," - The cursor position of this folder, which is an integer"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"window"})," - A table of ",(0,n.jsx)(i.a,{href:"#shared.file",children:"File"})," in the visible area of this folder"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"files"})," - The ",(0,n.jsx)(i.a,{href:"#app-data.folder-files",children:(0,n.jsx)(i.code,{children:"folder::Files"})})," of this folder"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"hovered"})," - The hovered ",(0,n.jsx)(i.a,{href:"#shared.file",children:"File"})," of this folder, or ",(0,n.jsx)(i.code,{children:"nil"})," if there is no hovered file"]}),"\n"]}),"\n",(0,n.jsx)(i.h3,{id:"app-data.folder-files",children:(0,n.jsx)(i.code,{children:"folder::Files"})}),"\n",(0,n.jsx)(i.p,{children:"Meta methods:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsx)(i.li,{children:(0,n.jsx)(i.code,{children:"__len()"})}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"__pairs()"})," - Iterate over the ",(0,n.jsx)(i.a,{href:"#shared.file",children:"File"}),"s."]}),"\n"]}),"\n",(0,n.jsx)(i.h3,{id:"app-data.folder-file",children:(0,n.jsx)(i.code,{children:"folder::File"})}),"\n",(0,n.jsxs)(i.p,{children:["Based on ",(0,n.jsx)(i.a,{href:"#shared.file",children:"File"}),", with the following additional methods:"]}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"size()"})," - The size of this file, returns an integer representing the size in bytes, or ",(0,n.jsx)(i.code,{children:"nil"})," if its a directory and it has not been evaluated"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"mime()"})," - The mime-type of this file, which is a string, or ",(0,n.jsx)(i.code,{children:"nil"})," if it's a directory or hasn't been lazily calculated at all"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"prefix()"})," - The prefix of this file relative to ",(0,n.jsx)(i.code,{children:"CWD"}),", which used in the flat view during search. For instance, if ",(0,n.jsx)(i.code,{children:"CWD"})," is ",(0,n.jsx)(i.code,{children:"/foo"}),", and the file is ",(0,n.jsx)(i.code,{children:"/foo/bar/baz"}),", then the prefix is ",(0,n.jsx)(i.code,{children:"bar/"})]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"icon()"})," - The ",(0,n.jsx)(i.a,{href:"#shared.icon",children:"Icon"})," of this file, ",(0,n.jsx)(i.a,{href:"/docs/configuration/theme#icon",children:(0,n.jsx)(i.code,{children:"[icon]"})})," rules are applied; if no rule matches, returns ",(0,n.jsx)(i.code,{children:"nil"})]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"style()"})," - The ",(0,n.jsx)(i.a,{href:"/docs/plugins/layout#style",children:"Style"})," of this file, ",(0,n.jsx)(i.a,{href:"/docs/configuration/theme#filetype",children:(0,n.jsx)(i.code,{children:"[filetype]"})})," rules are applied; if no rule matches, returns ",(0,n.jsx)(i.code,{children:"nil"})]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"is_hovered()"})," - Whether this file is hovered"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"is_yanked()"})," - Whether this file is yanked"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"is_selected()"})," - Whether this file is selected"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"found()"})," - When users find a file using the ",(0,n.jsx)(i.code,{children:"find"})," command, the status of the file - returns ",(0,n.jsx)(i.code,{children:"nil"})," if it doesn't match the user's find keyword; otherwise, returns ",(0,n.jsx)(i.code,{children:"{idx, all}"}),", where ",(0,n.jsx)(i.code,{children:"idx"})," is the position of matched file, and ",(0,n.jsx)(i.code,{children:"all"})," represents the number of all matched files."]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"highlights()"})," - TODO"]}),"\n"]}),"\n",(0,n.jsx)(i.h3,{id:"app-data.manager-tabs",children:(0,n.jsx)(i.code,{children:"manager::Tabs"})}),"\n",(0,n.jsx)(i.p,{children:"Properties:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"idx"})," - The index of the active tab"]}),"\n"]}),"\n",(0,n.jsx)(i.p,{children:"Meta methods:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsx)(i.li,{children:(0,n.jsx)(i.code,{children:"__len()"})}),"\n",(0,n.jsx)(i.li,{children:(0,n.jsx)(i.code,{children:"__index(idx)"})}),"\n"]}),"\n",(0,n.jsx)(i.h3,{id:"app-data.tab-tab",children:(0,n.jsx)(i.code,{children:"tab::Tab"})}),"\n",(0,n.jsx)(i.p,{children:"Properties:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"mode"})," - The ",(0,n.jsx)(i.a,{href:"#app-data.tab-mode",children:"tab::Mode"})," of this tab."]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"conf"})," - The ",(0,n.jsx)(i.a,{href:"#app-data.tab-config",children:"tab::Config"})," of this tab."]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"current"})," - The current folder within this tab, which is a ",(0,n.jsx)(i.a,{href:"#app-data.folder-folder",children:"folder::Folder"}),"."]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"parent"})," - The parent folder within this tab, which is a ",(0,n.jsx)(i.a,{href:"#app-data.folder-folder",children:"folder::Folder"})," if ",(0,n.jsx)(i.code,{children:"current"})," has a parent; otherwise, ",(0,n.jsx)(i.code,{children:"nil"}),"."]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"selected"})," - The selected files within this tab, which is a ",(0,n.jsx)(i.a,{href:"#app-data.tab-selected",children:"tab::Selected"}),"."]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"preview"})," - The ",(0,n.jsx)(i.a,{href:"#app-data.tab-preview",children:"tab::Preview"})," within this tab."]}),"\n"]}),"\n",(0,n.jsx)(i.p,{children:"Methods:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"name()"})," - The name of this tab"]}),"\n"]}),"\n",(0,n.jsx)(i.h3,{id:"app-data.tasks-tasks",children:(0,n.jsx)(i.code,{children:"tasks::Tasks"})}),"\n",(0,n.jsx)(i.p,{children:"Properties:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:["\n",(0,n.jsxs)(i.p,{children:[(0,n.jsx)(i.code,{children:"progress"})," - The progress of all tasks, which is a table:"]}),"\n",(0,n.jsx)(i.pre,{children:(0,n.jsx)(i.code,{className:"language-lua",children:"{\n\t-- Number of tasks\n\ttotal = 0,\n\tsucc = 0,\n\tfail = 0,\n\n\t-- Workload of tasks\n\tfound = 0,\n\tprocessed = 0,\n}\n"})}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(i.h3,{id:"app-data.manager-yanked",children:(0,n.jsx)(i.code,{children:"manager::Yanked"})}),"\n",(0,n.jsx)(i.pre,{children:(0,n.jsx)(i.code,{className:"language-lua",children:"for idx, url in pairs(cx.yanked) do\n\t-- ...\nend\n"})}),"\n",(0,n.jsx)(i.p,{children:"Meta methods:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsx)(i.li,{children:(0,n.jsx)(i.code,{children:"__len()"})}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"__pairs()"})," - Iterate over the yanked ",(0,n.jsx)(i.a,{href:"#shared.url",children:"Url"}),"s."]}),"\n"]}),"\n",(0,n.jsx)(i.p,{children:"Properties:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"is_cut"})," - Whether the yanked urls are cut."]}),"\n"]})]})}function o(e={}){const{wrapper:i}={...(0,d.a)(),...e.components};return i?(0,n.jsx)(i,{...e,children:(0,n.jsx)(a,{...e})}):a(e)}},6225:(e,i,s)=>{s.d(i,{Z:()=>h,a:()=>r});var n=s(959);const d={},l=n.createContext(d);function r(e){const i=n.useContext(l);return n.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function h(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(d):e.components||d:r(e.components),n.createElement(l.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/36994c47.88b4b68e.js b/assets/js/36994c47.88b4b68e.js new file mode 100644 index 000000000..12ed9fadc --- /dev/null +++ b/assets/js/36994c47.88b4b68e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[208],{4468:e=>{e.exports=JSON.parse('{"name":"docusaurus-plugin-content-blog","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/3b25d5a1.f3928c24.js b/assets/js/3b25d5a1.f3928c24.js new file mode 100644 index 000000000..9f40b9cbe --- /dev/null +++ b/assets/js/3b25d5a1.f3928c24.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[826],{7038:(e,i,s)=>{s.r(i),s.d(i,{assets:()=>l,contentTitle:()=>r,default:()=>d,frontMatter:()=>a,metadata:()=>o,toc:()=>h});var n=s(1527),t=s(6225);const a={slug:"why-is-yazi-fast",title:"Why is Yazi fast?",authors:["sxyazi"]},r=void 0,o={permalink:"/blog/why-is-yazi-fast",editUrl:"https://github.com/yazi-rs/yazi-rs.github.io/edit/main/blog/2023-10-29-why-is-yazi-fast.md",source:"@site/blog/2023-10-29-why-is-yazi-fast.md",title:"Why is Yazi fast?",description:"This article assumes that you have already used Yazi and are familiar with most of its features.",date:"2023-10-29T00:00:00.000Z",tags:[],readingTime:6.545,hasTruncateMarker:!1,authors:[{name:"\u4e09\u54b2\u96c5 \xb7 Misaki Masa",title:"Creator of Yazi",url:"https://github.com/sxyazi",imageURL:"https://github.com/sxyazi.png",key:"sxyazi"}],frontMatter:{slug:"why-is-yazi-fast",title:"Why is Yazi fast?",authors:["sxyazi"]},unlisted:!1},l={authorsImageUrls:[void 0]},h=[{value:"Tokio",id:"tokio",level:2},{value:"Pre-Loading",id:"pre-loading",level:2},{value:"Discardable Tasks",id:"discardable-tasks",level:2},{value:"Code Highlighting",id:"code-highlighting",level:2},{value:"Image Preview",id:"image-preview",level:2},{value:"Async Task Scheduling",id:"async-task-scheduling",level:2},{value:"Other optimizations",id:"other-optimizations",level:2},{value:"TODO",id:"todo",level:2}];function c(e){const i={a:"a",code:"code",em:"em",h2:"h2",li:"li",p:"p",ul:"ul",...(0,t.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(i.p,{children:"This article assumes that you have already used Yazi and are familiar with most of its features."}),"\n",(0,n.jsx)(i.p,{children:"Yazi has undergone significant optimizations to enhance user experience. It is designed entirely as an async program, handling all time-consuming tasks (I/O and CPU) as async tasks in a non-blocking, event-driven manner."}),"\n",(0,n.jsx)(i.h2,{id:"tokio",children:"Tokio"}),"\n",(0,n.jsx)(i.p,{children:'Internally, Yazi uses Tokio as its async runtime: hold on! Tokio\'s async may not be "truly async" as you might perceive it!'}),"\n",(0,n.jsx)(i.p,{children:"Uh, okay. From an application-layer perspective, it indeed is async; however, from a system-level view, there are possibly better solutions."}),"\n",(0,n.jsxs)(i.p,{children:["But! This is not the current performance bottleneck for Yazi. Considering Yazi is a TUI app, unlike CLI programs like ",(0,n.jsx)(i.code,{children:"ls"})," and ",(0,n.jsx)(i.code,{children:"eza"})," that need to output all files immediately, Yazi has more optimization opportunities at the application-layer:"]}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:["For large directories (e.g., 100,000 files), Yazi uses ",(0,n.jsx)(i.a,{href:"https://github.com/sxyazi/yazi/pull/117",children:"chunked loading"}),", which is unmatched by ",(0,n.jsx)(i.code,{children:"ls"})," and ",(0,n.jsx)(i.code,{children:"eza"})," since they must load everything at once."]}),"\n",(0,n.jsxs)(i.li,{children:["Yazi also preloads directory file lists in the background, an optimization that ",(0,n.jsx)(i.code,{children:"ls"})," and ",(0,n.jsx)(i.code,{children:"eza"})," do not possess."]}),"\n"]}),"\n",(0,n.jsx)(i.p,{children:"I must express my gratitude to Tokio for providing an excellent and convenient way to realize these application-layer optimizations."}),"\n",(0,n.jsxs)(i.p,{children:["I believe that the benefits brought by these application-level optimizations are more noticeable compared to switching to solutions like ",(0,n.jsx)(i.code,{children:"io_uring"}),". But I'm open to this and welcome any constructive PR."]}),"\n",(0,n.jsxs)(i.p,{children:["Here is a relevant discussion on Reddit: ",(0,n.jsx)(i.a,{href:"https://www.reddit.com/r/rust/comments/16fxr58/comment/k066gmh/",children:"https://www.reddit.com/r/rust/comments/16fxr58/comment/k066gmh/"})]}),"\n",(0,n.jsx)(i.h2,{id:"pre-loading",children:"Pre-Loading"}),"\n",(0,n.jsx)(i.p,{children:"Preloaders are part of Yazi's concurrent plugin system, and the entire pre-loading process is asynchronous and spans multiple threads. This means that preloaders can handle not only expensive IO tasks but also CPU-bound tasks! Here are some built-in preloaders in Yazi:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:["Mimetype: The baseline. Yazi uses the file's mime-type as a reference for tasks such as opening, previewing, and style rendering, and internally utilizes ",(0,n.jsx)(i.code,{children:"file(1)"})," to obtain the file's mime-type. For better performance, Yazi computes them for files of an entire page, rather than for each file individually, and the entire process is chunked to minimize response latency."]}),"\n",(0,n.jsx)(i.li,{children:"Image: To accelerate image previews, Yazi uses a 2-pass process for image files. The first pass is preprocessing, which downscales the image based on user-set max_width/max_height and generates a compressed lossy image as a cache file, significantly reducing file size. The second pass occurs when the user actually switches to the file and downscales it again to fit the terminal size."}),"\n",(0,n.jsx)(i.li,{children:"Video: To speed up video previews, Yazi pre-converts them into images and goes through the first pass of image processing. When the user needs to display the video, it goes the same second pass."}),"\n",(0,n.jsx)(i.li,{children:"PDF: Similar to video."}),"\n",(0,n.jsx)(i.li,{children:"Directory size: Yazi lazily calculates the directory size only when the user sets sorting by file size, as it's a time-consuming operation."}),"\n"]}),"\n",(0,n.jsx)(i.p,{children:"Note: Except for size, all of these are paged, meaning that when you are on the first page, only the first few files will be pre-loaded."}),"\n",(0,n.jsx)(i.p,{children:"For example, if your directory has 1000 files, your terminal height is 10, and you are on the second page, only files 11 to 20 will be processed. This greatly saves resources."}),"\n",(0,n.jsx)(i.h2,{id:"discardable-tasks",children:"Discardable Tasks"}),"\n",(0,n.jsx)(i.p,{children:"Every preview task is discardable. When you navigate between files quickly and the previous file's triggered preview task is still not finished, it will be discarded directly, initiating a new task. This promotes resource utilization:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:["For I/O tasks like loading directory lists, Tokio's ",(0,n.jsx)(i.code,{children:"abort"})," is used;"]}),"\n",(0,n.jsxs)(i.li,{children:["For CPU tasks like code highlighting, an ",(0,n.jsx)(i.code,{children:"Atomic"})," is used to store a ",(0,n.jsx)(i.code,{children:"ticket"}),", and it checks if the value changes on each line code highlight. If it changes, indicates that the current context has changed, and the entire highlighting task is discarded."]}),"\n",(0,n.jsx)(i.li,{children:"For I/O and CPU tasks like previewer/preloader plugins, with Lua, Yazi can check whether these tasks are canceled when a specific number of CPU instructions. If canceled, it interrupts the execution of the Lua script immediately, avoiding wasting more I/O and CPU resources."}),"\n"]}),"\n",(0,n.jsx)(i.h2,{id:"code-highlighting",children:"Code Highlighting"}),"\n",(0,n.jsx)(i.p,{children:"Yazi has built-in code highlighting and keeps it to a minimum for all text files: if your terminal height is 10, only the first 10 lines of the file are read and highlighted."}),"\n",(0,n.jsxs)(i.p,{children:["Other file managers that rely on external programs like ",(0,n.jsx)(i.code,{children:"bat"})," need to wait for ",(0,n.jsx)(i.code,{children:"bat"})," to finish highlighting the ",(0,n.jsx)(i.em,{children:"entire file"})," before displaying only the first 10 lines."]}),"\n",(0,n.jsxs)(i.p,{children:["In cases like JSON that require external program ",(0,n.jsx)(i.code,{children:"jq"}),", Yazi kills ",(0,n.jsx)(i.code,{children:"jq"})," directly after reading the first 10 lines to avoid unnecessary resource consumption."]}),"\n",(0,n.jsx)(i.p,{children:"Since code highlighting is a CPU-bound task, it is distributed among multiple blocking threads, managed through Tokio's spawn_blocking, and is also discardable."}),"\n",(0,n.jsx)(i.h2,{id:"image-preview",children:"Image Preview"}),"\n",(0,n.jsx)(i.p,{children:"Yazi not only has built-in code highlighting but also includes image decoding and downscaling - there is likely nothing faster than having it directly built-in. It is also distributed among multiple threads and is discardable."}),"\n",(0,n.jsx)(i.p,{children:"Besides being fast, Yazi's built-in Kitty graphics protocol, Inline images protocol, and Sixel graphics format allow Yazi to finely control when to display or hide images."}),"\n",(0,n.jsxs)(i.p,{children:["This ensures that in Yazi, there won't be issues, like images stacking on top of each other, or image escape code breaking the entire screen, when navigating through images quickly, as ",(0,n.jsx)(i.code,{children:"stdout"})," is locked while outputting these escape codes. This locking happens after all image data is prepared, so it has no impact on performance."]}),"\n",(0,n.jsx)(i.p,{children:"Yazi even supports partially erasing content in preview images, which is useful for pop-up components (Input, Select). The image won't overlap the input, and when the pop-up disappears, Yazi redraws the image to complete the erased portion automatically."}),"\n",(0,n.jsx)(i.h2,{id:"async-task-scheduling",children:"Async Task Scheduling"}),"\n",(0,n.jsx)(i.p,{children:"In Yazi, tasks are prioritized based on their severity automatically. Yazi categorizes tasks into two types:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsx)(i.li,{children:"Macro tasks: Large and heavy tasks, such as copying large files, typically taking a long time to complete."}),"\n",(0,n.jsx)(i.li,{children:"Micro tasks: Small and urgent tasks, such as fetching file mime-type, pre-loading images, calculating directory size, and so on."}),"\n"]}),"\n",(0,n.jsx)(i.p,{children:"This is similar to having big and small cores in a CPU; when the big cores are idle, they help with the micro tasks. Yazi defaults to starting 5 micro workers and 10 macro workers, and these numbers can be configured by the user!"}),"\n",(0,n.jsx)(i.p,{children:"In addition, Yazi introduces a priority scheduling mechanism. Each task has 3 priority levels: low, normal, and high. High-priority tasks can preempt low-priority tasks, applying to both micro and macro tasks. This increases task concurrency, slowing down HOL blocking caused by queuing execution of sudden requests."}),"\n",(0,n.jsx)(i.p,{children:"For complex tasks like file copying, a combination of micro and macro approaches is employed. Micro is used to gather a list of all files to be copied recursively, allowing users to see the number of tasks and their sizes in advance. Macro, on the other hand, handles the actual copying process."}),"\n",(0,n.jsx)(i.p,{children:"The advantage of task scheduling extends beyond providing ample concurrency for I/O and CPU resources; it also indirectly mitigates the depletion of system resources (such as file handles and CPU) due to sudden task surges."}),"\n",(0,n.jsx)(i.h2,{id:"other-optimizations",children:"Other optimizations"}),"\n",(0,n.jsx)(i.p,{children:"The above optimizations are the most noticeable to users, but behind the scenes, Yazi has also done many other optimizations. Include but are not limited to:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:["The re-implemented highly optimized natural sorting algorithm is ",(0,n.jsxs)(i.a,{href:"https://github.com/sxyazi/yazi/pull/237",children:["~6 times faster than the ",(0,n.jsx)(i.code,{children:"natord"})]})," that ",(0,n.jsx)(i.code,{children:"eza"})," uses in case-insensitive sorting."]}),"\n",(0,n.jsx)(i.li,{children:"Yazi caches the directory state that has already been read, avoiding any unnecessary IO operations."}),"\n",(0,n.jsx)(i.li,{children:"When a file in a directory changes, it only updates the changed files rather than re-reading the entire directory list."}),"\n",(0,n.jsx)(i.li,{children:"Merges multiple renders triggered by multiple commands into a single render, avoiding unnecessary CPU consumption."}),"\n",(0,n.jsx)(i.li,{children:"Frequent updates to components, such as progress bars, are rendered independently, which is no cost compared to a complete render."}),"\n",(0,n.jsx)(i.li,{children:"The entire plugin system is designed with an asynchronous-first philosophy to avoid blocking the main thread with time-consuming tasks."}),"\n"]}),"\n",(0,n.jsx)(i.h2,{id:"todo",children:"TODO"}),"\n",(0,n.jsx)(i.p,{children:"I'll find time to continue writing."})]})}function d(e={}){const{wrapper:i}={...(0,t.a)(),...e.components};return i?(0,n.jsx)(i,{...e,children:(0,n.jsx)(c,{...e})}):c(e)}},6225:(e,i,s)=>{s.d(i,{Z:()=>o,a:()=>r});var n=s(959);const t={},a=n.createContext(t);function r(e){const i=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function o(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),n.createElement(a.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3b8c55ea.fbd0558a.js b/assets/js/3b8c55ea.fbd0558a.js new file mode 100644 index 000000000..6718de9d8 --- /dev/null +++ b/assets/js/3b8c55ea.fbd0558a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[217],{6867:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>o,contentTitle:()=>l,default:()=>d,frontMatter:()=>a,metadata:()=>r,toc:()=>c});var s=n(1527),t=n(6225);const a={sidebar_position:1,description:"How to install Yazi on various operating systems."},l="Installation",r={id:"installation",title:"Installation",description:"How to install Yazi on various operating systems.",source:"@site/docs/installation.md",sourceDirName:".",slug:"/installation",permalink:"/docs/installation",draft:!1,unlisted:!1,editUrl:"https://github.com/yazi-rs/yazi-rs.github.io/edit/main/docs/installation.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1,description:"How to install Yazi on various operating systems."},sidebar:"docsSidebar",next:{title:"Quick Start",permalink:"/docs/quick-start"}},o={},c=[{value:"Packaging status",id:"packaging-status",level:2},{value:"Arch Linux",id:"arch-linux",level:2},{value:"Nix",id:"nix",level:2},{value:"Nix flakes",id:"nix-flakes",level:2},{value:"Cache",id:"cache",level:3},{value:"Homebrew",id:"homebrew",level:2},{value:"MacPorts",id:"macports",level:2},{value:"NetBSD",id:"netbsd",level:2},{value:"Windows",id:"windows",level:2},{value:"Requirements",id:"requirements",level:3},{value:"Installation",id:"installation-1",level:3},{value:"AOSC OS",id:"aosc-os",level:2},{value:"Official binaries",id:"official-binaries",level:2},{value:"Cargo",id:"cargo",level:2},{value:"Build from source",id:"build-from-source",level:2}];function h(e){const i={a:"a",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.h1,{id:"installation",children:"Installation"}),"\n",(0,s.jsx)(i.p,{children:"To use Yazi, you must have the following prerequisites installed:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/file/file",children:(0,s.jsx)(i.code,{children:"file"})})," (for file type detection)"]}),"\n"]}),"\n",(0,s.jsxs)(i.p,{children:["Yazi can be ",(0,s.jsx)(i.strong,{children:"optionally"})," extended with other command line tools to enable additional features."]}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://www.nerdfonts.com/",children:"nerd-fonts"})," (",(0,s.jsx)(i.a,{href:"/docs/faq#dont-like-nerd-fonts",children:(0,s.jsx)(i.em,{children:"recommended"})}),")"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/dirkvdb/ffmpegthumbnailer",children:(0,s.jsx)(i.code,{children:"ffmpegthumbnailer"})})," (for video thumbnails)"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://theunarchiver.com/command-line",children:(0,s.jsx)(i.code,{children:"unar"})})," (for archive preview)"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://jqlang.github.io/jq/",children:(0,s.jsx)(i.code,{children:"jq"})})," (for JSON preview)"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://poppler.freedesktop.org/",children:(0,s.jsx)(i.code,{children:"poppler"})})," (for PDF preview)"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/sharkdp/fd",children:(0,s.jsx)(i.code,{children:"fd"})})," (for file searching)"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/BurntSushi/ripgrep",children:(0,s.jsx)(i.code,{children:"rg"})})," (for file content searching)"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/junegunn/fzf",children:(0,s.jsx)(i.code,{children:"fzf"})})," (for quick file subtree navigation)"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/ajeetdsouza/zoxide",children:(0,s.jsx)(i.code,{children:"zoxide"})})," (for historical directories navigation)"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/astrand/xclip",children:(0,s.jsx)(i.code,{children:"xclip"})})," / ",(0,s.jsx)(i.a,{href:"https://github.com/bugaevc/wl-clipboard",children:(0,s.jsx)(i.code,{children:"wl-clipboard"})})," / ",(0,s.jsx)(i.a,{href:"https://github.com/kfish/xsel",children:(0,s.jsx)(i.code,{children:"xsel"})})," (for system clipboard support)"]}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"If the functions are not working properly, please try upgrading them to the latest version."}),"\n",(0,s.jsx)(i.h2,{id:"packaging-status",children:"Packaging status"}),"\n",(0,s.jsxs)(i.p,{children:["Most packages on this page are maintained by the community, and they ",(0,s.jsx)(i.strong,{children:(0,s.jsx)(i.em,{children:"may not always be the latest"})}),". Please check their versions before installation:"]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.a,{href:"https://repology.org/project/yazi/versions",children:(0,s.jsx)(i.img,{src:"https://repology.org/badge/vertical-allrepos/yazi.svg",alt:"Packaging status"})})}),"\n",(0,s.jsx)(i.h2,{id:"arch-linux",children:"Arch Linux"}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-sh",children:"sudo pacman -S yazi ffmpegthumbnailer unarchiver jq poppler fd ripgrep fzf zoxide\n"})}),"\n",(0,s.jsxs)(i.p,{children:["If you want to use the latest Git version, you can install it from ",(0,s.jsx)(i.a,{href:"https://aur.archlinux.org/packages/yazi-git/",children:"AUR"})," or ",(0,s.jsx)(i.a,{href:"https://github.com/archlinuxcn/repo/",children:"Arch Linux CN"}),":"]}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-sh",children:"paru -S yazi-git ffmpegthumbnailer unarchiver jq poppler fd ripgrep fzf zoxide\n"})}),"\n",(0,s.jsx)(i.h2,{id:"nix",children:"Nix"}),"\n",(0,s.jsxs)(i.p,{children:["A ",(0,s.jsx)(i.a,{href:"https://search.nixos.org/packages?channel=unstable&show=yazi",children:"Nix package"})," for Yazi is available."]}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-sh",children:"# NixOS:\nnix-env -iA nixos.yazi\n\n# Not NixOS:\nnix-env -iA nixpkgs.yazi\n"})}),"\n",(0,s.jsx)(i.p,{children:"Or add the following to your configuration:"}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-nix",children:"# configuration.nix\nenvironment.systemPackages = with pkgs; [\n\tyazi\n];\n"})}),"\n",(0,s.jsxs)(i.p,{children:["You can also manage Yazi's configuration using ",(0,s.jsx)(i.a,{href:"https://nix-community.github.io/home-manager/options.xhtml#opt-programs.yazi.enable",children:"home-manager"}),"."]}),"\n",(0,s.jsx)(i.h2,{id:"nix-flakes",children:"Nix flakes"}),"\n",(0,s.jsxs)(i.p,{children:["The upstream repository provides a flake so that Nix users can easily keep up with the bleeding edge. A basic ",(0,s.jsx)(i.code,{children:"flake.nix"})," setup to get you started:"]}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-nix",children:'{\n\tinputs = {\n\t\tnixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11";\n\n\t\thome-manager = {\n\t\t\turl = "github:nix-community/home-manager/release-23.11";\n\t\t\tinputs.nixpkgs.follows = "nixpkgs";\n\t\t};\n\n\t\tyazi.url = "github:sxyazi/yazi";\n\t};\n\n\toutputs = { nixpkgs, home-manager, yazi, ... }: {\n\t\t# To install Yazi system-wide:\n\t\tnixosConfigurations = {\n\t\t\tnixos = nixpkgs.lib.nixosSystem {\n\t\t\t\tmodules = [\n\t\t\t\t\t({ pkgs, ... }: {\n\t\t\t\t\t\tenvironment.systemPackages = [ yazi.packages.${pkgs.system}.default ];\n\t\t\t\t\t})\n\t\t\t\t];\n\t\t\t};\n\t\t};\n\n\t\t# To install it for a specific user:\n\t\thomeConfigurations = {\n\t\t\t"alice@nixos" = home-manager.lib.homeManagerConfiguration {\n\t\t\t\tpkgs = nixpkgs.legacyPackages.x86_64-linux;\n\t\t\t\tmodules = [\n\t\t\t\t\t({ pkgs, ... }: {\n\t\t\t\t\t\thome.packages = [ yazi.packages.${pkgs.system}.default ];\n\t\t\t\t\t})\n\t\t\t\t];\n\t\t\t};\n\t\t};\n\t};\n}\n'})}),"\n",(0,s.jsx)(i.p,{children:"If you want to override the package inside nixpkgs with the one from the flake, you can use overlays:"}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-nix",children:"nixpkgs.overlays = [ yazi.overlays.default ];\n"})}),"\n",(0,s.jsx)(i.p,{children:"A module is also available for both NixOS and home-manager:"}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-nix",children:"programs.yazi = {\n\tenable = true;\n\tpackage = yazi.packages.${pkgs.system}.default; # if you use overlays, you can omit this\n};\n"})}),"\n",(0,s.jsx)(i.h3,{id:"cache",children:"Cache"}),"\n",(0,s.jsxs)(i.p,{children:["Pre-built artifacts are served at ",(0,s.jsx)(i.a,{href:"https://yazi.cachix.org",children:"https://yazi.cachix.org"}),", so that Nix users don't have to build Yazi on their machine.\nYou can make use of it by adding the following options to ",(0,s.jsx)(i.code,{children:"nix.settings"}),", either in your NixOS or home-manager configuration:"]}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-nix",children:'extra-substituters = [ "https://yazi.cachix.org" ];\nextra-trusted-public-keys = [ "yazi.cachix.org-1:Dcdz63NZKfvUCbDGngQDAZq6kOroIrFoyO064uvLh8k=" ];\n'})}),"\n",(0,s.jsxs)(i.p,{children:["Note that the cache will only be applied ",(0,s.jsx)(i.em,{children:"after"})," you rebuild your Nix config. If you want to ensure that the cache gets applied right away, add the options above to your flake's ",(0,s.jsx)(i.code,{children:"nixConfig"})," attribute."]}),"\n",(0,s.jsxs)(i.p,{children:["If you're having any problems, refer to this ",(0,s.jsx)(i.a,{href:"https://docs.cachix.org/faq#why-is-nix-not-picking-up-on-any-of-the-pre-built-artifacts",children:"entry"})," from Cachix's FAQ."]}),"\n",(0,s.jsx)(i.h2,{id:"homebrew",children:"Homebrew"}),"\n",(0,s.jsxs)(i.p,{children:["First, make sure that Homebrew is fully up-to-date with ",(0,s.jsx)(i.code,{children:"brew update"}),"."]}),"\n",(0,s.jsx)(i.p,{children:"Then you can install Yazi (and the optional dependencies):"}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-sh",children:"brew install yazi ffmpegthumbnailer unar jq poppler fd ripgrep fzf zoxide font-symbols-only-nerd-font\n"})}),"\n",(0,s.jsxs)(i.p,{children:["If you prefer to use the most recent code, use the ",(0,s.jsx)(i.code,{children:"--HEAD"})," flag when installing Yazi."]}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-sh",children:"brew install yazi --HEAD\n"})}),"\n",(0,s.jsx)(i.h2,{id:"macports",children:"MacPorts"}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-bash",children:"sudo port install yazi ffmpegthumbnailer unar jq poppler fd ripgrep fzf zoxide\n"})}),"\n",(0,s.jsx)(i.h2,{id:"netbsd",children:"NetBSD"}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-sh",children:"pkgin install yazi\n"})}),"\n",(0,s.jsx)(i.h2,{id:"windows",children:"Windows"}),"\n",(0,s.jsx)(i.p,{children:"Windows has been supported since Yazi v0.1.4, but it's still in the early stage, so please file an issue if you encounter any bugs."}),"\n",(0,s.jsx)(i.h3,{id:"requirements",children:"Requirements"}),"\n",(0,s.jsxs)(i.p,{children:["Yazi relies on ",(0,s.jsx)(i.code,{children:"file(1)"})," to detect the mime-type of the file, and the easiest and most reliable way to get it on Windows is to install Git for Windows and use the ",(0,s.jsx)(i.code,{children:"file.exe"})," that comes with it."]}),"\n",(0,s.jsxs)(i.ol,{children:["\n",(0,s.jsxs)(i.li,{children:["Install Git for Windows by running ",(0,s.jsx)(i.a,{href:"https://git-scm.com/download/win",children:"the official installer"}),", or through your package manager of choice."]}),"\n",(0,s.jsxs)(i.li,{children:["To allow Yazi to find it, add ",(0,s.jsx)(i.code,{children:"\\usr\\bin\\file.exe"})," to your ",(0,s.jsx)(i.code,{children:"YAZI_FILE_ONE"})," environment variable, which differs depending on how you installed Git:","\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:["If you installed Git with the installer, it would be ",(0,s.jsx)(i.code,{children:"C:\\Program Files\\Git\\usr\\bin\\file.exe"}),"."]}),"\n",(0,s.jsxs)(i.li,{children:["If you installed Git with Scoop, it would be ",(0,s.jsx)(i.code,{children:"C:\\Users\\\\scoop\\apps\\git\\current\\usr\\bin\\file.exe"}),"."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(i.li,{children:"Restart your terminal."}),"\n"]}),"\n",(0,s.jsxs)(i.p,{children:["This is ",(0,s.jsx)(i.strong,{children:"the ONLY way we recommend"}),". We do not recommend install ",(0,s.jsx)(i.code,{children:"file"})," via Scoop or Chocolatey, since they cannot handle Unicode filenames (such as ",(0,s.jsx)(i.code,{children:"oliver-sjo\u0308stro\u0308m.jpg"}),") properly and lack some required parameters."]}),"\n",(0,s.jsx)(i.h3,{id:"installation-1",children:"Installation"}),"\n",(0,s.jsxs)(i.p,{children:["You can download the latest official binaries from ",(0,s.jsx)(i.a,{href:"https://github.com/sxyazi/yazi/releases",children:"GitHub Releases"}),", or install Yazi with ",(0,s.jsx)(i.a,{href:"https://scoop.sh/",children:"Scoop"}),":"]}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-sh",children:"scoop install yazi\n# Install the optional dependencies (recommended):\nscoop install unar jq poppler fd ripgrep fzf zoxide\n"})}),"\n",(0,s.jsx)(i.h2,{id:"aosc-os",children:"AOSC OS"}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-sh",children:"sudo oma install yazi\n"})}),"\n",(0,s.jsx)(i.h2,{id:"official-binaries",children:"Official binaries"}),"\n",(0,s.jsxs)(i.p,{children:["You can download the latest official binaries from GitHub Releases: ",(0,s.jsx)(i.a,{href:"https://github.com/sxyazi/yazi/releases",children:"https://github.com/sxyazi/yazi/releases"})]}),"\n",(0,s.jsx)(i.p,{children:"On this page, we offer GNU/Musl builds to meet the needs of different users; we also provide a Snapcraft package, which Ubuntu/Debian users can use."}),"\n",(0,s.jsx)(i.h2,{id:"cargo",children:"Cargo"}),"\n",(0,s.jsx)(i.p,{children:"Setup the latest stable Rust toolchain:"}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-sh",children:"curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\nrustup update\n"})}),"\n",(0,s.jsx)(i.p,{children:"Now you can install Yazi from crates.io:"}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-sh",children:"cargo install --locked yazi-fm yazi-cli\n"})}),"\n",(0,s.jsx)(i.p,{children:"Or install the latest git version:"}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-sh",children:"cargo install --locked --git https://github.com/sxyazi/yazi.git yazi-fm yazi-cli\n"})}),"\n",(0,s.jsxs)(i.p,{children:["If it fails to build, please check if ",(0,s.jsx)(i.code,{children:"make"})," and ",(0,s.jsx)(i.code,{children:"gcc"})," is installed on your system."]}),"\n",(0,s.jsx)(i.h2,{id:"build-from-source",children:"Build from source"}),"\n",(0,s.jsx)(i.p,{children:"Setup the latest stable Rust toolchain:"}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-sh",children:"curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\nrustup update\n"})}),"\n",(0,s.jsx)(i.p,{children:"Clone the repository and build Yazi:"}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-sh",children:"git clone https://github.com/sxyazi/yazi.git\ncd yazi\ncargo build --release\n"})}),"\n",(0,s.jsx)(i.p,{children:"Then, you can run:"}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-sh",children:"./target/release/yazi\n"})}),"\n",(0,s.jsxs)(i.p,{children:["If it fails to build, please check if ",(0,s.jsx)(i.code,{children:"make"})," and ",(0,s.jsx)(i.code,{children:"gcc"})," is installed on your system."]})]})}function d(e={}){const{wrapper:i}={...(0,t.a)(),...e.components};return i?(0,s.jsx)(i,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},6225:(e,i,n)=>{n.d(i,{Z:()=>r,a:()=>l});var s=n(959);const t={},a=s.createContext(t);function l(e){const i=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function r(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),s.createElement(a.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3ec017a6.7d33f4af.js b/assets/js/3ec017a6.7d33f4af.js new file mode 100644 index 000000000..df5af9cb5 --- /dev/null +++ b/assets/js/3ec017a6.7d33f4af.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[40],{7390:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>x,frontMatter:()=>a,metadata:()=>d,toc:()=>h});var t=s(1527),r=s(6225),l=s(8449),i=s(2986);const a={sidebar_position:7,description:"Data Distribution Service"},o="DDS",d={id:"dds",title:"DDS",description:"Data Distribution Service",source:"@site/docs/dds.md",sourceDirName:".",slug:"/dds",permalink:"/docs/dds",draft:!1,unlisted:!1,editUrl:"https://github.com/yazi-rs/yazi-rs.github.io/edit/main/docs/dds.md",tags:[],version:"current",sidebarPosition:7,frontMatter:{sidebar_position:7,description:"Data Distribution Service"},sidebar:"docsSidebar",previous:{title:"Flavors (BETA)",permalink:"/docs/flavors/overview"},next:{title:"Tips",permalink:"/docs/tips"}},c={},h=[{value:"Concept",id:"concept",level:2},{value:"Usage",id:"usage",level:2},{value:"Command-line tool",id:"cli",level:3},{value:"Real-time stdout reporting",id:"stdout-reporting",level:3},{value:"Builtin kinds",id:"kinds",level:2},{value:"cd - change directory",id:"cd",level:3},{value:"hover - hover on a file",id:"hover",level:3},{value:"rename - rename a file",id:"rename",level:3},{value:"bulk - bulk rename files",id:"bulk",level:3},{value:"yank - yank files",id:"yank",level:3},{value:"move - move files",id:"move",level:3},{value:"trash - trash files",id:"trash",level:3},{value:"delete - delete files",id:"delete",level:3},{value:"hi - client handshake",id:"hi",level:3},{value:"hey - server handshake",id:"hey",level:3},{value:"bye",id:"bye",level:3},{value:"Builtin plugins",id:"plugins",level:2},{value:"dds.lua",id:"dds.lua",level:3},{value:"session.lua",id:"session.lua",level:3}];function u(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"dds",children:"DDS"}),"\n",(0,t.jsxs)(n.admonition,{type:"warning",children:[(0,t.jsx)(n.p,{children:"This is a new feature that will be released in Yazi 0.2.5 and currently requires the latest code."}),(0,t.jsx)(n.p,{children:"Document is still being written..."})]}),"\n",(0,t.jsx)(n.p,{children:"DDS (Data Distribution Service) is designed to achieve communication and state synchronization between multiple Yazi instances, as well as state persistence. It is built on a client-server architecture but does not require running additional server processes."}),"\n",(0,t.jsx)(n.p,{children:"It deeply integrates with a publish-subscribe model based on the Lua API."}),"\n",(0,t.jsx)(n.h2,{id:"concept",children:"Concept"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Local: the current instance, that is, the current Yazi process."}),"\n",(0,t.jsx)(n.li,{children:"Remote: instances other than the current instance."}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"usage",children:"Usage"}),"\n",(0,t.jsx)(n.p,{children:"The DDS has three usage:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"/docs/plugins/utils#ps",children:"Plugin API"}),": Using Lua-based publish-subscribe model as the carrier."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"#cli",children:"Command-line tool"}),": Using ",(0,t.jsx)(n.code,{children:"ya"})," command-line tool as the carrier."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsxs)(n.a,{href:"#stdout-reporting",children:["Real-time ",(0,t.jsx)(n.code,{children:"stdout"})," reporting"]}),": Using ",(0,t.jsx)(n.code,{children:"stdout"})," as the carrier."]}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"cli",children:"Command-line tool"}),"\n",(0,t.jsxs)(n.p,{children:["You can send a message to the remote instance(s) using ",(0,t.jsx)(n.code,{children:"ya pub"}),", with the two required ",(0,t.jsx)(n.code,{children:"receiver"})," and ",(0,t.jsx)(n.code,{children:"kind"})," arguments consistent with ",(0,t.jsx)(n.a,{href:"/docs/plugins/utils#ps.pub_to",children:(0,t.jsx)(n.code,{children:"ps.pub_to()"})}),":"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-sh",children:'ya pub --str "string body"\nya pub --json \'{"key": "json body"}\'\n\n# If you\'re in a Yazi subshell,\n# you can obtain the ID of the current instance through `$YAZI_ID`.\nya pub "$YAZI_ID" dds-cd --str "/root"\n'})}),"\n",(0,t.jsxs)(n.p,{children:["You can also send a static message to all remote instances using ",(0,t.jsx)(n.code,{children:"ya pub-static"}),", with its ",(0,t.jsx)(n.code,{children:"severity"})," and ",(0,t.jsx)(n.code,{children:"kind"})," arguments consistent with ",(0,t.jsx)(n.a,{href:"/docs/plugins/utils#ps.pub_static",children:(0,t.jsx)(n.code,{children:"ps.pub_static()"})}),":"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-sh",children:'ya pub-static --str "string body"\nya pub-static --json \'{"key": "json body"}\'\n'})}),"\n",(0,t.jsx)(n.p,{children:"For greater convenience in integrating within the command-line environment, they support two body formats:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"String: a straightforward format, suitable for most scenarios, without the need for additional tools for encoding"}),"\n",(0,t.jsx)(n.li,{children:"JSON: for advanced needs, support for types and more complex data can be represented through the JSON format"}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["Note that ",(0,t.jsx)(n.code,{children:"ya"})," is a standalone CLI program introduced since Yazi 0.2.5, it might conflict with the shell wrapper you setup before, see ",(0,t.jsx)(n.a,{href:"https://github.com/sxyazi/yazi/issues/914",children:"Introduce a standalone CLI program"})," for details."]}),"\n",(0,t.jsxs)(n.h3,{id:"stdout-reporting",children:["Real-time ",(0,t.jsx)(n.code,{children:"stdout"})," reporting"]}),"\n",(0,t.jsxs)(n.p,{children:["You can specify the ",(0,t.jsx)(n.code,{children:"--local-events"})," and ",(0,t.jsx)(n.code,{children:"--remote-events"})," options when starting Yazi:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-sh",children:"# Local events\nyazi --local-events=kind1,kind2\n# Remote events\nyazi --remote-events=kind1,kind2\n# Both local and remote events\nyazi --local-events=kind1,kind2 --remote-events=kind1,kind2\n"})}),"\n",(0,t.jsxs)(n.p,{children:["When an event of the specified kind is received, it will be output to ",(0,t.jsx)(n.code,{children:"stdout"}),":"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-sh",children:'hover,0,200,{"tab":0,"url":"/root/Downloads"}\ncd,0,100,{"tab":0,"url":"/root/Downloads"}\n'})}),"\n",(0,t.jsx)(n.p,{children:"One payload per line, each payload contains the following fields separated by commas:"}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Field"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"kind"}),(0,t.jsx)(n.td,{children:"The kind of this message"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"receiver"}),(0,t.jsxs)(n.td,{children:["The remote instance ID that receives this message; if it's ",(0,t.jsx)(n.code,{children:"0"}),", broadcasts to all remote instances"]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"sender / severity"}),(0,t.jsxs)(n.td,{children:["The sender of this message if greater than ",(0,t.jsx)(n.code,{children:"65535"}),"; otherwise, the severity of this ",(0,t.jsx)(n.a,{href:"/docs/plugins/utils#ps.pub_static",children:"static message"})]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"body"}),(0,t.jsx)(n.td,{children:"The body of this message, which is a JSON string"})]})]})]}),"\n",(0,t.jsx)(n.p,{children:"This provides the ability to report Yazi's internal events in real-time, which is useful for external tool integration (such as Neovim), as they will be able to subscribe to the events triggered by the user behavior."}),"\n",(0,t.jsx)(n.h2,{id:"kinds",children:"Builtin kinds"}),"\n",(0,t.jsxs)(n.h3,{id:"cd",children:[(0,t.jsx)(n.code,{children:"cd"})," - change directory"]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"sub()"})," callback body:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-lua",children:"{\n\ttab = 0\n}\n"})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"sub_remote()"})," callback body:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-lua",children:'{\n\ttab = 0,\n\turl = Url("/root/Downloads")\n}\n'})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"--local-events"})," stdout payload:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-sh",children:'cd,1711957542289249,1711957542289249,{"tab":0,"url":"/root/Downloads"}\n'})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"--remote-events"})," stdout payload:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-sh",children:'cd,0,100,{"tab":0,"url":"/root/Downloads"}\n'})}),"\n",(0,t.jsxs)(n.h3,{id:"hover",children:[(0,t.jsx)(n.code,{children:"hover"})," - hover on a file"]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"sub()"})," callback body:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-lua",children:"{\n\ttab = 0\n}\n"})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"sub_remote()"})," callback body:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-lua",children:'{\n\ttab = 0,\n\turl = Url("/root/foo.txt")\n}\n'})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"--local-events"})," stdout payload:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-sh",children:'hover,1711957283332834,1711957283332834,{"tab":0,"url":"/root/foo.txt"}\n'})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"--remote-events"})," stdout payload:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-sh",children:'hover,0,200,{"tab":0,"url":"/root/foo.txt"}\n'})}),"\n",(0,t.jsxs)(n.h3,{id:"rename",children:[(0,t.jsx)(n.code,{children:"rename"})," - rename a file"]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"sub()"})," / ",(0,t.jsx)(n.code,{children:"sub_remote()"})," callback body:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-lua",children:'{\n tab = 0,\n from = Url("/root/foo.txt"),\n to = Url("/root/bar.txt"),\n}\n'})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"--local-events"})," stdout payload:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-sh",children:'rename,1711957878076791,1711957878076791,{"tab":0,"from":"/root/foo.txt","to":"/root/bar.txt"}\n'})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"--remote-events"})," stdout payload:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-sh",children:'rename,0,1711957878076791,{"tab":0,"from":"/root/foo.txt","to":"/root/bar.txt"}\n'})}),"\n",(0,t.jsxs)(n.h3,{id:"bulk",children:[(0,t.jsx)(n.code,{children:"bulk"})," - bulk rename files"]}),"\n",(0,t.jsx)(n.admonition,{type:"note",children:(0,t.jsx)(n.p,{children:"This kind currently requires the nightly version of Yazi."})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"sub()"})," / ",(0,t.jsx)(n.code,{children:"sub_remote()"})," callback body:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-lua",children:'-- Since `Iterator` implementing `__pairs()`,\n-- you can iterate over all URL pairs using `pairs(body)`\nIterator {\n\t__len = function(self)\n\t\t-- Returns the number of files changed\n\tend,\n\t__pairs = function(self)\n\t\t-- Returns (Url("/path/from.txt"), Url("/path/to.txt"))\n\tend\n}\n'})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"--local-events"})," stdout payload:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-sh",children:'bulk,1711957542289249,1711957542289249,{"changes":{"/path/from.txt":"/path/to.txt"}}\n'})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"--remote-events"})," stdout payload:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-sh",children:'bulk,0,1711957542289249,{"changes":{"/path/from.txt":"/path/to.txt"}}\n'})}),"\n",(0,t.jsxs)(n.h3,{id:"yank",children:[(0,t.jsx)(n.code,{children:"yank"})," - yank files"]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"sub()"})," callback body:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-lua",children:"{}\n"})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"sub_remote()"})," callback body:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-lua",children:"-- Since `Iterator` implementing `__index()`, you can access the yanked URLs by index,\n-- such as `body[1]`, or iterate over all URLs using `ipairs(body)`\nIterator {\n\tcut = false,\n\t__len = function(self)\n\t\t-- Returns the number of URLs yanked\n\tend,\n\t__index = function(self, idx)\n\t\t-- Returns the URL at the given index\n\tend\n}\n"})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"--local-events"})," stdout payload:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-sh",children:'yank,1711960311454247,1711960311454247,{"cut":false,"urls":["/root/foo.txt","/root/bar.txt"]}\n'})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"--remote-events"})," stdout payload:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-sh",children:'yank,0,300,{"cut":false,"urls":["/root/foo.txt","/root/bar.txt"]}\n'})}),"\n",(0,t.jsxs)(n.h3,{id:"move",children:[(0,t.jsx)(n.code,{children:"move"})," - move files"]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"sub()"})," callback body:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-lua",children:'{\n\titems = {\n\t\t{ from = Url("/root/foo.txt"), to = Url("/root/bar.txt") },\n\t\t-- ...\n\t}\n}\n'})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"sub_remote()"})," callback body:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-lua",children:'{\n\titems = {\n\t\t{ from = Url("/root/foo.txt"), to = Url("/root/bar.txt") },\n\t\t-- ...\n\t}\n}\n'})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"--local-events"})," stdout payload:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-sh",children:'move,1711957542289249,1711957542289249,{"items":[{"from":"/root/foo.txt","to":"/root/bar.txt"}]}\n'})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"--remote-events"})," stdout payload:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-sh",children:'move,0,1711957542289249,{"items":[{"from":"/root/foo.txt","to":"/root/bar.txt"}]}\n'})}),"\n",(0,t.jsxs)(n.h3,{id:"trash",children:[(0,t.jsx)(n.code,{children:"trash"})," - trash files"]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"sub()"})," callback body:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-lua",children:'{\n\turls = {\n\t\tUrl("/root/foo.txt"),\n\t\t-- ...\n\t}\n}\n'})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"sub_remote()"})," callback body:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-lua",children:'{\n\turls = {\n\t\tUrl("/root/foo.txt"),\n\t\t-- ...\n\t}\n}\n'})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"--local-events"})," stdout payload:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-sh",children:'trash,1711957542289249,1711957542289249,{"urls":["/root/foo.txt"]}\n'})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"--remote-events"})," stdout payload:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-sh",children:'trash,0,1711957542289249,{"urls":["/root/foo.txt"]}\n'})}),"\n",(0,t.jsxs)(n.h3,{id:"delete",children:[(0,t.jsx)(n.code,{children:"delete"})," - delete files"]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"sub()"})," callback body:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-lua",children:'{\n\turls = {\n\t\tUrl("/root/foo.txt"),\n\t\t-- ...\n\t}\n}\n'})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"sub_remote()"})," callback body:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-lua",children:'{\n\turls = {\n\t\tUrl("/root/foo.txt"),\n\t\t-- ...\n\t}\n}\n'})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"--local-events"})," stdout payload:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-sh",children:'delete,1711957542289249,1711957542289249,{"urls":["/root/foo.txt"]}\n'})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"--remote-events"})," stdout payload:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-sh",children:'delete,0,1711957542289249,{"urls":["/root/foo.txt"]}\n'})}),"\n",(0,t.jsxs)(n.h3,{id:"hi",children:[(0,t.jsx)(n.code,{children:"hi"})," - client handshake"]}),"\n",(0,t.jsx)(n.p,{children:"System reserves kind."}),"\n",(0,t.jsxs)(n.h3,{id:"hey",children:[(0,t.jsx)(n.code,{children:"hey"})," - server handshake"]}),"\n",(0,t.jsx)(n.p,{children:"System reserves kind."}),"\n",(0,t.jsx)(n.h3,{id:"bye",children:(0,t.jsx)(n.code,{children:"bye"})}),"\n",(0,t.jsx)(n.p,{children:"System reserves kind."}),"\n",(0,t.jsx)(n.h2,{id:"plugins",children:"Builtin plugins"}),"\n",(0,t.jsx)(n.h3,{id:"dds.lua",children:(0,t.jsx)(n.code,{children:"dds.lua"})}),"\n",(0,t.jsxs)(n.p,{children:["This plugin provides the ",(0,t.jsx)(n.code,{children:"dds-cd"})," event kind, which accepts a string URL and changes the CWD to that URL when it is received."]}),"\n",(0,t.jsx)(n.p,{children:"This is useful for synchronizing the CWD of the current Yazi instance when exiting from a subshell:"}),"\n",(0,t.jsxs)(l.Z,{children:[(0,t.jsx)(i.Z,{value:"Zsh",label:"Zsh",default:!0,children:(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-sh",children:'# Change Yazi\'s CWD to PWD on subshell exit\nif [[ -n "$YAZI_ID" ]]; then\n\tfunction _yazi_cd() {\n\t\tya pub "$YAZI_ID" dds-cd --str "$PWD"\n\t}\n\tadd-zsh-hook zshexit _yazi_cd\nfi\n'})})}),(0,t.jsx)(i.Z,{value:"fish",label:"Fish",children:(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-sh",children:"# Please raise a PR if you have a fish version\n"})})}),(0,t.jsx)(i.Z,{value:"nushell",label:"Nushell",children:(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-sh",children:"# Please raise a PR if you have a nushell version\n"})})})]}),"\n",(0,t.jsxs)(n.p,{children:["Source code: ",(0,t.jsx)(n.a,{href:"https://github.com/sxyazi/yazi/blob/main/yazi-plugin/preset/plugins/dds.lua",children:"https://github.com/sxyazi/yazi/blob/main/yazi-plugin/preset/plugins/dds.lua"})]}),"\n",(0,t.jsx)(n.h3,{id:"session.lua",children:(0,t.jsx)(n.code,{children:"session.lua"})}),"\n",(0,t.jsx)(n.p,{children:"This plugin provides cross-instance yank ability, which means you can yank files in one instance, and then paste them in another instance."}),"\n",(0,t.jsxs)(n.p,{children:["To enable it, add these lines to your ",(0,t.jsx)(n.code,{children:"init.lua"}),":"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-lua",children:'require("session"):setup {\n\tsync_yanked = true,\n}\n'})}),"\n",(0,t.jsxs)(n.p,{children:["Source code: ",(0,t.jsx)(n.a,{href:"https://github.com/sxyazi/yazi/blob/main/yazi-plugin/preset/plugins/session.lua",children:"https://github.com/sxyazi/yazi/blob/main/yazi-plugin/preset/plugins/session.lua"})]})]})}function x(e={}){const{wrapper:n}={...(0,r.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(u,{...e})}):u(e)}},2986:(e,n,s)=>{s.d(n,{Z:()=>i});s(959);var t=s(5341);const r={tabItem:"tabItem_HJm5"};var l=s(1527);function i(e){let{children:n,hidden:s,className:i}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,t.Z)(r.tabItem,i),hidden:s,children:n})}},8449:(e,n,s)=>{s.d(n,{Z:()=>k});var t=s(959),r=s(5341),l=s(9812),i=s(8903),a=s(4848),o=s(3536),d=s(4902),c=s(5661);function h(e){return t.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:s}=e;return(0,t.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:s,attributes:t,default:r}}=e;return{value:n,label:s,attributes:t,default:r}}))}(s);return function(e){const n=(0,d.l)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function x(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const r=(0,i.k6)(),l=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,o._X)(l),(0,t.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(r.location.search);n.set(l,e),r.replace({...r.location,search:n.toString()})}),[l,r])]}function j(e){const{defaultValue:n,queryString:s=!1,groupId:r}=e,l=u(e),[i,o]=(0,t.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!x({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const t=s.find((e=>e.default))??s[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:n,tabValues:l}))),[d,h]=p({queryString:s,groupId:r}),[j,b]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[r,l]=(0,c.Nk)(s);return[r,(0,t.useCallback)((e=>{s&&l.set(e)}),[s,l])]}({groupId:r}),m=(()=>{const e=d??j;return x({value:e,tabValues:l})?e:null})();(0,a.Z)((()=>{m&&o(m)}),[m]);return{selectedValue:i,selectValue:(0,t.useCallback)((e=>{if(!x({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);o(e),h(e),b(e)}),[h,b,l]),tabValues:l}}var b=s(2666);const m={tabList:"tabList_lLR2",tabItem:"tabItem_an5g"};var g=s(1527);function f(e){let{className:n,block:s,selectedValue:t,selectValue:i,tabValues:a}=e;const o=[],{blockElementScrollPositionUntilNextRender:d}=(0,l.o5)(),c=e=>{const n=e.currentTarget,s=o.indexOf(n),r=a[s].value;r!==t&&(d(n),i(r))},h=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const s=o.indexOf(e.currentTarget)+1;n=o[s]??o[0];break}case"ArrowLeft":{const s=o.indexOf(e.currentTarget)-1;n=o[s]??o[o.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.Z)("tabs",{"tabs--block":s},n),children:a.map((e=>{let{value:n,label:s,attributes:l}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:t===n?0:-1,"aria-selected":t===n,ref:e=>o.push(e),onKeyDown:h,onClick:c,...l,className:(0,r.Z)("tabs__item",m.tabItem,l?.className,{"tabs__item--active":t===n}),children:s??n},n)}))})}function v(e){let{lazy:n,children:s,selectedValue:r}=e;const l=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=l.find((e=>e.props.value===r));return e?(0,t.cloneElement)(e,{className:"margin-top--md"}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:l.map(((e,n)=>(0,t.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function y(e){const n=j(e);return(0,g.jsxs)("div",{className:(0,r.Z)("tabs-container",m.tabList),children:[(0,g.jsx)(f,{...n,...e}),(0,g.jsx)(v,{...n,...e})]})}function k(e){const n=(0,b.Z)();return(0,g.jsx)(y,{...e,children:h(e.children)},String(n))}},6225:(e,n,s)=>{s.d(n,{Z:()=>a,a:()=>i});var t=s(959);const r={},l=t.createContext(r);function i(e){const n=t.useContext(l);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),t.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/468e7028.c891cef3.js b/assets/js/468e7028.c891cef3.js new file mode 100644 index 000000000..3443dc80c --- /dev/null +++ b/assets/js/468e7028.c891cef3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[871],{9342:(e,n,l)=>{l.r(n),l.d(n,{assets:()=>d,contentTitle:()=>t,default:()=>a,frontMatter:()=>r,metadata:()=>c,toc:()=>o});var i=l(1527),s=l(6225);const r={sidebar_position:3,description:"Learn how to configure your Yazi theme."},t="theme.toml",c={id:"configuration/theme",title:"theme.toml",description:"Learn how to configure your Yazi theme.",source:"@site/docs/configuration/theme.md",sourceDirName:"configuration",slug:"/configuration/theme",permalink:"/docs/configuration/theme",draft:!1,unlisted:!1,editUrl:"https://github.com/yazi-rs/yazi-rs.github.io/edit/main/docs/configuration/theme.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3,description:"Learn how to configure your Yazi theme."},sidebar:"docsSidebar",previous:{title:"keymap.toml",permalink:"/docs/configuration/keymap"},next:{title:"Image Preview",permalink:"/docs/image-preview"}},d={},o=[{value:"Types",id:"types",level:2},{value:"Color",id:"types.color",level:3},{value:"Style",id:"types.style",level:3},{value:"[flavor]",id:"flavor",level:2},{value:"[manager]",id:"manager",level:2},{value:"[status]",id:"status",level:2},{value:"[select]",id:"select",level:2},{value:"[input]",id:"input",level:2},{value:"[completion]",id:"completion",level:2},{value:"[tasks]",id:"tasks",level:2},{value:"[which]",id:"which",level:2},{value:"[help]",id:"help",level:2},{value:"[filetype]",id:"filetype",level:2},{value:"[icon]",id:"icon",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h1,{id:"themetoml",children:"theme.toml"}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsxs)(n.p,{children:["If you're looking for ready-made themes and don't want to create one yourself, check out the ",(0,i.jsx)(n.a,{href:"https://github.com/yazi-rs/flavors",children:"yazi-rs/flavors"})," repository."]})}),"\n",(0,i.jsx)(n.h2,{id:"types",children:"Types"}),"\n",(0,i.jsx)(n.h3,{id:"types.color",children:"Color"}),"\n",(0,i.jsxs)(n.p,{children:["A color. It can be in Hex format with RGB values, such as ",(0,i.jsx)(n.code,{children:"#484D66"}),". Or can be one of the following 17 values:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"reset"}),"\n",(0,i.jsx)(n.li,{children:"black"}),"\n",(0,i.jsx)(n.li,{children:"white"}),"\n",(0,i.jsx)(n.li,{children:"red"}),"\n",(0,i.jsx)(n.li,{children:"lightred"}),"\n",(0,i.jsx)(n.li,{children:"green"}),"\n",(0,i.jsx)(n.li,{children:"lightgreen"}),"\n",(0,i.jsx)(n.li,{children:"yellow"}),"\n",(0,i.jsx)(n.li,{children:"lightyellow"}),"\n",(0,i.jsx)(n.li,{children:"blue"}),"\n",(0,i.jsx)(n.li,{children:"lightblue"}),"\n",(0,i.jsx)(n.li,{children:"magenta"}),"\n",(0,i.jsx)(n.li,{children:"lightmagenta"}),"\n",(0,i.jsx)(n.li,{children:"cyan"}),"\n",(0,i.jsx)(n.li,{children:"lightcyan"}),"\n",(0,i.jsx)(n.li,{children:"gray"}),"\n",(0,i.jsx)(n.li,{children:"darkgray"}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"types.style",children:"Style"}),"\n",(0,i.jsxs)(n.p,{children:["Appears in a format similar to ",(0,i.jsx)(n.code,{children:'{ fg = "#e4e4e4", bg = "black", ... }'}),", and supports the following properties:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"fg (Color): Foreground color"}),"\n",(0,i.jsx)(n.li,{children:"bg (Color): Background color"}),"\n",(0,i.jsx)(n.li,{children:"bold (Boolean): Bold"}),"\n",(0,i.jsx)(n.li,{children:"dim (Boolean): Dim (not supported by all terminals)"}),"\n",(0,i.jsx)(n.li,{children:"italic (Boolean): Italic"}),"\n",(0,i.jsx)(n.li,{children:"underline (Boolean): Underline"}),"\n",(0,i.jsx)(n.li,{children:"blink (Boolean): Blink"}),"\n",(0,i.jsx)(n.li,{children:"blink_rapid (Boolean): Rapid blink"}),"\n",(0,i.jsx)(n.li,{children:"reversed (Boolean): Reversed foreground and background colors"}),"\n",(0,i.jsx)(n.li,{children:"hidden (Boolean): Hidden"}),"\n",(0,i.jsx)(n.li,{children:"crossed (Boolean): Crossed out"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"flavor",children:"[flavor]"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["use (String): Flavor name, e.g. ",(0,i.jsx)(n.code,{children:'"Dracula"'}),". See ",(0,i.jsx)(n.a,{href:"/docs/flavors/overview",children:"flavor documentation"})," for more details."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"manager",children:"[manager]"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"cwd (Style): CWD text style."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Hovered:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"hovered (Style): Hovered file style."}),"\n",(0,i.jsx)(n.li,{children:"preview_hovered (Style): Hovered file style, in the preview pane."}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Find: The ",(0,i.jsx)(n.code,{children:"find"})," feature"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"find_keyword (Style): Style of the highlighted portion in the filename."}),"\n",(0,i.jsx)(n.li,{children:"find_position (Style): Style of current file location in all found files to the right of the filename."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Marker: Color block on the left side separator line in the filename."}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"marker_selected (Style): Selected file marker style."}),"\n",(0,i.jsx)(n.li,{children:"marker_copied (Style): Copied file marker style."}),"\n",(0,i.jsx)(n.li,{children:"marker_cut (Style): Cut file marker style."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Tab: Tab bar"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"tab_active (Style): Active tab style."}),"\n",(0,i.jsx)(n.li,{children:"tab_inactive (Style): Inactive tab style."}),"\n",(0,i.jsx)(n.li,{children:"tab_width (Number): Tab maximum width. When set to a value greater than 2, the remaining space will be filled with the tab name, which is current directory name."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Border:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["border_symbol (String): Border symbol. e.g. ",(0,i.jsx)(n.code,{children:'"\u2502"'}),"."]}),"\n",(0,i.jsx)(n.li,{children:"border_style (Style): Border style."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Highlighting: The built-in syntax highlighting feature"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["syntect_theme (String): For example, ",(0,i.jsx)(n.code,{children:'"~/Downloads/Dracula.tmTheme"'}),". Only available in the user's ",(0,i.jsx)(n.code,{children:"theme.toml"})," and cannot be used in ",(0,i.jsx)(n.a,{href:"/docs/flavors/overview",children:(0,i.jsx)(n.code,{children:"flavor.toml"})}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["Yazi's builtin code highlighting themes, which are paths to ",(0,i.jsx)(n.code,{children:".tmTheme"})," files. You can find them on GitHub ",(0,i.jsx)(n.a,{href:"https://github.com/search?q=tmTheme&type=repositories",children:'using "tmTheme" as a keyword'})]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"status",children:"[status]"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["separator_open (String): Opening separator symbol. e.g. ",(0,i.jsx)(n.code,{children:'"["'}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["separator_close (String): Closing separator symbol. e.g. ",(0,i.jsx)(n.code,{children:'"]"'}),"."]}),"\n",(0,i.jsx)(n.li,{children:"separator_style (Style): Separator style."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Mode"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"mode_normal (Style): Normal mode style."}),"\n",(0,i.jsx)(n.li,{children:"mode_select (Style): Select mode style."}),"\n",(0,i.jsx)(n.li,{children:"mode_unset (Style): Unset mode style."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Progress"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"progress_label (Style): Progress label style."}),"\n",(0,i.jsx)(n.li,{children:"progress_normal (Style): Style of the progress bar when it is not in an error state."}),"\n",(0,i.jsx)(n.li,{children:"progress_error (Style): Style of the progress bar when an error occurs."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Permissions"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"permissions_t (Style): File type."}),"\n",(0,i.jsx)(n.li,{children:"permissions_r (Style): Read permission."}),"\n",(0,i.jsx)(n.li,{children:"permissions_w (Style): Write permission."}),"\n",(0,i.jsx)(n.li,{children:"permissions_x (Style): Execute permission."}),"\n",(0,i.jsxs)(n.li,{children:["permissions_s (Style): ",(0,i.jsx)(n.code,{children:"-"})," separator."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"select",children:"[select]"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"border (Style): Border style."}),"\n",(0,i.jsx)(n.li,{children:"active (Style): Selected item style."}),"\n",(0,i.jsx)(n.li,{children:"inactive (Style): Unselected item style."}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"input",children:"[input]"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"border (Style): Border style."}),"\n",(0,i.jsx)(n.li,{children:"title (Style): Title style."}),"\n",(0,i.jsx)(n.li,{children:"value (Style): Value style."}),"\n",(0,i.jsx)(n.li,{children:"selected (Style): Selected value style."}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"completion",children:"[completion]"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"border (Style): Border style."}),"\n",(0,i.jsx)(n.li,{children:"active (Style): Selected item style."}),"\n",(0,i.jsx)(n.li,{children:"inactive (Style): Unselected item style."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Icons"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"icon_file (String): File icon."}),"\n",(0,i.jsx)(n.li,{children:"icon_folder (String): Folder icon."}),"\n",(0,i.jsx)(n.li,{children:"icon_command (String): Command icon."}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"tasks",children:"[tasks]"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"border (Style): Border style."}),"\n",(0,i.jsx)(n.li,{children:"title (Style): Title style."}),"\n",(0,i.jsx)(n.li,{children:"hovered (Style): Hovered item style."}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"which",children:"[which]"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["cols (Number): Number of columns. The value can be ",(0,i.jsx)(n.code,{children:"1"}),", ",(0,i.jsx)(n.code,{children:"2"}),", ",(0,i.jsx)(n.code,{children:"3"}),"."]}),"\n",(0,i.jsx)(n.li,{children:"mask (Style): Mask style."}),"\n",(0,i.jsx)(n.li,{children:"cand (Style): Candidate key style."}),"\n",(0,i.jsx)(n.li,{children:"rest (Style): Rest key style."}),"\n",(0,i.jsx)(n.li,{children:"desc (Style): Description style."}),"\n",(0,i.jsxs)(n.li,{children:["separator (String): Separator symbol. e.g. ",(0,i.jsx)(n.code,{children:'" -> "'}),"."]}),"\n",(0,i.jsx)(n.li,{children:"separator_style (Style): Separator style."}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"help",children:"[help]"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"on (Style): Key column style."}),"\n",(0,i.jsx)(n.li,{children:"run (Style): Command column style."}),"\n",(0,i.jsx)(n.li,{children:"desc (Style): Description column style."}),"\n",(0,i.jsx)(n.li,{children:"hovered (Style): Hovered item style."}),"\n",(0,i.jsx)(n.li,{children:"footer (Style): Footer style."}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"filetype",children:"[filetype]"}),"\n",(0,i.jsx)(n.p,{children:"Set file list item display styles for specific file types, supporting matching by name and mime-type:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-toml",children:'[filetype]\nrules = [\n\t# Images\n\t{ mime = "image/*", fg = "yellow" },\n\n\t# Videos\n\t{ mime = "video/*", fg = "magenta" },\n\t{ mime = "audio/*", fg = "magenta" },\n\n\t# Empty files\n\t{ mime = "inode/x-empty", fg = "cyan" },\n\n\t# Orphan symbolic links\n\t{ name = "*", is = "orphan", fg = "red" },\n\n\t# ...\n\n\t# Fallback\n\t# { name = "*", fg = "white" },\n\t{ name = "*/", fg = "blue" }\n]\n'})}),"\n",(0,i.jsxs)(n.p,{children:["Each rule supports complete ",(0,i.jsx)(n.a,{href:"#types.style",children:"Style properties"}),". There are two special rule:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:'name = "*"'})," matches all files."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:'name = "*/"'})," matches all directories."]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["You can restrict the specific type of files through ",(0,i.jsx)(n.code,{children:"is"}),", noting that it must be used with either ",(0,i.jsx)(n.code,{children:"name"})," or ",(0,i.jsx)(n.code,{children:"mime"}),". It accepts the following values:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"block"}),": Block device"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"char"}),": Char device"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"exec"}),": Executable"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"fifo"}),": FIFO"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"link"}),": Symbolic link"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"orphan"}),": Orphan symbolic link"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"sock"}),": Socket"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"sticky"}),": File with sticky bit set"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"icon",children:"[icon]"}),"\n",(0,i.jsx)(n.p,{children:"Display icon based on the first matched rule."}),"\n",(0,i.jsxs)(n.p,{children:["You can prepend or append rules to the default through ",(0,i.jsx)(n.code,{children:"prepend_rules"})," and ",(0,i.jsx)(n.code,{children:"append_rules"}),", see ",(0,i.jsx)(n.a,{href:"/docs/configuration/overview#mixing",children:"Configuration mixing"})," for details."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-toml",children:'[icon]\nprepend_rules = [\n\t{ name = "*.rs" , text = "\ue7a8" },\n\t{ name = "Desktop/", text = "\uf108" },\n\t# ...\n\n\t# Icon with a color\n\t{ name = "*.lua", text = "\ue620", fg = "#51a0cf" },\n\n\t# You can also use `is` rule, just like `[filetype]` section\n\t# Orphan symbolic links\n\t{ name = "*", is = "orphan", text = "\uf071" },\n]\n\nappend_rules = [\n\t# My fallback icons\n\t{ name = "*" , text = "\uf15b" },\n\t{ name = "*/", text = "\uf115" },\n]\n'})}),"\n",(0,i.jsxs)(n.p,{children:["Or, use ",(0,i.jsx)(n.code,{children:"rules"})," to rewrite the entire default rules:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-toml",children:"[icon]\nrules = [\n\t# ...Some rules\n]\n"})}),"\n",(0,i.jsxs)(n.p,{children:["End with ",(0,i.jsx)(n.code,{children:"/"})," for directories, so wildcard rule (",(0,i.jsx)(n.code,{children:"*"})," or ",(0,i.jsx)(n.code,{children:"*/"}),") can be used for fallback matching all files or directories."]}),"\n",(0,i.jsxs)(n.p,{children:["If your ",(0,i.jsx)(n.code,{children:"append_rules"})," contains wildcard rules, they will always take precedence over the default wildcard rules as the fallback."]})]})}function a(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},6225:(e,n,l)=>{l.d(n,{Z:()=>c,a:()=>t});var i=l(959);const s={},r=i.createContext(s);function t(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:t(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5e95c892.65b48196.js b/assets/js/5e95c892.65b48196.js new file mode 100644 index 000000000..4d6196f73 --- /dev/null +++ b/assets/js/5e95c892.65b48196.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[661],{4414:(e,s,r)=>{r.r(s),r.d(s,{default:()=>d});r(959);var u=r(5341),a=r(5938),c=r(961),n=r(819),t=r(1576),l=r(1527);function d(e){return(0,l.jsx)(a.FG,{className:(0,u.Z)(c.k.wrapper.docsPages),children:(0,l.jsx)(t.Z,{children:(0,n.H)(e.route.routes)})})}}}]); \ No newline at end of file diff --git a/assets/js/60.51657cda.js b/assets/js/60.51657cda.js new file mode 100644 index 000000000..e8e3ad9a0 --- /dev/null +++ b/assets/js/60.51657cda.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[60],{5060:(e,s,k)=>{k.r(s)}}]); \ No newline at end of file diff --git a/assets/js/703.5777b14e.js b/assets/js/703.5777b14e.js new file mode 100644 index 000000000..0a2d7e393 --- /dev/null +++ b/assets/js/703.5777b14e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[703],{2645:(e,t,a)=>{a.d(t,{Z:()=>j});var n=a(959),s=a(5341),r=a(1576),i=a(6563),l=a(6788),o=a(259),c=a(8903),d=a(9057);function m(e){const{pathname:t}=(0,c.TH)();return(0,n.useMemo)((()=>e.filter((e=>function(e,t){return!(e.unlisted&&!(0,d.Mg)(e.permalink,t))}(e,t)))),[e,t])}const u={sidebar:"sidebar_jZ8h",sidebarItemTitle:"sidebarItemTitle_i_F0",sidebarItemList:"sidebarItemList_VXC9",sidebarItem:"sidebarItem_Obzz",sidebarItemLink:"sidebarItemLink_UIPt",sidebarItemLinkActive:"sidebarItemLinkActive_gFTN"};var g=a(1527);function h(e){let{sidebar:t}=e;const a=m(t.items);return(0,g.jsx)("aside",{className:"col col--3",children:(0,g.jsxs)("nav",{className:(0,s.Z)(u.sidebar,"thin-scrollbar"),"aria-label":(0,o.I)({id:"theme.blog.sidebar.navAriaLabel",message:"Blog recent posts navigation",description:"The ARIA label for recent posts in the blog sidebar"}),children:[(0,g.jsx)("div",{className:(0,s.Z)(u.sidebarItemTitle,"margin-bottom--md"),children:t.title}),(0,g.jsx)("ul",{className:(0,s.Z)(u.sidebarItemList,"clean-list"),children:a.map((e=>(0,g.jsx)("li",{className:u.sidebarItem,children:(0,g.jsx)(l.Z,{isNavLink:!0,to:e.permalink,className:u.sidebarItemLink,activeClassName:u.sidebarItemLinkActive,children:e.title})},e.permalink)))})]})})}var p=a(625);function f(e){let{sidebar:t}=e;const a=m(t.items);return(0,g.jsx)("ul",{className:"menu__list",children:a.map((e=>(0,g.jsx)("li",{className:"menu__list-item",children:(0,g.jsx)(l.Z,{isNavLink:!0,to:e.permalink,className:"menu__link",activeClassName:"menu__link--active",children:e.title})},e.permalink)))})}function b(e){return(0,g.jsx)(p.Zo,{component:f,props:e})}function x(e){let{sidebar:t}=e;const a=(0,i.i)();return t?.items.length?"mobile"===a?(0,g.jsx)(b,{sidebar:t}):(0,g.jsx)(h,{sidebar:t}):null}function j(e){const{sidebar:t,toc:a,children:n,...i}=e,l=t&&t.items.length>0;return(0,g.jsx)(r.Z,{...i,children:(0,g.jsx)("div",{className:"container margin-vert--lg",children:(0,g.jsxs)("div",{className:"row",children:[(0,g.jsx)(x,{sidebar:t}),(0,g.jsx)("main",{className:(0,s.Z)("col",{"col--7":l,"col--9 col--offset-1":!l}),children:n}),a&&(0,g.jsx)("div",{className:"col col--2",children:a})]})})})}},3467:(e,t,a)=>{a.d(t,{Z:()=>U});a(959);var n=a(5341),s=a(6283),r=a(1527);function i(e){let{children:t,className:a}=e;return(0,r.jsx)("article",{className:a,children:t})}var l=a(6788);const o={title:"title_ypgm"};function c(e){let{className:t}=e;const{metadata:a,isBlogPostPage:i}=(0,s.C)(),{permalink:c,title:d}=a,m=i?"h1":"h2";return(0,r.jsx)(m,{className:(0,n.Z)(o.title,t),children:i?d:(0,r.jsx)(l.Z,{to:c,children:d})})}var d=a(259),m=a(6625),u=a(9779);const g={container:"container_V1vW"};function h(e){let{readingTime:t}=e;const a=function(){const{selectMessage:e}=(0,m.c)();return t=>{const a=Math.ceil(t);return e(a,(0,d.I)({id:"theme.blog.post.readingTime.plurals",description:'Pluralized label for "{readingTime} min read". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One min read|{readingTime} min read"},{readingTime:a}))}}();return(0,r.jsx)(r.Fragment,{children:a(t)})}function p(e){let{date:t,formattedDate:a}=e;return(0,r.jsx)("time",{dateTime:t,children:a})}function f(){return(0,r.jsx)(r.Fragment,{children:" \xb7 "})}function b(e){let{className:t}=e;const{metadata:a}=(0,s.C)(),{date:i,readingTime:l}=a,o=(0,u.P)({day:"numeric",month:"long",year:"numeric",timeZone:"UTC"});return(0,r.jsxs)("div",{className:(0,n.Z)(g.container,"margin-vert--md",t),children:[(0,r.jsx)(p,{date:i,formattedDate:(c=i,o.format(new Date(c)))}),void 0!==l&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(f,{}),(0,r.jsx)(h,{readingTime:l})]})]});var c}function x(e){return e.href?(0,r.jsx)(l.Z,{...e}):(0,r.jsx)(r.Fragment,{children:e.children})}function j(e){let{author:t,className:a}=e;const{name:s,title:i,url:l,imageURL:o,email:c}=t,d=l||c&&`mailto:${c}`||void 0;return(0,r.jsxs)("div",{className:(0,n.Z)("avatar margin-bottom--sm",a),children:[o&&(0,r.jsx)(x,{href:d,className:"avatar__photo-link",children:(0,r.jsx)("img",{className:"avatar__photo",src:o,alt:s})}),s&&(0,r.jsxs)("div",{className:"avatar__intro",children:[(0,r.jsx)("div",{className:"avatar__name",children:(0,r.jsx)(x,{href:d,children:(0,r.jsx)("span",{children:s})})}),i&&(0,r.jsx)("small",{className:"avatar__subtitle",children:i})]})]})}const v={authorCol:"authorCol_rGg_",imageOnlyAuthorRow:"imageOnlyAuthorRow_aGDk",imageOnlyAuthorCol:"imageOnlyAuthorCol_blYy"};function N(e){let{className:t}=e;const{metadata:{authors:a},assets:i}=(0,s.C)();if(0===a.length)return null;const l=a.every((e=>{let{name:t}=e;return!t}));return(0,r.jsx)("div",{className:(0,n.Z)("margin-top--md margin-bottom--sm",l?v.imageOnlyAuthorRow:"row",t),children:a.map(((e,t)=>(0,r.jsx)("div",{className:(0,n.Z)(!l&&"col col--6",l?v.imageOnlyAuthorCol:v.authorCol),children:(0,r.jsx)(j,{author:{...e,imageURL:i.authorsImageUrls[t]??e.imageURL}})},t)))})}function P(){return(0,r.jsxs)("header",{children:[(0,r.jsx)(c,{}),(0,r.jsx)(b,{}),(0,r.jsx)(N,{})]})}var k=a(7787),Z=a(4879);function _(e){let{children:t,className:a}=e;const{isBlogPostPage:i}=(0,s.C)();return(0,r.jsx)("div",{id:i?k.blogPostContainerID:void 0,className:(0,n.Z)("markdown",a),children:(0,r.jsx)(Z.Z,{children:t})})}var w=a(961),y=a(151),C=a(1851);function I(){return(0,r.jsx)("b",{children:(0,r.jsx)(d.Z,{id:"theme.blog.post.readMore",description:"The label used in blog post item excerpts to link to full blog posts",children:"Read More"})})}function M(e){const{blogPostTitle:t,...a}=e;return(0,r.jsx)(l.Z,{"aria-label":(0,d.I)({message:"Read more about {title}",id:"theme.blog.post.readMoreLabel",description:"The ARIA label for the link to full blog posts from excerpts"},{title:t}),...a,children:(0,r.jsx)(I,{})})}function T(){const{metadata:e,isBlogPostPage:t}=(0,s.C)(),{tags:a,title:i,editUrl:l,hasTruncateMarker:o,lastUpdatedBy:c,lastUpdatedAt:d}=e,m=!t&&o,u=a.length>0;if(!(u||m||l))return null;if(t){const e=!!(l||d||c);return(0,r.jsxs)("footer",{className:"docusaurus-mt-lg",children:[u&&(0,r.jsx)("div",{className:(0,n.Z)("row","margin-top--sm",w.k.blog.blogFooterEditMetaRow),children:(0,r.jsx)("div",{className:"col",children:(0,r.jsx)(C.Z,{tags:a})})}),e&&(0,r.jsx)(y.Z,{className:(0,n.Z)("margin-top--sm",w.k.blog.blogFooterEditMetaRow),editUrl:l,lastUpdatedAt:d,lastUpdatedBy:c})]})}return(0,r.jsxs)("footer",{className:"row docusaurus-mt-lg",children:[u&&(0,r.jsx)("div",{className:(0,n.Z)("col",{"col--9":m}),children:(0,r.jsx)(C.Z,{tags:a})}),m&&(0,r.jsx)("div",{className:(0,n.Z)("col text--right",{"col--3":u}),children:(0,r.jsx)(M,{blogPostTitle:i,to:e.permalink})})]})}function U(e){let{children:t,className:a}=e;const l=function(){const{isBlogPostPage:e}=(0,s.C)();return e?void 0:"margin-bottom--xl"}();return(0,r.jsxs)(i,{className:(0,n.Z)(l,a),children:[(0,r.jsx)(P,{}),(0,r.jsx)(_,{children:t}),(0,r.jsx)(T,{})]})}},6283:(e,t,a)=>{a.d(t,{C:()=>o,n:()=>l});var n=a(959),s=a(3272),r=a(1527);const i=n.createContext(null);function l(e){let{children:t,content:a,isBlogPostPage:s=!1}=e;const l=function(e){let{content:t,isBlogPostPage:a}=e;return(0,n.useMemo)((()=>({metadata:t.metadata,frontMatter:t.frontMatter,assets:t.assets,toc:t.toc,isBlogPostPage:a})),[t,a])}({content:a,isBlogPostPage:s});return(0,r.jsx)(i.Provider,{value:l,children:t})}function o(){const e=(0,n.useContext)(i);if(null===e)throw new s.i6("BlogPostProvider");return e}},5838:(e,t,a)=>{a.d(t,{C:()=>d,i:()=>m});var n=a(2915),s=a(8927),r=a(3689);var i=a(6283);const l=e=>new Date(e).toISOString();function o(e){const t=e.map(u);return{author:1===t.length?t[0]:t}}function c(e,t,a){return e?{image:g({imageUrl:t(e,{absolute:!0}),caption:`title image for the blog post: ${a}`})}:{}}function d(e){const{siteConfig:t}=(0,s.Z)(),{withBaseUrl:a}=(0,n.Cg)(),{metadata:{blogDescription:r,blogTitle:i,permalink:d}}=e,m=`${t.url}${d}`;return{"@context":"https://schema.org","@type":"Blog","@id":m,mainEntityOfPage:m,headline:i,description:r,blogPost:e.items.map((e=>function(e,t,a){const{assets:n,frontMatter:s,metadata:r}=e,{date:i,title:d,description:m,lastUpdatedAt:u}=r,g=n.image??s.image,h=s.keywords??[],p=`${t.url}${r.permalink}`,f=u?l(u):void 0;return{"@type":"BlogPosting","@id":p,mainEntityOfPage:p,url:p,headline:d,name:d,description:m,datePublished:i,...f?{dateModified:f}:{},...o(r.authors),...c(g,a,d),...h?{keywords:h}:{}}}(e.content,t,a)))}}function m(){const e=function(){const e=(0,r.Z)(),t=e?.data?.blogMetadata;if(!t)throw new Error("useBlogMetadata() can't be called on the current route because the blog metadata could not be found in route context");return t}(),{assets:t,metadata:a}=(0,i.C)(),{siteConfig:d}=(0,s.Z)(),{withBaseUrl:m}=(0,n.Cg)(),{date:u,title:g,description:h,frontMatter:p,lastUpdatedAt:f}=a,b=t.image??p.image,x=p.keywords??[],j=f?l(f):void 0,v=`${d.url}${a.permalink}`;return{"@context":"https://schema.org","@type":"BlogPosting","@id":v,mainEntityOfPage:v,url:v,headline:g,name:g,description:h,datePublished:u,...j?{dateModified:j}:{},...o(a.authors),...c(b,m,g),...x?{keywords:x}:{},isPartOf:{"@type":"Blog","@id":`${d.url}${e.blogBasePath}`,name:e.blogTitle}}}function u(e){return{"@type":"Person",...e.name?{name:e.name}:{},...e.title?{description:e.title}:{},...e.url?{url:e.url}:{},...e.email?{email:e.email}:{},...e.imageURL?{image:e.imageURL}:{}}}function g(e){let{imageUrl:t,caption:a}=e;return{"@type":"ImageObject","@id":t,url:t,contentUrl:t,caption:a}}},6625:(e,t,a)=>{a.d(t,{c:()=>c});var n=a(959),s=a(8927);const r=["zero","one","two","few","many","other"];function i(e){return r.filter((t=>e.includes(t)))}const l={locale:"en",pluralForms:i(["one","other"]),select:e=>1===e?"one":"other"};function o(){const{i18n:{currentLocale:e}}=(0,s.Z)();return(0,n.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:i(t.resolvedOptions().pluralCategories),select:e=>t.select(e)}}(e)}catch(t){return console.error(`Failed to use Intl.PluralRules for locale "${e}".\nDocusaurus will fallback to the default (English) implementation.\nError: ${t.message}\n`),l}}),[e])}function c(){const e=o();return{selectMessage:(t,a)=>function(e,t,a){const n=e.split("|");if(1===n.length)return n[0];n.length>a.pluralForms.length&&console.error(`For locale=${a.locale}, a maximum of ${a.pluralForms.length} plural forms are expected (${a.pluralForms.join(",")}), but the message contains ${n.length}: ${e}`);const s=a.select(t),r=a.pluralForms.indexOf(s);return n[Math.min(r,n.length-1)]}(a,t,e)}}}}]); \ No newline at end of file diff --git a/assets/js/719.508146df.js b/assets/js/719.508146df.js new file mode 100644 index 000000000..a4439b74c --- /dev/null +++ b/assets/js/719.508146df.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[719],{8301:(e,t,n)=>{"use strict";n.d(t,{Z:()=>_});var s=n(959),a=n(1527);function o(e){const{mdxAdmonitionTitle:t,rest:n}=function(e){const t=s.Children.toArray(e),n=t.find((e=>s.isValidElement(e)&&"mdxAdmonitionTitle"===e.type)),o=t.filter((e=>e!==n)),c=n?.props.children;return{mdxAdmonitionTitle:c,rest:o.length>0?(0,a.jsx)(a.Fragment,{children:o}):null}}(e.children),o=e.title??t;return{...e,...o&&{title:o},children:n}}var c=n(5341),i=n(259),r=n(961);const l={admonition:"admonition_AflD",admonitionHeading:"admonitionHeading_QcBQ",admonitionIcon:"admonitionIcon_sAlq",admonitionContent:"admonitionContent_xrGG"};function d(e){let{type:t,className:n,children:s}=e;return(0,a.jsx)("div",{className:(0,c.Z)(r.k.common.admonition,r.k.common.admonitionType(t),l.admonition,n),children:s})}function u(e){let{icon:t,title:n}=e;return(0,a.jsxs)("div",{className:l.admonitionHeading,children:[(0,a.jsx)("span",{className:l.admonitionIcon,children:t}),n]})}function m(e){let{children:t}=e;return t?(0,a.jsx)("div",{className:l.admonitionContent,children:t}):null}function h(e){const{type:t,icon:n,title:s,children:o,className:c}=e;return(0,a.jsxs)(d,{type:t,className:c,children:[s||n?(0,a.jsx)(u,{title:s,icon:n}):null,(0,a.jsx)(m,{children:o})]})}function p(e){return(0,a.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,a.jsx)("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"})})}const f={icon:(0,a.jsx)(p,{}),title:(0,a.jsx)(i.Z,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)",children:"note"})};function g(e){return(0,a.jsx)(h,{...f,...e,className:(0,c.Z)("alert alert--secondary",e.className),children:e.children})}function x(e){return(0,a.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,a.jsx)("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"})})}const j={icon:(0,a.jsx)(x,{}),title:(0,a.jsx)(i.Z,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)",children:"tip"})};function b(e){return(0,a.jsx)(h,{...j,...e,className:(0,c.Z)("alert alert--success",e.className),children:e.children})}function v(e){return(0,a.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,a.jsx)("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"})})}const N={icon:(0,a.jsx)(v,{}),title:(0,a.jsx)(i.Z,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)",children:"info"})};function y(e){return(0,a.jsx)(h,{...N,...e,className:(0,c.Z)("alert alert--info",e.className),children:e.children})}function k(e){return(0,a.jsx)("svg",{viewBox:"0 0 16 16",...e,children:(0,a.jsx)("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"})})}const B={icon:(0,a.jsx)(k,{}),title:(0,a.jsx)(i.Z,{id:"theme.admonition.warning",description:"The default label used for the Warning admonition (:::warning)",children:"warning"})};function C(e){return(0,a.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,a.jsx)("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"})})}const w={icon:(0,a.jsx)(C,{}),title:(0,a.jsx)(i.Z,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)",children:"danger"})};const Z={icon:(0,a.jsx)(k,{}),title:(0,a.jsx)(i.Z,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)",children:"caution"})};const L={...{note:g,tip:b,info:y,warning:function(e){return(0,a.jsx)(h,{...B,...e,className:(0,c.Z)("alert alert--warning",e.className),children:e.children})},danger:function(e){return(0,a.jsx)(h,{...w,...e,className:(0,c.Z)("alert alert--danger",e.className),children:e.children})}},...{secondary:e=>(0,a.jsx)(g,{title:"secondary",...e}),important:e=>(0,a.jsx)(y,{title:"important",...e}),success:e=>(0,a.jsx)(b,{title:"success",...e}),caution:function(e){return(0,a.jsx)(h,{...Z,...e,className:(0,c.Z)("alert alert--warning",e.className),children:e.children})}}};function _(e){const t=o(e),n=(s=t.type,L[s]||(console.warn(`No admonition component found for admonition type "${s}". Using Info as fallback.`),L.info));var s;return(0,a.jsx)(n,{...t})}},151:(e,t,n)=>{"use strict";n.d(t,{Z:()=>g});n(959);var s=n(5341),a=n(259),o=n(961),c=n(6788);const i={iconEdit:"iconEdit_PC7L"};var r=n(1527);function l(e){let{className:t,...n}=e;return(0,r.jsx)("svg",{fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,s.Z)(i.iconEdit,t),"aria-hidden":"true",...n,children:(0,r.jsx)("g",{children:(0,r.jsx)("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})})})}function d(e){let{editUrl:t}=e;return(0,r.jsxs)(c.Z,{to:t,className:o.k.common.editThisPage,children:[(0,r.jsx)(l,{}),(0,r.jsx)(a.Z,{id:"theme.common.editThisPage",description:"The link label to edit the current page",children:"Edit this page"})]})}var u=n(9779);function m(e){let{lastUpdatedAt:t}=e;const n=new Date(t),s=(0,u.P)({day:"numeric",month:"short",year:"numeric",timeZone:"UTC"}).format(n);return(0,r.jsx)(a.Z,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:(0,r.jsx)("b",{children:(0,r.jsx)("time",{dateTime:n.toISOString(),itemProp:"dateModified",children:s})})},children:" on {date}"})}function h(e){let{lastUpdatedBy:t}=e;return(0,r.jsx)(a.Z,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:(0,r.jsx)("b",{children:t})},children:" by {user}"})}function p(e){let{lastUpdatedAt:t,lastUpdatedBy:n}=e;return(0,r.jsxs)("span",{className:o.k.common.lastUpdated,children:[(0,r.jsx)(a.Z,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:t?(0,r.jsx)(m,{lastUpdatedAt:t}):"",byUser:n?(0,r.jsx)(h,{lastUpdatedBy:n}):""},children:"Last updated{atDate}{byUser}"}),!1]})}const f={lastUpdated:"lastUpdated_RTW_"};function g(e){let{className:t,editUrl:n,lastUpdatedAt:a,lastUpdatedBy:o}=e;return(0,r.jsxs)("div",{className:(0,s.Z)("row",t),children:[(0,r.jsx)("div",{className:"col",children:n&&(0,r.jsx)(d,{editUrl:n})}),(0,r.jsx)("div",{className:(0,s.Z)("col",f.lastUpdated),children:(a||o)&&(0,r.jsx)(p,{lastUpdatedAt:a,lastUpdatedBy:o})})]})}},4879:(e,t,n)=>{"use strict";n.d(t,{Z:()=>ie});var s=n(959),a=n(6225),o=n(2058),c=n(2666),i=n(5341),r=n(9843),l=n(475);function d(){const{prism:e}=(0,l.L)(),{colorMode:t}=(0,r.I)(),n=e.theme,s=e.darkTheme||n;return"dark"===t?s:n}var u=n(961),m=n(7226),h=n.n(m);const p=/title=(?["'])(?.*?)\1/,f=/\{(?<range>[\d,-]+)\}/,g={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}},x={...g,lua:{start:"--",end:""},wasm:{start:"\\;\\;",end:""},tex:{start:"%",end:""},vb:{start:"['\u2018\u2019]",end:""},vbnet:{start:"(?:_\\s*)?['\u2018\u2019]",end:""},rem:{start:"[Rr][Ee][Mm]\\b",end:""},f90:{start:"!",end:""},ml:{start:"\\(\\*",end:"\\*\\)"},cobol:{start:"\\*>",end:""}},j=Object.keys(g);function b(e,t){const n=e.map((e=>{const{start:n,end:s}=x[e];return`(?:${n}\\s*(${t.flatMap((e=>[e.line,e.block?.start,e.block?.end].filter(Boolean))).join("|")})\\s*${s})`})).join("|");return new RegExp(`^\\s*(?:${n})\\s*$`)}function v(e,t){let n=e.replace(/\n$/,"");const{language:s,magicComments:a,metastring:o}=t;if(o&&f.test(o)){const e=o.match(f).groups.range;if(0===a.length)throw new Error(`A highlight range has been given in code block's metastring (\`\`\` ${o}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.`);const t=a[0].className,s=h()(e).filter((e=>e>0)).map((e=>[e-1,[t]]));return{lineClassNames:Object.fromEntries(s),code:n}}if(void 0===s)return{lineClassNames:{},code:n};const c=function(e,t){switch(e){case"js":case"javascript":case"ts":case"typescript":return b(["js","jsBlock"],t);case"jsx":case"tsx":return b(["js","jsBlock","jsx"],t);case"html":return b(["js","jsBlock","html"],t);case"python":case"py":case"bash":return b(["bash"],t);case"markdown":case"md":return b(["html","jsx","bash"],t);case"tex":case"latex":case"matlab":return b(["tex"],t);case"lua":case"haskell":case"sql":return b(["lua"],t);case"wasm":return b(["wasm"],t);case"vb":case"vba":case"visual-basic":return b(["vb","rem"],t);case"vbnet":return b(["vbnet","rem"],t);case"batch":return b(["rem"],t);case"basic":return b(["rem","f90"],t);case"fsharp":return b(["js","ml"],t);case"ocaml":case"sml":return b(["ml"],t);case"fortran":return b(["f90"],t);case"cobol":return b(["cobol"],t);default:return b(j,t)}}(s,a),i=n.split("\n"),r=Object.fromEntries(a.map((e=>[e.className,{start:0,range:""}]))),l=Object.fromEntries(a.filter((e=>e.line)).map((e=>{let{className:t,line:n}=e;return[n,t]}))),d=Object.fromEntries(a.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.start,t]}))),u=Object.fromEntries(a.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.end,t]})));for(let h=0;h<i.length;){const e=i[h].match(c);if(!e){h+=1;continue}const t=e.slice(1).find((e=>void 0!==e));l[t]?r[l[t]].range+=`${h},`:d[t]?r[d[t]].start=h:u[t]&&(r[u[t]].range+=`${r[u[t]].start}-${h-1},`),i.splice(h,1)}n=i.join("\n");const m={};return Object.entries(r).forEach((e=>{let[t,{range:n}]=e;h()(n).forEach((e=>{m[e]??=[],m[e].push(t)}))})),{lineClassNames:m,code:n}}const N={codeBlockContainer:"codeBlockContainer_heBY"};var y=n(1527);function k(e){let{as:t,...n}=e;const s=function(e){const t={color:"--prism-color",backgroundColor:"--prism-background-color"},n={};return Object.entries(e.plain).forEach((e=>{let[s,a]=e;const o=t[s];o&&"string"==typeof a&&(n[o]=a)})),n}(d());return(0,y.jsx)(t,{...n,style:s,className:(0,i.Z)(n.className,N.codeBlockContainer,u.k.common.codeBlock)})}const B={codeBlockContent:"codeBlockContent_BhwS",codeBlockTitle:"codeBlockTitle_zlXl",codeBlock:"codeBlock_Dgv8",codeBlockStandalone:"codeBlockStandalone_Wcee",codeBlockLines:"codeBlockLines_QBCl",codeBlockLinesWithNumbering:"codeBlockLinesWithNumbering_pRUo",buttonGroup:"buttonGroup__HhZ"};function C(e){let{children:t,className:n}=e;return(0,y.jsx)(k,{as:"pre",tabIndex:0,className:(0,i.Z)(B.codeBlockStandalone,"thin-scrollbar",n),children:(0,y.jsx)("code",{className:B.codeBlockLines,children:t})})}var w=n(3272);const Z={attributes:!0,characterData:!0,childList:!0,subtree:!0};function L(e,t){const[n,a]=(0,s.useState)(),o=(0,s.useCallback)((()=>{a(e.current?.closest("[role=tabpanel][hidden]"))}),[e,a]);(0,s.useEffect)((()=>{o()}),[o]),function(e,t,n){void 0===n&&(n=Z);const a=(0,w.zX)(t),o=(0,w.Ql)(n);(0,s.useEffect)((()=>{const t=new MutationObserver(a);return e&&t.observe(e,o),()=>t.disconnect()}),[e,a,o])}(n,(e=>{e.forEach((e=>{"attributes"===e.type&&"hidden"===e.attributeName&&(t(),o())}))}),{attributes:!0,characterData:!1,childList:!1,subtree:!1})}var _=n(2281);const E={codeLine:"codeLine_NJ7j",codeLineNumber:"codeLineNumber_iJoM",codeLineContent:"codeLineContent_jKor"};function T(e){let{line:t,classNames:n,showLineNumbers:s,getLineProps:a,getTokenProps:o}=e;1===t.length&&"\n"===t[0].content&&(t[0].content="");const c=a({line:t,className:(0,i.Z)(n,s&&E.codeLine)}),r=t.map(((e,t)=>(0,y.jsx)("span",{...o({token:e})},t)));return(0,y.jsxs)("span",{...c,children:[s?(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)("span",{className:E.codeLineNumber}),(0,y.jsx)("span",{className:E.codeLineContent,children:r})]}):r,(0,y.jsx)("br",{})]})}var A=n(259);function I(e){return(0,y.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,y.jsx)("path",{fill:"currentColor",d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"})})}function U(e){return(0,y.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,y.jsx)("path",{fill:"currentColor",d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"})})}const z={copyButtonCopied:"copyButtonCopied_v6tn",copyButtonIcons:"copyButtonIcons_zIeB",copyButtonIcon:"copyButtonIcon_t_7i",copyButtonSuccessIcon:"copyButtonSuccessIcon_csuP"};function S(e){let{code:t,className:n}=e;const[a,o]=(0,s.useState)(!1),c=(0,s.useRef)(void 0),r=(0,s.useCallback)((()=>{!function(e,t){let{target:n=document.body}=void 0===t?{}:t;if("string"!=typeof e)throw new TypeError(`Expected parameter \`text\` to be a \`string\`, got \`${typeof e}\`.`);const s=document.createElement("textarea"),a=document.activeElement;s.value=e,s.setAttribute("readonly",""),s.style.contain="strict",s.style.position="absolute",s.style.left="-9999px",s.style.fontSize="12pt";const o=document.getSelection(),c=o.rangeCount>0&&o.getRangeAt(0);n.append(s),s.select(),s.selectionStart=0,s.selectionEnd=e.length;let i=!1;try{i=document.execCommand("copy")}catch{}s.remove(),c&&(o.removeAllRanges(),o.addRange(c)),a&&a.focus()}(t),o(!0),c.current=window.setTimeout((()=>{o(!1)}),1e3)}),[t]);return(0,s.useEffect)((()=>()=>window.clearTimeout(c.current)),[]),(0,y.jsx)("button",{type:"button","aria-label":a?(0,A.I)({id:"theme.CodeBlock.copied",message:"Copied",description:"The copied button label on code blocks"}):(0,A.I)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"}),title:(0,A.I)({id:"theme.CodeBlock.copy",message:"Copy",description:"The copy button label on code blocks"}),className:(0,i.Z)("clean-btn",n,z.copyButton,a&&z.copyButtonCopied),onClick:r,children:(0,y.jsxs)("span",{className:z.copyButtonIcons,"aria-hidden":"true",children:[(0,y.jsx)(I,{className:z.copyButtonIcon}),(0,y.jsx)(U,{className:z.copyButtonSuccessIcon})]})})}function R(e){return(0,y.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,y.jsx)("path",{fill:"currentColor",d:"M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"})})}const M={wordWrapButtonIcon:"wordWrapButtonIcon_WWk0",wordWrapButtonEnabled:"wordWrapButtonEnabled_aReR"};function H(e){let{className:t,onClick:n,isEnabled:s}=e;const a=(0,A.I)({id:"theme.CodeBlock.wordWrapToggle",message:"Toggle word wrap",description:"The title attribute for toggle word wrapping button of code block lines"});return(0,y.jsx)("button",{type:"button",onClick:n,className:(0,i.Z)("clean-btn",t,s&&M.wordWrapButtonEnabled),"aria-label":a,title:a,children:(0,y.jsx)(R,{className:M.wordWrapButtonIcon,"aria-hidden":"true"})})}function W(e){let{children:t,className:n="",metastring:a,title:o,showLineNumbers:c,language:r}=e;const{prism:{defaultLanguage:u,magicComments:m}}=(0,l.L)(),h=function(e){return e?.toLowerCase()}(r??function(e){const t=e.split(" ").find((e=>e.startsWith("language-")));return t?.replace(/language-/,"")}(n)??u),f=d(),g=function(){const[e,t]=(0,s.useState)(!1),[n,a]=(0,s.useState)(!1),o=(0,s.useRef)(null),c=(0,s.useCallback)((()=>{const n=o.current.querySelector("code");e?n.removeAttribute("style"):(n.style.whiteSpace="pre-wrap",n.style.overflowWrap="anywhere"),t((e=>!e))}),[o,e]),i=(0,s.useCallback)((()=>{const{scrollWidth:e,clientWidth:t}=o.current,n=e>t||o.current.querySelector("code").hasAttribute("style");a(n)}),[o]);return L(o,i),(0,s.useEffect)((()=>{i()}),[e,i]),(0,s.useEffect)((()=>(window.addEventListener("resize",i,{passive:!0}),()=>{window.removeEventListener("resize",i)})),[i]),{codeBlockRef:o,isEnabled:e,isCodeScrollable:n,toggle:c}}(),x=function(e){return e?.match(p)?.groups.title??""}(a)||o,{lineClassNames:j,code:b}=v(t,{metastring:a,language:h,magicComments:m}),N=c??function(e){return Boolean(e?.includes("showLineNumbers"))}(a);return(0,y.jsxs)(k,{as:"div",className:(0,i.Z)(n,h&&!n.includes(`language-${h}`)&&`language-${h}`),children:[x&&(0,y.jsx)("div",{className:B.codeBlockTitle,children:x}),(0,y.jsxs)("div",{className:B.codeBlockContent,children:[(0,y.jsx)(_.y$,{theme:f,code:b,language:h??"text",children:e=>{let{className:t,style:n,tokens:s,getLineProps:a,getTokenProps:o}=e;return(0,y.jsx)("pre",{tabIndex:0,ref:g.codeBlockRef,className:(0,i.Z)(t,B.codeBlock,"thin-scrollbar"),style:n,children:(0,y.jsx)("code",{className:(0,i.Z)(B.codeBlockLines,N&&B.codeBlockLinesWithNumbering),children:s.map(((e,t)=>(0,y.jsx)(T,{line:e,getLineProps:a,getTokenProps:o,classNames:j[t],showLineNumbers:N},t)))})})}}),(0,y.jsxs)("div",{className:B.buttonGroup,children:[(g.isEnabled||g.isCodeScrollable)&&(0,y.jsx)(H,{className:B.codeButton,onClick:()=>g.toggle(),isEnabled:g.isEnabled}),(0,y.jsx)(S,{className:B.codeButton,code:b})]})]})]})}function D(e){let{children:t,...n}=e;const a=(0,c.Z)(),o=function(e){return s.Children.toArray(e).some((e=>(0,s.isValidElement)(e)))?e:Array.isArray(e)?e.join(""):e}(t),i="string"==typeof o?W:C;return(0,y.jsx)(i,{...n,children:o},String(a))}function P(e){return(0,y.jsx)("code",{...e})}var $=n(6788);var V=n(6266),O=n(5267);const F={details:"details_KFt3",isBrowser:"isBrowser_DsYK",collapsibleContent:"collapsibleContent_efbS"};function q(e){return!!e&&("SUMMARY"===e.tagName||q(e.parentElement))}function G(e,t){return!!e&&(e===t||G(e.parentElement,t))}function Q(e){let{summary:t,children:n,...a}=e;(0,V.Z)().collectAnchor(a.id);const o=(0,c.Z)(),r=(0,s.useRef)(null),{collapsed:l,setCollapsed:d}=(0,O.u)({initialState:!a.open}),[u,m]=(0,s.useState)(a.open),h=s.isValidElement(t)?t:(0,y.jsx)("summary",{children:t??"Details"});return(0,y.jsxs)("details",{...a,ref:r,open:u,"data-collapsed":l,className:(0,i.Z)(F.details,o&&F.isBrowser,a.className),onMouseDown:e=>{q(e.target)&&e.detail>1&&e.preventDefault()},onClick:e=>{e.stopPropagation();const t=e.target;q(t)&&G(t,r.current)&&(e.preventDefault(),l?(d(!1),m(!0)):d(!0))},children:[h,(0,y.jsx)(O.z,{lazy:!1,collapsed:l,disableSSRStyle:!0,onCollapseTransitionEnd:e=>{d(e),m(!e)},children:(0,y.jsx)("div",{className:F.collapsibleContent,children:n})})]})}const K={details:"details_iNoR"},X="alert alert--info";function Y(e){let{...t}=e;return(0,y.jsx)(Q,{...t,className:(0,i.Z)(X,K.details,t.className)})}function J(e){const t=s.Children.toArray(e.children),n=t.find((e=>s.isValidElement(e)&&"summary"===e.type)),a=(0,y.jsx)(y.Fragment,{children:t.filter((e=>e!==n))});return(0,y.jsx)(Y,{...e,summary:n,children:a})}var ee=n(7623);function te(e){return(0,y.jsx)(ee.Z,{...e})}const ne={containsTaskList:"containsTaskList_mWur"};function se(e){if(void 0!==e)return(0,i.Z)(e,e?.includes("contains-task-list")&&ne.containsTaskList)}const ae={img:"img_axuv"};var oe=n(8301);const ce={Head:o.Z,details:J,Details:J,code:function(e){return function(e){return void 0!==e.children&&s.Children.toArray(e.children).every((e=>"string"==typeof e&&!e.includes("\n")))}(e)?(0,y.jsx)(P,{...e}):(0,y.jsx)(D,{...e})},a:function(e){return(0,y.jsx)($.Z,{...e})},pre:function(e){return(0,y.jsx)(y.Fragment,{children:e.children})},ul:function(e){return(0,y.jsx)("ul",{...e,className:se(e.className)})},li:function(e){return(0,V.Z)().collectAnchor(e.id),(0,y.jsx)("li",{...e})},img:function(e){return(0,y.jsx)("img",{decoding:"async",loading:"lazy",...e,className:(t=e.className,(0,i.Z)(t,ae.img))});var t},h1:e=>(0,y.jsx)(te,{as:"h1",...e}),h2:e=>(0,y.jsx)(te,{as:"h2",...e}),h3:e=>(0,y.jsx)(te,{as:"h3",...e}),h4:e=>(0,y.jsx)(te,{as:"h4",...e}),h5:e=>(0,y.jsx)(te,{as:"h5",...e}),h6:e=>(0,y.jsx)(te,{as:"h6",...e}),admonition:oe.Z,mermaid:()=>null};function ie(e){let{children:t}=e;return(0,y.jsx)(a.Z,{components:ce,children:t})}},8582:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});n(959);var s=n(5341),a=n(6788),o=n(1527);function c(e){const{permalink:t,title:n,subLabel:c,isNext:i}=e;return(0,o.jsxs)(a.Z,{className:(0,s.Z)("pagination-nav__link",i?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t,children:[c&&(0,o.jsx)("div",{className:"pagination-nav__sublabel",children:c}),(0,o.jsx)("div",{className:"pagination-nav__label",children:n})]})}},1851:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});n(959);var s=n(5341),a=n(259),o=n(6788);const c={tag:"tag_rUuC",tagRegular:"tagRegular_CfVh",tagWithCount:"tagWithCount_k_Cs"};var i=n(1527);function r(e){let{permalink:t,label:n,count:a,description:r}=e;return(0,i.jsxs)(o.Z,{href:t,title:r,className:(0,s.Z)(c.tag,a?c.tagWithCount:c.tagRegular),children:[n,a&&(0,i.jsx)("span",{children:a})]})}const l={tags:"tags_RUyX",tag:"tag_vZP1"};function d(e){let{tags:t}=e;return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("b",{children:(0,i.jsx)(a.Z,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list",children:"Tags:"})}),(0,i.jsx)("ul",{className:(0,s.Z)(l.tags,"padding--none","margin-left--sm"),children:t.map((e=>(0,i.jsx)("li",{className:l.tag,children:(0,i.jsx)(r,{...e})},e.permalink)))})]})}},9779:(e,t,n)=>{"use strict";n.d(t,{P:()=>a});var s=n(8927);function a(e){void 0===e&&(e={});const{i18n:{currentLocale:t}}=(0,s.Z)(),n=function(){const{i18n:{currentLocale:e,localeConfigs:t}}=(0,s.Z)();return t[e].calendar}();return new Intl.DateTimeFormat(t,{calendar:n,...e})}},7226:(e,t)=>{function n(e){let t,n=[];for(let s of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(s))n.push(parseInt(s,10));else if(t=s.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,s,a,o]=t;if(s&&o){s=parseInt(s),o=parseInt(o);const e=s<o?1:-1;"-"!==a&&".."!==a&&"\u2025"!==a||(o+=e);for(let t=s;t!==o;t+=e)n.push(t)}}return n}t.default=n,e.exports=n},6225:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i,a:()=>c});var s=n(959);const a={},o=s.createContext(a);function c(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:c(e.components),s.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/72e14192.e2d8a26e.js b/assets/js/72e14192.e2d8a26e.js new file mode 100644 index 000000000..c1d95016a --- /dev/null +++ b/assets/js/72e14192.e2d8a26e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[239],{569:(e,r,n)=>{n.r(r),n.d(r,{assets:()=>a,contentTitle:()=>c,default:()=>j,frontMatter:()=>l,metadata:()=>h,toc:()=>o});var i=n(1527),s=n(6225),t=n(8449),d=n(2986);const l={sidebar_position:2,description:"A quick guide on the basic usage of Yazi."},c="Quick Start",h={id:"quick-start",title:"Quick Start",description:"A quick guide on the basic usage of Yazi.",source:"@site/docs/quick-start.md",sourceDirName:".",slug:"/quick-start",permalink:"/docs/quick-start",draft:!1,unlisted:!1,editUrl:"https://github.com/yazi-rs/yazi-rs.github.io/edit/main/docs/quick-start.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2,description:"A quick guide on the basic usage of Yazi."},sidebar:"docsSidebar",previous:{title:"Installation",permalink:"/docs/installation"},next:{title:"Configuration",permalink:"/docs/configuration/overview"}},a={},o=[{value:"Shell wrapper",id:"shell-wrapper",level:2},{value:"Keybindings",id:"keybindings",level:2},{value:"Navigation",id:"navigation",level:3},{value:"Selection",id:"selection",level:3},{value:"File/directory operations",id:"filedirectory-operations",level:3},{value:"Copying paths",id:"copying-paths",level:3},{value:"Filtering files/directories",id:"filtering-filesdirectories",level:3},{value:"Finding files/directories",id:"finding-filesdirectories",level:3},{value:"Searching files/directories",id:"searching-filesdirectories",level:3},{value:"Sorting",id:"sorting",level:3},{value:"Flavors",id:"flavors",level:2}];function x(e){const r={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,s.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(r.h1,{id:"quick-start",children:"Quick Start"}),"\n",(0,i.jsxs)(r.p,{children:["Once you've ",(0,i.jsx)(r.a,{href:"/docs/installation",children:"installed Yazi"}),", start the program with:"]}),"\n",(0,i.jsx)(r.pre,{children:(0,i.jsx)(r.code,{className:"language-sh",children:"yazi\n"})}),"\n",(0,i.jsxs)(r.p,{children:["Press ",(0,i.jsx)("kbd",{children:"q"})," to quit and ",(0,i.jsx)("kbd",{children:"~"})," to open the help menu."]}),"\n",(0,i.jsx)(r.h2,{id:"shell-wrapper",children:"Shell wrapper"}),"\n",(0,i.jsxs)(r.p,{children:["We suggest using this ",(0,i.jsx)(r.code,{children:"yy"})," shell wrapper that provides the ability to change the current working directory when exiting Yazi."]}),"\n",(0,i.jsxs)(t.Z,{children:[(0,i.jsx)(d.Z,{value:"bash-zsh",label:"Bash / Zsh",default:!0,children:(0,i.jsx)(r.pre,{children:(0,i.jsx)(r.code,{className:"language-bash",children:'function yy() {\n\tlocal tmp="$(mktemp -t "yazi-cwd.XXXXXX")"\n\tyazi "$@" --cwd-file="$tmp"\n\tif cwd="$(cat -- "$tmp")" && [ -n "$cwd" ] && [ "$cwd" != "$PWD" ]; then\n\t\tcd -- "$cwd"\n\tfi\n\trm -f -- "$tmp"\n}\n'})})}),(0,i.jsx)(d.Z,{value:"fish",label:"Fish",children:(0,i.jsx)(r.pre,{children:(0,i.jsx)(r.code,{className:"language-sh",children:'function yy\n\tset tmp (mktemp -t "yazi-cwd.XXXXXX")\n\tyazi $argv --cwd-file="$tmp"\n\tif set cwd (cat -- "$tmp"); and [ -n "$cwd" ]; and [ "$cwd" != "$PWD" ]\n\t\tcd -- "$cwd"\n\tend\n\trm -f -- "$tmp"\nend\n'})})}),(0,i.jsx)(d.Z,{value:"nushell",label:"Nushell",children:(0,i.jsx)(r.pre,{children:(0,i.jsx)(r.code,{className:"language-sh",children:'def --env yy [...args] {\n\tlet tmp = (mktemp -t "yazi-cwd.XXXXXX")\n\tyazi ...$args --cwd-file $tmp\n\tlet cwd = (open $tmp)\n\tif $cwd != "" and $cwd != $env.PWD {\n\t\tcd $cwd\n\t}\n\trm -fp $tmp\n}\n'})})}),(0,i.jsx)(d.Z,{value:"powershell",label:"PowerShell",children:(0,i.jsx)(r.pre,{children:(0,i.jsx)(r.code,{className:"language-powershell",children:'function yy {\n $tmp = [System.IO.Path]::GetTempFileName()\n yazi $args --cwd-file="$tmp"\n $cwd = Get-Content -Path $tmp\n if (-not [String]::IsNullOrEmpty($cwd) -and $cwd -ne $PWD.Path) {\n Set-Location -LiteralPath $cwd\n }\n Remove-Item -Path $tmp\n}\n'})})})]}),"\n",(0,i.jsxs)(r.p,{children:["To use it, copy the function into the configuration file of your respective shell. Then use ",(0,i.jsx)(r.code,{children:"yy"})," instead of ",(0,i.jsx)(r.code,{children:"yazi"})," to start."]}),"\n",(0,i.jsx)(r.h2,{id:"keybindings",children:"Keybindings"}),"\n",(0,i.jsx)(r.admonition,{type:"tip",children:(0,i.jsxs)(r.p,{children:["For all keybindings, see the ",(0,i.jsxs)(r.a,{href:"https://github.com/sxyazi/yazi/blob/latest/yazi-config/preset/keymap.toml",children:["default ",(0,i.jsx)(r.code,{children:"keymap.toml"})," file"]}),"."]})}),"\n",(0,i.jsx)(r.h3,{id:"navigation",children:"Navigation"}),"\n",(0,i.jsxs)(r.p,{children:["To navigate between files and directories you can use the arrow keys ",(0,i.jsx)("kbd",{children:"\u2190"}),", ",(0,i.jsx)("kbd",{children:"\u2193"}),", ",(0,i.jsx)("kbd",{children:"\u2191"})," and ",(0,i.jsx)("kbd",{children:"\u2192"}),"\nor Vim-like keys such as ",(0,i.jsx)("kbd",{children:"h"}),", ",(0,i.jsx)("kbd",{children:"j"}),", ",(0,i.jsx)("kbd",{children:"k"}),", ",(0,i.jsx)("kbd",{children:"l"}),":"]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Key binding"}),(0,i.jsx)(r.th,{children:"Alternate key"}),(0,i.jsx)(r.th,{children:"Action"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"k"})}),(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"\u2191"})}),(0,i.jsx)(r.td,{children:"Move the cursor up"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"j"})}),(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"\u2193"})}),(0,i.jsx)(r.td,{children:"Move the cursor down"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"l"})}),(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"\u2192"})}),(0,i.jsx)(r.td,{children:"Enter hovered directory"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"h"})}),(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"\u2190"})}),(0,i.jsx)(r.td,{children:"Leave the current directory and into its parent"})]})]})]}),"\n",(0,i.jsx)(r.p,{children:"Further navigation commands can be found in the table below."}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Key binding"}),(0,i.jsx)(r.th,{children:"Action"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"K"})}),(0,i.jsx)(r.td,{children:"Move the cursor up 5 lines"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"J"})}),(0,i.jsx)(r.td,{children:"Move the cursor down 5 lines"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsxs)(r.td,{children:[(0,i.jsx)("kbd",{children:"g"})," \u21d2 ",(0,i.jsx)("kbd",{children:"g"})]}),(0,i.jsx)(r.td,{children:"Move cursor to the top"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"G"})}),(0,i.jsx)(r.td,{children:"Move cursor to the bottom"})]})]})]}),"\n",(0,i.jsx)(r.h3,{id:"selection",children:"Selection"}),"\n",(0,i.jsx)(r.p,{children:"To select files and directories, the following commands are available."}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Key binding"}),(0,i.jsx)(r.th,{children:"Action"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"Space"})}),(0,i.jsx)(r.td,{children:"Toggle selection of hovered file/directory"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"v"})}),(0,i.jsx)(r.td,{children:"Enter visual mode (selection mode)"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"V"})}),(0,i.jsx)(r.td,{children:"Enter visual mode (unset mode)"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsxs)(r.td,{children:[(0,i.jsx)("kbd",{children:"Ctrl"})," + ",(0,i.jsx)("kbd",{children:"a"})]}),(0,i.jsx)(r.td,{children:"Select all files"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsxs)(r.td,{children:[(0,i.jsx)("kbd",{children:"Ctrl"})," + ",(0,i.jsx)("kbd",{children:"r"})]}),(0,i.jsx)(r.td,{children:"Inverse selection of all files"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"Esc"})}),(0,i.jsx)(r.td,{children:"Cancel selection"})]})]})]}),"\n",(0,i.jsx)(r.h3,{id:"filedirectory-operations",children:"File/directory operations"}),"\n",(0,i.jsx)(r.p,{children:"To interact with selected files/directories use any of the commands below."}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Key binding"}),(0,i.jsx)(r.th,{children:"Action"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"o"})}),(0,i.jsx)(r.td,{children:"Open the selected files"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"O"})}),(0,i.jsx)(r.td,{children:"Open the selected files interactively"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"Enter"})}),(0,i.jsx)(r.td,{children:"Open the selected files"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsxs)(r.td,{children:[(0,i.jsx)("kbd",{children:"Ctrl"})," + ",(0,i.jsx)("kbd",{children:"Enter"})]}),(0,i.jsx)(r.td,{children:"Open the selected files interactively (some terminals don't support it yet)"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"y"})}),(0,i.jsx)(r.td,{children:"Yank the selected files (copy)"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"x"})}),(0,i.jsx)(r.td,{children:"Yank the selected files (cut)"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"p"})}),(0,i.jsx)(r.td,{children:"Paste the yanked files"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"P"})}),(0,i.jsx)(r.td,{children:"Paste the yanked files (overwrite if the destination exists)"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsxs)(r.td,{children:[(0,i.jsx)("kbd",{children:"Y"})," or ",(0,i.jsx)("kbd",{children:"X"})]}),(0,i.jsx)(r.td,{children:"Cancel the yank state (unyank)"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"-"})}),(0,i.jsx)(r.td,{children:"Create a symbolic link to the yanked files (absolute path)"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"_"})}),(0,i.jsx)(r.td,{children:"Create a symbolic link to the yanked files (relative path)"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"d"})}),(0,i.jsx)(r.td,{children:"Move the files to the trash"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"D"})}),(0,i.jsx)(r.td,{children:"Permanently delete the files"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"a"})}),(0,i.jsx)(r.td,{children:'Create a file or directory (ends with "/" for directories)'})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"r"})}),(0,i.jsx)(r.td,{children:"Rename a file or directory"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:";"})}),(0,i.jsx)(r.td,{children:"Run a shell command"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:":"})}),(0,i.jsx)(r.td,{children:"Run a shell command (block the UI until the command finishes)"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"."})}),(0,i.jsx)(r.td,{children:"Toggle the visibility of hidden files"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsxs)(r.td,{children:[(0,i.jsx)("kbd",{children:"Ctrl"})," + ",(0,i.jsx)("kbd",{children:"s"})]}),(0,i.jsx)(r.td,{children:"Cancel the ongoing search"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"z"})}),(0,i.jsx)(r.td,{children:"Jump to a directory using zoxide"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"Z"})}),(0,i.jsx)(r.td,{children:"Jump to a directory, or reveal a file using fzf"})]})]})]}),"\n",(0,i.jsx)(r.h3,{id:"copying-paths",children:"Copying paths"}),"\n",(0,i.jsx)(r.p,{children:"To copy paths, use any of the following commands below."}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsxs)(r.em,{children:["Observation: ",(0,i.jsx)("kbd",{children:"c"})," \u21d2 ",(0,i.jsx)("kbd",{children:"d"})," indicates pressing the ",(0,i.jsx)("kbd",{children:"c"})," key followed by pressing the ",(0,i.jsx)("kbd",{children:"d"})," key."]})}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Key binding"}),(0,i.jsx)(r.th,{children:"Action"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsxs)(r.td,{children:[(0,i.jsx)("kbd",{children:"c"})," \u21d2 ",(0,i.jsx)("kbd",{children:"c"})]}),(0,i.jsx)(r.td,{children:"Copy absolute path"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsxs)(r.td,{children:[(0,i.jsx)("kbd",{children:"c"})," \u21d2 ",(0,i.jsx)("kbd",{children:"d"})]}),(0,i.jsx)(r.td,{children:"Copy the path of the parent directory"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsxs)(r.td,{children:[(0,i.jsx)("kbd",{children:"c"})," \u21d2 ",(0,i.jsx)("kbd",{children:"f"})]}),(0,i.jsx)(r.td,{children:"Copy the name of the file"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsxs)(r.td,{children:[(0,i.jsx)("kbd",{children:"c"})," \u21d2 ",(0,i.jsx)("kbd",{children:"n"})]}),(0,i.jsx)(r.td,{children:"Copy the name of the file without the extension"})]})]})]}),"\n",(0,i.jsx)(r.h3,{id:"filtering-filesdirectories",children:"Filtering files/directories"}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Key binding"}),(0,i.jsx)(r.th,{children:"Action"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"f"})}),(0,i.jsx)(r.td,{children:"Filter the files/directories in CWD"})]})})]}),"\n",(0,i.jsx)(r.h3,{id:"finding-filesdirectories",children:"Finding files/directories"}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Key binding"}),(0,i.jsx)(r.th,{children:"Action"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"/"})}),(0,i.jsx)(r.td,{children:"Forward find file/directory in CWD"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"?"})}),(0,i.jsx)(r.td,{children:"Backward find file/directory in CWD"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"n"})}),(0,i.jsx)(r.td,{children:"Jump to next occurrence"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"N"})}),(0,i.jsx)(r.td,{children:"Jump to previous occurrence"})]})]})]}),"\n",(0,i.jsx)(r.h3,{id:"searching-filesdirectories",children:"Searching files/directories"}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Key binding"}),(0,i.jsx)(r.th,{children:"Action"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"s"})}),(0,i.jsxs)(r.td,{children:["Search files by name using ",(0,i.jsx)(r.a,{href:"https://github.com/sharkdp/fd",children:"fd"})]})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)("kbd",{children:"S"})}),(0,i.jsxs)(r.td,{children:["Search files by content using ",(0,i.jsx)(r.a,{href:"https://github.com/BurntSushi/ripgrep",children:"ripgrep"})]})]})]})]}),"\n",(0,i.jsx)(r.h3,{id:"sorting",children:"Sorting"}),"\n",(0,i.jsx)(r.p,{children:"To sort files/directories use the following commands."}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsxs)(r.em,{children:["Observation: ",(0,i.jsx)("kbd",{children:","})," \u21d2 ",(0,i.jsx)("kbd",{children:"a"})," indicates pressing the ",(0,i.jsx)("kbd",{children:","})," key followed by pressing the ",(0,i.jsx)("kbd",{children:"a"})," key."]})}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Key binding"}),(0,i.jsx)(r.th,{children:"Action"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsxs)(r.td,{children:[(0,i.jsx)("kbd",{children:","})," \u21d2 ",(0,i.jsx)("kbd",{children:"m"})]}),(0,i.jsx)(r.td,{children:"Sort by modified time"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsxs)(r.td,{children:[(0,i.jsx)("kbd",{children:","})," \u21d2 ",(0,i.jsx)("kbd",{children:"M"})]}),(0,i.jsx)(r.td,{children:"Sort by modified time (reverse)"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsxs)(r.td,{children:[(0,i.jsx)("kbd",{children:","})," \u21d2 ",(0,i.jsx)("kbd",{children:"c"})]}),(0,i.jsx)(r.td,{children:"Sort by creation time"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsxs)(r.td,{children:[(0,i.jsx)("kbd",{children:","})," \u21d2 ",(0,i.jsx)("kbd",{children:"C"})]}),(0,i.jsx)(r.td,{children:"Sort by creation time (reverse)"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsxs)(r.td,{children:[(0,i.jsx)("kbd",{children:","})," \u21d2 ",(0,i.jsx)("kbd",{children:"e"})]}),(0,i.jsx)(r.td,{children:"Sort by file extension"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsxs)(r.td,{children:[(0,i.jsx)("kbd",{children:","})," \u21d2 ",(0,i.jsx)("kbd",{children:"E"})]}),(0,i.jsx)(r.td,{children:"Sort by file extension (reverse)"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsxs)(r.td,{children:[(0,i.jsx)("kbd",{children:","})," \u21d2 ",(0,i.jsx)("kbd",{children:"a"})]}),(0,i.jsx)(r.td,{children:"Sort alphabetically"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsxs)(r.td,{children:[(0,i.jsx)("kbd",{children:","})," \u21d2 ",(0,i.jsx)("kbd",{children:"A"})]}),(0,i.jsx)(r.td,{children:"Sort alphabetically (reverse)"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsxs)(r.td,{children:[(0,i.jsx)("kbd",{children:","})," \u21d2 ",(0,i.jsx)("kbd",{children:"n"})]}),(0,i.jsx)(r.td,{children:"Sort naturally"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsxs)(r.td,{children:[(0,i.jsx)("kbd",{children:","})," \u21d2 ",(0,i.jsx)("kbd",{children:"N"})]}),(0,i.jsx)(r.td,{children:"Sort naturally (reverse)"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsxs)(r.td,{children:[(0,i.jsx)("kbd",{children:","})," \u21d2 ",(0,i.jsx)("kbd",{children:"s"})]}),(0,i.jsx)(r.td,{children:"Sort by size"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsxs)(r.td,{children:[(0,i.jsx)("kbd",{children:","})," \u21d2 ",(0,i.jsx)("kbd",{children:"S"})]}),(0,i.jsx)(r.td,{children:"Sort by size (reverse)"})]})]})]}),"\n",(0,i.jsx)(r.h2,{id:"flavors",children:"Flavors"}),"\n",(0,i.jsxs)(r.p,{children:["Pick a color scheme you like from our ",(0,i.jsx)(r.a,{href:"https://github.com/yazi-rs/flavors",children:"flavors repository"}),", or ",(0,i.jsx)(r.a,{href:"/docs/flavors/overview#cooking",children:"cooking a flavor"}),"!"]})]})}function j(e={}){const{wrapper:r}={...(0,s.a)(),...e.components};return r?(0,i.jsx)(r,{...e,children:(0,i.jsx)(x,{...e})}):x(e)}},2986:(e,r,n)=>{n.d(r,{Z:()=>d});n(959);var i=n(5341);const s={tabItem:"tabItem_HJm5"};var t=n(1527);function d(e){let{children:r,hidden:n,className:d}=e;return(0,t.jsx)("div",{role:"tabpanel",className:(0,i.Z)(s.tabItem,d),hidden:n,children:r})}},8449:(e,r,n)=>{n.d(r,{Z:()=>v});var i=n(959),s=n(5341),t=n(9812),d=n(8903),l=n(4848),c=n(3536),h=n(4902),a=n(5661);function o(e){return i.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,i.isValidElement)(e)&&function(e){const{props:r}=e;return!!r&&"object"==typeof r&&"value"in r}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:r,children:n}=e;return(0,i.useMemo)((()=>{const e=r??function(e){return o(e).map((e=>{let{props:{value:r,label:n,attributes:i,default:s}}=e;return{value:r,label:n,attributes:i,default:s}}))}(n);return function(e){const r=(0,h.l)(e,((e,r)=>e.value===r.value));if(r.length>0)throw new Error(`Docusaurus error: Duplicate values "${r.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[r,n])}function j(e){let{value:r,tabValues:n}=e;return n.some((e=>e.value===r))}function u(e){let{queryString:r=!1,groupId:n}=e;const s=(0,d.k6)(),t=function(e){let{queryString:r=!1,groupId:n}=e;if("string"==typeof r)return r;if(!1===r)return null;if(!0===r&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:r,groupId:n});return[(0,c._X)(t),(0,i.useCallback)((e=>{if(!t)return;const r=new URLSearchParams(s.location.search);r.set(t,e),s.replace({...s.location,search:r.toString()})}),[t,s])]}function b(e){const{defaultValue:r,queryString:n=!1,groupId:s}=e,t=x(e),[d,c]=(0,i.useState)((()=>function(e){let{defaultValue:r,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(r){if(!j({value:r,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${r}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return r}const i=n.find((e=>e.default))??n[0];if(!i)throw new Error("Unexpected error: 0 tabValues");return i.value}({defaultValue:r,tabValues:t}))),[h,o]=u({queryString:n,groupId:s}),[b,p]=function(e){let{groupId:r}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(r),[s,t]=(0,a.Nk)(n);return[s,(0,i.useCallback)((e=>{n&&t.set(e)}),[n,t])]}({groupId:s}),f=(()=>{const e=h??b;return j({value:e,tabValues:t})?e:null})();(0,l.Z)((()=>{f&&c(f)}),[f]);return{selectedValue:d,selectValue:(0,i.useCallback)((e=>{if(!j({value:e,tabValues:t}))throw new Error(`Can't select invalid tab value=${e}`);c(e),o(e),p(e)}),[o,p,t]),tabValues:t}}var p=n(2666);const f={tabList:"tabList_lLR2",tabItem:"tabItem_an5g"};var k=n(1527);function m(e){let{className:r,block:n,selectedValue:i,selectValue:d,tabValues:l}=e;const c=[],{blockElementScrollPositionUntilNextRender:h}=(0,t.o5)(),a=e=>{const r=e.currentTarget,n=c.indexOf(r),s=l[n].value;s!==i&&(h(r),d(s))},o=e=>{let r=null;switch(e.key){case"Enter":a(e);break;case"ArrowRight":{const n=c.indexOf(e.currentTarget)+1;r=c[n]??c[0];break}case"ArrowLeft":{const n=c.indexOf(e.currentTarget)-1;r=c[n]??c[c.length-1];break}}r?.focus()};return(0,k.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.Z)("tabs",{"tabs--block":n},r),children:l.map((e=>{let{value:r,label:n,attributes:t}=e;return(0,k.jsx)("li",{role:"tab",tabIndex:i===r?0:-1,"aria-selected":i===r,ref:e=>c.push(e),onKeyDown:o,onClick:a,...t,className:(0,s.Z)("tabs__item",f.tabItem,t?.className,{"tabs__item--active":i===r}),children:n??r},r)}))})}function y(e){let{lazy:r,children:n,selectedValue:s}=e;const t=(Array.isArray(n)?n:[n]).filter(Boolean);if(r){const e=t.find((e=>e.props.value===s));return e?(0,i.cloneElement)(e,{className:"margin-top--md"}):null}return(0,k.jsx)("div",{className:"margin-top--md",children:t.map(((e,r)=>(0,i.cloneElement)(e,{key:r,hidden:e.props.value!==s})))})}function g(e){const r=b(e);return(0,k.jsxs)("div",{className:(0,s.Z)("tabs-container",f.tabList),children:[(0,k.jsx)(m,{...r,...e}),(0,k.jsx)(y,{...r,...e})]})}function v(e){const r=(0,p.Z)();return(0,k.jsx)(g,{...e,children:o(e.children)},String(r))}},6225:(e,r,n)=>{n.d(r,{Z:()=>l,a:()=>d});var i=n(959);const s={},t=i.createContext(s);function d(e){const r=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function l(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:d(e.components),i.createElement(t.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/812.f555afda.js b/assets/js/812.f555afda.js new file mode 100644 index 000000000..6d27706e7 --- /dev/null +++ b/assets/js/812.f555afda.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[812],{3593:(e,t,n)=>{n.d(t,{Z:()=>a});n(959);var o=n(5341),i=n(259),s=n(7623),r=n(1527);function a(e){let{className:t}=e;return(0,r.jsx)("main",{className:(0,o.Z)("container margin-vert--xl",t),children:(0,r.jsx)("div",{className:"row",children:(0,r.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,r.jsx)(s.Z,{as:"h1",className:"hero__title",children:(0,r.jsx)(i.Z,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,r.jsx)("p",{children:(0,r.jsx)(i.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,r.jsx)("p",{children:(0,r.jsx)(i.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}},4842:(e,t,n)=>{n.r(t),n.d(t,{default:()=>d});var o=n(959),i=n(259),s=n(5938),r=n(1576),a=n(3593),c=n(1527);function l(){const e=(0,i.I)({id:"theme.NotFound.title",message:"Page Not Found"});return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(s.d,{title:e}),(0,c.jsx)(r.Z,{children:(0,c.jsx)(a.Z,{})})]})}function d(e){return(0,o.useLayoutEffect)((()=>{location.href.includes("/docs")&&(location.href=location.href.replace("/docs",""))}),[]),(0,c.jsx)(l,{...e})}}}]); \ No newline at end of file diff --git a/assets/js/814f3328.fa917596.js b/assets/js/814f3328.fa917596.js new file mode 100644 index 000000000..98c94e056 --- /dev/null +++ b/assets/js/814f3328.fa917596.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[535],{5641:s=>{s.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"Why is Yazi fast?","permalink":"/blog/why-is-yazi-fast","unlisted":false}]}')}}]); \ No newline at end of file diff --git a/assets/js/86.92515d92.js b/assets/js/86.92515d92.js new file mode 100644 index 000000000..3159b387e --- /dev/null +++ b/assets/js/86.92515d92.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[86],{2086:(e,t,r)=>{function n(e,t){var r=void 0;return function(){for(var n=arguments.length,o=new Array(n),i=0;i<n;i++)o[i]=arguments[i];r&&clearTimeout(r),r=setTimeout((function(){return e.apply(void 0,o)}),t)}}function o(e){return e!==Object(e)}function i(e,t){if(e===t)return!0;if(o(e)||o(t)||"function"==typeof e||"function"==typeof t)return e===t;if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var r=0,n=Object.keys(e);r<n.length;r++){var a=n[r];if(!(a in t))return!1;if(!i(e[a],t[a]))return!1}return!0}r.r(t),r.d(t,{DocSearchModal:()=>pn});var a=function(){};function c(e){var t=e.item,r=e.items;return{index:t.__autocomplete_indexName,items:[t],positions:[1+r.findIndex((function(e){return e.objectID===t.objectID}))],queryID:t.__autocomplete_queryID,algoliaSource:["autocomplete"]}}function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,c=[],l=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=i.call(r)).done)&&(c.push(n.value),c.length!==t);l=!0);}catch(s){u=!0,o=s}finally{try{if(!l&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return c}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return u(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return u(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var s=["items"],f=["items"];function m(e){return m="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},m(e)}function p(e){return function(e){if(Array.isArray(e))return v(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return v(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return v(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function v(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function d(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function y(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function h(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?y(Object(r),!0).forEach((function(t){b(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):y(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function b(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==m(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==m(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===m(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function g(e){return e.map((function(e){var t=e.items,r=d(e,s);return h(h({},r),{},{objectIDs:(null==t?void 0:t.map((function(e){return e.objectID})))||r.objectIDs})}))}function O(e){var t,r,n,o=(t=l((e.version||"").split(".").map(Number),2),r=t[0],n=t[1],r>=3||2===r&&n>=4||1===r&&n>=10);function i(t,r,n){if(o&&void 0!==n){var i=n[0].__autocomplete_algoliaCredentials,a={"X-Algolia-Application-Id":i.appId,"X-Algolia-API-Key":i.apiKey};e.apply(void 0,[t].concat(p(r),[{headers:a}]))}else e.apply(void 0,[t].concat(p(r)))}return{init:function(t,r){e("init",{appId:t,apiKey:r})},setUserToken:function(t){e("setUserToken",t)},clickedObjectIDsAfterSearch:function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];t.length>0&&i("clickedObjectIDsAfterSearch",g(t),t[0].items)},clickedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];t.length>0&&i("clickedObjectIDs",g(t),t[0].items)},clickedFilters:function(){for(var t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];r.length>0&&e.apply(void 0,["clickedFilters"].concat(r))},convertedObjectIDsAfterSearch:function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];t.length>0&&i("convertedObjectIDsAfterSearch",g(t),t[0].items)},convertedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];t.length>0&&i("convertedObjectIDs",g(t),t[0].items)},convertedFilters:function(){for(var t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];r.length>0&&e.apply(void 0,["convertedFilters"].concat(r))},viewedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];t.length>0&&t.reduce((function(e,t){var r=t.items,n=d(t,f);return[].concat(p(e),p(function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:20,r=[],n=0;n<e.objectIDs.length;n+=t)r.push(h(h({},e),{},{objectIDs:e.objectIDs.slice(n,n+t)}));return r}(h(h({},n),{},{objectIDs:(null==r?void 0:r.map((function(e){return e.objectID})))||n.objectIDs})).map((function(e){return{items:r,payload:e}}))))}),[]).forEach((function(e){var t=e.items;return i("viewedObjectIDs",[e.payload],t)}))},viewedFilters:function(){for(var t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];r.length>0&&e.apply(void 0,["viewedFilters"].concat(r))}}}function S(e){var t=e.items.reduce((function(e,t){var r;return e[t.__autocomplete_indexName]=(null!==(r=e[t.__autocomplete_indexName])&&void 0!==r?r:[]).concat(t),e}),{});return Object.keys(t).map((function(e){return{index:e,items:t[e],algoliaSource:["autocomplete"]}}))}function j(e){return e.objectID&&e.__autocomplete_indexName&&e.__autocomplete_queryID}function w(e){return w="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},w(e)}function E(e){return function(e){if(Array.isArray(e))return P(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return P(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return P(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function P(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function I(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function D(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?I(Object(r),!0).forEach((function(t){A(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):I(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function A(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==w(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==w(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===w(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var k="2.6.0",x="https://cdn.jsdelivr.net/npm/search-insights@".concat(k,"/dist/search-insights.min.js"),C=n((function(e){var t=e.onItemsChange,r=e.items,n=e.insights,o=e.state;t({insights:n,insightsEvents:S({items:r}).map((function(e){return D({eventName:"Items Viewed"},e)})),state:o})}),400);function N(e){var t=function(e){return D({onItemsChange:function(e){var t=e.insights,r=e.insightsEvents;t.viewedObjectIDs.apply(t,E(r.map((function(e){return D(D({},e),{},{algoliaSource:[].concat(E(e.algoliaSource||[]),["autocomplete-internal"])})}))))},onSelect:function(e){var t=e.insights,r=e.insightsEvents;t.clickedObjectIDsAfterSearch.apply(t,E(r.map((function(e){return D(D({},e),{},{algoliaSource:[].concat(E(e.algoliaSource||[]),["autocomplete-internal"])})}))))},onActive:a},e)}(e),r=t.insightsClient,o=t.onItemsChange,l=t.onSelect,u=t.onActive,s=r;r||function(e){if("undefined"!=typeof window)e({window:window})}((function(e){var t=e.window,r=t.AlgoliaAnalyticsObject||"aa";"string"==typeof r&&(s=t[r]),s||(t.AlgoliaAnalyticsObject=r,t[r]||(t[r]=function(){t[r].queue||(t[r].queue=[]);for(var e=arguments.length,n=new Array(e),o=0;o<e;o++)n[o]=arguments[o];t[r].queue.push(n)}),t[r].version=k,s=t[r],function(e){var t="[Autocomplete]: Could not load search-insights.js. Please load it manually following https://alg.li/insights-autocomplete";try{var r=e.document.createElement("script");r.async=!0,r.src=x,r.onerror=function(){console.error(t)},document.body.appendChild(r)}catch(n){console.error(t)}}(t))}));var f=O(s),m={current:[]},p=n((function(e){var t=e.state;if(t.isOpen){var r=t.collections.reduce((function(e,t){return[].concat(E(e),E(t.items))}),[]).filter(j);i(m.current.map((function(e){return e.objectID})),r.map((function(e){return e.objectID})))||(m.current=r,r.length>0&&C({onItemsChange:o,items:r,insights:f,state:t}))}}),0);return{name:"aa.algoliaInsightsPlugin",subscribe:function(e){var t=e.setContext,r=e.onSelect,n=e.onActive;s("addAlgoliaAgent","insights-plugin"),t({algoliaInsightsPlugin:{__algoliaSearchParameters:{clickAnalytics:!0},insights:f}}),r((function(e){var t=e.item,r=e.state,n=e.event;j(t)&&l({state:r,event:n,insights:f,item:t,insightsEvents:[D({eventName:"Item Selected"},c({item:t,items:m.current}))]})})),n((function(e){var t=e.item,r=e.state,n=e.event;j(t)&&u({state:r,event:n,insights:f,item:t,insightsEvents:[D({eventName:"Item Active"},c({item:t,items:m.current}))]})}))},onStateChange:function(e){var t=e.state;p({state:t})},__autocomplete_pluginOptions:e}}function _(e){return _="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_(e)}function T(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function q(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==_(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==_(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===_(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function R(e,t,r){var n,o=t.initialState;return{getState:function(){return o},dispatch:function(n,i){var a=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?T(Object(r),!0).forEach((function(t){q(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):T(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}({},o);o=e(o,{type:n,props:t,payload:i}),r({state:o,prevState:a})},pendingRequests:(n=[],{add:function(e){return n.push(e),e.finally((function(){n=n.filter((function(t){return t!==e}))}))},cancelAll:function(){n.forEach((function(e){return e.cancel()}))},isEmpty:function(){return 0===n.length}})}}function L(e){return e.reduce((function(e,t){return e.concat(t)}),[])}function M(e){return M="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},M(e)}function H(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function F(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?H(Object(r),!0).forEach((function(t){U(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):H(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function U(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==M(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==M(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===M(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function B(e){return 0===e.collections.length?0:e.collections.reduce((function(e,t){return e+t.items.length}),0)}var V=0;function K(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function $(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?K(Object(r),!0).forEach((function(t){J(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):K(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function J(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==z(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==z(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===z(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function z(e){return z="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},z(e)}function W(e){return W="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},W(e)}function Q(e){return function(e){if(Array.isArray(e))return Z(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Z(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Z(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Z(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function G(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function X(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?G(Object(r),!0).forEach((function(t){Y(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):G(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function Y(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==W(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==W(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===W(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function ee(e,t){var r,n="undefined"!=typeof window?window:{},o=e.plugins||[];return X(X({debug:!1,openOnFocus:!1,placeholder:"",autoFocus:!1,defaultActiveItemId:null,stallThreshold:300,insights:!1,environment:n,shouldPanelOpen:function(e){return B(e.state)>0},reshape:function(e){return e.sources}},e),{},{id:null!==(r=e.id)&&void 0!==r?r:"autocomplete-".concat(V++),plugins:o,initialState:X({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},e.initialState),onStateChange:function(t){var r;null===(r=e.onStateChange)||void 0===r||r.call(e,t),o.forEach((function(e){var r;return null===(r=e.onStateChange)||void 0===r?void 0:r.call(e,t)}))},onSubmit:function(t){var r;null===(r=e.onSubmit)||void 0===r||r.call(e,t),o.forEach((function(e){var r;return null===(r=e.onSubmit)||void 0===r?void 0:r.call(e,t)}))},onReset:function(t){var r;null===(r=e.onReset)||void 0===r||r.call(e,t),o.forEach((function(e){var r;return null===(r=e.onReset)||void 0===r?void 0:r.call(e,t)}))},getSources:function(r){return Promise.all([].concat(Q(o.map((function(e){return e.getSources}))),[e.getSources]).filter(Boolean).map((function(e){return function(e,t){var r=[];return Promise.resolve(e(t)).then((function(e){return Array.isArray(e),Promise.all(e.filter((function(e){return Boolean(e)})).map((function(e){if(e.sourceId,r.includes(e.sourceId))throw new Error("[Autocomplete] The `sourceId` ".concat(JSON.stringify(e.sourceId)," is not unique."));r.push(e.sourceId);var t={getItemInputValue:function(e){return e.state.query},getItemUrl:function(){},onSelect:function(e){(0,e.setIsOpen)(!1)},onActive:a,onResolve:a};Object.keys(t).forEach((function(e){t[e].__default=!0}));var n=$($({},t),e);return Promise.resolve(n)})))}))}(e,r)}))).then((function(e){return L(e)})).then((function(e){return e.map((function(e){return X(X({},e),{},{onSelect:function(r){e.onSelect(r),t.forEach((function(e){var t;return null===(t=e.onSelect)||void 0===t?void 0:t.call(e,r)}))},onActive:function(r){e.onActive(r),t.forEach((function(e){var t;return null===(t=e.onActive)||void 0===t?void 0:t.call(e,r)}))},onResolve:function(r){e.onResolve(r),t.forEach((function(e){var t;return null===(t=e.onResolve)||void 0===t?void 0:t.call(e,r)}))}})}))}))},navigator:X({navigate:function(e){var t=e.itemUrl;n.location.assign(t)},navigateNewTab:function(e){var t=e.itemUrl,r=n.open(t,"_blank","noopener");null==r||r.focus()},navigateNewWindow:function(e){var t=e.itemUrl;n.open(t,"_blank","noopener")}},e.navigator)})}function te(e){return te="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},te(e)}function re(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function ne(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?re(Object(r),!0).forEach((function(t){oe(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):re(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function oe(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==te(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==te(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===te(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function ie(e){return ie="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ie(e)}function ae(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function ce(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ae(Object(r),!0).forEach((function(t){le(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ae(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function le(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==ie(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==ie(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===ie(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function ue(e){return function(e){if(Array.isArray(e))return se(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return se(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return se(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function se(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function fe(e){return Boolean(e.execute)}function me(e,t,r){if(o=e,Boolean(null==o?void 0:o.execute)){var n="algolia"===e.requesterId?Object.assign.apply(Object,[{}].concat(ue(Object.keys(r.context).map((function(e){var t;return null===(t=r.context[e])||void 0===t?void 0:t.__algoliaSearchParameters}))))):{};return ce(ce({},e),{},{requests:e.queries.map((function(r){return{query:"algolia"===e.requesterId?ce(ce({},r),{},{params:ce(ce({},n),r.params)}):r,sourceId:t,transformResponse:e.transformResponse}}))})}var o;return{items:e,sourceId:t}}function pe(e){var t=e.reduce((function(e,t){if(!fe(t))return e.push(t),e;var r=t.searchClient,n=t.execute,o=t.requesterId,i=t.requests,a=e.find((function(e){return fe(t)&&fe(e)&&e.searchClient===r&&Boolean(o)&&e.requesterId===o}));if(a){var c;(c=a.items).push.apply(c,ue(i))}else{var l={execute:n,requesterId:o,items:i,searchClient:r};e.push(l)}return e}),[]).map((function(e){if(!fe(e))return Promise.resolve(e);var t=e,r=t.execute,n=t.items;return r({searchClient:t.searchClient,requests:n})}));return Promise.all(t).then((function(e){return L(e)}))}function ve(e,t,r){return t.map((function(t){var n,o=e.filter((function(e){return e.sourceId===t.sourceId})),i=o.map((function(e){return e.items})),a=o[0].transformResponse,c=a?a({results:n=i,hits:n.map((function(e){return e.hits})).filter(Boolean),facetHits:n.map((function(e){var t;return null===(t=e.facetHits)||void 0===t?void 0:t.map((function(e){return{label:e.value,count:e.count,_highlightResult:{label:{value:e.highlighted}}}}))})).filter(Boolean)}):i;return t.onResolve({source:t,results:i,items:c,state:r.getState()}),Array.isArray(c),c.every(Boolean),'The `getItems` function from source "'.concat(t.sourceId,'" must return an array of items but returned ').concat(JSON.stringify(void 0),".\n\nDid you forget to return items?\n\nSee: https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/sources/#param-getitems"),{source:t,items:c}}))}function de(e,t){var r=t;return{then:function(t,n){return de(e.then(be(t,r,e),be(n,r,e)),r)},catch:function(t){return de(e.catch(be(t,r,e)),r)},finally:function(t){return t&&r.onCancelList.push(t),de(e.finally(be(t&&function(){return r.onCancelList=[],t()},r,e)),r)},cancel:function(){r.isCanceled=!0;var e=r.onCancelList;r.onCancelList=[],e.forEach((function(e){e()}))},isCanceled:function(){return!0===r.isCanceled}}}function ye(e){return de(new Promise((function(t,r){return e(t,r)})),{isCanceled:!1,onCancelList:[]})}function he(e){return de(e,{isCanceled:!1,onCancelList:[]})}function be(e,t,r){return e?function(r){return t.isCanceled?r:e(r)}:r}function ge(e){var t=function(e){var t=e.collections.map((function(e){return e.items.length})).reduce((function(e,t,r){var n=(e[r-1]||0)+t;return e.push(n),e}),[]).reduce((function(t,r){return r<=e.activeItemId?t+1:t}),0);return e.collections[t]}(e);if(!t)return null;var r=t.items[function(e){for(var t=e.state,r=e.collection,n=!1,o=0,i=0;!1===n;){var a=t.collections[o];if(a===r){n=!0;break}i+=a.items.length,o++}return t.activeItemId-i}({state:e,collection:t})],n=t.source;return{item:r,itemInputValue:n.getItemInputValue({item:r,state:e}),itemUrl:n.getItemUrl({item:r,state:e}),source:n}}function Oe(e){return Oe="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Oe(e)}ye.resolve=function(e){return he(Promise.resolve(e))},ye.reject=function(e){return he(Promise.reject(e))};var Se=["event","nextState","props","query","refresh","store"];function je(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function we(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?je(Object(r),!0).forEach((function(t){Ee(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):je(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function Ee(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==Oe(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==Oe(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===Oe(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Pe(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var Ie,De,Ae,ke=null,xe=(Ie=-1,De=-1,Ae=void 0,function(e){var t=++Ie;return Promise.resolve(e).then((function(e){return Ae&&t<De?Ae:(De=t,Ae=e,e)}))});function Ce(e){var t=e.event,r=e.nextState,n=void 0===r?{}:r,o=e.props,i=e.query,a=e.refresh,c=e.store,l=Pe(e,Se);ke&&o.environment.clearTimeout(ke);var u=l.setCollections,s=l.setIsOpen,f=l.setQuery,m=l.setActiveItemId,p=l.setStatus;if(f(i),m(o.defaultActiveItemId),!i&&!1===o.openOnFocus){var v,d=c.getState().collections.map((function(e){return we(we({},e),{},{items:[]})}));p("idle"),u(d),s(null!==(v=n.isOpen)&&void 0!==v?v:o.shouldPanelOpen({state:c.getState()}));var y=he(xe(d).then((function(){return Promise.resolve()})));return c.pendingRequests.add(y)}p("loading"),ke=o.environment.setTimeout((function(){p("stalled")}),o.stallThreshold);var h=he(xe(o.getSources(we({query:i,refresh:a,state:c.getState()},l)).then((function(e){return Promise.all(e.map((function(e){return Promise.resolve(e.getItems(we({query:i,refresh:a,state:c.getState()},l))).then((function(t){return me(t,e.sourceId,c.getState())}))}))).then(pe).then((function(t){return ve(t,e,c)})).then((function(e){return function(e){var t=e.collections,r=e.props,n=e.state,o=t.reduce((function(e,t){return ne(ne({},e),{},oe({},t.source.sourceId,ne(ne({},t.source),{},{getItems:function(){return L(t.items)}})))}),{}),i=r.plugins.reduce((function(e,t){return t.reshape?t.reshape(e):e}),{sourcesBySourceId:o,state:n}).sourcesBySourceId;return L(r.reshape({sourcesBySourceId:i,sources:Object.values(i),state:n})).filter(Boolean).map((function(e){return{source:e,items:e.getItems()}}))}({collections:e,props:o,state:c.getState()})}))})))).then((function(e){var r;p("idle"),u(e);var f=o.shouldPanelOpen({state:c.getState()});s(null!==(r=n.isOpen)&&void 0!==r?r:o.openOnFocus&&!i&&f||f);var m=ge(c.getState());if(null!==c.getState().activeItemId&&m){var v=m.item,d=m.itemInputValue,y=m.itemUrl,h=m.source;h.onActive(we({event:t,item:v,itemInputValue:d,itemUrl:y,refresh:a,source:h,state:c.getState()},l))}})).finally((function(){p("idle"),ke&&o.environment.clearTimeout(ke)}));return c.pendingRequests.add(h)}function Ne(e){return Ne="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ne(e)}var _e=["event","props","refresh","store"];function Te(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function qe(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Te(Object(r),!0).forEach((function(t){Re(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Te(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function Re(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==Ne(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==Ne(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===Ne(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Le(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var Me=/((gt|sm)-|galaxy nexus)|samsung[- ]|samsungbrowser/i;function He(e){return He="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},He(e)}var Fe=["props","refresh","store"],Ue=["inputElement","formElement","panelElement"],Be=["inputElement"],Ve=["inputElement","maxLength"],Ke=["sourceIndex"],$e=["sourceIndex"],Je=["item","source","sourceIndex"];function ze(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function We(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ze(Object(r),!0).forEach((function(t){Qe(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ze(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function Qe(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==He(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==He(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===He(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Ze(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function Ge(e){var t=e.props,r=e.refresh,n=e.store,o=Ze(e,Fe),i=function(e,t){return void 0!==t?"".concat(e,"-").concat(t):e};return{getEnvironmentProps:function(e){var r=e.inputElement,o=e.formElement,i=e.panelElement;function a(e){!n.getState().isOpen&&n.pendingRequests.isEmpty()||e.target===r||!1===[o,i].some((function(t){return r=t,n=e.target,r===n||r.contains(n);var r,n}))&&(n.dispatch("blur",null),t.debug||n.pendingRequests.cancelAll())}return We({onTouchStart:a,onMouseDown:a,onTouchMove:function(e){!1!==n.getState().isOpen&&r===t.environment.document.activeElement&&e.target!==r&&r.blur()}},Ze(e,Ue))},getRootProps:function(e){return We({role:"combobox","aria-expanded":n.getState().isOpen,"aria-haspopup":"listbox","aria-owns":n.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label")},e)},getFormProps:function(e){e.inputElement;return We({action:"",noValidate:!0,role:"search",onSubmit:function(i){var a;i.preventDefault(),t.onSubmit(We({event:i,refresh:r,state:n.getState()},o)),n.dispatch("submit",null),null===(a=e.inputElement)||void 0===a||a.blur()},onReset:function(i){var a;i.preventDefault(),t.onReset(We({event:i,refresh:r,state:n.getState()},o)),n.dispatch("reset",null),null===(a=e.inputElement)||void 0===a||a.focus()}},Ze(e,Be))},getLabelProps:function(e){var r=e||{},n=r.sourceIndex,o=Ze(r,Ke);return We({htmlFor:"".concat(i(t.id,n),"-input"),id:"".concat(i(t.id,n),"-label")},o)},getInputProps:function(e){var i;function c(e){(t.openOnFocus||Boolean(n.getState().query))&&Ce(We({event:e,props:t,query:n.getState().completion||n.getState().query,refresh:r,store:n},o)),n.dispatch("focus",null)}var l=e||{},u=(l.inputElement,l.maxLength),s=void 0===u?512:u,f=Ze(l,Ve),m=ge(n.getState()),p=function(e){return Boolean(e&&e.match(Me))}((null===(i=t.environment.navigator)||void 0===i?void 0:i.userAgent)||""),v=null!=m&&m.itemUrl&&!p?"go":"search";return We({"aria-autocomplete":"both","aria-activedescendant":n.getState().isOpen&&null!==n.getState().activeItemId?"".concat(t.id,"-item-").concat(n.getState().activeItemId):void 0,"aria-controls":n.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label"),value:n.getState().completion||n.getState().query,id:"".concat(t.id,"-input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:v,spellCheck:"false",autoFocus:t.autoFocus,placeholder:t.placeholder,maxLength:s,type:"search",onChange:function(e){Ce(We({event:e,props:t,query:e.currentTarget.value.slice(0,s),refresh:r,store:n},o))},onKeyDown:function(e){!function(e){var t=e.event,r=e.props,n=e.refresh,o=e.store,i=Le(e,_e);if("ArrowUp"===t.key||"ArrowDown"===t.key){var a=function(){var e=r.environment.document.getElementById("".concat(r.id,"-item-").concat(o.getState().activeItemId));e&&(e.scrollIntoViewIfNeeded?e.scrollIntoViewIfNeeded(!1):e.scrollIntoView(!1))},c=function(){var e=ge(o.getState());if(null!==o.getState().activeItemId&&e){var r=e.item,a=e.itemInputValue,c=e.itemUrl,l=e.source;l.onActive(qe({event:t,item:r,itemInputValue:a,itemUrl:c,refresh:n,source:l,state:o.getState()},i))}};t.preventDefault(),!1===o.getState().isOpen&&(r.openOnFocus||Boolean(o.getState().query))?Ce(qe({event:t,props:r,query:o.getState().query,refresh:n,store:o},i)).then((function(){o.dispatch(t.key,{nextActiveItemId:r.defaultActiveItemId}),c(),setTimeout(a,0)})):(o.dispatch(t.key,{}),c(),a())}else if("Escape"===t.key)t.preventDefault(),o.dispatch(t.key,null),o.pendingRequests.cancelAll();else if("Tab"===t.key)o.dispatch("blur",null),o.pendingRequests.cancelAll();else if("Enter"===t.key){if(null===o.getState().activeItemId||o.getState().collections.every((function(e){return 0===e.items.length})))return void(r.debug||o.pendingRequests.cancelAll());t.preventDefault();var l=ge(o.getState()),u=l.item,s=l.itemInputValue,f=l.itemUrl,m=l.source;if(t.metaKey||t.ctrlKey)void 0!==f&&(m.onSelect(qe({event:t,item:u,itemInputValue:s,itemUrl:f,refresh:n,source:m,state:o.getState()},i)),r.navigator.navigateNewTab({itemUrl:f,item:u,state:o.getState()}));else if(t.shiftKey)void 0!==f&&(m.onSelect(qe({event:t,item:u,itemInputValue:s,itemUrl:f,refresh:n,source:m,state:o.getState()},i)),r.navigator.navigateNewWindow({itemUrl:f,item:u,state:o.getState()}));else if(t.altKey);else{if(void 0!==f)return m.onSelect(qe({event:t,item:u,itemInputValue:s,itemUrl:f,refresh:n,source:m,state:o.getState()},i)),void r.navigator.navigate({itemUrl:f,item:u,state:o.getState()});Ce(qe({event:t,nextState:{isOpen:!1},props:r,query:s,refresh:n,store:o},i)).then((function(){m.onSelect(qe({event:t,item:u,itemInputValue:s,itemUrl:f,refresh:n,source:m,state:o.getState()},i))}))}}}(We({event:e,props:t,refresh:r,store:n},o))},onFocus:c,onBlur:a,onClick:function(r){e.inputElement!==t.environment.document.activeElement||n.getState().isOpen||c(r)}},f)},getPanelProps:function(e){return We({onMouseDown:function(e){e.preventDefault()},onMouseLeave:function(){n.dispatch("mouseleave",null)}},e)},getListProps:function(e){var r=e||{},n=r.sourceIndex,o=Ze(r,$e);return We({role:"listbox","aria-labelledby":"".concat(i(t.id,n),"-label"),id:"".concat(i(t.id,n),"-list")},o)},getItemProps:function(e){var a=e.item,c=e.source,l=e.sourceIndex,u=Ze(e,Je);return We({id:"".concat(i(t.id,l),"-item-").concat(a.__autocomplete_id),role:"option","aria-selected":n.getState().activeItemId===a.__autocomplete_id,onMouseMove:function(e){if(a.__autocomplete_id!==n.getState().activeItemId){n.dispatch("mousemove",a.__autocomplete_id);var t=ge(n.getState());if(null!==n.getState().activeItemId&&t){var i=t.item,c=t.itemInputValue,l=t.itemUrl,u=t.source;u.onActive(We({event:e,item:i,itemInputValue:c,itemUrl:l,refresh:r,source:u,state:n.getState()},o))}}},onMouseDown:function(e){e.preventDefault()},onClick:function(e){var i=c.getItemInputValue({item:a,state:n.getState()}),l=c.getItemUrl({item:a,state:n.getState()});(l?Promise.resolve():Ce(We({event:e,nextState:{isOpen:!1},props:t,query:i,refresh:r,store:n},o))).then((function(){c.onSelect(We({event:e,item:a,itemInputValue:i,itemUrl:l,refresh:r,source:c,state:n.getState()},o))}))}},u)}}}var Xe=[{segment:"autocomplete-core",version:"1.9.3"}];function Ye(e){return Ye="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ye(e)}function et(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function tt(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?et(Object(r),!0).forEach((function(t){rt(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):et(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function rt(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==Ye(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==Ye(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===Ye(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function nt(e){var t,r,n,o,i=e.plugins,a=e.options,c=null===(t=((null===(r=a.__autocomplete_metadata)||void 0===r?void 0:r.userAgents)||[])[0])||void 0===t?void 0:t.segment,l=c?rt({},c,Object.keys((null===(n=a.__autocomplete_metadata)||void 0===n?void 0:n.options)||{})):{};return{plugins:i.map((function(e){return{name:e.name,options:Object.keys(e.__autocomplete_pluginOptions||[])}})),options:tt({"autocomplete-core":Object.keys(a)},l),ua:Xe.concat((null===(o=a.__autocomplete_metadata)||void 0===o?void 0:o.userAgents)||[])}}function ot(e){var t,r=e.state;return!1===r.isOpen||null===r.activeItemId?null:(null===(t=ge(r))||void 0===t?void 0:t.itemInputValue)||null}function it(e,t,r,n){if(!r)return null;if(e<0&&(null===t||null!==n&&0===t))return r+e;var o=(null===t?-1:t)+e;return o<=-1||o>=r?null===n?null:0:o}function at(e){return at="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},at(e)}function ct(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function lt(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ct(Object(r),!0).forEach((function(t){ut(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ct(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function ut(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==at(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==at(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===at(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var st=function(e,t){switch(t.type){case"setActiveItemId":case"mousemove":return lt(lt({},e),{},{activeItemId:t.payload});case"setQuery":return lt(lt({},e),{},{query:t.payload,completion:null});case"setCollections":return lt(lt({},e),{},{collections:t.payload});case"setIsOpen":return lt(lt({},e),{},{isOpen:t.payload});case"setStatus":return lt(lt({},e),{},{status:t.payload});case"setContext":return lt(lt({},e),{},{context:lt(lt({},e.context),t.payload)});case"ArrowDown":var r=lt(lt({},e),{},{activeItemId:t.payload.hasOwnProperty("nextActiveItemId")?t.payload.nextActiveItemId:it(1,e.activeItemId,B(e),t.props.defaultActiveItemId)});return lt(lt({},r),{},{completion:ot({state:r})});case"ArrowUp":var n=lt(lt({},e),{},{activeItemId:it(-1,e.activeItemId,B(e),t.props.defaultActiveItemId)});return lt(lt({},n),{},{completion:ot({state:n})});case"Escape":return e.isOpen?lt(lt({},e),{},{activeItemId:null,isOpen:!1,completion:null}):lt(lt({},e),{},{activeItemId:null,query:"",status:"idle",collections:[]});case"submit":return lt(lt({},e),{},{activeItemId:null,isOpen:!1,status:"idle"});case"reset":return lt(lt({},e),{},{activeItemId:!0===t.props.openOnFocus?t.props.defaultActiveItemId:null,status:"idle",query:""});case"focus":return lt(lt({},e),{},{activeItemId:t.props.defaultActiveItemId,isOpen:(t.props.openOnFocus||Boolean(e.query))&&t.props.shouldPanelOpen({state:e})});case"blur":return t.props.debug?e:lt(lt({},e),{},{isOpen:!1,activeItemId:null});case"mouseleave":return lt(lt({},e),{},{activeItemId:t.props.defaultActiveItemId});default:return"The reducer action ".concat(JSON.stringify(t.type)," is not supported."),e}};function ft(e){return ft="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ft(e)}function mt(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function pt(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?mt(Object(r),!0).forEach((function(t){vt(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):mt(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function vt(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==ft(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==ft(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===ft(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function dt(e){var t=[],r=ee(e,t),n=R(st,r,(function(e){var t=e.prevState,n=e.state;r.onStateChange(pt({prevState:t,state:n,refresh:a,navigator:r.navigator},o))})),o=function(e){var t=e.store;return{setActiveItemId:function(e){t.dispatch("setActiveItemId",e)},setQuery:function(e){t.dispatch("setQuery",e)},setCollections:function(e){var r=0,n=e.map((function(e){return F(F({},e),{},{items:L(e.items).map((function(e){return F(F({},e),{},{__autocomplete_id:r++})}))})}));t.dispatch("setCollections",n)},setIsOpen:function(e){t.dispatch("setIsOpen",e)},setStatus:function(e){t.dispatch("setStatus",e)},setContext:function(e){t.dispatch("setContext",e)}}}({store:n}),i=Ge(pt({props:r,refresh:a,store:n,navigator:r.navigator},o));function a(){return Ce(pt({event:new Event("input"),nextState:{isOpen:n.getState().isOpen},props:r,navigator:r.navigator,query:n.getState().query,refresh:a,store:n},o))}if(e.insights&&!r.plugins.some((function(e){return"aa.algoliaInsightsPlugin"===e.name}))){var c="boolean"==typeof e.insights?{}:e.insights;r.plugins.push(N(c))}return r.plugins.forEach((function(e){var n;return null===(n=e.subscribe)||void 0===n?void 0:n.call(e,pt(pt({},o),{},{navigator:r.navigator,refresh:a,onSelect:function(e){t.push({onSelect:e})},onActive:function(e){t.push({onActive:e})},onResolve:function(e){t.push({onResolve:e})}}))})),function(e){var t,r,n=e.metadata,o=e.environment;if(null===(t=o.navigator)||void 0===t||null===(r=t.userAgent)||void 0===r?void 0:r.includes("Algolia Crawler")){var i=o.document.createElement("meta"),a=o.document.querySelector("head");i.name="algolia:metadata",setTimeout((function(){i.content=JSON.stringify(n),a.appendChild(i)}),0)}}({metadata:nt({plugins:r.plugins,options:e}),environment:r.environment}),pt(pt({refresh:a,navigator:r.navigator},i),o)}var yt=r(959),ht=64;function bt(e){var t=e.translations,r=(void 0===t?{}:t).searchByText,n=void 0===r?"Search by":r;return yt.createElement("a",{href:"https://www.algolia.com/ref/docsearch/?utm_source=".concat(window.location.hostname,"&utm_medium=referral&utm_content=powered_by&utm_campaign=docsearch"),target:"_blank",rel:"noopener noreferrer"},yt.createElement("span",{className:"DocSearch-Label"},n),yt.createElement("svg",{width:"77",height:"19","aria-label":"Algolia",role:"img",id:"Layer_1",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 2196.2 500"},yt.createElement("defs",null,yt.createElement("style",null,".cls-1,.cls-2{fill:#003dff;}.cls-2{fill-rule:evenodd;}")),yt.createElement("path",{className:"cls-2",d:"M1070.38,275.3V5.91c0-3.63-3.24-6.39-6.82-5.83l-50.46,7.94c-2.87,.45-4.99,2.93-4.99,5.84l.17,273.22c0,12.92,0,92.7,95.97,95.49,3.33,.1,6.09-2.58,6.09-5.91v-40.78c0-2.96-2.19-5.51-5.12-5.84-34.85-4.01-34.85-47.57-34.85-54.72Z"}),yt.createElement("rect",{className:"cls-1",x:"1845.88",y:"104.73",width:"62.58",height:"277.9",rx:"5.9",ry:"5.9"}),yt.createElement("path",{className:"cls-2",d:"M1851.78,71.38h50.77c3.26,0,5.9-2.64,5.9-5.9V5.9c0-3.62-3.24-6.39-6.82-5.83l-50.77,7.95c-2.87,.45-4.99,2.92-4.99,5.83v51.62c0,3.26,2.64,5.9,5.9,5.9Z"}),yt.createElement("path",{className:"cls-2",d:"M1764.03,275.3V5.91c0-3.63-3.24-6.39-6.82-5.83l-50.46,7.94c-2.87,.45-4.99,2.93-4.99,5.84l.17,273.22c0,12.92,0,92.7,95.97,95.49,3.33,.1,6.09-2.58,6.09-5.91v-40.78c0-2.96-2.19-5.51-5.12-5.84-34.85-4.01-34.85-47.57-34.85-54.72Z"}),yt.createElement("path",{className:"cls-2",d:"M1631.95,142.72c-11.14-12.25-24.83-21.65-40.78-28.31-15.92-6.53-33.26-9.85-52.07-9.85-18.78,0-36.15,3.17-51.92,9.85-15.59,6.66-29.29,16.05-40.76,28.31-11.47,12.23-20.38,26.87-26.76,44.03-6.38,17.17-9.24,37.37-9.24,58.36,0,20.99,3.19,36.87,9.55,54.21,6.38,17.32,15.14,32.11,26.45,44.36,11.29,12.23,24.83,21.62,40.6,28.46,15.77,6.83,40.12,10.33,52.4,10.48,12.25,0,36.78-3.82,52.7-10.48,15.92-6.68,29.46-16.23,40.78-28.46,11.29-12.25,20.05-27.04,26.25-44.36,6.22-17.34,9.24-33.22,9.24-54.21,0-20.99-3.34-41.19-10.03-58.36-6.38-17.17-15.14-31.8-26.43-44.03Zm-44.43,163.75c-11.47,15.75-27.56,23.7-48.09,23.7-20.55,0-36.63-7.8-48.1-23.7-11.47-15.75-17.21-34.01-17.21-61.2,0-26.89,5.59-49.14,17.06-64.87,11.45-15.75,27.54-23.52,48.07-23.52,20.55,0,36.63,7.78,48.09,23.52,11.47,15.57,17.36,37.98,17.36,64.87,0,27.19-5.72,45.3-17.19,61.2Z"}),yt.createElement("path",{className:"cls-2",d:"M894.42,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-14.52,22.58-22.99,49.63-22.99,78.73,0,44.89,20.13,84.92,51.59,111.1,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47,1.23,0,2.46-.03,3.68-.09,.36-.02,.71-.05,1.07-.07,.87-.05,1.75-.11,2.62-.2,.34-.03,.68-.08,1.02-.12,.91-.1,1.82-.21,2.73-.34,.21-.03,.42-.07,.63-.1,32.89-5.07,61.56-30.82,70.9-62.81v57.83c0,3.26,2.64,5.9,5.9,5.9h50.42c3.26,0,5.9-2.64,5.9-5.9V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,206.92c-12.2,10.16-27.97,13.98-44.84,15.12-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-42.24,0-77.12-35.89-77.12-79.37,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33v142.83Z"}),yt.createElement("path",{className:"cls-2",d:"M2133.97,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-14.52,22.58-22.99,49.63-22.99,78.73,0,44.89,20.13,84.92,51.59,111.1,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47,1.23,0,2.46-.03,3.68-.09,.36-.02,.71-.05,1.07-.07,.87-.05,1.75-.11,2.62-.2,.34-.03,.68-.08,1.02-.12,.91-.1,1.82-.21,2.73-.34,.21-.03,.42-.07,.63-.1,32.89-5.07,61.56-30.82,70.9-62.81v57.83c0,3.26,2.64,5.9,5.9,5.9h50.42c3.26,0,5.9-2.64,5.9-5.9V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,206.92c-12.2,10.16-27.97,13.98-44.84,15.12-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-42.24,0-77.12-35.89-77.12-79.37,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33v142.83Z"}),yt.createElement("path",{className:"cls-2",d:"M1314.05,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-11.79,18.34-19.6,39.64-22.11,62.59-.58,5.3-.88,10.68-.88,16.14s.31,11.15,.93,16.59c4.28,38.09,23.14,71.61,50.66,94.52,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47h0c17.99,0,34.61-5.93,48.16-15.97,16.29-11.58,28.88-28.54,34.48-47.75v50.26h-.11v11.08c0,21.84-5.71,38.27-17.34,49.36-11.61,11.08-31.04,16.63-58.25,16.63-11.12,0-28.79-.59-46.6-2.41-2.83-.29-5.46,1.5-6.27,4.22l-12.78,43.11c-1.02,3.46,1.27,7.02,4.83,7.53,21.52,3.08,42.52,4.68,54.65,4.68,48.91,0,85.16-10.75,108.89-32.21,21.48-19.41,33.15-48.89,35.2-88.52V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,64.1s.65,139.13,0,143.36c-12.08,9.77-27.11,13.59-43.49,14.7-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-1.32,0-2.63-.03-3.94-.1-40.41-2.11-74.52-37.26-74.52-79.38,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33Z"}),yt.createElement("path",{className:"cls-1",d:"M249.83,0C113.3,0,2,110.09,.03,246.16c-2,138.19,110.12,252.7,248.33,253.5,42.68,.25,83.79-10.19,120.3-30.03,3.56-1.93,4.11-6.83,1.08-9.51l-23.38-20.72c-4.75-4.21-11.51-5.4-17.36-2.92-25.48,10.84-53.17,16.38-81.71,16.03-111.68-1.37-201.91-94.29-200.13-205.96,1.76-110.26,92-199.41,202.67-199.41h202.69V407.41l-115-102.18c-3.72-3.31-9.42-2.66-12.42,1.31-18.46,24.44-48.53,39.64-81.93,37.34-46.33-3.2-83.87-40.5-87.34-86.81-4.15-55.24,39.63-101.52,94-101.52,49.18,0,89.68,37.85,93.91,85.95,.38,4.28,2.31,8.27,5.52,11.12l29.95,26.55c3.4,3.01,8.79,1.17,9.63-3.3,2.16-11.55,2.92-23.58,2.07-35.92-4.82-70.34-61.8-126.93-132.17-131.26-80.68-4.97-148.13,58.14-150.27,137.25-2.09,77.1,61.08,143.56,138.19,145.26,32.19,.71,62.03-9.41,86.14-26.95l150.26,133.2c6.44,5.71,16.61,1.14,16.61-7.47V9.48C499.66,4.25,495.42,0,490.18,0H249.83Z"})))}function gt(e){return yt.createElement("svg",{width:"15",height:"15","aria-label":e.ariaLabel,role:"img"},yt.createElement("g",{fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.2"},e.children))}function Ot(e){var t=e.translations,r=void 0===t?{}:t,n=r.selectText,o=void 0===n?"to select":n,i=r.selectKeyAriaLabel,a=void 0===i?"Enter key":i,c=r.navigateText,l=void 0===c?"to navigate":c,u=r.navigateUpKeyAriaLabel,s=void 0===u?"Arrow up":u,f=r.navigateDownKeyAriaLabel,m=void 0===f?"Arrow down":f,p=r.closeText,v=void 0===p?"to close":p,d=r.closeKeyAriaLabel,y=void 0===d?"Escape key":d,h=r.searchByText,b=void 0===h?"Search by":h;return yt.createElement(yt.Fragment,null,yt.createElement("div",{className:"DocSearch-Logo"},yt.createElement(bt,{translations:{searchByText:b}})),yt.createElement("ul",{className:"DocSearch-Commands"},yt.createElement("li",null,yt.createElement("kbd",{className:"DocSearch-Commands-Key"},yt.createElement(gt,{ariaLabel:a},yt.createElement("path",{d:"M12 3.53088v3c0 1-1 2-2 2H4M7 11.53088l-3-3 3-3"}))),yt.createElement("span",{className:"DocSearch-Label"},o)),yt.createElement("li",null,yt.createElement("kbd",{className:"DocSearch-Commands-Key"},yt.createElement(gt,{ariaLabel:m},yt.createElement("path",{d:"M7.5 3.5v8M10.5 8.5l-3 3-3-3"}))),yt.createElement("kbd",{className:"DocSearch-Commands-Key"},yt.createElement(gt,{ariaLabel:s},yt.createElement("path",{d:"M7.5 11.5v-8M10.5 6.5l-3-3-3 3"}))),yt.createElement("span",{className:"DocSearch-Label"},l)),yt.createElement("li",null,yt.createElement("kbd",{className:"DocSearch-Commands-Key"},yt.createElement(gt,{ariaLabel:y},yt.createElement("path",{d:"M13.6167 8.936c-.1065.3583-.6883.962-1.4875.962-.7993 0-1.653-.9165-1.653-2.1258v-.5678c0-1.2548.7896-2.1016 1.653-2.1016.8634 0 1.3601.4778 1.4875 1.0724M9 6c-.1352-.4735-.7506-.9219-1.46-.8972-.7092.0246-1.344.57-1.344 1.2166s.4198.8812 1.3445.9805C8.465 7.3992 8.968 7.9337 9 8.5c.032.5663-.454 1.398-1.4595 1.398C6.6593 9.898 6 9 5.963 8.4851m-1.4748.5368c-.2635.5941-.8099.876-1.5443.876s-1.7073-.6248-1.7073-2.204v-.4603c0-1.0416.721-2.131 1.7073-2.131.9864 0 1.6425 1.031 1.5443 2.2492h-2.956"}))),yt.createElement("span",{className:"DocSearch-Label"},v))))}function St(e){var t=e.hit,r=e.children;return yt.createElement("a",{href:t.url},r)}function jt(){return yt.createElement("svg",{width:"40",height:"40",viewBox:"0 0 20 20",fill:"none",fillRule:"evenodd",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"},yt.createElement("path",{d:"M19 4.8a16 16 0 00-2-1.2m-3.3-1.2A16 16 0 001.1 4.7M16.7 8a12 12 0 00-2.8-1.4M10 6a12 12 0 00-6.7 2M12.3 14.7a4 4 0 00-4.5 0M14.5 11.4A8 8 0 0010 10M3 16L18 2M10 18h0"}))}function wt(e){var t=e.translations,r=void 0===t?{}:t,n=r.titleText,o=void 0===n?"Unable to fetch results":n,i=r.helpText,a=void 0===i?"You might want to check your network connection.":i;return yt.createElement("div",{className:"DocSearch-ErrorScreen"},yt.createElement("div",{className:"DocSearch-Screen-Icon"},yt.createElement(jt,null)),yt.createElement("p",{className:"DocSearch-Title"},o),yt.createElement("p",{className:"DocSearch-Help"},a))}function Et(){return yt.createElement("svg",{width:"40",height:"40",viewBox:"0 0 20 20",fill:"none",fillRule:"evenodd",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"},yt.createElement("path",{d:"M15.5 4.8c2 3 1.7 7-1 9.7h0l4.3 4.3-4.3-4.3a7.8 7.8 0 01-9.8 1m-2.2-2.2A7.8 7.8 0 0113.2 2.4M2 18L18 2"}))}var Pt=["translations"];function It(e){return function(e){if(Array.isArray(e))return Dt(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Dt(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Dt(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Dt(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function At(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function kt(e){var t=e.translations,r=void 0===t?{}:t,n=At(e,Pt),o=r.noResultsText,i=void 0===o?"No results for":o,a=r.suggestedQueryText,c=void 0===a?"Try searching for":a,l=r.reportMissingResultsText,u=void 0===l?"Believe this query should return results?":l,s=r.reportMissingResultsLinkText,f=void 0===s?"Let us know.":s,m=n.state.context.searchSuggestions;return yt.createElement("div",{className:"DocSearch-NoResults"},yt.createElement("div",{className:"DocSearch-Screen-Icon"},yt.createElement(Et,null)),yt.createElement("p",{className:"DocSearch-Title"},i,' "',yt.createElement("strong",null,n.state.query),'"'),m&&m.length>0&&yt.createElement("div",{className:"DocSearch-NoResults-Prefill-List"},yt.createElement("p",{className:"DocSearch-Help"},c,":"),yt.createElement("ul",null,m.slice(0,3).reduce((function(e,t){return[].concat(It(e),[yt.createElement("li",{key:t},yt.createElement("button",{className:"DocSearch-Prefill",key:t,type:"button",onClick:function(){n.setQuery(t.toLowerCase()+" "),n.refresh(),n.inputRef.current.focus()}},t))])}),[]))),n.getMissingResultsUrl&&yt.createElement("p",{className:"DocSearch-Help"},"".concat(u," "),yt.createElement("a",{href:n.getMissingResultsUrl({query:n.state.query}),target:"_blank",rel:"noopener noreferrer"},f)))}var xt=function(){return yt.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},yt.createElement("path",{d:"M17 6v12c0 .52-.2 1-1 1H4c-.7 0-1-.33-1-1V2c0-.55.42-1 1-1h8l5 5zM14 8h-3.13c-.51 0-.87-.34-.87-.87V4",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))};function Ct(e){switch(e.type){case"lvl1":return yt.createElement(xt,null);case"content":return yt.createElement(_t,null);default:return yt.createElement(Nt,null)}}function Nt(){return yt.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},yt.createElement("path",{d:"M13 13h4-4V8H7v5h6v4-4H7V8H3h4V3v5h6V3v5h4-4v5zm-6 0v4-4H3h4z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}function _t(){return yt.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},yt.createElement("path",{d:"M17 5H3h14zm0 5H3h14zm0 5H3h14z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))}function Tt(){return yt.createElement("svg",{className:"DocSearch-Hit-Select-Icon",width:"20",height:"20",viewBox:"0 0 20 20"},yt.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},yt.createElement("path",{d:"M18 3v4c0 2-2 4-4 4H2"}),yt.createElement("path",{d:"M8 17l-6-6 6-6"})))}var qt=["hit","attribute","tagName"];function Rt(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Lt(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Rt(Object(r),!0).forEach((function(t){Mt(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Rt(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function Mt(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Ht(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function Ft(e,t){return t.split(".").reduce((function(e,t){return null!=e&&e[t]?e[t]:null}),e)}function Ut(e){var t=e.hit,r=e.attribute,n=e.tagName,o=void 0===n?"span":n,i=Ht(e,qt);return(0,yt.createElement)(o,Lt(Lt({},i),{},{dangerouslySetInnerHTML:{__html:Ft(t,"_snippetResult.".concat(r,".value"))||Ft(t,r)}}))}function Bt(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==r)return;var n,o,i=[],a=!0,c=!1;try{for(r=r.call(e);!(a=(n=r.next()).done)&&(i.push(n.value),!t||i.length!==t);a=!0);}catch(l){c=!0,o=l}finally{try{a||null==r.return||r.return()}finally{if(c)throw o}}return i}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return Vt(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Vt(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Vt(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function Kt(){return Kt=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},Kt.apply(this,arguments)}function $t(e){return e.collection&&0!==e.collection.items.length?yt.createElement("section",{className:"DocSearch-Hits"},yt.createElement("div",{className:"DocSearch-Hit-source"},e.title),yt.createElement("ul",e.getListProps(),e.collection.items.map((function(t,r){return yt.createElement(Jt,Kt({key:[e.title,t.objectID].join(":"),item:t,index:r},e))})))):null}function Jt(e){var t=e.item,r=e.index,n=e.renderIcon,o=e.renderAction,i=e.getItemProps,a=e.onItemClick,c=e.collection,l=e.hitComponent,u=Bt(yt.useState(!1),2),s=u[0],f=u[1],m=Bt(yt.useState(!1),2),p=m[0],v=m[1],d=yt.useRef(null),y=l;return yt.createElement("li",Kt({className:["DocSearch-Hit",t.__docsearch_parent&&"DocSearch-Hit--Child",s&&"DocSearch-Hit--deleting",p&&"DocSearch-Hit--favoriting"].filter(Boolean).join(" "),onTransitionEnd:function(){d.current&&d.current()}},i({item:t,source:c.source,onClick:function(e){a(t,e)}})),yt.createElement(y,{hit:t},yt.createElement("div",{className:"DocSearch-Hit-Container"},n({item:t,index:r}),t.hierarchy[t.type]&&"lvl1"===t.type&&yt.createElement("div",{className:"DocSearch-Hit-content-wrapper"},yt.createElement(Ut,{className:"DocSearch-Hit-title",hit:t,attribute:"hierarchy.lvl1"}),t.content&&yt.createElement(Ut,{className:"DocSearch-Hit-path",hit:t,attribute:"content"})),t.hierarchy[t.type]&&("lvl2"===t.type||"lvl3"===t.type||"lvl4"===t.type||"lvl5"===t.type||"lvl6"===t.type)&&yt.createElement("div",{className:"DocSearch-Hit-content-wrapper"},yt.createElement(Ut,{className:"DocSearch-Hit-title",hit:t,attribute:"hierarchy.".concat(t.type)}),yt.createElement(Ut,{className:"DocSearch-Hit-path",hit:t,attribute:"hierarchy.lvl1"})),"content"===t.type&&yt.createElement("div",{className:"DocSearch-Hit-content-wrapper"},yt.createElement(Ut,{className:"DocSearch-Hit-title",hit:t,attribute:"content"}),yt.createElement(Ut,{className:"DocSearch-Hit-path",hit:t,attribute:"hierarchy.lvl1"})),o({item:t,runDeleteTransition:function(e){f(!0),d.current=e},runFavoriteTransition:function(e){v(!0),d.current=e}}))))}var zt=/(<mark>|<\/mark>)/g,Wt=RegExp(zt.source);function Qt(e){var t,r,n=e;if(!n.__docsearch_parent&&!e._highlightResult)return e.hierarchy.lvl0;var o=((n.__docsearch_parent?null===(t=n.__docsearch_parent)||void 0===t||null===(t=t._highlightResult)||void 0===t||null===(t=t.hierarchy)||void 0===t?void 0:t.lvl0:null===(r=e._highlightResult)||void 0===r||null===(r=r.hierarchy)||void 0===r?void 0:r.lvl0)||{}).value;return o&&Wt.test(o)?o.replace(zt,""):o}function Zt(){return Zt=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},Zt.apply(this,arguments)}function Gt(e){return yt.createElement("div",{className:"DocSearch-Dropdown-Container"},e.state.collections.map((function(t){if(0===t.items.length)return null;var r=Qt(t.items[0]);return yt.createElement($t,Zt({},e,{key:t.source.sourceId,title:r,collection:t,renderIcon:function(e){var r,n=e.item,o=e.index;return yt.createElement(yt.Fragment,null,n.__docsearch_parent&&yt.createElement("svg",{className:"DocSearch-Hit-Tree",viewBox:"0 0 24 54"},yt.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},n.__docsearch_parent!==(null===(r=t.items[o+1])||void 0===r?void 0:r.__docsearch_parent)?yt.createElement("path",{d:"M8 6v21M20 27H8.3"}):yt.createElement("path",{d:"M8 6v42M20 27H8.3"}))),yt.createElement("div",{className:"DocSearch-Hit-icon"},yt.createElement(Ct,{type:n.type})))},renderAction:function(){return yt.createElement("div",{className:"DocSearch-Hit-action"},yt.createElement(Tt,null))}}))})),e.resultsFooterComponent&&yt.createElement("section",{className:"DocSearch-HitsFooter"},yt.createElement(e.resultsFooterComponent,{state:e.state})))}function Xt(){return yt.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},yt.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},yt.createElement("path",{d:"M3.18 6.6a8.23 8.23 0 1112.93 9.94h0a8.23 8.23 0 01-11.63 0"}),yt.createElement("path",{d:"M6.44 7.25H2.55V3.36M10.45 6v5.6M10.45 11.6L13 13"})))}function Yt(){return yt.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},yt.createElement("path",{d:"M10 14.2L5 17l1-5.6-4-4 5.5-.7 2.5-5 2.5 5 5.6.8-4 4 .9 5.5z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))}function er(){return yt.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},yt.createElement("path",{d:"M10 10l5.09-5.09L10 10l5.09 5.09L10 10zm0 0L4.91 4.91 10 10l-5.09 5.09L10 10z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}var tr=["translations"];function rr(){return rr=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},rr.apply(this,arguments)}function nr(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function or(e){var t=e.translations,r=void 0===t?{}:t,n=nr(e,tr),o=r.recentSearchesTitle,i=void 0===o?"Recent":o,a=r.noRecentSearchesText,c=void 0===a?"No recent searches":a,l=r.saveRecentSearchButtonTitle,u=void 0===l?"Save this search":l,s=r.removeRecentSearchButtonTitle,f=void 0===s?"Remove this search from history":s,m=r.favoriteSearchesTitle,p=void 0===m?"Favorite":m,v=r.removeFavoriteSearchButtonTitle,d=void 0===v?"Remove this search from favorites":v;return"idle"===n.state.status&&!1===n.hasCollections?n.disableUserPersonalization?null:yt.createElement("div",{className:"DocSearch-StartScreen"},yt.createElement("p",{className:"DocSearch-Help"},c)):!1===n.hasCollections?null:yt.createElement("div",{className:"DocSearch-Dropdown-Container"},yt.createElement($t,rr({},n,{title:i,collection:n.state.collections[0],renderIcon:function(){return yt.createElement("div",{className:"DocSearch-Hit-icon"},yt.createElement(Xt,null))},renderAction:function(e){var t=e.item,r=e.runFavoriteTransition,o=e.runDeleteTransition;return yt.createElement(yt.Fragment,null,yt.createElement("div",{className:"DocSearch-Hit-action"},yt.createElement("button",{className:"DocSearch-Hit-action-button",title:u,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),r((function(){n.favoriteSearches.add(t),n.recentSearches.remove(t),n.refresh()}))}},yt.createElement(Yt,null))),yt.createElement("div",{className:"DocSearch-Hit-action"},yt.createElement("button",{className:"DocSearch-Hit-action-button",title:f,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),o((function(){n.recentSearches.remove(t),n.refresh()}))}},yt.createElement(er,null))))}})),yt.createElement($t,rr({},n,{title:p,collection:n.state.collections[1],renderIcon:function(){return yt.createElement("div",{className:"DocSearch-Hit-icon"},yt.createElement(Yt,null))},renderAction:function(e){var t=e.item,r=e.runDeleteTransition;return yt.createElement("div",{className:"DocSearch-Hit-action"},yt.createElement("button",{className:"DocSearch-Hit-action-button",title:d,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),r((function(){n.favoriteSearches.remove(t),n.refresh()}))}},yt.createElement(er,null)))}})))}var ir=["translations"];function ar(){return ar=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},ar.apply(this,arguments)}function cr(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var lr=yt.memo((function(e){var t=e.translations,r=void 0===t?{}:t,n=cr(e,ir);if("error"===n.state.status)return yt.createElement(wt,{translations:null==r?void 0:r.errorScreen});var o=n.state.collections.some((function(e){return e.items.length>0}));return n.state.query?!1===o?yt.createElement(kt,ar({},n,{translations:null==r?void 0:r.noResultsScreen})):yt.createElement(Gt,n):yt.createElement(or,ar({},n,{hasCollections:o,translations:null==r?void 0:r.startScreen}))}),(function(e,t){return"loading"===t.state.status||"stalled"===t.state.status}));function ur(){return yt.createElement("svg",{viewBox:"0 0 38 38",stroke:"currentColor",strokeOpacity:".5"},yt.createElement("g",{fill:"none",fillRule:"evenodd"},yt.createElement("g",{transform:"translate(1 1)",strokeWidth:"2"},yt.createElement("circle",{strokeOpacity:".3",cx:"18",cy:"18",r:"18"}),yt.createElement("path",{d:"M36 18c0-9.94-8.06-18-18-18"},yt.createElement("animateTransform",{attributeName:"transform",type:"rotate",from:"0 18 18",to:"360 18 18",dur:"1s",repeatCount:"indefinite"})))))}var sr=r(35),fr=["translations"];function mr(){return mr=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},mr.apply(this,arguments)}function pr(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function vr(e){var t=e.translations,r=void 0===t?{}:t,n=pr(e,fr),o=r.resetButtonTitle,i=void 0===o?"Clear the query":o,a=r.resetButtonAriaLabel,c=void 0===a?"Clear the query":a,l=r.cancelButtonText,u=void 0===l?"Cancel":l,s=r.cancelButtonAriaLabel,f=void 0===s?"Cancel":s,m=n.getFormProps({inputElement:n.inputRef.current}).onReset;return yt.useEffect((function(){n.autoFocus&&n.inputRef.current&&n.inputRef.current.focus()}),[n.autoFocus,n.inputRef]),yt.useEffect((function(){n.isFromSelection&&n.inputRef.current&&n.inputRef.current.select()}),[n.isFromSelection,n.inputRef]),yt.createElement(yt.Fragment,null,yt.createElement("form",{className:"DocSearch-Form",onSubmit:function(e){e.preventDefault()},onReset:m},yt.createElement("label",mr({className:"DocSearch-MagnifierLabel"},n.getLabelProps()),yt.createElement(sr.W,null)),yt.createElement("div",{className:"DocSearch-LoadingIndicator"},yt.createElement(ur,null)),yt.createElement("input",mr({className:"DocSearch-Input",ref:n.inputRef},n.getInputProps({inputElement:n.inputRef.current,autoFocus:n.autoFocus,maxLength:ht}))),yt.createElement("button",{type:"reset",title:i,className:"DocSearch-Reset","aria-label":c,hidden:!n.state.query},yt.createElement(er,null))),yt.createElement("button",{className:"DocSearch-Cancel",type:"reset","aria-label":f,onClick:n.onClose},u))}var dr=["_highlightResult","_snippetResult"];function yr(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function hr(e){return!1===function(){var e="__TEST_KEY__";try{return localStorage.setItem(e,""),localStorage.removeItem(e),!0}catch(t){return!1}}()?{setItem:function(){},getItem:function(){return[]}}:{setItem:function(t){return window.localStorage.setItem(e,JSON.stringify(t))},getItem:function(){var t=window.localStorage.getItem(e);return t?JSON.parse(t):[]}}}function br(e){var t=e.key,r=e.limit,n=void 0===r?5:r,o=hr(t),i=o.getItem().slice(0,n);return{add:function(e){var t=e,r=(t._highlightResult,t._snippetResult,yr(t,dr)),a=i.findIndex((function(e){return e.objectID===r.objectID}));a>-1&&i.splice(a,1),i.unshift(r),i=i.slice(0,n),o.setItem(i)},remove:function(e){i=i.filter((function(t){return t.objectID!==e.objectID})),o.setItem(i)},getAll:function(){return i}}}function gr(e){const t=`algoliasearch-client-js-${e.key}`;let r;const n=()=>(void 0===r&&(r=e.localStorage||window.localStorage),r),o=()=>JSON.parse(n().getItem(t)||"{}"),i=e=>{n().setItem(t,JSON.stringify(e))};return{get:(t,r,n={miss:()=>Promise.resolve()})=>Promise.resolve().then((()=>{(()=>{const t=e.timeToLive?1e3*e.timeToLive:null,r=o(),n=Object.fromEntries(Object.entries(r).filter((([,e])=>void 0!==e.timestamp)));if(i(n),!t)return;const a=Object.fromEntries(Object.entries(n).filter((([,e])=>{const r=(new Date).getTime();return!(e.timestamp+t<r)})));i(a)})();const r=JSON.stringify(t);return o()[r]})).then((e=>Promise.all([e?e.value:r(),void 0!==e]))).then((([e,t])=>Promise.all([e,t||n.miss(e)]))).then((([e])=>e)),set:(e,r)=>Promise.resolve().then((()=>{const i=o();return i[JSON.stringify(e)]={timestamp:(new Date).getTime(),value:r},n().setItem(t,JSON.stringify(i)),r})),delete:e=>Promise.resolve().then((()=>{const r=o();delete r[JSON.stringify(e)],n().setItem(t,JSON.stringify(r))})),clear:()=>Promise.resolve().then((()=>{n().removeItem(t)}))}}function Or(e){const t=[...e.caches],r=t.shift();return void 0===r?{get:(e,t,r={miss:()=>Promise.resolve()})=>t().then((e=>Promise.all([e,r.miss(e)]))).then((([e])=>e)),set:(e,t)=>Promise.resolve(t),delete:e=>Promise.resolve(),clear:()=>Promise.resolve()}:{get:(e,n,o={miss:()=>Promise.resolve()})=>r.get(e,n,o).catch((()=>Or({caches:t}).get(e,n,o))),set:(e,n)=>r.set(e,n).catch((()=>Or({caches:t}).set(e,n))),delete:e=>r.delete(e).catch((()=>Or({caches:t}).delete(e))),clear:()=>r.clear().catch((()=>Or({caches:t}).clear()))}}function Sr(e={serializable:!0}){let t={};return{get(r,n,o={miss:()=>Promise.resolve()}){const i=JSON.stringify(r);if(i in t)return Promise.resolve(e.serializable?JSON.parse(t[i]):t[i]);const a=n(),c=o&&o.miss||(()=>Promise.resolve());return a.then((e=>c(e))).then((()=>a))},set:(r,n)=>(t[JSON.stringify(r)]=e.serializable?JSON.stringify(n):n,Promise.resolve(n)),delete:e=>(delete t[JSON.stringify(e)],Promise.resolve()),clear:()=>(t={},Promise.resolve())}}function jr(e){let t=e.length-1;for(;t>0;t--){const r=Math.floor(Math.random()*(t+1)),n=e[t];e[t]=e[r],e[r]=n}return e}function wr(e,t){return t?(Object.keys(t).forEach((r=>{e[r]=t[r](e)})),e):e}function Er(e,...t){let r=0;return e.replace(/%s/g,(()=>encodeURIComponent(t[r++])))}const Pr="4.20.0",Ir={WithinQueryParameters:0,WithinHeaders:1};function Dr(e,t){const r=e||{},n=r.data||{};return Object.keys(r).forEach((e=>{-1===["timeout","headers","queryParameters","data","cacheable"].indexOf(e)&&(n[e]=r[e])})),{data:Object.entries(n).length>0?n:void 0,timeout:r.timeout||t,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}const Ar={Read:1,Write:2,Any:3},kr={Up:1,Down:2,Timeouted:3},xr=12e4;function Cr(e,t=kr.Up){return{...e,status:t,lastUpdate:Date.now()}}function Nr(e){return"string"==typeof e?{protocol:"https",url:e,accept:Ar.Any}:{protocol:e.protocol||"https",url:e.url,accept:e.accept||Ar.Any}}const _r={Delete:"DELETE",Get:"GET",Post:"POST",Put:"PUT"};function Tr(e,t){return Promise.all(t.map((t=>e.get(t,(()=>Promise.resolve(Cr(t))))))).then((e=>{const r=e.filter((e=>function(e){return e.status===kr.Up||Date.now()-e.lastUpdate>xr}(e))),n=e.filter((e=>function(e){return e.status===kr.Timeouted&&Date.now()-e.lastUpdate<=xr}(e))),o=[...r,...n];return{getTimeout:(e,t)=>(0===n.length&&0===e?1:n.length+3+e)*t,statelessHosts:o.length>0?o.map((e=>Nr(e))):t}}))}const qr=(e,t)=>(e=>{const t=e.status;return e.isTimedOut||(({isTimedOut:e,status:t})=>!e&&0==~~t)(e)||2!=~~(t/100)&&4!=~~(t/100)})(e)?t.onRetry(e):(({status:e})=>2==~~(e/100))(e)?t.onSuccess(e):t.onFail(e);function Rr(e,t,r,n){const o=[],i=function(e,t){if(e.method===_r.Get||void 0===e.data&&void 0===t.data)return;const r=Array.isArray(e.data)?e.data:{...e.data,...t.data};return JSON.stringify(r)}(r,n),a=function(e,t){const r={...e.headers,...t.headers},n={};return Object.keys(r).forEach((e=>{const t=r[e];n[e.toLowerCase()]=t})),n}(e,n),c=r.method,l=r.method!==_r.Get?{}:{...r.data,...n.data},u={"x-algolia-agent":e.userAgent.value,...e.queryParameters,...l,...n.queryParameters};let s=0;const f=(t,l)=>{const m=t.pop();if(void 0===m)throw{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:Fr(o)};const p={data:i,headers:a,method:c,url:Mr(m,r.path,u),connectTimeout:l(s,e.timeouts.connect),responseTimeout:l(s,n.timeout)},v=e=>{const r={request:p,response:e,host:m,triesLeft:t.length};return o.push(r),r},d={onSuccess:e=>function(e){try{return JSON.parse(e.content)}catch(t){throw function(e,t){return{name:"DeserializationError",message:e,response:t}}(t.message,e)}}(e),onRetry(r){const n=v(r);return r.isTimedOut&&s++,Promise.all([e.logger.info("Retryable failure",Ur(n)),e.hostsCache.set(m,Cr(m,r.isTimedOut?kr.Timeouted:kr.Down))]).then((()=>f(t,l)))},onFail(e){throw v(e),function({content:e,status:t},r){let n=e;try{n=JSON.parse(e).message}catch(o){}return function(e,t,r){return{name:"ApiError",message:e,status:t,transporterStackTrace:r}}(n,t,r)}(e,Fr(o))}};return e.requester.send(p).then((e=>qr(e,d)))};return Tr(e.hostsCache,t).then((e=>f([...e.statelessHosts].reverse(),e.getTimeout)))}function Lr(e){const t={value:`Algolia for JavaScript (${e})`,add(e){const r=`; ${e.segment}${void 0!==e.version?` (${e.version})`:""}`;return-1===t.value.indexOf(r)&&(t.value=`${t.value}${r}`),t}};return t}function Mr(e,t,r){const n=Hr(r);let o=`${e.protocol}://${e.url}/${"/"===t.charAt(0)?t.substr(1):t}`;return n.length&&(o+=`?${n}`),o}function Hr(e){return Object.keys(e).map((t=>{return Er("%s=%s",t,(r=e[t],"[object Object]"===Object.prototype.toString.call(r)||"[object Array]"===Object.prototype.toString.call(r)?JSON.stringify(e[t]):e[t]));var r})).join("&")}function Fr(e){return e.map((e=>Ur(e)))}function Ur(e){const t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return{...e,request:{...e.request,headers:{...e.request.headers,...t}}}}const Br=e=>{const t=e.appId,r=function(e,t,r){const n={"x-algolia-api-key":r,"x-algolia-application-id":t};return{headers:()=>e===Ir.WithinHeaders?n:{},queryParameters:()=>e===Ir.WithinQueryParameters?n:{}}}(void 0!==e.authMode?e.authMode:Ir.WithinHeaders,t,e.apiKey),n=function(e){const{hostsCache:t,logger:r,requester:n,requestsCache:o,responsesCache:i,timeouts:a,userAgent:c,hosts:l,queryParameters:u,headers:s}=e,f={hostsCache:t,logger:r,requester:n,requestsCache:o,responsesCache:i,timeouts:a,userAgent:c,headers:s,queryParameters:u,hosts:l.map((e=>Nr(e))),read(e,t){const r=Dr(t,f.timeouts.read),n=()=>Rr(f,f.hosts.filter((e=>0!=(e.accept&Ar.Read))),e,r);if(!0!==(void 0!==r.cacheable?r.cacheable:e.cacheable))return n();const o={request:e,mappedRequestOptions:r,transporter:{queryParameters:f.queryParameters,headers:f.headers}};return f.responsesCache.get(o,(()=>f.requestsCache.get(o,(()=>f.requestsCache.set(o,n()).then((e=>Promise.all([f.requestsCache.delete(o),e])),(e=>Promise.all([f.requestsCache.delete(o),Promise.reject(e)]))).then((([e,t])=>t))))),{miss:e=>f.responsesCache.set(o,e)})},write:(e,t)=>Rr(f,f.hosts.filter((e=>0!=(e.accept&Ar.Write))),e,Dr(t,f.timeouts.write))};return f}({hosts:[{url:`${t}-dsn.algolia.net`,accept:Ar.Read},{url:`${t}.algolia.net`,accept:Ar.Write}].concat(jr([{url:`${t}-1.algolianet.com`},{url:`${t}-2.algolianet.com`},{url:`${t}-3.algolianet.com`}])),...e,headers:{...r.headers(),"content-type":"application/x-www-form-urlencoded",...e.headers},queryParameters:{...r.queryParameters(),...e.queryParameters}}),o={transporter:n,appId:t,addAlgoliaAgent(e,t){n.userAgent.add({segment:e,version:t})},clearCache:()=>Promise.all([n.requestsCache.clear(),n.responsesCache.clear()]).then((()=>{}))};return wr(o,e.methods)},Vr=e=>(t,r)=>t.method===_r.Get?e.transporter.read(t,r):e.transporter.write(t,r),Kr=e=>(t,r={})=>wr({transporter:e.transporter,appId:e.appId,indexName:t},r.methods),$r=e=>(t,r)=>{const n=t.map((e=>({...e,params:Hr(e.params||{})})));return e.transporter.read({method:_r.Post,path:"1/indexes/*/queries",data:{requests:n},cacheable:!0},r)},Jr=e=>(t,r)=>Promise.all(t.map((t=>{const{facetName:n,facetQuery:o,...i}=t.params;return Kr(e)(t.indexName,{methods:{searchForFacetValues:Qr}}).searchForFacetValues(n,o,{...r,...i})}))),zr=e=>(t,r,n)=>e.transporter.read({method:_r.Post,path:Er("1/answers/%s/prediction",e.indexName),data:{query:t,queryLanguages:r},cacheable:!0},n),Wr=e=>(t,r)=>e.transporter.read({method:_r.Post,path:Er("1/indexes/%s/query",e.indexName),data:{query:t},cacheable:!0},r),Qr=e=>(t,r,n)=>e.transporter.read({method:_r.Post,path:Er("1/indexes/%s/facets/%s/query",e.indexName,t),data:{facetQuery:r},cacheable:!0},n),Zr={Debug:1,Info:2,Error:3};function Gr(e,t,r){const n={appId:e,apiKey:t,timeouts:{connect:1,read:2,write:30},requester:{send:e=>new Promise((t=>{const r=new XMLHttpRequest;r.open(e.method,e.url,!0),Object.keys(e.headers).forEach((t=>r.setRequestHeader(t,e.headers[t])));const n=(e,n)=>setTimeout((()=>{r.abort(),t({status:0,content:n,isTimedOut:!0})}),1e3*e),o=n(e.connectTimeout,"Connection timeout");let i;r.onreadystatechange=()=>{r.readyState>r.OPENED&&void 0===i&&(clearTimeout(o),i=n(e.responseTimeout,"Socket timeout"))},r.onerror=()=>{0===r.status&&(clearTimeout(o),clearTimeout(i),t({content:r.responseText||"Network request failed",status:r.status,isTimedOut:!1}))},r.onload=()=>{clearTimeout(o),clearTimeout(i),t({content:r.responseText,status:r.status,isTimedOut:!1})},r.send(e.data)}))},logger:(o=Zr.Error,{debug:(e,t)=>(Zr.Debug>=o&&console.debug(e,t),Promise.resolve()),info:(e,t)=>(Zr.Info>=o&&console.info(e,t),Promise.resolve()),error:(e,t)=>(console.error(e,t),Promise.resolve())}),responsesCache:Sr(),requestsCache:Sr({serializable:!1}),hostsCache:Or({caches:[gr({key:`${Pr}-${e}`}),Sr()]}),userAgent:Lr(Pr).add({segment:"Browser",version:"lite"}),authMode:Ir.WithinQueryParameters};var o;return Br({...n,...r,methods:{search:$r,searchForFacetValues:Jr,multipleQueries:$r,multipleSearchForFacetValues:Jr,customRequest:Vr,initIndex:e=>t=>Kr(e)(t,{methods:{search:Wr,searchForFacetValues:Qr,findAnswers:zr}})}})}Gr.version=Pr;const Xr=Gr;var Yr="3.5.2";function en(){}function tn(e){return e}function rn(e){return 1===e.button||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey}function nn(e,t,r){return e.reduce((function(e,n){var o=t(n);return e.hasOwnProperty(o)||(e[o]=[]),e[o].length<(r||5)&&e[o].push(n),e}),{})}var on=["footer","searchBox"];function an(){return an=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},an.apply(this,arguments)}function cn(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function ln(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?cn(Object(r),!0).forEach((function(t){un(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):cn(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function un(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function sn(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==r)return;var n,o,i=[],a=!0,c=!1;try{for(r=r.call(e);!(a=(n=r.next()).done)&&(i.push(n.value),!t||i.length!==t);a=!0);}catch(l){c=!0,o=l}finally{try{a||null==r.return||r.return()}finally{if(c)throw o}}return i}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return fn(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return fn(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function fn(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function mn(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function pn(e){var t=e.appId,r=e.apiKey,n=e.indexName,o=e.placeholder,i=void 0===o?"Search docs":o,a=e.searchParameters,c=e.maxResultsPerGroup,l=e.onClose,u=void 0===l?en:l,s=e.transformItems,f=void 0===s?tn:s,m=e.hitComponent,p=void 0===m?St:m,v=e.resultsFooterComponent,d=void 0===v?function(){return null}:v,y=e.navigator,h=e.initialScrollY,b=void 0===h?0:h,g=e.transformSearchClient,O=void 0===g?tn:g,S=e.disableUserPersonalization,j=void 0!==S&&S,w=e.initialQuery,E=void 0===w?"":w,P=e.translations,I=void 0===P?{}:P,D=e.getMissingResultsUrl,A=e.insights,k=void 0!==A&&A,x=I.footer,C=I.searchBox,N=mn(I,on),_=sn(yt.useState({query:"",collections:[],completion:null,context:{},isOpen:!1,activeItemId:null,status:"idle"}),2),T=_[0],q=_[1],R=yt.useRef(null),L=yt.useRef(null),M=yt.useRef(null),H=yt.useRef(null),F=yt.useRef(null),U=yt.useRef(10),B=yt.useRef("undefined"!=typeof window?window.getSelection().toString().slice(0,ht):"").current,V=yt.useRef(E||B).current,K=function(e,t,r){return yt.useMemo((function(){var n=Xr(e,t);return n.addAlgoliaAgent("docsearch",Yr),!1===/docsearch.js \(.*\)/.test(n.transporter.userAgent.value)&&n.addAlgoliaAgent("docsearch-react",Yr),r(n)}),[e,t,r])}(t,r,O),$=yt.useRef(br({key:"__DOCSEARCH_FAVORITE_SEARCHES__".concat(n),limit:10})).current,J=yt.useRef(br({key:"__DOCSEARCH_RECENT_SEARCHES__".concat(n),limit:0===$.getAll().length?7:4})).current,z=yt.useCallback((function(e){if(!j){var t="content"===e.type?e.__docsearch_parent:e;t&&-1===$.getAll().findIndex((function(e){return e.objectID===t.objectID}))&&J.add(t)}}),[$,J,j]),W=yt.useCallback((function(e){if(T.context.algoliaInsightsPlugin&&e.__autocomplete_id){var t=e,r={eventName:"Item Selected",index:t.__autocomplete_indexName,items:[t],positions:[e.__autocomplete_id],queryID:t.__autocomplete_queryID};T.context.algoliaInsightsPlugin.insights.clickedObjectIDsAfterSearch(r)}}),[T.context.algoliaInsightsPlugin]),Q=yt.useMemo((function(){return dt({id:"docsearch",defaultActiveItemId:0,placeholder:i,openOnFocus:!0,initialState:{query:V,context:{searchSuggestions:[]}},insights:k,navigator:y,onStateChange:function(e){q(e.state)},getSources:function(e){var o=e.query,i=e.state,l=e.setContext,s=e.setStatus;if(!o)return j?[]:[{sourceId:"recentSearches",onSelect:function(e){var t=e.item,r=e.event;z(t),rn(r)||u()},getItemUrl:function(e){return e.item.url},getItems:function(){return J.getAll()}},{sourceId:"favoriteSearches",onSelect:function(e){var t=e.item,r=e.event;z(t),rn(r)||u()},getItemUrl:function(e){return e.item.url},getItems:function(){return $.getAll()}}];var m=Boolean(k);return K.search([{query:o,indexName:n,params:ln({attributesToRetrieve:["hierarchy.lvl0","hierarchy.lvl1","hierarchy.lvl2","hierarchy.lvl3","hierarchy.lvl4","hierarchy.lvl5","hierarchy.lvl6","content","type","url"],attributesToSnippet:["hierarchy.lvl1:".concat(U.current),"hierarchy.lvl2:".concat(U.current),"hierarchy.lvl3:".concat(U.current),"hierarchy.lvl4:".concat(U.current),"hierarchy.lvl5:".concat(U.current),"hierarchy.lvl6:".concat(U.current),"content:".concat(U.current)],snippetEllipsisText:"\u2026",highlightPreTag:"<mark>",highlightPostTag:"</mark>",hitsPerPage:20,clickAnalytics:m},a)}]).catch((function(e){throw"RetryError"===e.name&&s("error"),e})).then((function(e){var o=e.results[0],a=o.hits,s=o.nbHits,p=nn(a,(function(e){return Qt(e)}),c);i.context.searchSuggestions.length<Object.keys(p).length&&l({searchSuggestions:Object.keys(p)}),l({nbHits:s});var v={};return m&&(v={__autocomplete_indexName:n,__autocomplete_queryID:o.queryID,__autocomplete_algoliaCredentials:{appId:t,apiKey:r}}),Object.values(p).map((function(e,t){return{sourceId:"hits".concat(t),onSelect:function(e){var t=e.item,r=e.event;z(t),rn(r)||u()},getItemUrl:function(e){return e.item.url},getItems:function(){return Object.values(nn(e,(function(e){return e.hierarchy.lvl1}),c)).map(f).map((function(e){return e.map((function(t){var r=null,n=e.find((function(e){return"lvl1"===e.type&&e.hierarchy.lvl1===t.hierarchy.lvl1}));return"lvl1"!==t.type&&n&&(r=n),ln(ln({},t),{},{__docsearch_parent:r},v)}))})).flat()}}}))}))}})}),[n,a,c,K,u,J,$,z,V,i,y,f,j,k,t,r]),Z=Q.getEnvironmentProps,G=Q.getRootProps,X=Q.refresh;return function(e){var t=e.getEnvironmentProps,r=e.panelElement,n=e.formElement,o=e.inputElement;yt.useEffect((function(){if(r&&n&&o){var e=t({panelElement:r,formElement:n,inputElement:o}),i=e.onTouchStart,a=e.onTouchMove;return window.addEventListener("touchstart",i),window.addEventListener("touchmove",a),function(){window.removeEventListener("touchstart",i),window.removeEventListener("touchmove",a)}}}),[t,r,n,o])}({getEnvironmentProps:Z,panelElement:H.current,formElement:M.current,inputElement:F.current}),function(e){var t=e.container;yt.useEffect((function(){if(t){var e=t.querySelectorAll("a[href]:not([disabled]), button:not([disabled]), input:not([disabled])"),r=e[0],n=e[e.length-1];return t.addEventListener("keydown",o),function(){t.removeEventListener("keydown",o)}}function o(e){"Tab"===e.key&&(e.shiftKey?document.activeElement===r&&(e.preventDefault(),n.focus()):document.activeElement===n&&(e.preventDefault(),r.focus()))}}),[t])}({container:R.current}),yt.useEffect((function(){return document.body.classList.add("DocSearch--active"),function(){var e,t;document.body.classList.remove("DocSearch--active"),null===(e=(t=window).scrollTo)||void 0===e||e.call(t,0,b)}}),[]),yt.useEffect((function(){window.matchMedia("(max-width: 768px)").matches&&(U.current=5)}),[]),yt.useEffect((function(){H.current&&(H.current.scrollTop=0)}),[T.query]),yt.useEffect((function(){V.length>0&&(X(),F.current&&F.current.focus())}),[V,X]),yt.useEffect((function(){function e(){if(L.current){var e=.01*window.innerHeight;L.current.style.setProperty("--docsearch-vh","".concat(e,"px"))}}return e(),window.addEventListener("resize",e),function(){window.removeEventListener("resize",e)}}),[]),yt.createElement("div",an({ref:R},G({"aria-expanded":!0}),{className:["DocSearch","DocSearch-Container","stalled"===T.status&&"DocSearch-Container--Stalled","error"===T.status&&"DocSearch-Container--Errored"].filter(Boolean).join(" "),role:"button",tabIndex:0,onMouseDown:function(e){e.target===e.currentTarget&&u()}}),yt.createElement("div",{className:"DocSearch-Modal",ref:L},yt.createElement("header",{className:"DocSearch-SearchBar",ref:M},yt.createElement(vr,an({},Q,{state:T,autoFocus:0===V.length,inputRef:F,isFromSelection:Boolean(V)&&V===B,translations:C,onClose:u}))),yt.createElement("div",{className:"DocSearch-Dropdown",ref:H},yt.createElement(lr,an({},Q,{indexName:n,state:T,hitComponent:p,resultsFooterComponent:d,disableUserPersonalization:j,recentSearches:J,favoriteSearches:$,inputRef:F,translations:N,getMissingResultsUrl:D,onItemClick:function(e,t){W(e),z(e),rn(t)||u()}}))),yt.createElement("footer",{className:"DocSearch-Footer"},yt.createElement(Ot,{translations:x}))))}}}]); \ No newline at end of file diff --git a/assets/js/9e2c8087.2908c274.js b/assets/js/9e2c8087.2908c274.js new file mode 100644 index 000000000..4417ef68b --- /dev/null +++ b/assets/js/9e2c8087.2908c274.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[857],{4007:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>t,contentTitle:()=>l,default:()=>a,frontMatter:()=>r,metadata:()=>c,toc:()=>h});var d=i(1527),s=i(6225);const r={sidebar_position:2,description:"Learn how to configure keyboard shortcuts with Yazi."},l="keymap.toml",c={id:"configuration/keymap",title:"keymap.toml",description:"Learn how to configure keyboard shortcuts with Yazi.",source:"@site/docs/configuration/keymap.md",sourceDirName:"configuration",slug:"/configuration/keymap",permalink:"/docs/configuration/keymap",draft:!1,unlisted:!1,editUrl:"https://github.com/yazi-rs/yazi-rs.github.io/edit/main/docs/configuration/keymap.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2,description:"Learn how to configure keyboard shortcuts with Yazi."},sidebar:"docsSidebar",previous:{title:"yazi.toml",permalink:"/docs/configuration/yazi"},next:{title:"theme.toml",permalink:"/docs/configuration/theme"}},t={},h=[{value:"[manager]",id:"manager",level:2},{value:"<code>escape</code>",id:"manager.escape",level:3},{value:"<code>quit</code>",id:"manager.quit",level:3},{value:"<code>close</code>",id:"manager.close",level:3},{value:"<code>arrow</code>",id:"manager.arrow",level:3},{value:"<code>leave</code>",id:"manager.leave",level:3},{value:"<code>enter</code>",id:"manager.enter",level:3},{value:"<code>back</code>",id:"manager.back",level:3},{value:"<code>forward</code>",id:"manager.forward",level:3},{value:"<code>seek</code>",id:"manager.seek",level:3},{value:"<code>cd</code>",id:"manager.cd",level:3},{value:"<code>reveal</code>",id:"manager.reveal",level:3},{value:"<code>select</code>",id:"manager.select",level:3},{value:"<code>select_all</code>",id:"manager.select_all",level:3},{value:"<code>visual_mode</code>",id:"manager.visual_mode",level:3},{value:"<code>open</code>",id:"manager.open",level:3},{value:"<code>yank</code>",id:"manager.yank",level:3},{value:"<code>unyank</code>",id:"manager.unyank",level:3},{value:"<code>paste</code>",id:"manager.paste",level:3},{value:"<code>link</code>",id:"manager.link",level:3},{value:"<code>remove</code>",id:"manager.remove",level:3},{value:"<code>create</code>",id:"manager.create",level:3},{value:"<code>rename</code>",id:"manager.rename",level:3},{value:"<code>copy</code>",id:"manager.copy",level:3},{value:"<code>shell</code>",id:"manager.shell",level:3},{value:"<code>hidden</code>",id:"manager.hidden",level:3},{value:"<code>linemode</code>",id:"manager.linemode",level:3},{value:"<code>search</code>",id:"manager.search",level:3},{value:"<code>find</code>",id:"manager.find",level:3},{value:"<code>find_arrow</code>",id:"manager.find_arrow",level:3},{value:"<code>filter</code>",id:"manager.filter",level:3},{value:"<code>sort</code>",id:"manager.sort",level:3},{value:"<code>tab_create</code>",id:"manager.tab_create",level:3},{value:"<code>tab_close</code>",id:"manager.tab_close",level:3},{value:"<code>tab_switch</code>",id:"manager.tab_switch",level:3},{value:"<code>tab_swap</code>",id:"manager.tab_swap",level:3},{value:"<code>tasks_show</code>",id:"manager.tasks_show",level:3},{value:"<code>help</code>",id:"manager.help",level:3},{value:"<code>plugin</code>",id:"manager.plugin",level:3},{value:"[tasks]",id:"tasks",level:2},{value:"<code>close</code>",id:"tasks.close",level:3},{value:"<code>arrow</code>",id:"tasks.arrow",level:3},{value:"<code>inspect</code>",id:"tasks.inspect",level:3},{value:"<code>cancel</code>",id:"tasks.cancel",level:3},{value:"<code>help</code>",id:"tasks.help",level:3},{value:"<code>plugin</code>",id:"tasks.plugin",level:3},{value:"[select]",id:"select",level:2},{value:"<code>close</code>",id:"select.close",level:3},{value:"<code>arrow</code>",id:"select.arrow",level:3},{value:"<code>help</code>",id:"select.help",level:3},{value:"<code>plugin</code>",id:"select.plugin",level:3},{value:"[input]",id:"input",level:2},{value:"<code>close</code>",id:"input.close",level:3},{value:"<code>escape</code>",id:"input.escape",level:3},{value:"<code>move</code>",id:"input.move",level:3},{value:"<code>backward</code>",id:"input.backward",level:3},{value:"<code>forward</code>",id:"input.forward",level:3},{value:"<code>insert</code>",id:"input.insert",level:3},{value:"<code>visual</code>",id:"input.visual",level:3},{value:"<code>delete</code>",id:"input.delete",level:3},{value:"<code>yank</code>",id:"input.yank",level:3},{value:"<code>paste</code>",id:"input.paste",level:3},{value:"<code>undo</code>",id:"input.undo",level:3},{value:"<code>redo</code>",id:"input.redo",level:3},{value:"<code>help</code>",id:"input.help",level:3},{value:"<code>backspace</code>",id:"input.backspace",level:3},{value:"<code>kill</code>",id:"input.kill",level:3},{value:"<code>plugin</code>",id:"input.plugin",level:3},{value:"[completion]",id:"completion",level:2},{value:"<code>close</code>",id:"completion.close",level:3},{value:"<code>close_input</code>",id:"completion.close_input",level:3},{value:"<code>arrow</code>",id:"completion.arrow",level:3},{value:"<code>help</code>",id:"completion.help",level:3},{value:"<code>plugin</code>",id:"completion.plugin",level:3},{value:"[help]",id:"help",level:2},{value:"<code>close</code>",id:"help.close",level:3},{value:"<code>escape</code>",id:"help.escape",level:3},{value:"<code>arrow</code>",id:"help.arrow",level:3},{value:"<code>filter</code>",id:"help.filter",level:3},{value:"<code>plugin</code>",id:"help.plugin",level:3}];function o(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.a)(),...e.components},{Details:i}=n;return i||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(n.h1,{id:"keymaptoml",children:"keymap.toml"}),"\n",(0,d.jsx)(n.admonition,{type:"note",children:(0,d.jsxs)(n.p,{children:["If you haven't created and used your own configuration file yet, please see ",(0,d.jsx)(n.a,{href:"/docs/configuration/overview",children:"Configuration"}),"."]})}),"\n",(0,d.jsxs)(n.p,{children:["You can change Yazi's keybindings in your ",(0,d.jsx)(n.code,{children:"keymap.toml"})," file, which consists of the following 6 layers:"]}),"\n",(0,d.jsxs)(n.ul,{children:["\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#manager",children:"[manager]"})," - File list."]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#tasks",children:"[tasks]"})," - Task manager."]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#select",children:"[select]"}),' - Select component. e.g. "open with" for files.']}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#input",children:"[input]"})," - Input component. e.g. create, rename, etc."]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#completion",children:"[completion]"}),' - Completion component. e.g. "cd" path completion.']}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#help",children:"[help]"})," - Help menu."]}),"\n"]}),"\n",(0,d.jsxs)(n.p,{children:["In each layer, there are two attributes: ",(0,d.jsx)(n.code,{children:"prepend_keymap"})," and ",(0,d.jsx)(n.code,{children:"append_keymap"}),".\nPrepend inserts before ",(0,d.jsx)(n.a,{href:"https://github.com/sxyazi/yazi/blob/latest/yazi-config/preset/keymap.toml",children:"the default keybindings"}),", while append inserts after them."]}),"\n",(0,d.jsx)(n.p,{children:"Since Yazi selects the first matching key to run, prepend always has a higher priority than default, and append always has a lower priority than default:"}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-toml",children:'[manager]\nprepend_keymap = [\n\t{ on = [ "<C-a>" ], run = \'my-fev-command1\', desc = "Just for test!" },\n]\nappend_keymap = [\n\t{ on = [ "<C-b>" ], run = \'my-fev-command2\', desc = "Just for test!" },\n]\n'})}),"\n",(0,d.jsx)(n.p,{children:"Or in another different style:"}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-toml",children:'[[manager.prepend_keymap]]\non = [ "<C-a>" ]\nrun = \'my-fev-command1\'\ndesc = "Just for test!"\n\n[[manager.prepend_keymap]]\non = [ "<C-b>" ]\nrun = \'my-fev-command2\'\n\n[[manager.append_keymap]]\non = [ "<C-c>" ]\nrun = \'my-fev-command3\'\n'})}),"\n",(0,d.jsx)(n.p,{children:"But keep in mind that you can only choose one of them, and it cannot be a combination of the two, as TOML language does not allow this:"}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-toml",children:'[manager]\nprepend_keymap = [\n\t{ on = [ "<C-a>" ], run = \'my-fev-command1\', desc = "Just for test!" },\n]\n\n[[manager.prepend_keymap]]\non = [ "<C-b>" ]\nrun = \'my-fev-command2\'\ndesc = "Just for test!"\n'})}),"\n",(0,d.jsxs)(n.p,{children:["When you don't need any default and want to fully customize your keybindings, use ",(0,d.jsx)(n.code,{children:"keymap"}),", for example:"]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-toml",children:'[manager]\nkeymap = [\n\t# This will override all default keybindings, and just keep the two below.\n\t{ on = [ "<C-a>" ], run = \'my-fev-command1\', desc = "Just for test!" },\n\t{ on = [ "<C-b>" ], run = \'my-fev-command2\', desc = "Just for test!" },\n]\n'})}),"\n",(0,d.jsx)(n.h2,{id:"manager",children:"[manager]"}),"\n",(0,d.jsx)(n.h3,{id:"manager.escape",children:(0,d.jsx)(n.code,{children:"escape"})}),"\n",(0,d.jsx)(n.p,{children:"Cancel find, exit visual mode, clear selected, cancel filter, or cancel search."}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--all"})}),(0,d.jsx)(n.td,{children:"Do all of the below."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--find"})}),(0,d.jsx)(n.td,{children:"Cancel find."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--visual"})}),(0,d.jsx)(n.td,{children:"Exit visual mode."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--select"})}),(0,d.jsx)(n.td,{children:"Clear selected."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--filter"})}),(0,d.jsx)(n.td,{children:"Cancel filter."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--search"})}),(0,d.jsx)(n.td,{children:"Cancel search."})]})]})]}),"\n",(0,d.jsx)(n.p,{children:"Automatically determine the operation by default, and it will only execute the selected operation after specifying the option; multiple options can be stacked."}),"\n",(0,d.jsx)(n.h3,{id:"manager.quit",children:(0,d.jsx)(n.code,{children:"quit"})}),"\n",(0,d.jsx)(n.p,{children:"Exit the process."}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--no-cwd-file"})}),(0,d.jsxs)(n.td,{children:["Don't write the current directory to the ",(0,d.jsx)(n.code,{children:"cwd-file"}),"."]})]})})]}),"\n",(0,d.jsx)(n.h3,{id:"manager.close",children:(0,d.jsx)(n.code,{children:"close"})}),"\n",(0,d.jsx)(n.p,{children:"Close the current tab; if it's the last tab, exit the process instead."}),"\n",(0,d.jsx)(n.h3,{id:"manager.arrow",children:(0,d.jsx)(n.code,{children:"arrow"})}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsxs)(n.td,{children:[(0,d.jsx)(n.code,{children:"[n]"})," / ",(0,d.jsx)(n.code,{children:"[n%]"})]}),(0,d.jsxs)(n.td,{children:["Move the cursor up or down by ",(0,d.jsx)(n.code,{children:"n"})," or ",(0,d.jsx)(n.code,{children:"n%"})," lines. Use negative values to move up and positive values to move down."]})]})})]}),"\n",(0,d.jsx)(n.h3,{id:"manager.leave",children:(0,d.jsx)(n.code,{children:"leave"})}),"\n",(0,d.jsx)(n.p,{children:"Go back to the parent directory of the hovered file, or the parent of the current working directory if no file is hovered on."}),"\n",(0,d.jsx)(n.h3,{id:"manager.enter",children:(0,d.jsx)(n.code,{children:"enter"})}),"\n",(0,d.jsx)(n.p,{children:"Enter the child directory."}),"\n",(0,d.jsx)(n.h3,{id:"manager.back",children:(0,d.jsx)(n.code,{children:"back"})}),"\n",(0,d.jsx)(n.p,{children:"Go back to the previous directory."}),"\n",(0,d.jsx)(n.h3,{id:"manager.forward",children:(0,d.jsx)(n.code,{children:"forward"})}),"\n",(0,d.jsx)(n.p,{children:"Go forward to the next directory."}),"\n",(0,d.jsx)(n.h3,{id:"manager.seek",children:(0,d.jsx)(n.code,{children:"seek"})}),"\n",(0,d.jsx)(n.p,{children:"Scroll the contents in the preview panel."}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"[n]"})}),(0,d.jsx)(n.td,{children:"Use negative values to seek up and positive values to seek down."})]})})]}),"\n",(0,d.jsxs)(n.p,{children:["Note that the default scroll keys are ",(0,d.jsx)("kbd",{children:"Alt"})," + ",(0,d.jsx)("kbd",{children:"j"})," and ",(0,d.jsx)("kbd",{children:"Alt"})," + ",(0,d.jsx)("kbd",{children:"k"}),", make sure your terminal supports ",(0,d.jsx)("kbd",{children:"Alt"})," key combinations, or you can change them in your ",(0,d.jsx)(n.code,{children:"keymap.toml"}),"."]}),"\n",(0,d.jsx)(n.h3,{id:"manager.cd",children:(0,d.jsx)(n.code,{children:"cd"})}),"\n",(0,d.jsx)(n.p,{children:"Change the current directory."}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"[path]"})}),(0,d.jsx)(n.td,{children:"The path to change to."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--interactive"})}),(0,d.jsx)(n.td,{children:"Use an interactive UI to input the path."})]})]})]}),"\n",(0,d.jsx)(n.h3,{id:"manager.reveal",children:(0,d.jsx)(n.code,{children:"reveal"})}),"\n",(0,d.jsx)(n.p,{children:"Change the current directory to the parent of specified file, and hover on it."}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"[path]"})}),(0,d.jsx)(n.td,{children:"The path to reveal."})]})})]}),"\n",(0,d.jsx)(n.h3,{id:"manager.select",children:(0,d.jsx)(n.code,{children:"select"})}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--state=true"})}),(0,d.jsx)(n.td,{children:"Select the current file."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--state=false"})}),(0,d.jsx)(n.td,{children:"Deselect the current file."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--state=none"})}),(0,d.jsx)(n.td,{children:"Default, toggle the selection state of the current file."})]})]})]}),"\n",(0,d.jsx)(n.h3,{id:"manager.select_all",children:(0,d.jsx)(n.code,{children:"select_all"})}),"\n",(0,d.jsx)(n.p,{children:"Select all files in the current working directory."}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--state=true"})}),(0,d.jsx)(n.td,{children:"Select all files"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--state=false"})}),(0,d.jsx)(n.td,{children:"Deselect all files"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--state=none"})}),(0,d.jsx)(n.td,{children:"Default, toggle the selection state of all files"})]})]})]}),"\n",(0,d.jsxs)(n.p,{children:["Note that ",(0,d.jsx)(n.code,{children:"--state=false"})," will deselect all files in the current working directory."]}),"\n",(0,d.jsxs)(n.p,{children:["If you have selected files across directories and want to deselect all of them, use ",(0,d.jsx)(n.a,{href:"#manager.escape",children:(0,d.jsx)(n.code,{children:"escape --select"})})," instead."]}),"\n",(0,d.jsx)(n.h3,{id:"manager.visual_mode",children:(0,d.jsx)(n.code,{children:"visual_mode"})}),"\n",(0,d.jsx)(n.p,{children:"Enter visual mode (selection mode)."}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--unset"})}),(0,d.jsx)(n.td,{children:"Enter visual mode (unset mode)."})]})})]}),"\n",(0,d.jsx)(n.h3,{id:"manager.open",children:(0,d.jsx)(n.code,{children:"open"})}),"\n",(0,d.jsxs)(n.p,{children:["Open the selected files using ",(0,d.jsxs)(n.a,{href:"/docs/configuration/yazi#open",children:["the rules in ",(0,d.jsx)(n.code,{children:"[open]"})]}),"."]}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--interactive"})}),(0,d.jsx)(n.td,{children:"Open the hovered/selected file(s) with an interactive UI to choose the opening method."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--hovered"})}),(0,d.jsx)(n.td,{children:"Always open the hovered file regardless of the selection state."})]})]})]}),"\n",(0,d.jsx)(n.h3,{id:"manager.yank",children:(0,d.jsx)(n.code,{children:"yank"})}),"\n",(0,d.jsx)(n.p,{children:"Yank the selected files."}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--cut"})}),(0,d.jsx)(n.td,{children:"Cut the selected files."})]})})]}),"\n",(0,d.jsx)(n.h3,{id:"manager.unyank",children:(0,d.jsx)(n.code,{children:"unyank"})}),"\n",(0,d.jsx)(n.p,{children:"Cancel the yank status of files."}),"\n",(0,d.jsx)(n.h3,{id:"manager.paste",children:(0,d.jsx)(n.code,{children:"paste"})}),"\n",(0,d.jsx)(n.p,{children:"Paste the yanked files."}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--force"})}),(0,d.jsx)(n.td,{children:"Overwrite the destination file if it exists."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--follow"})}),(0,d.jsx)(n.td,{children:"Copy the file pointed to by a symbolic link, rather than the link itself. Only can be used during copying."})]})]})]}),"\n",(0,d.jsx)(n.h3,{id:"manager.link",children:(0,d.jsx)(n.code,{children:"link"})}),"\n",(0,d.jsx)(n.p,{children:"Create a symbolic link to the yanked files. (This is a privileged action in Windows and must be run as an administrator.)"}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--relative"})}),(0,d.jsx)(n.td,{children:"Use a relative path for the symbolic link."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--force"})}),(0,d.jsx)(n.td,{children:"Overwrite the destination file if it exists."})]})]})]}),"\n",(0,d.jsx)(n.h3,{id:"manager.remove",children:(0,d.jsx)(n.code,{children:"remove"})}),"\n",(0,d.jsxs)(n.p,{children:["Move the files to the trash/recycle bin on macOS/Windows. For Linux, it will follow ",(0,d.jsx)(n.a,{href:"https://specifications.freedesktop.org/trash-spec/trashspec-1.0.html",children:"The FreeDesktop.org Trash specification"}),"."]}),"\n",(0,d.jsxs)(n.p,{children:["In the Android platform, you can only use it with the ",(0,d.jsx)(n.code,{children:"--permanently"})," option, since there lacks the concept of a trash bin."]}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--force"})}),(0,d.jsx)(n.td,{children:"Don't show the confirmation dialog, and trash/delete files directly."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--permanently"})}),(0,d.jsx)(n.td,{children:"Permanently delete the files."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--hovered"})}),(0,d.jsx)(n.td,{children:"Always remove the hovered file regardless of the selection state."})]})]})]}),"\n",(0,d.jsx)(n.h3,{id:"manager.create",children:(0,d.jsx)(n.code,{children:"create"})}),"\n",(0,d.jsxs)(n.p,{children:["Create a file or directory. Ends with ",(0,d.jsx)(n.code,{children:"/"})," (Unix) or ",(0,d.jsx)(n.code,{children:"\\"})," (Windows) for directories."]}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--force"})}),(0,d.jsx)(n.td,{children:"Overwrite the destination file directly if it exists, without showing the confirmation dialog."})]})})]}),"\n",(0,d.jsx)(n.h3,{id:"manager.rename",children:(0,d.jsx)(n.code,{children:"rename"})}),"\n",(0,d.jsxs)(n.p,{children:["Rename a file or directory, or bulk rename if multiple files are selected (",(0,d.jsx)(n.code,{children:"$EDITOR"})," is used to edit the filenames by default)."]}),"\n",(0,d.jsxs)(n.ul,{children:["\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.code,{children:"--hovered"}),": Always rename the hovered file regardless of the selection state."]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.code,{children:"--force"}),": Overwrite the destination file directly if it exists, without showing the confirmation dialog."]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.code,{children:"--empty"}),": Empty a part of the filename.","\n",(0,d.jsxs)(n.ul,{children:["\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.code,{children:'"stem"'}),": Empty the stem. e.g. ",(0,d.jsx)(n.code,{children:'"foo.jpg"'})," -> ",(0,d.jsx)(n.code,{children:'".jpg"'}),"."]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.code,{children:'"ext"'}),": Empty the extension. e.g. ",(0,d.jsx)(n.code,{children:'"foo.jpg"'})," -> ",(0,d.jsx)(n.code,{children:'"foo."'}),"."]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.code,{children:'"dot_ext"'}),": Empty the dot and extension. e.g. ",(0,d.jsx)(n.code,{children:'"foo.jpg"'})," -> ",(0,d.jsx)(n.code,{children:'"foo"'}),"."]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.code,{children:'"all"'}),": Empty the whole filename. e.g. ",(0,d.jsx)(n.code,{children:'"foo.jpg"'})," -> ",(0,d.jsx)(n.code,{children:'""'}),"."]}),"\n"]}),"\n"]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.code,{children:"--cursor"}),": Specify the cursor position of the renaming input box.","\n",(0,d.jsxs)(n.ul,{children:["\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.code,{children:'"end"'}),": The end of the filename."]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.code,{children:'"start"'}),": The start of the filename."]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.code,{children:'"before_ext"'}),": Before the extension of the filename."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,d.jsxs)(n.p,{children:["You can also use ",(0,d.jsx)(n.code,{children:"--cursor"})," with ",(0,d.jsx)(n.code,{children:"--empty"}),", for example, ",(0,d.jsx)(n.code,{children:"rename --empty=stem --cursor=start"})," will empty the file's stem, and move the cursor to the start."]}),"\n",(0,d.jsxs)(n.p,{children:["Which causes the input box content for the filename ",(0,d.jsx)(n.code,{children:"foo.jpg"})," to be ",(0,d.jsx)(n.code,{children:"|.jpg"}),', where "|" represents the cursor position.']}),"\n",(0,d.jsx)(n.h3,{id:"manager.copy",children:(0,d.jsx)(n.code,{children:"copy"})}),"\n",(0,d.jsx)(n.p,{children:"Copy the path of files or directories that are selected or hovered on."}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"path"})}),(0,d.jsx)(n.td,{children:"Copy the absolute path."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"dirname"})}),(0,d.jsx)(n.td,{children:"Copy the path of the parent directory."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"filename"})}),(0,d.jsx)(n.td,{children:"Copy the name of the file."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"name_without_ext"})}),(0,d.jsx)(n.td,{children:"Copy the name of the file without the extension."})]})]})]}),"\n",(0,d.jsx)(n.h3,{id:"manager.shell",children:(0,d.jsx)(n.code,{children:"shell"})}),"\n",(0,d.jsx)(n.p,{children:"Run a shell command."}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"[run]"})}),(0,d.jsx)(n.td,{children:"Optional, command template to be run."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--confirm"})}),(0,d.jsx)(n.td,{children:"When the template is provided, run it directly, no input UI was shown."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--block"})}),(0,d.jsx)(n.td,{children:"Open in a blocking manner. After setting this, Yazi will hide into a secondary screen and display the program on the main screen until it exits. During this time, it can receive I/O signals, which is useful for interactive programs."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--orphan"})}),(0,d.jsx)(n.td,{children:"Keep the process running even if Yazi has exited, once specified, the process will be detached from the task scheduling system."})]})]})]}),"\n",(0,d.jsxs)(n.p,{children:["You can use the following shell variables in ",(0,d.jsx)(n.code,{children:"[run]"}),":"]}),"\n",(0,d.jsxs)(n.ul,{children:["\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.code,{children:"$n"})," (Unix) / ",(0,d.jsx)(n.code,{children:"%n"})," (Windows): The N-th selected file, starting from ",(0,d.jsx)(n.code,{children:"1"}),". e.g. ",(0,d.jsx)(n.code,{children:"$2"})," represents the second selected file."]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.code,{children:"$@"})," (Unix) / ",(0,d.jsx)(n.code,{children:"%*"})," (Windows): All selected files, i.e. ",(0,d.jsx)(n.code,{children:"$1"}),", ",(0,d.jsx)(n.code,{children:"$2"}),", ..., ",(0,d.jsx)(n.code,{children:"$n"}),"."]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.code,{children:"$0"})," (Unix) / ",(0,d.jsx)(n.code,{children:"%0"})," (Windows): The hovered file."]}),"\n"]}),"\n",(0,d.jsx)(n.h3,{id:"manager.hidden",children:(0,d.jsx)(n.code,{children:"hidden"})}),"\n",(0,d.jsx)(n.p,{children:"Set the visibility of hidden files."}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"show"})}),(0,d.jsx)(n.td,{children:"Show hidden files."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"hide"})}),(0,d.jsx)(n.td,{children:"Hide hidden files."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"toggle"})}),(0,d.jsx)(n.td,{children:"Default, toggle the hidden state."})]})]})]}),"\n",(0,d.jsx)(n.h3,{id:"manager.linemode",children:(0,d.jsx)(n.code,{children:"linemode"})}),"\n",(0,d.jsxs)(n.p,{children:["Set the ",(0,d.jsx)(n.a,{href:"/docs/configuration/yazi#manager.linemode",children:"line mode"}),"."]}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"none"})}),(0,d.jsx)(n.td,{children:"No line mode."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"size"})}),(0,d.jsxs)(n.td,{children:["Display the size in bytes of the file. Since file sizes are only evaluated when sorting by size, it only works after ",(0,d.jsx)(n.a,{href:"/docs/configuration/yazi#manager.sort_by",children:(0,d.jsx)(n.code,{children:'sort_by = "size"'})})," set, and this behavior might change in the future."]})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"permissions"})}),(0,d.jsx)(n.td,{children:"Display the permissions of the file."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"mtime"})}),(0,d.jsx)(n.td,{children:"Display the last modified time of the file."})]})]})]}),"\n",(0,d.jsxs)(n.p,{children:["In addition, you can also specify any 1 to 20 characters, and extend it within a UI plugin.\nWhich means you can implement your own linemode through the plugin by simply overriding the ",(0,d.jsxs)(n.a,{href:"https://github.com/sxyazi/yazi/blob/latest/yazi-plugin/preset/components/folder.lua",children:[(0,d.jsx)(n.code,{children:"Folder:linemode"})," method"]}),"."]}),"\n",(0,d.jsx)(n.h3,{id:"manager.search",children:(0,d.jsx)(n.code,{children:"search"})}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"fd"})}),(0,d.jsx)(n.td,{children:"Search files by name using fd."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"rg"})}),(0,d.jsx)(n.td,{children:"Search files by content using ripgrep."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"none"})}),(0,d.jsx)(n.td,{children:"Default, cancel the ongoing search."})]})]})]}),"\n",(0,d.jsxs)(n.p,{children:["You can search with an empty keyword (",(0,d.jsx)(n.code,{children:'""'}),") via ",(0,d.jsx)(n.code,{children:"fd"})," to achieve flat view."]}),"\n",(0,d.jsxs)(i,{children:[(0,d.jsx)("summary",{children:"Demonstrate flat view"}),(0,d.jsxs)("p",{children:["Original post: ",(0,d.jsx)(n.a,{href:"https://github.com/sxyazi/yazi/issues/676#issuecomment-1943494129",children:"https://github.com/sxyazi/yazi/issues/676#issuecomment-1943494129"})]}),(0,d.jsx)("video",{src:"https://github.com/sxyazi/yazi/assets/17523360/d2c9df9b-b7ef-41ec-889f-26b2f1117cd0",width:"100%",controls:!0,muted:!0})]}),"\n",(0,d.jsx)(n.h3,{id:"manager.find",children:(0,d.jsx)(n.code,{children:"find"})}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"[query]"})}),(0,d.jsx)(n.td,{children:"Optional, the query to find for. If not provided, an interactive UI will be used to input with."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--previous"})}),(0,d.jsx)(n.td,{children:"Find for the previous occurrence."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--smart"})}),(0,d.jsx)(n.td,{children:"Use smart-case when finding, i.e. case-sensitive if the query contains uppercase characters, otherwise case-insensitive."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--insensitive"})}),(0,d.jsx)(n.td,{children:"Use case-insensitive find."})]})]})]}),"\n",(0,d.jsx)(n.h3,{id:"manager.find_arrow",children:(0,d.jsx)(n.code,{children:"find_arrow"})}),"\n",(0,d.jsx)(n.p,{children:"Move the cursor to the next or previous occurrence."}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--previous"})}),(0,d.jsx)(n.td,{children:"Move to the previous occurrence."})]})})]}),"\n",(0,d.jsx)(n.h3,{id:"manager.filter",children:(0,d.jsx)(n.code,{children:"filter"})}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"[query]"})}),(0,d.jsx)(n.td,{children:"Optional, the query to filter for. If not provided, an interactive UI will be used to input with."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--smart"})}),(0,d.jsx)(n.td,{children:"Use smart-case when filtering, i.e. case-sensitive if the query contains uppercase characters, otherwise case-insensitive."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--insensitive"})}),(0,d.jsx)(n.td,{children:"Use case-insensitive filter."})]})]})]}),"\n",(0,d.jsx)(n.h3,{id:"manager.sort",children:(0,d.jsx)(n.code,{children:"sort"})}),"\n",(0,d.jsxs)(n.ul,{children:["\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.code,{children:"[by]"}),": Optional, if not provided, the sort method will be kept unchanged.","\n",(0,d.jsxs)(n.ul,{children:["\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.code,{children:'"none"'}),": Don't sort."]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.code,{children:'"modified"'}),": Sort by last modified time."]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.code,{children:'"created"'}),": Sort by creation time. (Due to a Rust bug, this is not available at the moment, see ",(0,d.jsx)(n.a,{href:"https://github.com/sxyazi/yazi/issues/356",children:"sxyazi/yazi#356"})," and ",(0,d.jsx)(n.a,{href:"https://github.com/rust-lang/rust/issues/108277",children:"rust-lang/rust#108277"}),")"]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.code,{children:'"extension"'}),": Sort by file extension."]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.code,{children:'"alphabetical"'}),": Sort alphabetically, e.g. ",(0,d.jsx)(n.code,{children:"1.md"})," < ",(0,d.jsx)(n.code,{children:"10.md"})," < ",(0,d.jsx)(n.code,{children:"2.md"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.code,{children:'"natural"'}),": Sort naturally, e.g. ",(0,d.jsx)(n.code,{children:"1.md"})," < ",(0,d.jsx)(n.code,{children:"2.md"})," < ",(0,d.jsx)(n.code,{children:"10.md"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.code,{children:'"size"'}),": Sort by file size."]}),"\n"]}),"\n"]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.code,{children:"--reverse"}),": Display files in reverse order. ",(0,d.jsx)(n.code,{children:"--reverse"})," or ",(0,d.jsx)(n.code,{children:"--reverse=yes"})," to reverse, ",(0,d.jsx)(n.code,{children:"--reverse=no"})," to cancel."]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.code,{children:"--dir-first"}),": Display directories first. ",(0,d.jsx)(n.code,{children:"--dir-first"})," or ",(0,d.jsx)(n.code,{children:"--dir-first=yes"})," to enable, ",(0,d.jsx)(n.code,{children:"--dir-first=no"})," to cancel."]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.code,{children:"--translit"}),": Transliterate filenames for sorting, see ",(0,d.jsx)(n.a,{href:"/docs/configuration/yazi#manager.sort_translit",children:"sort_translit"})," for details. ",(0,d.jsx)(n.code,{children:"--translit"})," or ",(0,d.jsx)(n.code,{children:"--translit=yes"})," to enable, ",(0,d.jsx)(n.code,{children:"--translit=no"})," to cancel."]}),"\n"]}),"\n",(0,d.jsx)(n.h3,{id:"manager.tab_create",children:(0,d.jsx)(n.code,{children:"tab_create"})}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"[path]"})}),(0,d.jsx)(n.td,{children:"Optional, create a new tab using the specified path."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--current"})}),(0,d.jsx)(n.td,{children:"Optional, create a new tab using the current path."})]})]})]}),"\n",(0,d.jsxs)(n.p,{children:["If neither ",(0,d.jsx)(n.code,{children:"[path]"})," nor ",(0,d.jsx)(n.code,{children:"--current"})," is specified, will use the startup directory to create the tab."]}),"\n",(0,d.jsx)(n.h3,{id:"manager.tab_close",children:(0,d.jsx)(n.code,{children:"tab_close"})}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"[n]"})}),(0,d.jsxs)(n.td,{children:["Close the tab at position ",(0,d.jsx)(n.code,{children:"n"}),", starting from 0."]})]})})]}),"\n",(0,d.jsx)(n.h3,{id:"manager.tab_switch",children:(0,d.jsx)(n.code,{children:"tab_switch"})}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"[n]"})}),(0,d.jsxs)(n.td,{children:["Switch to the tab at position ",(0,d.jsx)(n.code,{children:"n"}),", starting from 0."]})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--relative"})}),(0,d.jsxs)(n.td,{children:["Switch to the tab at a position relative to the current tab. The value of ",(0,d.jsx)(n.code,{children:"n"})," can be negative when using this parameter."]})]})]})]}),"\n",(0,d.jsx)(n.h3,{id:"manager.tab_swap",children:(0,d.jsx)(n.code,{children:"tab_swap"})}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"[n]"})}),(0,d.jsxs)(n.td,{children:["Swap the current tab with the tab at position ",(0,d.jsx)(n.code,{children:"n"}),", where negative values move the tab forward, and positive values move it backward."]})]})})]}),"\n",(0,d.jsx)(n.h3,{id:"manager.tasks_show",children:(0,d.jsx)(n.code,{children:"tasks_show"})}),"\n",(0,d.jsx)(n.p,{children:"Show the task manager."}),"\n",(0,d.jsx)(n.h3,{id:"manager.help",children:(0,d.jsx)(n.code,{children:"help"})}),"\n",(0,d.jsx)(n.p,{children:"Open the help menu."}),"\n",(0,d.jsx)(n.h3,{id:"manager.plugin",children:(0,d.jsx)(n.code,{children:"plugin"})}),"\n",(0,d.jsxs)(n.p,{children:["See ",(0,d.jsx)(n.a,{href:"/docs/plugins/overview#functional-plugin",children:"Functional plugin"}),"."]}),"\n",(0,d.jsx)(n.h2,{id:"tasks",children:"[tasks]"}),"\n",(0,d.jsx)(n.h3,{id:"tasks.close",children:(0,d.jsx)(n.code,{children:"close"})}),"\n",(0,d.jsx)(n.p,{children:"Hide the task manager."}),"\n",(0,d.jsx)(n.h3,{id:"tasks.arrow",children:(0,d.jsx)(n.code,{children:"arrow"})}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"-1"})}),(0,d.jsx)(n.td,{children:"Move the cursor up 1 line."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"1"})}),(0,d.jsx)(n.td,{children:"Move the cursor down 1 line."})]})]})]}),"\n",(0,d.jsx)(n.h3,{id:"tasks.inspect",children:(0,d.jsx)(n.code,{children:"inspect"})}),"\n",(0,d.jsxs)(n.p,{children:["Inspect the task (press ",(0,d.jsx)(n.code,{children:"q"})," to exit the inspect view)."]}),"\n",(0,d.jsx)(n.h3,{id:"tasks.cancel",children:(0,d.jsx)(n.code,{children:"cancel"})}),"\n",(0,d.jsx)(n.p,{children:"Cancel the task."}),"\n",(0,d.jsx)(n.h3,{id:"tasks.help",children:(0,d.jsx)(n.code,{children:"help"})}),"\n",(0,d.jsx)(n.p,{children:"Open the help menu."}),"\n",(0,d.jsx)(n.h3,{id:"tasks.plugin",children:(0,d.jsx)(n.code,{children:"plugin"})}),"\n",(0,d.jsxs)(n.p,{children:["See ",(0,d.jsx)(n.a,{href:"/docs/plugins/overview#functional-plugin",children:"Functional plugin"}),"."]}),"\n",(0,d.jsx)(n.h2,{id:"select",children:"[select]"}),"\n",(0,d.jsx)(n.h3,{id:"select.close",children:(0,d.jsx)(n.code,{children:"close"})}),"\n",(0,d.jsx)(n.p,{children:"Cancel selection."}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--submit"})}),(0,d.jsx)(n.td,{children:"Submit the selection."})]})})]}),"\n",(0,d.jsx)(n.h3,{id:"select.arrow",children:(0,d.jsx)(n.code,{children:"arrow"})}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"[n]"})}),(0,d.jsxs)(n.td,{children:["Move the cursor up or down ",(0,d.jsx)(n.code,{children:"n"})," lines. Negative value for up, positive value for down."]})]})})]}),"\n",(0,d.jsx)(n.h3,{id:"select.help",children:(0,d.jsx)(n.code,{children:"help"})}),"\n",(0,d.jsx)(n.p,{children:"Open the help menu."}),"\n",(0,d.jsx)(n.h3,{id:"select.plugin",children:(0,d.jsx)(n.code,{children:"plugin"})}),"\n",(0,d.jsxs)(n.p,{children:["See ",(0,d.jsx)(n.a,{href:"/docs/plugins/overview#functional-plugin",children:"Functional plugin"}),"."]}),"\n",(0,d.jsx)(n.h2,{id:"input",children:"[input]"}),"\n",(0,d.jsx)(n.h3,{id:"input.close",children:(0,d.jsx)(n.code,{children:"close"})}),"\n",(0,d.jsx)(n.p,{children:"Cancel input."}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--submit"})}),(0,d.jsx)(n.td,{children:"Submit the input."})]})})]}),"\n",(0,d.jsx)(n.h3,{id:"input.escape",children:(0,d.jsx)(n.code,{children:"escape"})}),"\n",(0,d.jsx)(n.p,{children:"Go back the normal mode, or cancel input."}),"\n",(0,d.jsx)(n.h3,{id:"input.move",children:(0,d.jsx)(n.code,{children:"move"})}),"\n",(0,d.jsx)(n.p,{children:"Move the cursor left or right."}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"[n]"})}),(0,d.jsxs)(n.td,{children:["Move the cursor ",(0,d.jsx)(n.code,{children:"n"})," characters left or right. Negative value for left, positive value for right."]})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--in-operating"})}),(0,d.jsx)(n.td,{children:"Move the cursor only if its currently waiting for an operation."})]})]})]}),"\n",(0,d.jsx)(n.h3,{id:"input.backward",children:(0,d.jsx)(n.code,{children:"backward"})}),"\n",(0,d.jsx)(n.p,{children:"Move back to the start of the current or previous word."}),"\n",(0,d.jsx)(n.h3,{id:"input.forward",children:(0,d.jsx)(n.code,{children:"forward"})}),"\n",(0,d.jsx)(n.p,{children:"Move forward to the start of the next word."}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--end-of-word"})}),(0,d.jsx)(n.td,{children:"Move forward to the end of the current or next word."})]})})]}),"\n",(0,d.jsx)(n.h3,{id:"input.insert",children:(0,d.jsx)(n.code,{children:"insert"})}),"\n",(0,d.jsx)(n.p,{children:"Enter insert mode. This command is only available in normal mode."}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--append"})}),(0,d.jsx)(n.td,{children:"Insert after the cursor."})]})})]}),"\n",(0,d.jsx)(n.h3,{id:"input.visual",children:(0,d.jsx)(n.code,{children:"visual"})}),"\n",(0,d.jsx)(n.p,{children:"Enter visual mode. This command is only available in normal mode."}),"\n",(0,d.jsx)(n.h3,{id:"input.delete",children:(0,d.jsx)(n.code,{children:"delete"})}),"\n",(0,d.jsx)(n.p,{children:"Delete the selected characters. This command is only available in normal mode."}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--cut"})}),(0,d.jsx)(n.td,{children:"Cut the selected characters into clipboard, instead of only deleting them."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--insert"})}),(0,d.jsx)(n.td,{children:"Delete and enter insert mode."})]})]})]}),"\n",(0,d.jsx)(n.h3,{id:"input.yank",children:(0,d.jsx)(n.code,{children:"yank"})}),"\n",(0,d.jsx)(n.p,{children:"Copy the selected characters. This command is only available in normal mode."}),"\n",(0,d.jsx)(n.h3,{id:"input.paste",children:(0,d.jsx)(n.code,{children:"paste"})}),"\n",(0,d.jsx)(n.p,{children:"Paste the copied characters after the cursor. This command is only available in normal mode."}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--before"})}),(0,d.jsx)(n.td,{children:"Paste the copied characters before the cursor."})]})})]}),"\n",(0,d.jsx)(n.h3,{id:"input.undo",children:(0,d.jsx)(n.code,{children:"undo"})}),"\n",(0,d.jsx)(n.p,{children:"Undo the last operation. This command is only available in normal mode."}),"\n",(0,d.jsx)(n.h3,{id:"input.redo",children:(0,d.jsx)(n.code,{children:"redo"})}),"\n",(0,d.jsx)(n.p,{children:"Redo the last operation. This command is only available in normal mode."}),"\n",(0,d.jsx)(n.h3,{id:"input.help",children:(0,d.jsx)(n.code,{children:"help"})}),"\n",(0,d.jsx)(n.p,{children:"Open the help menu. This command is only available in normal mode."}),"\n",(0,d.jsx)(n.h3,{id:"input.backspace",children:(0,d.jsx)(n.code,{children:"backspace"})}),"\n",(0,d.jsx)(n.p,{children:"Delete the character before the cursor. This command is only available in insert mode."}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--under"})}),(0,d.jsx)(n.td,{children:"Delete the character under the cursor."})]})})]}),"\n",(0,d.jsx)(n.h3,{id:"input.kill",children:(0,d.jsx)(n.code,{children:"kill"})}),"\n",(0,d.jsx)(n.p,{children:"Kill the specified range of characters. This command is only available in insert mode."}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"bol"})}),(0,d.jsx)(n.td,{children:"Kill backwards to the BOL."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"eol"})}),(0,d.jsx)(n.td,{children:"Kill forwards to the EOL."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"backward"})}),(0,d.jsx)(n.td,{children:"Kill backwards to the start of the current word."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"forward"})}),(0,d.jsx)(n.td,{children:"Kill forwards to the end of the current word."})]})]})]}),"\n",(0,d.jsx)(n.h3,{id:"input.plugin",children:(0,d.jsx)(n.code,{children:"plugin"})}),"\n",(0,d.jsxs)(n.p,{children:["See ",(0,d.jsx)(n.a,{href:"/docs/plugins/overview#functional-plugin",children:"Functional plugin"}),". This command is only available in insert mode."]}),"\n",(0,d.jsx)(n.h2,{id:"completion",children:"[completion]"}),"\n",(0,d.jsx)(n.h3,{id:"completion.close",children:(0,d.jsx)(n.code,{children:"close"})}),"\n",(0,d.jsx)(n.p,{children:"Hide the completion menu."}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--submit"})}),(0,d.jsx)(n.td,{children:"Submit the completion."})]})})]}),"\n",(0,d.jsx)(n.h3,{id:"completion.close_input",children:(0,d.jsx)(n.code,{children:"close_input"})}),"\n",(0,d.jsxs)(n.p,{children:["Close the input box. Arguments are the same as ",(0,d.jsx)(n.a,{href:"#input.close",children:(0,d.jsx)(n.code,{children:"[input] close"})}),"."]}),"\n",(0,d.jsx)(n.h3,{id:"completion.arrow",children:(0,d.jsx)(n.code,{children:"arrow"})}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"[n]"})}),(0,d.jsxs)(n.td,{children:["Move the cursor up or down ",(0,d.jsx)(n.code,{children:"n"})," lines. Negative value for up, positive value for down."]})]})})]}),"\n",(0,d.jsx)(n.h3,{id:"completion.help",children:(0,d.jsx)(n.code,{children:"help"})}),"\n",(0,d.jsx)(n.p,{children:"Open the help menu."}),"\n",(0,d.jsx)(n.h3,{id:"completion.plugin",children:(0,d.jsx)(n.code,{children:"plugin"})}),"\n",(0,d.jsxs)(n.p,{children:["See ",(0,d.jsx)(n.a,{href:"/docs/plugins/overview#functional-plugin",children:"Functional plugin"}),"."]}),"\n",(0,d.jsx)(n.h2,{id:"help",children:"[help]"}),"\n",(0,d.jsx)(n.h3,{id:"help.close",children:(0,d.jsx)(n.code,{children:"close"})}),"\n",(0,d.jsx)(n.p,{children:"Hide the help menu."}),"\n",(0,d.jsx)(n.h3,{id:"help.escape",children:(0,d.jsx)(n.code,{children:"escape"})}),"\n",(0,d.jsx)(n.p,{children:"Clear the filter, or hide the help menu."}),"\n",(0,d.jsx)(n.h3,{id:"help.arrow",children:(0,d.jsx)(n.code,{children:"arrow"})}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Argument/Option"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"[n]"})}),(0,d.jsxs)(n.td,{children:["Move the cursor up or down ",(0,d.jsx)(n.code,{children:"n"})," lines. Negative value for up, positive value for down."]})]})})]}),"\n",(0,d.jsx)(n.h3,{id:"help.filter",children:(0,d.jsx)(n.code,{children:"filter"})}),"\n",(0,d.jsx)(n.p,{children:"Apply a filter for the help items."}),"\n",(0,d.jsx)(n.h3,{id:"help.plugin",children:(0,d.jsx)(n.code,{children:"plugin"})}),"\n",(0,d.jsxs)(n.p,{children:["See ",(0,d.jsx)(n.a,{href:"/docs/plugins/overview#functional-plugin",children:"Functional plugin"}),"."]})]})}function a(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,d.jsx)(n,{...e,children:(0,d.jsx)(o,{...e})}):o(e)}},6225:(e,n,i)=>{i.d(n,{Z:()=>c,a:()=>l});var d=i(959);const s={},r=d.createContext(s);function l(e){const n=d.useContext(r);return d.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),d.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/9e4087bc.02fcc1d0.js b/assets/js/9e4087bc.02fcc1d0.js new file mode 100644 index 000000000..805a0b2c7 --- /dev/null +++ b/assets/js/9e4087bc.02fcc1d0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[608],{2203:(e,r,t)=>{t.r(r),t.d(r,{default:()=>m});t(959);var a=t(6788),n=t(259),s=t(5938),i=t(9779),c=t(1576),l=t(7623),o=t(1527);function d(e){let{year:r,posts:t}=e;const n=(0,i.P)({day:"numeric",month:"long",timeZone:"UTC"});return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(l.Z,{as:"h3",id:r,children:r}),(0,o.jsx)("ul",{children:t.map((e=>{return(0,o.jsx)("li",{children:(0,o.jsxs)(a.Z,{to:e.metadata.permalink,children:[(r=e.metadata.date,n.format(new Date(r)))," - ",e.metadata.title]})},e.metadata.date);var r}))})]})}function h(e){let{years:r}=e;return(0,o.jsx)("section",{className:"margin-vert--lg",children:(0,o.jsx)("div",{className:"container",children:(0,o.jsx)("div",{className:"row",children:r.map(((e,r)=>(0,o.jsx)("div",{className:"col col--4 margin-vert--lg",children:(0,o.jsx)(d,{...e})},r)))})})})}function m(e){let{archive:r}=e;const t=(0,n.I)({id:"theme.blog.archive.title",message:"Archive",description:"The page & hero title of the blog archive page"}),a=(0,n.I)({id:"theme.blog.archive.description",message:"Archive",description:"The page & hero description of the blog archive page"}),i=function(e){const r=e.reduce(((e,r)=>{const t=r.metadata.date.split("-")[0],a=e.get(t)??[];return e.set(t,[r,...a])}),new Map);return Array.from(r,(e=>{let[r,t]=e;return{year:r,posts:t}}))}(r.blogPosts);return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(s.d,{title:t,description:a}),(0,o.jsxs)(c.Z,{children:[(0,o.jsx)("header",{className:"hero hero--primary",children:(0,o.jsxs)("div",{className:"container",children:[(0,o.jsx)(l.Z,{as:"h1",className:"hero__title",children:t}),(0,o.jsx)("p",{className:"hero__subtitle",children:a})]})}),(0,o.jsx)("main",{children:i.length>0&&(0,o.jsx)(h,{years:i})})]})]})}},9779:(e,r,t)=>{t.d(r,{P:()=>n});var a=t(8927);function n(e){void 0===e&&(e={});const{i18n:{currentLocale:r}}=(0,a.Z)(),t=function(){const{i18n:{currentLocale:e,localeConfigs:r}}=(0,a.Z)();return r[e].calendar}();return new Intl.DateTimeFormat(r,{calendar:t,...e})}}}]); \ No newline at end of file diff --git a/assets/js/a6aa9e1f.1de78407.js b/assets/js/a6aa9e1f.1de78407.js new file mode 100644 index 000000000..f4b45d149 --- /dev/null +++ b/assets/js/a6aa9e1f.1de78407.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[89],{2687:(e,t,n)=>{n.r(t),n.d(t,{default:()=>k});n(959);var a=n(5341),i=n(8927),s=n(5938),r=n(961),l=n(2645),o=n(259),c=n(8582),g=n(1527);function p(e){const{metadata:t}=e,{previousPage:n,nextPage:a}=t;return(0,g.jsxs)("nav",{className:"pagination-nav","aria-label":(0,o.I)({id:"theme.blog.paginator.navAriaLabel",message:"Blog list page navigation",description:"The ARIA label for the blog pagination"}),children:[n&&(0,g.jsx)(c.Z,{permalink:n,title:(0,g.jsx)(o.Z,{id:"theme.blog.paginator.newerEntries",description:"The label used to navigate to the newer blog posts page (previous page)",children:"Newer Entries"})}),a&&(0,g.jsx)(c.Z,{permalink:a,title:(0,g.jsx)(o.Z,{id:"theme.blog.paginator.olderEntries",description:"The label used to navigate to the older blog posts page (next page)",children:"Older Entries"}),isNext:!0})]})}var d=n(5695),x=n(6283),h=n(3467);function j(e){let{items:t,component:n=h.Z}=e;return(0,g.jsx)(g.Fragment,{children:t.map((e=>{let{content:t}=e;return(0,g.jsx)(x.n,{content:t,children:(0,g.jsx)(n,{children:(0,g.jsx)(t,{})})},t.metadata.permalink)}))})}var m=n(2058),u=n(5838);function b(e){const t=(0,u.C)(e);return(0,g.jsx)(m.Z,{children:(0,g.jsx)("script",{type:"application/ld+json",children:JSON.stringify(t)})})}function f(e){const{metadata:t}=e,{siteConfig:{title:n}}=(0,i.Z)(),{blogDescription:a,blogTitle:r,permalink:l}=t,o="/"===l?n:r;return(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(s.d,{title:o,description:a}),(0,g.jsx)(d.Z,{tag:"blog_posts_list"})]})}function v(e){const{metadata:t,items:n,sidebar:a}=e;return(0,g.jsxs)(l.Z,{sidebar:a,children:[(0,g.jsx)(j,{items:n}),(0,g.jsx)(p,{metadata:t})]})}function k(e){return(0,g.jsxs)(s.FG,{className:(0,a.Z)(r.k.wrapper.blogPages,r.k.page.blogListPage),children:[(0,g.jsx)(f,{...e}),(0,g.jsx)(b,{...e}),(0,g.jsx)(v,{...e})]})}}}]); \ No newline at end of file diff --git a/assets/js/a7456010.46336641.js b/assets/js/a7456010.46336641.js new file mode 100644 index 000000000..c26f3e67d --- /dev/null +++ b/assets/js/a7456010.46336641.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[980],{9365:e=>{e.exports=JSON.parse('{"name":"docusaurus-plugin-content-pages","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/a7bd4aaa.96c8d565.js b/assets/js/a7bd4aaa.96c8d565.js new file mode 100644 index 000000000..9e611274f --- /dev/null +++ b/assets/js/a7bd4aaa.96c8d565.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[518],{3502:(n,e,s)=>{s.r(e),s.d(e,{default:()=>d});s(959);var r=s(5938),o=s(9398),t=s(4517),i=s(819),c=s(5695),u=s(1527);function a(n){const{version:e}=n;return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(c.Z,{version:e.version,tag:(0,o.os)(e.pluginId,e.version)}),(0,u.jsx)(r.d,{children:e.noIndex&&(0,u.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})]})}function l(n){const{version:e,route:s}=n;return(0,u.jsx)(r.FG,{className:e.className,children:(0,u.jsx)(t.q,{version:e,children:(0,i.H)(s.routes)})})}function d(n){return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(a,{...n}),(0,u.jsx)(l,{...n})]})}}}]); \ No newline at end of file diff --git a/assets/js/a94703ab.d656c6c4.js b/assets/js/a94703ab.d656c6c4.js new file mode 100644 index 000000000..bad5fce21 --- /dev/null +++ b/assets/js/a94703ab.d656c6c4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[368],{7594:(e,t,n)=>{n.r(t),n.d(t,{default:()=>be});var a=n(959),o=n(5341),i=n(5938),s=n(961),l=n(5079),r=n(1626),c=n(259),d=n(9812),u=n(5610);const m={backToTopButton:"backToTopButton_H0zO",backToTopButtonShow:"backToTopButtonShow_v69L"};var b=n(1527);function h(){const{shown:e,scrollToTop:t}=function(e){let{threshold:t}=e;const[n,o]=(0,a.useState)(!1),i=(0,a.useRef)(!1),{startScroll:s,cancelScroll:l}=(0,d.Ct)();return(0,d.RF)(((e,n)=>{let{scrollY:a}=e;const s=n?.scrollY;s&&(i.current?i.current=!1:a>=s?(l(),o(!1)):a<t?o(!1):a+window.innerHeight<document.documentElement.scrollHeight&&o(!0))})),(0,u.S)((e=>{e.location.hash&&(i.current=!0,o(!1))})),{shown:n,scrollToTop:()=>s(0)}}({threshold:300});return(0,b.jsx)("button",{"aria-label":(0,c.I)({id:"theme.BackToTopButton.buttonAriaLabel",message:"Scroll back to top",description:"The ARIA label for the back to top button"}),className:(0,o.Z)("clean-btn",s.k.common.backToTopButton,m.backToTopButton,e&&m.backToTopButtonShow),type:"button",onClick:t})}var p=n(3250),x=n(8903),f=n(6563),j=n(475),k=n(3165);function g(e){return(0,b.jsx)("svg",{width:"20",height:"20","aria-hidden":"true",...e,children:(0,b.jsxs)("g",{fill:"#7a7a7a",children:[(0,b.jsx)("path",{d:"M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"}),(0,b.jsx)("path",{d:"M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"})]})})}const v={collapseSidebarButton:"collapseSidebarButton_QR0K",collapseSidebarButtonIcon:"collapseSidebarButtonIcon_M9kn"};function _(e){let{onClick:t}=e;return(0,b.jsx)("button",{type:"button",title:(0,c.I)({id:"theme.docs.sidebar.collapseButtonTitle",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),"aria-label":(0,c.I)({id:"theme.docs.sidebar.collapseButtonAriaLabel",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),className:(0,o.Z)("button button--secondary button--outline",v.collapseSidebarButton),onClick:t,children:(0,b.jsx)(g,{className:v.collapseSidebarButtonIcon})})}var C=n(1387),S=n(3272);const I=Symbol("EmptyContext"),N=a.createContext(I);function T(e){let{children:t}=e;const[n,o]=(0,a.useState)(null),i=(0,a.useMemo)((()=>({expandedItem:n,setExpandedItem:o})),[n]);return(0,b.jsx)(N.Provider,{value:i,children:t})}var Z=n(5267),B=n(9057),y=n(6788),L=n(2666);function A(e){let{collapsed:t,categoryLabel:n,onClick:a}=e;return(0,b.jsx)("button",{"aria-label":t?(0,c.I)({id:"theme.DocSidebarItem.expandCategoryAriaLabel",message:"Expand sidebar category '{label}'",description:"The ARIA label to expand the sidebar category"},{label:n}):(0,c.I)({id:"theme.DocSidebarItem.collapseCategoryAriaLabel",message:"Collapse sidebar category '{label}'",description:"The ARIA label to collapse the sidebar category"},{label:n}),"aria-expanded":!t,type:"button",className:"clean-btn menu__caret",onClick:a})}function w(e){let{item:t,onItemClick:n,activePath:i,level:r,index:c,...d}=e;const{items:u,label:m,collapsible:h,className:p,href:x}=t,{docs:{sidebar:{autoCollapseCategories:f}}}=(0,j.L)(),k=function(e){const t=(0,L.Z)();return(0,a.useMemo)((()=>e.href&&!e.linkUnlisted?e.href:!t&&e.collapsible?(0,l.LM)(e):void 0),[e,t])}(t),g=(0,l._F)(t,i),v=(0,B.Mg)(x,i),{collapsed:_,setCollapsed:C}=(0,Z.u)({initialState:()=>!!h&&(!g&&t.collapsed)}),{expandedItem:T,setExpandedItem:w}=function(){const e=(0,a.useContext)(N);if(e===I)throw new S.i6("DocSidebarItemsExpandedStateProvider");return e}(),E=function(e){void 0===e&&(e=!_),w(e?null:c),C(e)};return function(e){let{isActive:t,collapsed:n,updateCollapsed:o}=e;const i=(0,S.D9)(t);(0,a.useEffect)((()=>{t&&!i&&n&&o(!1)}),[t,i,n,o])}({isActive:g,collapsed:_,updateCollapsed:E}),(0,a.useEffect)((()=>{h&&null!=T&&T!==c&&f&&C(!0)}),[h,T,c,C,f]),(0,b.jsxs)("li",{className:(0,o.Z)(s.k.docs.docSidebarItemCategory,s.k.docs.docSidebarItemCategoryLevel(r),"menu__list-item",{"menu__list-item--collapsed":_},p),children:[(0,b.jsxs)("div",{className:(0,o.Z)("menu__list-item-collapsible",{"menu__list-item-collapsible--active":v}),children:[(0,b.jsx)(y.Z,{className:(0,o.Z)("menu__link",{"menu__link--sublist":h,"menu__link--sublist-caret":!x&&h,"menu__link--active":g}),onClick:h?e=>{n?.(t),x?E(!1):(e.preventDefault(),E())}:()=>{n?.(t)},"aria-current":v?"page":void 0,role:h&&!x?"button":void 0,"aria-expanded":h&&!x?!_:void 0,href:h?k??"#":k,...d,children:m}),x&&h&&(0,b.jsx)(A,{collapsed:_,categoryLabel:m,onClick:e=>{e.preventDefault(),E()}})]}),(0,b.jsx)(Z.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:_,children:(0,b.jsx)(V,{items:u,tabIndex:_?-1:0,onItemClick:n,activePath:i,level:r+1})})]})}var E=n(3291),M=n(3407);const H={menuExternalLink:"menuExternalLink_pAvS"};function R(e){let{item:t,onItemClick:n,activePath:a,level:i,index:r,...c}=e;const{href:d,label:u,className:m,autoAddBaseUrl:h}=t,p=(0,l._F)(t,a),x=(0,E.Z)(d);return(0,b.jsx)("li",{className:(0,o.Z)(s.k.docs.docSidebarItemLink,s.k.docs.docSidebarItemLinkLevel(i),"menu__list-item",m),children:(0,b.jsxs)(y.Z,{className:(0,o.Z)("menu__link",!x&&H.menuExternalLink,{"menu__link--active":p}),autoAddBaseUrl:h,"aria-current":p?"page":void 0,to:d,...x&&{onClick:n?()=>n(t):void 0},...c,children:[u,!x&&(0,b.jsx)(M.Z,{})]})},u)}const W={menuHtmlItem:"menuHtmlItem_QgMK"};function F(e){let{item:t,level:n,index:a}=e;const{value:i,defaultStyle:l,className:r}=t;return(0,b.jsx)("li",{className:(0,o.Z)(s.k.docs.docSidebarItemLink,s.k.docs.docSidebarItemLinkLevel(n),l&&[W.menuHtmlItem,"menu__list-item"],r),dangerouslySetInnerHTML:{__html:i}},a)}function P(e){let{item:t,...n}=e;switch(t.type){case"category":return(0,b.jsx)(w,{item:t,...n});case"html":return(0,b.jsx)(F,{item:t,...n});default:return(0,b.jsx)(R,{item:t,...n})}}function D(e){let{items:t,...n}=e;const a=(0,l.f)(t,n.activePath);return(0,b.jsx)(T,{children:a.map(((e,t)=>(0,b.jsx)(P,{item:e,index:t,...n},t)))})}const V=(0,a.memo)(D),z={menu:"menu_mg8w",menuWithAnnouncementBar:"menuWithAnnouncementBar_awgL"};function U(e){let{path:t,sidebar:n,className:i}=e;const l=function(){const{isActive:e}=(0,C.n)(),[t,n]=(0,a.useState)(e);return(0,d.RF)((t=>{let{scrollY:a}=t;e&&n(0===a)}),[e]),e&&t}();return(0,b.jsx)("nav",{"aria-label":(0,c.I)({id:"theme.docs.sidebar.navAriaLabel",message:"Docs sidebar",description:"The ARIA label for the sidebar navigation"}),className:(0,o.Z)("menu thin-scrollbar",z.menu,l&&z.menuWithAnnouncementBar,i),children:(0,b.jsx)("ul",{className:(0,o.Z)(s.k.docs.docSidebarMenu,"menu__list"),children:(0,b.jsx)(V,{items:n,activePath:t,level:1})})})}const Y="sidebar_MTJx",K="sidebarWithHideableNavbar_j34c",G="sidebarHidden_sYHa",J="sidebarLogo_E5y3";function O(e){let{path:t,sidebar:n,onCollapse:a,isHidden:i}=e;const{navbar:{hideOnScroll:s},docs:{sidebar:{hideable:l}}}=(0,j.L)();return(0,b.jsxs)("div",{className:(0,o.Z)(Y,s&&K,i&&G),children:[s&&(0,b.jsx)(k.Z,{tabIndex:-1,className:J}),(0,b.jsx)(U,{path:t,sidebar:n}),l&&(0,b.jsx)(_,{onClick:a})]})}const Q=a.memo(O);var q=n(625),X=n(2582);const $=e=>{let{sidebar:t,path:n}=e;const a=(0,X.e)();return(0,b.jsx)("ul",{className:(0,o.Z)(s.k.docs.docSidebarMenu,"menu__list"),children:(0,b.jsx)(V,{items:t,activePath:n,onItemClick:e=>{"category"===e.type&&e.href&&a.toggle(),"link"===e.type&&a.toggle()},level:1})})};function ee(e){return(0,b.jsx)(q.Zo,{component:$,props:e})}const te=a.memo(ee);function ne(e){const t=(0,f.i)(),n="desktop"===t||"ssr"===t,a="mobile"===t;return(0,b.jsxs)(b.Fragment,{children:[n&&(0,b.jsx)(Q,{...e}),a&&(0,b.jsx)(te,{...e})]})}const ae={expandButton:"expandButton_ufpw",expandButtonIcon:"expandButtonIcon_SwZr"};function oe(e){let{toggleSidebar:t}=e;return(0,b.jsx)("div",{className:ae.expandButton,title:(0,c.I)({id:"theme.docs.sidebar.expandButtonTitle",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),"aria-label":(0,c.I)({id:"theme.docs.sidebar.expandButtonAriaLabel",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),tabIndex:0,role:"button",onKeyDown:t,onClick:t,children:(0,b.jsx)(g,{className:ae.expandButtonIcon})})}const ie={docSidebarContainer:"docSidebarContainer_J78T",docSidebarContainerHidden:"docSidebarContainerHidden_YUaV",sidebarViewport:"sidebarViewport_iMXG"};function se(e){let{children:t}=e;const n=(0,r.V)();return(0,b.jsx)(a.Fragment,{children:t},n?.name??"noSidebar")}function le(e){let{sidebar:t,hiddenSidebarContainer:n,setHiddenSidebarContainer:i}=e;const{pathname:l}=(0,x.TH)(),[r,c]=(0,a.useState)(!1),d=(0,a.useCallback)((()=>{r&&c(!1),!r&&(0,p.n)()&&c(!0),i((e=>!e))}),[i,r]);return(0,b.jsx)("aside",{className:(0,o.Z)(s.k.docs.docSidebarContainer,ie.docSidebarContainer,n&&ie.docSidebarContainerHidden),onTransitionEnd:e=>{e.currentTarget.classList.contains(ie.docSidebarContainer)&&n&&c(!0)},children:(0,b.jsx)(se,{children:(0,b.jsxs)("div",{className:(0,o.Z)(ie.sidebarViewport,r&&ie.sidebarViewportHidden),children:[(0,b.jsx)(ne,{sidebar:t,path:l,onCollapse:d,isHidden:r}),r&&(0,b.jsx)(oe,{toggleSidebar:d})]})})})}const re={docMainContainer:"docMainContainer_CxMK",docMainContainerEnhanced:"docMainContainerEnhanced_BgyR",docItemWrapperEnhanced:"docItemWrapperEnhanced_GccM"};function ce(e){let{hiddenSidebarContainer:t,children:n}=e;const a=(0,r.V)();return(0,b.jsx)("main",{className:(0,o.Z)(re.docMainContainer,(t||!a)&&re.docMainContainerEnhanced),children:(0,b.jsx)("div",{className:(0,o.Z)("container padding-top--md padding-bottom--lg",re.docItemWrapper,t&&re.docItemWrapperEnhanced),children:n})})}const de={docRoot:"docRoot_bcxd",docsWrapper:"docsWrapper_xqoa"};function ue(e){let{children:t}=e;const n=(0,r.V)(),[o,i]=(0,a.useState)(!1);return(0,b.jsxs)("div",{className:de.docsWrapper,children:[(0,b.jsx)(h,{}),(0,b.jsxs)("div",{className:de.docRoot,children:[n&&(0,b.jsx)(le,{sidebar:n.items,hiddenSidebarContainer:o,setHiddenSidebarContainer:i}),(0,b.jsx)(ce,{hiddenSidebarContainer:o,children:t})]})]})}var me=n(3593);function be(e){const t=(0,l.SN)(e);if(!t)return(0,b.jsx)(me.Z,{});const{docElement:n,sidebarName:a,sidebarItems:c}=t;return(0,b.jsx)(i.FG,{className:(0,o.Z)(s.k.page.docsDocPage),children:(0,b.jsx)(r.b,{name:a,items:c,children:(0,b.jsx)(ue,{children:n})})})}},3593:(e,t,n)=>{n.d(t,{Z:()=>l});n(959);var a=n(5341),o=n(259),i=n(7623),s=n(1527);function l(e){let{className:t}=e;return(0,s.jsx)("main",{className:(0,a.Z)("container margin-vert--xl",t),children:(0,s.jsx)("div",{className:"row",children:(0,s.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,s.jsx)(i.Z,{as:"h1",className:"hero__title",children:(0,s.jsx)(o.Z,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,s.jsx)("p",{children:(0,s.jsx)(o.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,s.jsx)("p",{children:(0,s.jsx)(o.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}}}]); \ No newline at end of file diff --git a/assets/js/aba21aa0.0081ea18.js b/assets/js/aba21aa0.0081ea18.js new file mode 100644 index 000000000..42d74e2f5 --- /dev/null +++ b/assets/js/aba21aa0.0081ea18.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[629],{1765:e=>{e.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/acecf23e.50d67dad.js b/assets/js/acecf23e.50d67dad.js new file mode 100644 index 000000000..24596a331 --- /dev/null +++ b/assets/js/acecf23e.50d67dad.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[393],{1838:e=>{e.exports=JSON.parse('{"blogBasePath":"/blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/b789b11d.f059625e.js b/assets/js/b789b11d.f059625e.js new file mode 100644 index 000000000..a5248c6a9 --- /dev/null +++ b/assets/js/b789b11d.f059625e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[882],{7386:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>h,contentTitle:()=>c,default:()=>a,frontMatter:()=>l,metadata:()=>r,toc:()=>t});var s=i(1527),d=i(6225);const l={sidebar_position:3,description:"Learn how to use Yazi's Lua API."},c="Utils",r={id:"plugins/utils",title:"Utils",description:"Learn how to use Yazi's Lua API.",source:"@site/docs/plugins/utils.md",sourceDirName:"plugins",slug:"/plugins/utils",permalink:"/docs/plugins/utils",draft:!1,unlisted:!1,editUrl:"https://github.com/yazi-rs/yazi-rs.github.io/edit/main/docs/plugins/utils.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3,description:"Learn how to use Yazi's Lua API."},sidebar:"docsSidebar",previous:{title:"Layout",permalink:"/docs/plugins/layout"},next:{title:"Config",permalink:"/docs/plugins/config"}},h={},t=[{value:"ya",id:"ya",level:2},{value:"<code>hide()</code>",id:"ya.hide",level:3},{value:"<code>file_cache(opts)</code>",id:"ya.file_cache",level:3},{value:"<code>manager_emit(cmd, args)</code>",id:"ya.manager_emit",level:3},{value:"<code>image_show(url, rect)</code>",id:"ya.image_show",level:3},{value:"<code>image_precache(src, dist)</code>",id:"ya.image_precache",level:3},{value:"<code>which(opts)</code>",id:"ya.which",level:3},{value:"<code>input(opts)</code>",id:"ya.input",level:3},{value:"<code>notify(opts)</code>",id:"ya.notify",level:3},{value:"<code>dbg(msg, ...)</code>",id:"ya.dbg",level:3},{value:"<code>err(msg, ...)</code>",id:"ya.err",level:3},{value:"<code>sync(fn)</code>",id:"ya.sync",level:3},{value:"<code>preview_code(opts)</code>",id:"ya.preview_code",level:3},{value:"<code>preview_archive(opts)</code>",id:"ya.preview_archive",level:3},{value:"<code>preview_widgets(opts, widgets)</code>",id:"ya.preview_widgets",level:3},{value:"<code>target_family()</code>",id:"ya.target_family",level:3},{value:"<code>quote(str)</code>",id:"ya.quote",level:3},{value:"<code>truncate(text, opts)</code>",id:"ya.truncate",level:3},{value:"<code>time()</code>",id:"ya.time",level:3},{value:"<code>sleep(secs)</code>",id:"ya.sleep",level:3},{value:"<code>uid()</code>",id:"ya.uid",level:3},{value:"<code>gid()</code>",id:"ya.gid",level:3},{value:"<code>user_name(uid)</code>",id:"ya.user_name",level:3},{value:"<code>group_name(gid)</code>",id:"ya.group_name",level:3},{value:"<code>host_name()</code>",id:"ya.host_name",level:3},{value:"ps",id:"ps",level:2},{value:"<code>pub(kind, value)</code>",id:"ps.pub",level:3},{value:"<code>pub_to(receiver, kind, value)</code>",id:"ps.pub_to",level:3},{value:"<code>pub_static(severity, kind, value)</code>",id:"ps.pub_static",level:3},{value:"<code>sub(kind, callback)</code>",id:"ps.sub",level:3},{value:"<code>sub_remote(kind, callback)</code>",id:"ps.sub_remote",level:3},{value:"<code>unsub(kind)</code>",id:"ps.unsub",level:3},{value:"<code>unsub_remote(kind)</code>",id:"ps.unsub_remote",level:3},{value:"fs",id:"fs",level:2},{value:"<code>write(url, data)</code>",id:"fs.write",level:3},{value:"<code>cha(url)</code>",id:"fs.cha",level:3},{value:"<code>cha_follow(url)</code>",id:"fs.cha_follow",level:3},{value:"Command",id:"command",level:2},{value:"<code>arg(arg)</code>",id:"Command.arg",level:3},{value:"<code>args(args)</code>",id:"Command.args",level:3},{value:"<code>cwd(dir)</code>",id:"Command.cwd",level:3},{value:"<code>env(key, value)</code>",id:"Command.env",level:3},{value:"<code>stdin(cfg)</code>",id:"Command.stdin",level:3},{value:"<code>stdout(cfg)</code>",id:"Command.stdout",level:3},{value:"<code>stderr(cfg)</code>",id:"Command.stderr",level:3},{value:"<code>spawn()</code>",id:"Command.spawn",level:3},{value:"<code>output()</code>",id:"Command.output",level:3},{value:"Child",id:"child",level:2},{value:"<code>read(len)</code>",id:"Child.read",level:3},{value:"<code>read_line()</code>",id:"Child.read_line",level:3},{value:"<code>read_line_with(opts)</code>",id:"Child.read_line_with",level:3},{value:"<code>wait()</code>",id:"Child.wait",level:3},{value:"<code>wait_with_output()</code>",id:"Child.wait_with_output",level:3},{value:"<code>start_kill()</code>",id:"Child.start_kill",level:3},{value:"Output",id:"output",level:2},{value:"Status",id:"status",level:2},{value:"<code>success()</code>",id:"Status.success",level:3},{value:"<code>code()</code>",id:"Status.code",level:3}];function o(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,d.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"utils",children:"Utils"}),"\n",(0,s.jsx)(n.h2,{id:"ya",children:"ya"}),"\n",(0,s.jsx)(n.h3,{id:"ya.hide",children:(0,s.jsx)(n.code,{children:"hide()"})}),"\n",(0,s.jsx)(n.p,{children:"Hide Yazi to the secondary screen by returning to the terminal, completely controlled by the requested plugin."}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:"local permit = ya.hide()\n"})}),"\n",(0,s.jsxs)(n.p,{children:["This method returns a ",(0,s.jsx)(n.code,{children:"permit"})," for this resource. When it's necessary to restore the TUI display, call its ",(0,s.jsx)(n.code,{children:"drop()"})," method:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:"permit:drop()\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Note that since there's always only one available terminal control resource, ",(0,s.jsx)(n.code,{children:"ya.hide()"})," cannot be called again before the previous ",(0,s.jsx)(n.code,{children:"permit"})," is dropped, otherwise an error will be thrown, effectively avoiding deadlocks."]}),"\n",(0,s.jsx)(n.p,{children:"This function is only available in the async context."}),"\n",(0,s.jsx)(n.h3,{id:"ya.file_cache",children:(0,s.jsx)(n.code,{children:"file_cache(opts)"})}),"\n",(0,s.jsxs)(n.p,{children:["Calculate the cached ",(0,s.jsx)(n.a,{href:"/docs/plugins/types#shared.url",children:"Url"})," corresponding to the given file:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"opts"})," - Required, the options of the cache, which is a table:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"file"})," - The ",(0,s.jsx)(n.a,{href:"/docs/plugins/types#shared.file",children:"File"})," to be cached"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"skip"})," - The number of units to skip. It's units largely depend on your previewer, such as lines for code, and percentages for videos"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["If the file is not allowed to be cached, such as it's ignored in the user config, or the file itself is a cache, returns ",(0,s.jsx)(n.code,{children:"nil"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"ya.manager_emit",children:(0,s.jsx)(n.code,{children:"manager_emit(cmd, args)"})}),"\n",(0,s.jsxs)(n.p,{children:["Send a command to the ",(0,s.jsx)(n.a,{href:"/docs/configuration/keymap#manager",children:(0,s.jsx)(n.code,{children:"[manager]"})})," without waiting for the executor to execute:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"cmd"})," - Required, the command name, which is a string"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"args"})," - Required, the arguments of the command, which is a table with a number or string key and ",(0,s.jsx)(n.a,{href:"/docs/plugins/overview#sendable",children:"sendable values"})]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'ya.manager_emit("my-cmd", { "hello", 123, foo = true, bar_baz = "world" })\n\n-- Equivalent to:\n-- my-cmd "hello" "123" --foo --bar-baz="world"\n'})}),"\n",(0,s.jsx)(n.h3,{id:"ya.image_show",children:(0,s.jsx)(n.code,{children:"image_show(url, rect)"})}),"\n",(0,s.jsx)(n.p,{children:"Display the given image within the specified area, and the image will downscale to fit that area automatically:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"url"})," - Required, the ",(0,s.jsx)(n.a,{href:"/docs/plugins/types#shared.url",children:"Url"})," of the image"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"rect"})," - Required, the ",(0,s.jsx)(n.a,{href:"/docs/plugins/layout#rect",children:"Rect"})," of the area"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"This function is only available in the async context."}),"\n",(0,s.jsx)(n.h3,{id:"ya.image_precache",children:(0,s.jsx)(n.code,{children:"image_precache(src, dist)"})}),"\n",(0,s.jsxs)(n.p,{children:["Pre-cache the image to a specified url based on user-configured ",(0,s.jsxs)(n.a,{href:"/docs/configuration/yazi#preview",children:[(0,s.jsx)(n.code,{children:"max_width"})," and ",(0,s.jsx)(n.code,{children:"max_height"})]}),":"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"src"})," - Required, the source ",(0,s.jsx)(n.a,{href:"/docs/plugins/types#shared.url",children:"Url"})," of the image"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"dist"})," - Required, the destination ",(0,s.jsx)(n.a,{href:"/docs/plugins/types#shared.url",children:"Url"})," of the image"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"This function is only available in the async context."}),"\n",(0,s.jsx)(n.h3,{id:"ya.which",children:(0,s.jsx)(n.code,{children:"which(opts)"})}),"\n",(0,s.jsx)(n.p,{children:"Prompt users with a set of available keys:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"opts"}),": Required, the options of the prompt, which is a table:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"cands"}),": Required, the key candidates, which is a table of tables that contains the following fields:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"on"}),": Required, the key to be prompted, which is a string or a table of strings if multiple keys"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"desc"}),": Optional, the description of the key, which is a string"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"silent"}),": Optional, whether to show the UI of key indicator, which is a boolean"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'local cand = ya.which {\n\tcands = {\n\t\t{ on = "a" },\n\t\t{ on = "b", desc = "optional description" },\n\t\t{ on = "<C-c>", desc = "key combination" },\n\t\t{ on = { "d", "e" }, desc = "multiple keys" },\n\t},\n\t-- silent = true, -- If you don\'t want to show the UI of key indicator\n}\n'})}),"\n",(0,s.jsxs)(n.p,{children:["When the user clicks a valid candidate, ",(0,s.jsx)(n.code,{children:"ya.which"})," returns the 1-based index of that ",(0,s.jsx)(n.code,{children:"cand"}),";\notherwise, it returns nil, indicating that the user has canceled the key operation."]}),"\n",(0,s.jsx)(n.p,{children:"This function is only available in the async context."}),"\n",(0,s.jsx)(n.h3,{id:"ya.input",children:(0,s.jsx)(n.code,{children:"input(opts)"})}),"\n",(0,s.jsx)(n.p,{children:"Request user input:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"opts"}),": Required, the options of the input, which is a table:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"title"}),": Required, the title of the input, which is a string."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"value"}),": Optional, the default value of the input, which is a string."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"position"}),": Required, the position of the input, which is a table:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"1"}),": Required, the origin position of the input, which is a string accepts ",(0,s.jsx)(n.code,{children:'"top-left"'}),", ",(0,s.jsx)(n.code,{children:'"top-center"'}),", ",(0,s.jsx)(n.code,{children:'"top-right"'}),", ",(0,s.jsx)(n.code,{children:'"bottom-left"'}),", ",(0,s.jsx)(n.code,{children:'"bottom-center"'}),", ",(0,s.jsx)(n.code,{children:'"bottom-right"'}),", ",(0,s.jsx)(n.code,{children:'"center"'}),", and ",(0,s.jsx)(n.code,{children:'"hovered"'}),"."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"x"}),": Optional, the X offset from the origin position, which is an positive or negative integer."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"y"}),": Optional, the Y offset from the origin position, which is an positive or negative integer."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"w"}),": Required, the width of the input, which is an positive integer."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"h"}),": Optional, the height of the input, which is an positive integer."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"realtime"}),": Optional, whether to report user input in real time, which is a boolean."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"debounce"}),": Optional, the number of seconds to wait for the user to stop typing, which is a positive float. Can only be used when ",(0,s.jsx)(n.code,{children:"realtime = true"}),". (Currently needs the nightly version of Yazi)"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'local value, event = ya.input {\n\ttitle = "Archive name:",\n\tposition = { "top-center", y = 3, w = 40 },\n}\n'})}),"\n",(0,s.jsxs)(n.p,{children:["Returns ",(0,s.jsx)(n.code,{children:"(value, event)"}),":"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"value"})," - The user input value carried by this event, which is a string if the ",(0,s.jsx)(n.code,{children:"event"})," is non-zero; otherwise, ",(0,s.jsx)(n.code,{children:"nil"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"event"})," - The event type, which is an integer:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"0: Unknown error."}),"\n",(0,s.jsx)(n.li,{children:"1: The user has confirmed the input."}),"\n",(0,s.jsx)(n.li,{children:"2: The user has canceled the input."}),"\n",(0,s.jsxs)(n.li,{children:["3: The user has changed the input (only if ",(0,s.jsx)(n.code,{children:"realtime"})," is true)."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["When ",(0,s.jsx)(n.code,{children:"realtime = true"})," specified, ",(0,s.jsx)(n.code,{children:"ya.input()"})," returns a receiver, which has a ",(0,s.jsx)(n.code,{children:"recv()"})," method that can be called multiple times to receive events."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'local input = ya.input {\n\ttitle = "Input in realtime:",\n\tposition = { "center", w = 50 },\n\trealtime = true,\n}\n\nwhile true do\n\tlocal value, event = input:recv()\n\tif not value then\n\t\tbreak\n\tend\n\n\tya.err(value)\nend\n'})}),"\n",(0,s.jsx)(n.p,{children:"This function is only available in the async context."}),"\n",(0,s.jsx)(n.h3,{id:"ya.notify",children:(0,s.jsx)(n.code,{children:"notify(opts)"})}),"\n",(0,s.jsx)(n.p,{children:"Send a foreground notification to the user:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"opts"}),": Required, the options of the notification, which is a table:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"title"}),": Required, the title of the notification, which is a string."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"content"}),": Required, the content of the notification, which is a string."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"timeout"}),": Required, the timeout of the notification, which is an non-negative float in seconds."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"level"}),": Optional, the level of the notification, which is a string accepts ",(0,s.jsx)(n.code,{children:'"info"'}),", ",(0,s.jsx)(n.code,{children:'"warn"'}),", and ",(0,s.jsx)(n.code,{children:'"error"'}),". Default is ",(0,s.jsx)(n.code,{children:'"info"'}),"."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'ya.notify {\n\ttitle = "Hello, World!",\n\tcontent = "This is a notification from Lua!",\n\ttimeout = 6.5,\n\t-- level = "info",\n}\n'})}),"\n",(0,s.jsx)(n.h3,{id:"ya.dbg",children:(0,s.jsx)(n.code,{children:"dbg(msg, ...)"})}),"\n",(0,s.jsxs)(n.p,{children:["Append messages to ",(0,s.jsx)(n.a,{href:"/docs/plugins/overview#logging",children:"the log file"})," at the debug level:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"msg"})," - Required, the message to be logged."]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'ya.dbg("Hello", "World!") -- Multiple arguments are supported\nya.dbg({ foo = "bar", baz = 123, qux = true }) -- Any type of data is supported\n'})}),"\n",(0,s.jsxs)(n.p,{children:['Note that if you use a release build of Yazi, the log level is "error" instead of "debug", so you\'ll need to use ',(0,s.jsx)(n.a,{href:"#ya.err",children:(0,s.jsx)(n.code,{children:"ya.err"})}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"ya.err",children:(0,s.jsx)(n.code,{children:"err(msg, ...)"})}),"\n",(0,s.jsxs)(n.p,{children:["Append messages to ",(0,s.jsx)(n.a,{href:"/docs/plugins/overview#logging",children:"the log file"})," at the error level:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"msg"})," - Required, the message to be logged."]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'ya.err("Hello", "World!") -- Multiple arguments are supported\nya.err({ foo = "bar", baz = 123, qux = true }) -- Any type of data is supported\n'})}),"\n",(0,s.jsx)(n.h3,{id:"ya.sync",children:(0,s.jsx)(n.code,{children:"sync(fn)"})}),"\n",(0,s.jsxs)(n.p,{children:["See ",(0,s.jsx)(n.a,{href:"/docs/plugins/overview#async-context",children:"Async context"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"ya.preview_code",children:(0,s.jsx)(n.code,{children:"preview_code(opts)"})}),"\n",(0,s.jsx)(n.p,{children:"Preview the file as code into the specified area:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"opts"})," - Required, the options of the preview, which is a table:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"file"})," - The previewed ",(0,s.jsx)(n.a,{href:"/docs/plugins/types#shared.file",children:"File"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"area"})," - The area of the preview, which is a ",(0,s.jsx)(n.a,{href:"/docs/plugins/layout#rect",children:"Rect"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"skip"})," - The number of units to skip. It's units largely depend on your previewer, such as lines for code, and percentages for videos"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"window"})," - The ",(0,s.jsx)(n.a,{href:"/docs/plugins/types#shared.window",children:"Window"})," of the preview"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["Returns ",(0,s.jsx)(n.code,{children:"(ok, upper_bound)"}),":"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"ok"})," - Whether the preview is successful, which is a boolean."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"upper_bound"})," - If the preview fails (",(0,s.jsx)(n.code,{children:"ok = false"}),") and it's because exceeds the maximum upper bound, return this bound; otherwise, ",(0,s.jsx)(n.code,{children:"nil"}),"."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"This function is only available in the async context."}),"\n",(0,s.jsx)(n.h3,{id:"ya.preview_archive",children:(0,s.jsx)(n.code,{children:"preview_archive(opts)"})}),"\n",(0,s.jsx)(n.p,{children:"Preview the file as an archive into the specified area:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"opts"})," - Required, the options of the preview. It's the same as ",(0,s.jsx)(n.a,{href:"#ya.preview_code",children:(0,s.jsx)(n.code,{children:"preview_code()"})})]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["Returns ",(0,s.jsx)(n.code,{children:"(ok, upper_bound)"}),":"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"ok"})," - Whether the preview is successful, which is a boolean."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"upper_bound"})," - If the preview fails (",(0,s.jsx)(n.code,{children:"ok = false"}),") and it's because exceeds the maximum upper bound, return this bound; otherwise, ",(0,s.jsx)(n.code,{children:"nil"}),"."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"This function is only available in the async context."}),"\n",(0,s.jsx)(n.h3,{id:"ya.preview_widgets",children:(0,s.jsx)(n.code,{children:"preview_widgets(opts, widgets)"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"opts"})," - Required, the options of the preview, which is a table:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"file"})," - The previewed ",(0,s.jsx)(n.a,{href:"/docs/plugins/types#shared.file",children:"File"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"skip"})," - The number of units to skip. It's units largely depend on your previewer, such as lines for code, and percentages for videos"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"window"})," - The ",(0,s.jsx)(n.a,{href:"/docs/plugins/types#shared.window",children:"Window"})," of the preview"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"widgets"})," - List of renderable widgets, such as ",(0,s.jsx)(n.code,{children:"{ ui.Paragraph {...}, ui.List {...}, ... }"})]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"This function is only available in the async context."}),"\n",(0,s.jsx)(n.h3,{id:"ya.target_family",children:(0,s.jsx)(n.code,{children:"target_family()"})}),"\n",(0,s.jsxs)(n.p,{children:["Returns the target family of the current platform, ",(0,s.jsx)(n.code,{children:'"windows"'}),", ",(0,s.jsx)(n.code,{children:'"unix"'}),", or ",(0,s.jsx)(n.code,{children:'"wasm"'}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"ya.quote",children:(0,s.jsx)(n.code,{children:"quote(str)"})}),"\n",(0,s.jsx)(n.p,{children:"Quote characters that may have special meaning in a shell:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"str"}),": Required, the string to be quoted, which is a string"]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'local handle = io.popen("ls " .. ya.quote(filename))\n'})}),"\n",(0,s.jsx)(n.h3,{id:"ya.truncate",children:(0,s.jsx)(n.code,{children:"truncate(text, opts)"})}),"\n",(0,s.jsx)(n.p,{children:"Truncate the text to the specified length and return it:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"text"})," - Required, the text to be truncated, which is a string."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"opts"})," - Required, the options of the truncation, which is a table:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"max"})," - Required, the maximum length of the text, which is an integer."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"rtl"})," - Optional, whether the text is right-to-left, which is a boolean."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"ya.time",children:(0,s.jsx)(n.code,{children:"time()"})}),"\n",(0,s.jsx)(n.p,{children:"Returns the current timestamp, which is a float, the integer part represents the seconds, and the decimal part represents the milliseconds."}),"\n",(0,s.jsx)(n.h3,{id:"ya.sleep",children:(0,s.jsx)(n.code,{children:"sleep(secs)"})}),"\n",(0,s.jsxs)(n.p,{children:["Waits until ",(0,s.jsx)(n.code,{children:"secs"})," has elapsed:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"secs"}),": Required, the number of seconds to sleep, which is a positive float"]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:"ya.sleep(0.5) -- Sleep for 500 milliseconds\n"})}),"\n",(0,s.jsx)(n.p,{children:"This function is only available in the async context."}),"\n",(0,s.jsx)(n.h3,{id:"ya.uid",children:(0,s.jsx)(n.code,{children:"uid()"})}),"\n",(0,s.jsx)(n.p,{children:"Only available on Unix-like systems. Returns the user id of the current user, which is an integer."}),"\n",(0,s.jsx)(n.h3,{id:"ya.gid",children:(0,s.jsx)(n.code,{children:"gid()"})}),"\n",(0,s.jsx)(n.p,{children:"Only available on Unix-like systems. Returns the group id of the current user, which is an integer."}),"\n",(0,s.jsx)(n.h3,{id:"ya.user_name",children:(0,s.jsx)(n.code,{children:"user_name(uid)"})}),"\n",(0,s.jsx)(n.p,{children:"Get the name of the user:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"uid"})," - Optional, the user id of the user, which is an integer. If not set, it will use the current user's id."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["Returns the name of the current user, which is a string if successful; otherwise, ",(0,s.jsx)(n.code,{children:"nil"}),"."]}),"\n",(0,s.jsx)(n.p,{children:"This function is only available on Unix-like systems."}),"\n",(0,s.jsx)(n.h3,{id:"ya.group_name",children:(0,s.jsx)(n.code,{children:"group_name(gid)"})}),"\n",(0,s.jsx)(n.p,{children:"Get the name of the user group:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"gid"})," - Optional, the group id of the user, which is an integer. If not set, it will use the current user's group id."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["Returns the name of the current group, which is a string if successful; otherwise, ",(0,s.jsx)(n.code,{children:"nil"}),"."]}),"\n",(0,s.jsx)(n.p,{children:"This function is only available on Unix-like systems."}),"\n",(0,s.jsx)(n.h3,{id:"ya.host_name",children:(0,s.jsx)(n.code,{children:"host_name()"})}),"\n",(0,s.jsxs)(n.p,{children:["Only available on Unix-like systems. Returns the hostname of the current machine, which is a string if successful; otherwise, ",(0,s.jsx)(n.code,{children:"nil"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"ps",children:"ps"}),"\n",(0,s.jsxs)(n.p,{children:["Yazi's DDS (Data Distribution Service) uses a Lua-based publish-subscribe model as its carrier. That is, you can achieve cross-instance communication and state persistence through the ",(0,s.jsx)(n.code,{children:"ps"})," API. See ",(0,s.jsx)(n.a,{href:"/docs/dds",children:"DDS"})," for details."]}),"\n",(0,s.jsx)(n.p,{children:"The following functions can only be used within a sync context."}),"\n",(0,s.jsx)(n.h3,{id:"ps.pub",children:(0,s.jsx)(n.code,{children:"pub(kind, value)"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'ps.pub("greeting", "Hello, World!")\n'})}),"\n",(0,s.jsxs)(n.p,{children:["Publish a message to the current instance, and all plugins subscribed through ",(0,s.jsx)(n.code,{children:"sub()"})," for this ",(0,s.jsx)(n.code,{children:"kind"})," will receive it, achieving internal communication within the instance:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"kind"})," - Required, the kind of the message, which is a string of alphanumeric with dashes, and cannot be ",(0,s.jsx)(n.a,{href:"/docs/dds#builtin",children:"built-in kinds"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"value"})," - Required, the value of the message, which is a ",(0,s.jsx)(n.a,{href:"/docs/plugins/overview#sendable",children:"sendable value"})]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["Since the ",(0,s.jsx)(n.code,{children:"kind"})," is used globally, to add the plugin name as the prefix is a best practice. For example, the combination of the plugin ",(0,s.jsx)(n.code,{children:"my-plugin"})," and the kind ",(0,s.jsx)(n.code,{children:"event1"})," would be ",(0,s.jsx)(n.code,{children:"my-plugin-event1"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"ps.pub_to",children:(0,s.jsx)(n.code,{children:"pub_to(receiver, kind, value)"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'ps.pub_to(1711957283332834, "greeting", "Hello, World!")\n'})}),"\n",(0,s.jsxs)(n.p,{children:["Publish a message to a specific instance with ",(0,s.jsx)(n.code,{children:"receiver"})," as the ID:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["If the receiver is the current instance (local), and is subscribed to this ",(0,s.jsx)(n.code,{children:"kind"})," through ",(0,s.jsx)(n.code,{children:"sub()"}),", it will receive this message."]}),"\n",(0,s.jsxs)(n.li,{children:["If the receiver is not the current instance (remote), and is subscribed to this ",(0,s.jsx)(n.code,{children:"kind"})," through ",(0,s.jsx)(n.code,{children:"sub_remote()"}),", it will receive this message."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"With:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"receiver"})," - Required, ID of the remote instance, which is a integer; if it's ",(0,s.jsx)(n.code,{children:"0"})," then broadcasting to all remote instances"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"kind"})," - The same as ",(0,s.jsx)(n.code,{children:"pub()"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"value"})," - The same as ",(0,s.jsx)(n.code,{children:"pub()"})]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"ps.pub_static",children:(0,s.jsx)(n.code,{children:"pub_static(severity, kind, value)"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'-- Broadcast and store a static message\nps.pub_static(10, "greeting", "Hello, World!")\n-- Broadcast and remove a static message\nps.pub_static(10, "greeting", nil)\n'})}),"\n",(0,s.jsxs)(n.p,{children:["Broadcast a static message to all remote instances subscribed to this ",(0,s.jsx)(n.code,{children:"kind"})," through ",(0,s.jsx)(n.code,{children:"sub_remote()"}),":"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"severity"})," - Required, the severity of the message, which is an integer with a range of 0 to 65535"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"kind"})," - The same as ",(0,s.jsx)(n.code,{children:"pub()"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"value"})," - The same as ",(0,s.jsx)(n.code,{children:"pub()"}),". If the value is ",(0,s.jsx)(n.code,{children:"nil"}),", the static message will be unpersisted."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["The message will be stored as static data to achieve state persistence, and when a new instance is created, it will receive all static messages broadcasted by ",(0,s.jsx)(n.code,{children:"sub_remote()"})," before in descending order of ",(0,s.jsx)(n.code,{children:"severity"})," to restore its state from the data."]}),"\n",(0,s.jsxs)(n.p,{children:["If you simply want to broadcast a message to all remote instances, without the need for the message to be persisted, use ",(0,s.jsx)(n.code,{children:"ps.pub_to()"})," with receiver ",(0,s.jsx)(n.code,{children:"0"})," instead."]}),"\n",(0,s.jsx)(n.h3,{id:"ps.sub",children:(0,s.jsx)(n.code,{children:"sub(kind, callback)"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'ps.sub("cd", function(body)\n\tya.err("New cwd", cx.active.current.cwd)\nend)\n'})}),"\n",(0,s.jsxs)(n.p,{children:["Subscribe to local messages of ",(0,s.jsx)(n.code,{children:"kind"})," and call the ",(0,s.jsx)(n.code,{children:"callback"})," handler for it:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"kind"})," - Required, the kind of the message, which is a string"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"callback"})," - Required, the callback function, with a single parameter ",(0,s.jsx)(n.code,{children:"body"})," containing the content of the message"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["which runs in a sync context, so you can access app data via ",(0,s.jsx)(n.code,{children:"cx"})," for the content of interest."]}),"\n",(0,s.jsxs)(n.p,{children:["Note: No time-consuming operations should be done in the callback, and the same ",(0,s.jsx)(n.code,{children:"kind"})," from the same plugin can only be subscribed once, re-subscribing (",(0,s.jsx)(n.code,{children:"sub()"}),") before unsubscribing (",(0,s.jsx)(n.code,{children:"unsub()"}),") will throw an error."]}),"\n",(0,s.jsx)(n.h3,{id:"ps.sub_remote",children:(0,s.jsx)(n.code,{children:"sub_remote(kind, callback)"})}),"\n",(0,s.jsxs)(n.p,{children:["Similar to ",(0,s.jsx)(n.code,{children:"sub()"}),", but it subscribes to remote messages of this ",(0,s.jsx)(n.code,{children:"kind"})," instead of local."]}),"\n",(0,s.jsx)(n.h3,{id:"ps.unsub",children:(0,s.jsx)(n.code,{children:"unsub(kind)"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'ps.unsub("my-message")\n'})}),"\n",(0,s.jsxs)(n.p,{children:["Unsubscribe from local messages of this ",(0,s.jsx)(n.code,{children:"kind"}),":"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"kind"})," - Required, the kind of the message, which is a string"]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"ps.unsub_remote",children:(0,s.jsx)(n.code,{children:"unsub_remote(kind)"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'ps.unsub_remote("my-message")\n'})}),"\n",(0,s.jsxs)(n.p,{children:["Unsubscribe from remote messages of this ",(0,s.jsx)(n.code,{children:"kind"}),":"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"kind"})," - Required, the kind of the message, which is a string"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"fs",children:"fs"}),"\n",(0,s.jsx)(n.p,{children:"The following functions can only be used within an async context."}),"\n",(0,s.jsx)(n.h3,{id:"fs.write",children:(0,s.jsx)(n.code,{children:"write(url, data)"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'local ok, err = fs.write(url, "hello world")\n'})}),"\n",(0,s.jsx)(n.p,{children:"Write data to the specified file:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"url"})," - Required, the ",(0,s.jsx)(n.a,{href:"/docs/plugins/types#shared.url",children:"Url"})," of the file"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"data"})," - Required, the data to be written, which is a string"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["Returns ",(0,s.jsx)(n.code,{children:"(ok, err)"}),":"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"ok"})," - Whether the operation is successful, which is a boolean"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"err"})," - The error code if the operation is failed, which is an integer if any"]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"fs.cha",children:(0,s.jsx)(n.code,{children:"cha(url)"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:"local cha, err = fs.cha(url)\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Get the ",(0,s.jsx)(n.a,{href:"/docs/plugins/types#shared.cha",children:"Cha"})," of the specified file, which is faster than ",(0,s.jsx)(n.a,{href:"#fs.cha_follow",children:(0,s.jsx)(n.code,{children:"cha_follow()"})})," since it never follows the symbolic link:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"url"})," - Required, the ",(0,s.jsx)(n.a,{href:"/docs/plugins/types#shared.url",children:"Url"})," of the file"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["Returns ",(0,s.jsx)(n.code,{children:"(cha, err)"}),":"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"cha"})," - The ",(0,s.jsx)(n.a,{href:"/docs/plugins/types#shared.cha",children:"Cha"})," of the file if successful; otherwise, ",(0,s.jsx)(n.code,{children:"nil"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"err"})," - The error code if the operation is failed, which is an integer if any"]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"fs.cha_follow",children:(0,s.jsx)(n.code,{children:"cha_follow(url)"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:"local cha, err = fs.cha_follow(url)\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Get the ",(0,s.jsx)(n.a,{href:"/docs/plugins/types#shared.cha",children:"Cha"})," of the specified file, and follow the symbolic link:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"url"})," - Required, the ",(0,s.jsx)(n.a,{href:"/docs/plugins/types#shared.url",children:"Url"})," of the file"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["Returns ",(0,s.jsx)(n.code,{children:"(cha, err)"}),":"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"cha"})," - The ",(0,s.jsx)(n.a,{href:"/docs/plugins/types#shared.cha",children:"Cha"})," of the file if successful; otherwise, ",(0,s.jsx)(n.code,{children:"nil"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"err"})," - The error code if the operation is failed, which is an integer if any"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"command",children:"Command"}),"\n",(0,s.jsx)(n.p,{children:"You can invoke external programs through:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'local child, err = Command("ls")\n\t:args({ "-a", "-l" })\n\t:stdout(Command.PIPED)\n\t:spawn()\n'})}),"\n",(0,s.jsxs)(n.p,{children:["Compared to Lua's ",(0,s.jsx)(n.code,{children:"os.execute"}),", it provides many comprehensive and convenient methods, and the entire process is async."]}),"\n",(0,s.jsx)(n.p,{children:"It takes better advantage of the benefits of concurrent scheduling. However, it can only be used in async contexts, such as preloaders, previewers, and async functional plugins."}),"\n",(0,s.jsx)(n.h3,{id:"Command.arg",children:(0,s.jsx)(n.code,{children:"arg(arg)"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'local cmd = Command("ls"):arg("-a"):arg("-l")\n'})}),"\n",(0,s.jsx)(n.p,{children:"Append an argument to the command:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"arg"})," - Required, the argument to be appended, which is a string"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["Returns ",(0,s.jsx)(n.code,{children:"self"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"Command.args",children:(0,s.jsx)(n.code,{children:"args(args)"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'local cmd = Command("ls"):args({ "-a", "-l" }):args({ "-h" })\n'})}),"\n",(0,s.jsx)(n.p,{children:"Append multiple arguments to the command:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"args"})," - Required, the arguments to be appended, which is a table of strings"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["Returns ",(0,s.jsx)(n.code,{children:"self"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"Command.cwd",children:(0,s.jsx)(n.code,{children:"cwd(dir)"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'local cmd = Command("ls"):cwd("/root")\n'})}),"\n",(0,s.jsx)(n.p,{children:"Set the current working directory of the command:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"dir"})," - Required, the directory of the command, which is a string"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["Returns ",(0,s.jsx)(n.code,{children:"self"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"Command.env",children:(0,s.jsx)(n.code,{children:"env(key, value)"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'local cmd = Command("ls"):env("PATH", "/bin"):env("HOME", "/home")\n'})}),"\n",(0,s.jsx)(n.p,{children:"Append an environment variable to the command:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"key"})," - Required, the key of the environment variable, which is a string"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"value"})," - Required, the value of the environment variable, which is a string"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["Returns ",(0,s.jsx)(n.code,{children:"self"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"Command.stdin",children:(0,s.jsx)(n.code,{children:"stdin(cfg)"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'local cmd = Command("ls"):stdin(Command.PIPED)\n'})}),"\n",(0,s.jsx)(n.p,{children:"Set the stdin of the command:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"cfg"})," - Required, the configuration of the stdin, accepts the following values:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"Command.PIPED"})," - Pipe the stdin"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"Command.NULL"})," - Discard the stdin"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"Command.INHERIT"})," - Inherit the stdin"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["If not set, the stdin will be null. Returns ",(0,s.jsx)(n.code,{children:"self"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"Command.stdout",children:(0,s.jsx)(n.code,{children:"stdout(cfg)"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'local cmd = Command("ls"):stdout(Command.PIPED)\n'})}),"\n",(0,s.jsx)(n.p,{children:"Set the stdout of the command:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"cfg"})," - Required, the configuration of the stdout, accepts the following values:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"Command.PIPED"})," - Pipe the stdout"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"Command.NULL"})," - Discard the stdout"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"Command.INHERIT"})," - Inherit the stdout"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["If not set, the stdout will be null. Returns ",(0,s.jsx)(n.code,{children:"self"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"Command.stderr",children:(0,s.jsx)(n.code,{children:"stderr(cfg)"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'local cmd = Command("ls"):stderr(Command.PIPED)\n'})}),"\n",(0,s.jsx)(n.p,{children:"Set the stderr of the command:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"cfg"})," - Required, the configuration of the stderr, accepts the following values:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"Command.PIPED"})," - Pipe the stderr"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"Command.NULL"})," - Discard the stderr"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"Command.INHERIT"})," - Inherit the stderr"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["If not set, the stderr will be null. Returns ",(0,s.jsx)(n.code,{children:"self"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"Command.spawn",children:(0,s.jsx)(n.code,{children:"spawn()"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'local child, err = Command("ls"):spawn()\n'})}),"\n",(0,s.jsxs)(n.p,{children:["Spawn the command, returns ",(0,s.jsx)(n.code,{children:"(child, err)"}),":"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"child"})," - The ",(0,s.jsx)(n.a,{href:"#child",children:"Child"})," of the command if successful; otherwise, ",(0,s.jsx)(n.code,{children:"nil"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"err"})," - The error code if the operation is failed, which is an integer if any"]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"Command.output",children:(0,s.jsx)(n.code,{children:"output()"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'local output, err = Command("ls"):output()\n'})}),"\n",(0,s.jsxs)(n.p,{children:["Spawn the command and wait for it to finish, returns ",(0,s.jsx)(n.code,{children:"(output, err)"}),":"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"output"})," - The ",(0,s.jsx)(n.a,{href:"#output",children:"Output"})," of the command if successful; otherwise, ",(0,s.jsx)(n.code,{children:"nil"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"err"})," - The error code if the operation is failed, which is an integer if any"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"child",children:"Child"}),"\n",(0,s.jsxs)(n.p,{children:["This object is created by ",(0,s.jsx)(n.a,{href:"#Command.spawn",children:(0,s.jsx)(n.code,{children:"Command:spawn()"})})," and represents a running child process."]}),"\n",(0,s.jsx)(n.p,{children:"You can access the runtime data of this process through its proprietary methods."}),"\n",(0,s.jsx)(n.h3,{id:"Child.read",children:(0,s.jsx)(n.code,{children:"read(len)"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:"local data, event = child:read(1024)\n"})}),"\n",(0,s.jsxs)(n.p,{children:['Let\'s say "available data source" refers to ',(0,s.jsx)(n.code,{children:"stdout"})," or ",(0,s.jsx)(n.code,{children:"stderr"})," that has been set with ",(0,s.jsx)(n.code,{children:"Command.PIPED"}),", or them both."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"read()"})," reads data from the available data source alternately, and the ",(0,s.jsx)(n.code,{children:"event"})," indicates the source of the data:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"The data comes from stdout if event is 0"}),"\n",(0,s.jsx)(n.li,{children:"The data comes from stderr if event is 1"}),"\n",(0,s.jsx)(n.li,{children:"There's no data to read from both stdout and stderr, if event is 2"}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"Child.read_line",children:(0,s.jsx)(n.code,{children:"read_line()"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:"local line, event = child:read_line()\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Similar to ",(0,s.jsx)(n.a,{href:"#Child.read",children:(0,s.jsx)(n.code,{children:"read()"})}),", but it reads data line by line."]}),"\n",(0,s.jsx)(n.h3,{id:"Child.read_line_with",children:(0,s.jsx)(n.code,{children:"read_line_with(opts)"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:"local line, event = child:wait_line_with { timeout = 500 }\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Similar to ",(0,s.jsx)(n.a,{href:"#Child.read_line",children:(0,s.jsx)(n.code,{children:"read_line()"})}),", but it accepts a table of options:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"timeout"})," - Required, timeout in milliseconds, which is an integer"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"And includes the following additional events:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Timeout if event is 3"}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"Child.wait",children:(0,s.jsx)(n.code,{children:"wait()"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:"local status, err = child:wait()\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Wait for the child process to finish, returns ",(0,s.jsx)(n.code,{children:"(status, err)"}),":"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"status"})," - The ",(0,s.jsx)(n.a,{href:"#status",children:"Status"})," of the child process if successful; otherwise, ",(0,s.jsx)(n.code,{children:"nil"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"err"})," - The error code if the operation is failed, which is an integer if any"]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"Child.wait_with_output",children:(0,s.jsx)(n.code,{children:"wait_with_output()"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:"local output, err = child:wait_with_output()\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Wait for the child process to finish and get the output, returns ",(0,s.jsx)(n.code,{children:"(output, err)"}),":"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"output"})," - The ",(0,s.jsx)(n.a,{href:"#output",children:"Output"})," of the child process if successful; otherwise, ",(0,s.jsx)(n.code,{children:"nil"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"err"})," - The error code if the operation is failed, which is an integer if any"]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"Child.start_kill",children:(0,s.jsx)(n.code,{children:"start_kill()"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:"local ok, err = child:start_kill()\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Send a SIGTERM signal to the child process, returns ",(0,s.jsx)(n.code,{children:"(ok, err)"}),":"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"ok"})," - Whether the operation is successful, which is a boolean"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"err"})," - The error code if the operation is failed, which is an integer if any"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"output",children:"Output"}),"\n",(0,s.jsx)(n.p,{children:"Properties:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"status"}),": The ",(0,s.jsx)(n.a,{href:"#status",children:"Status"})," of the child process"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"stdout"}),": The stdout of the child process, which is a string"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"stderr"}),": The stderr of the child process, which is a string"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"status",children:"Status"}),"\n",(0,s.jsxs)(n.p,{children:["This object represents the exit status of a child process, and it is created by ",(0,s.jsx)(n.a,{href:"#Child.wait",children:(0,s.jsx)(n.code,{children:"wait()"})}),", or ",(0,s.jsx)(n.a,{href:"#Command.output",children:(0,s.jsx)(n.code,{children:"output()"})}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"Status.success",children:(0,s.jsx)(n.code,{children:"success()"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:"local ok = status:success()\n"})}),"\n",(0,s.jsx)(n.p,{children:"Returns whether the child process exited successfully, which is a boolean."}),"\n",(0,s.jsx)(n.h3,{id:"Status.code",children:(0,s.jsx)(n.code,{children:"code()"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:"local code = status:code()\n"})}),"\n",(0,s.jsx)(n.p,{children:"Returns the exit code of the child process, which is an integer if any."})]})}function a(e={}){const{wrapper:n}={...(0,d.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(o,{...e})}):o(e)}},6225:(e,n,i)=>{i.d(n,{Z:()=>r,a:()=>c});var s=i(959);const d={},l=s.createContext(d);function c(e){const n=s.useContext(l);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(d):e.components||d:c(e.components),s.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c141421f.17a1cee8.js b/assets/js/c141421f.17a1cee8.js new file mode 100644 index 000000000..0abb09e22 --- /dev/null +++ b/assets/js/c141421f.17a1cee8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4],{1324:e=>{e.exports=JSON.parse('{"name":"docusaurus-theme-search-algolia","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/c15d9823.1ddfb9a4.js b/assets/js/c15d9823.1ddfb9a4.js new file mode 100644 index 000000000..9244c01bc --- /dev/null +++ b/assets/js/c15d9823.1ddfb9a4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[642],{2506:e=>{e.exports=JSON.parse('{"metadata":{"permalink":"/blog","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/c798e513.b5153429.js b/assets/js/c798e513.b5153429.js new file mode 100644 index 000000000..f187544fe --- /dev/null +++ b/assets/js/c798e513.b5153429.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[197],{904:(n,e,i)=>{i.r(e),i.d(e,{assets:()=>l,contentTitle:()=>r,default:()=>d,frontMatter:()=>o,metadata:()=>c,toc:()=>a});var t=i(1527),s=i(6225);const o={sidebar_position:4,description:"Learn how to use Yazi's Lua API."},r="Config",c={id:"plugins/config",title:"Config",description:"Learn how to use Yazi's Lua API.",source:"@site/docs/plugins/config.md",sourceDirName:"plugins",slug:"/plugins/config",permalink:"/docs/plugins/config",draft:!1,unlisted:!1,editUrl:"https://github.com/yazi-rs/yazi-rs.github.io/edit/main/docs/plugins/config.md",tags:[],version:"current",sidebarPosition:4,frontMatter:{sidebar_position:4,description:"Learn how to use Yazi's Lua API."},sidebar:"docsSidebar",previous:{title:"Utils",permalink:"/docs/plugins/utils"},next:{title:"Flavors (BETA)",permalink:"/docs/flavors/overview"}},l={},a=[];function u(n){const e={h1:"h1",li:"li",p:"p",ul:"ul",...(0,s.a)(),...n.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(e.h1,{id:"config",children:"Config"}),"\n",(0,t.jsx)(e.p,{children:"TODO"}),"\n",(0,t.jsxs)(e.ul,{children:["\n",(0,t.jsx)(e.li,{children:"BOOT"}),"\n",(0,t.jsx)(e.li,{children:"MANAGER"}),"\n",(0,t.jsx)(e.li,{children:"THEME"}),"\n",(0,t.jsx)(e.li,{children:"PREVIEW"}),"\n"]})]})}function d(n={}){const{wrapper:e}={...(0,s.a)(),...n.components};return e?(0,t.jsx)(e,{...n,children:(0,t.jsx)(u,{...n})}):u(n)}},6225:(n,e,i)=>{i.d(e,{Z:()=>c,a:()=>r});var t=i(959);const s={},o=t.createContext(s);function r(n){const e=t.useContext(o);return t.useMemo((function(){return"function"==typeof n?n(e):{...e,...n}}),[e,n])}function c(n){let e;return e=n.disableParentContext?"function"==typeof n.components?n.components(s):n.components||s:r(n.components),t.createElement(o.Provider,{value:e},n.children)}}}]); \ No newline at end of file diff --git a/assets/js/c8b3d7d6.1a3e1320.js b/assets/js/c8b3d7d6.1a3e1320.js new file mode 100644 index 000000000..8be8aab79 --- /dev/null +++ b/assets/js/c8b3d7d6.1a3e1320.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[307],{2468:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>c,default:()=>m,frontMatter:()=>o,metadata:()=>d,toc:()=>h});var r=t(1527),i=t(6225),a=t(8449),s=t(2986),l=t(2915);const o={sidebar_position:8,description:"A few helpful tips for using Yazi."},c="Tips",d={id:"tips",title:"Tips",description:"A few helpful tips for using Yazi.",source:"@site/docs/tips.md",sourceDirName:".",slug:"/tips",permalink:"/docs/tips",draft:!1,unlisted:!1,editUrl:"https://github.com/yazi-rs/yazi-rs.github.io/edit/main/docs/tips.md",tags:[],version:"current",sidebarPosition:8,frontMatter:{sidebar_position:8,description:"A few helpful tips for using Yazi."},sidebar:"docsSidebar",previous:{title:"DDS",permalink:"/docs/dds"},next:{title:"Resources",permalink:"/docs/resources"}},u={},h=[{value:"Full border",id:"full-border",level:2},{value:"Dropping to the shell",id:"dropping-to-shell",level:2},{value:"Close input by once <kbd>Esc</kbd> press",id:"close-input-by-esc",level:2},{value:"Smart enter: <code>enter</code> for directory, <code>open</code> for file",id:"smart-enter",level:2},{value:"Smart paste: <code>paste</code> files without entering the directory",id:"smart-paste",level:2},{value:"Drag and drop via <code>dragon</code>",id:"drag-and-drop",level:2},{value:"Copy selected files to the system clipboard while yanking",id:"selected-files-to-clipboard",level:2},{value:"Maximize preview pane",id:"max-preview",level:2},{value:"Hide preview pane",id:"hide-preview",level:2},{value:"File navigation wraparound",id:"navigation-wraparound",level:2},{value:"Navigation in the parent directory without leaving the CWD",id:"parent-arrow",level:2},{value:"No status bar",id:"no-status-bar",level:2},{value:"Show symlink in status bar",id:"symlink-in-status",level:2},{value:"Show user/group of files in status bar",id:"user-group-in-status",level:2},{value:"Show username and hostname in header",id:"username-hostname-in-header",level:2},{value:"File tree picker in Helix with Zellij",id:"helix-with-zellij",level:2},{value:"Make Yazi even faster than fast",id:"make-yazi-even-faster",level:2}];function p(e){const n={a:"a",code:"code",em:"em",h1:"h1",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.a)(),...e.components},{Details:t}=n;return t||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"tips",children:"Tips"}),"\n",(0,r.jsx)(n.p,{children:"These tips require prior knowledge of the Yazi configuration file."}),"\n",(0,r.jsxs)(n.p,{children:["If you are using Yazi for the first time, please read our ",(0,r.jsx)(n.a,{href:"/docs/configuration/overview",children:"configuration"})," and ",(0,r.jsx)(n.a,{href:"/docs/plugins/overview",children:"plugins"})," documentation first."]}),"\n",(0,r.jsx)(n.h2,{id:"full-border",children:"Full border"}),"\n",(0,r.jsx)("img",{src:(0,l.ZP)("/img/full-border.png"),width:"600"}),"\n",(0,r.jsxs)(n.p,{children:["Moved to ",(0,r.jsx)(n.a,{href:"https://github.com/yazi-rs/plugins/tree/main/full-border.yazi",children:"https://github.com/yazi-rs/plugins/tree/main/full-border.yazi"})]}),"\n",(0,r.jsx)(n.h2,{id:"dropping-to-shell",children:"Dropping to the shell"}),"\n",(0,r.jsxs)(n.p,{children:["Add this keybinding to your ",(0,r.jsx)(n.code,{children:"keymap.toml"}),":"]}),"\n",(0,r.jsxs)(a.Z,{children:[(0,r.jsx)(s.Z,{value:"unix",label:"Unix",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-toml",children:'[[manager.prepend_keymap]]\non = [ "<C-s>" ]\nrun = \'shell "$SHELL" --block --confirm\'\ndesc = "Open shell here"\n'})})}),(0,r.jsx)(s.Z,{value:"windows",label:"Windows",children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-toml",children:'[[manager.prepend_keymap]]\non = [ "<C-s>" ]\nrun = \'shell "powershell.exe" --block --confirm\'\ndesc = "Open PowerShell here"\n'})})})]}),"\n",(0,r.jsxs)(n.h2,{id:"close-input-by-esc",children:["Close input by once ",(0,r.jsx)("kbd",{children:"Esc"})," press"]}),"\n",(0,r.jsxs)(n.p,{children:["You can change the ",(0,r.jsx)("kbd",{children:"Esc"})," of input component from the default ",(0,r.jsx)(n.code,{children:"escape"})," to ",(0,r.jsx)(n.code,{children:"close"})," command, in your ",(0,r.jsx)(n.code,{children:"keymap.toml"}),":"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-toml",children:'[[input.prepend_keymap]]\non = [ "<Esc>" ]\nrun = "close"\ndesc = "Cancel input"\n'})}),"\n",(0,r.jsx)(n.p,{children:"to exiting input directly, without entering Vi mode, making it behave like a regular input box."}),"\n",(0,r.jsxs)(n.h2,{id:"smart-enter",children:["Smart enter: ",(0,r.jsx)(n.code,{children:"enter"})," for directory, ",(0,r.jsx)(n.code,{children:"open"})," for file"]}),"\n",(0,r.jsxs)(n.p,{children:["Save these lines as ",(0,r.jsx)(n.code,{children:"~/.config/yazi/plugins/smart-enter.yazi/init.lua"}),":"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-lua",children:'return {\n\tentry = function()\n\t\tlocal h = cx.active.current.hovered\n\t\tya.manager_emit(h and h.cha.is_dir and "enter" or "open", { hovered = true })\n\tend,\n}\n'})}),"\n",(0,r.jsxs)(n.p,{children:["Then bind it for ",(0,r.jsx)("kbd",{children:"l"})," key, in your ",(0,r.jsx)(n.code,{children:"keymap.toml"}),":"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-toml",children:'[[manager.prepend_keymap]]\non = [ "l" ]\nrun = "plugin --sync smart-enter"\ndesc = "Enter the child directory, or open the file"\n'})}),"\n",(0,r.jsxs)(n.h2,{id:"smart-paste",children:["Smart paste: ",(0,r.jsx)(n.code,{children:"paste"})," files without entering the directory"]}),"\n",(0,r.jsxs)(n.p,{children:["Save these lines as ",(0,r.jsx)(n.code,{children:"~/.config/yazi/plugins/smart-paste.yazi/init.lua"}),":"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-lua",children:'return {\n\tentry = function()\n\t\tlocal h = cx.active.current.hovered\n\t\tif h and h.cha.is_dir then\n\t\t\tya.manager_emit("enter", {})\n\t\t\tya.manager_emit("paste", {})\n\t\t\tya.manager_emit("leave", {})\n\t\telse\n\t\t\tya.manager_emit("paste", {})\n\t\tend\n\tend,\n}\n'})}),"\n",(0,r.jsxs)(n.p,{children:["Then bind it for ",(0,r.jsx)("kbd",{children:"p"})," key, in your ",(0,r.jsx)(n.code,{children:"keymap.toml"}),":"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-toml",children:'[[manager.prepend_keymap]]\non = [ "p" ]\nrun = "plugin --sync smart-paste"\ndesc = "Paste into the hovered directory or CWD"\n'})}),"\n",(0,r.jsxs)(t,{children:[(0,r.jsx)("summary",{children:"Demonstrate smart paste"}),(0,r.jsxs)("p",{children:["Original post: ",(0,r.jsx)(n.a,{href:"https://github.com/sxyazi/yazi/discussions/957#discussioncomment-9239519",children:"https://github.com/sxyazi/yazi/discussions/957#discussioncomment-9239519"})]}),(0,r.jsx)("video",{src:"https://github.com/sxyazi/yazi/assets/17523360/080212b5-43e7-4c36-83e8-312495d50383",width:"100%",controls:!0,muted:!0})]}),"\n",(0,r.jsxs)(n.h2,{id:"drag-and-drop",children:["Drag and drop via ",(0,r.jsx)(n.a,{href:"https://github.com/mwh/dragon",children:(0,r.jsx)(n.code,{children:"dragon"})})]}),"\n",(0,r.jsxs)(n.p,{children:["Original post: ",(0,r.jsx)(n.a,{href:"https://github.com/sxyazi/yazi/discussions/327",children:"https://github.com/sxyazi/yazi/discussions/327"})]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-toml",children:"[[manager.prepend_keymap]]\non = [ \"<C-n>\" ]\nrun = '''\n\tshell 'dragon -x -i -T \"$1\"' --confirm\n'''\n"})}),"\n",(0,r.jsx)(n.h2,{id:"selected-files-to-clipboard",children:"Copy selected files to the system clipboard while yanking"}),"\n",(0,r.jsxs)(n.p,{children:["Yazi allows multiple commands to be bound to a single key, so you can set ",(0,r.jsx)("kbd",{children:"y"})," to not only do the ",(0,r.jsx)(n.code,{children:"yank"})," but also run a shell script:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-toml",children:"[[manager.prepend_keymap]]\non = [ \"y\" ]\nrun = [ \"yank\", '''\n\tshell --confirm 'echo \"$@\" | xclip -i -selection clipboard -t text/uri-list'\n''' ]\n"})}),"\n",(0,r.jsxs)(n.p,{children:["The above is available on X11, there is also a Wayland version (Thanks ",(0,r.jsx)(n.a,{href:"https://discord.com/channels/1136203602898194542/1136203604076802092/1188498323867455619",children:"@hurutparittya for sharing this"})," in Yazi's discord server):"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-toml",children:"[[manager.prepend_keymap]]\non = [ \"y\" ]\nrun = [ \"yank\", '''\n\tshell --confirm 'for path in \"$@\"; do echo \"file://$path\"; done | wl-copy -t text/uri-list'\n''' ]\n"})}),"\n",(0,r.jsx)(n.h2,{id:"max-preview",children:"Maximize preview pane"}),"\n",(0,r.jsxs)(n.p,{children:["Moved to ",(0,r.jsx)(n.a,{href:"https://github.com/yazi-rs/plugins/tree/main/max-preview.yazi",children:"https://github.com/yazi-rs/plugins/tree/main/max-preview.yazi"})]}),"\n",(0,r.jsx)(n.h2,{id:"hide-preview",children:"Hide preview pane"}),"\n",(0,r.jsxs)(n.p,{children:["Moved to ",(0,r.jsx)(n.a,{href:"https://github.com/yazi-rs/plugins/tree/main/hide-preview.yazi",children:"https://github.com/yazi-rs/plugins/tree/main/hide-preview.yazi"})]}),"\n",(0,r.jsx)(n.h2,{id:"navigation-wraparound",children:"File navigation wraparound"}),"\n",(0,r.jsxs)(n.p,{children:["Save these lines as ",(0,r.jsx)(n.code,{children:"~/.config/yazi/plugins/arrow.yazi/init.lua"}),":"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-lua",children:'return {\n\tentry = function(_, args)\n\t\tlocal current = cx.active.current\n\t\tlocal new = (current.cursor + args[1]) % #current.files\n\t\tya.manager_emit("arrow", { new - current.cursor })\n\tend,\n}\n'})}),"\n",(0,r.jsxs)(n.p,{children:["Then bind it for ",(0,r.jsx)("kbd",{children:"k"})," and ",(0,r.jsx)("kbd",{children:"j"})," key, in your ",(0,r.jsx)(n.code,{children:"keymap.toml"}),":"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-toml",children:'[[manager.prepend_keymap]]\non = [ "k" ]\nrun = "plugin --sync arrow --args=-1"\n\n[[manager.prepend_keymap]]\non = [ "j" ]\nrun = "plugin --sync arrow --args=1"\n'})}),"\n",(0,r.jsx)(n.h2,{id:"parent-arrow",children:"Navigation in the parent directory without leaving the CWD"}),"\n",(0,r.jsxs)(n.p,{children:["Save these lines as ",(0,r.jsx)(n.code,{children:"~/.config/yazi/plugins/parent-arrow.yazi/init.lua"}),":"]}),"\n",(0,r.jsxs)(a.Z,{children:[(0,r.jsx)(s.Z,{value:"classic",label:"Classic",default:!0,children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-lua",children:'local function entry(_, args)\n\tlocal parent = cx.active.parent\n\tif not parent then return end\n\n\tlocal target = parent.files[parent.cursor + 1 + args[1]]\n\tif target and target.cha.is_dir then\n\t\tya.manager_emit("cd", { target.url })\n\tend\nend\n\nreturn { entry = entry }\n'})})}),(0,r.jsx)(s.Z,{value:"skip-files",label:"Skip files",children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-lua",children:"local function entry(_, args)\n\tlocal parent = cx.active.parent\n\tif not parent then return end\n\n\tlocal offset = tonumber(args[1])\n\tif not offset then return ya.err(args[1], 'is not a number') end\n\n\tlocal start = parent.cursor + 1 + offset\n\tlocal end_ = offset < 0 and 1 or #parent.files\n\tlocal step = offset < 0 and -1 or 1\n\tfor i = start, end_, step do\n\t\tlocal target = parent.files[i]\n\t\tif target and target.cha.is_dir then\n\t\t\treturn ya.manager_emit(\"cd\", { target.url })\n\t\tend\n\tend\nend\n\nreturn { entry = entry }\n"})})})]}),"\n",(0,r.jsxs)(n.p,{children:["Then bind it for ",(0,r.jsx)("kbd",{children:"K"})," and ",(0,r.jsx)("kbd",{children:"J"})," key, in your ",(0,r.jsx)(n.code,{children:"keymap.toml"}),":"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-toml",children:'[[manager.prepend_keymap]]\non = [ "K" ]\nrun = "plugin --sync parent-arrow --args=-1"\n\n[[manager.prepend_keymap]]\non = [ "J" ]\nrun = "plugin --sync parent-arrow --args=1"\n'})}),"\n",(0,r.jsx)(n.h2,{id:"no-status-bar",children:"No status bar"}),"\n",(0,r.jsx)("img",{src:(0,l.ZP)("/img/no-status-bar.jpg"),width:"600"}),"\n",(0,r.jsxs)(n.p,{children:["Add these lines to your ",(0,r.jsx)(n.code,{children:"~/.config/yazi/init.lua"}),":"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-lua",children:"function Status:render() return {} end\n\nlocal old_manager_render = Manager.render\nfunction Manager:render(area)\n\treturn old_manager_render(self, ui.Rect { x = area.x, y = area.y, w = area.w, h = area.h + 1 })\nend\n"})}),"\n",(0,r.jsx)(n.h2,{id:"symlink-in-status",children:"Show symlink in status bar"}),"\n",(0,r.jsx)("img",{src:(0,l.ZP)("/img/symlink-in-status.png"),width:"600"}),"\n",(0,r.jsxs)(n.p,{children:["Copy the ",(0,r.jsxs)(n.a,{href:"https://github.com/sxyazi/yazi/blob/latest/yazi-plugin/preset/components/status.lua",children:[(0,r.jsx)(n.code,{children:"Status:name()"})," method"]})," ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.em,{children:"only"})})," to your ",(0,r.jsx)(n.code,{children:"~/.config/yazi/init.lua"}),", and apply the following patch:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-diff",children:'@@ -42,7 +42,11 @@ function Status:name()\n \t\treturn ui.Span("")\n \tend\n\n-\treturn ui.Span(" " .. h.name)\n+\tlocal linked = ""\n+\tif h.link_to ~= nil then\n+\t\tlinked = " -> " .. tostring(h.link_to)\n+\tend\n+\treturn ui.Span(" " .. h.name .. linked)\n end\n'})}),"\n",(0,r.jsx)(n.h2,{id:"user-group-in-status",children:"Show user/group of files in status bar"}),"\n",(0,r.jsx)("img",{src:(0,l.ZP)("/img/owner.png"),width:"600"}),"\n",(0,r.jsxs)(n.p,{children:["Copy the ",(0,r.jsxs)(n.a,{href:"https://github.com/sxyazi/yazi/blob/latest/yazi-plugin/preset/components/status.lua",children:[(0,r.jsx)(n.code,{children:"Status:render()"})," method"]})," ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.em,{children:"only"})})," to your ",(0,r.jsx)(n.code,{children:"~/.config/yazi/init.lua"}),", and apply the following patch:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-diff",children:'@@ -1,8 +1,22 @@\n+function Status:owner()\n+\tlocal h = cx.active.current.hovered\n+\tif h == nil or ya.target_family() ~= "unix" then\n+\t\treturn ui.Line {}\n+\tend\n+\n+\treturn ui.Line {\n+\t\tui.Span(ya.user_name(h.cha.uid) or tostring(h.cha.uid)):fg("magenta"),\n+\t\tui.Span(":"),\n+\t\tui.Span(ya.group_name(h.cha.gid) or tostring(h.cha.gid)):fg("magenta"),\n+\t\tui.Span(" "),\n+\t}\n+end\n+\n function Status:render(area)\n \tself.area = area\n\n \tlocal left = ui.Line { self:mode(), self:size(), self:name() }\n-\tlocal right = ui.Line { self:permissions(), self:percentage(), self:position() }\n+\tlocal right = ui.Line { self:owner(), self:permissions(), self:percentage(), self:position() }\n \treturn {\n \t\tui.Paragraph(area, { left }),\n'})}),"\n",(0,r.jsx)(n.h2,{id:"username-hostname-in-header",children:"Show username and hostname in header"}),"\n",(0,r.jsx)("img",{src:(0,l.ZP)("/img/hostname-in-header.png"),width:"600"}),"\n",(0,r.jsxs)(n.p,{children:["Copy the ",(0,r.jsxs)(n.a,{href:"https://github.com/sxyazi/yazi/blob/latest/yazi-plugin/preset/components/header.lua",children:[(0,r.jsx)(n.code,{children:"Header:render()"})," method"]})," ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.em,{children:"only"})})," to your ",(0,r.jsx)(n.code,{children:"~/.config/yazi/init.lua"}),", and apply the following patch:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-diff",children:'@@ -76,11 +76,18 @@\n \t\t:split(area)\n end\n\n+function Header:host()\n+\tif ya.target_family() ~= "unix" then\n+\t\treturn ui.Line {}\n+\tend\n+\treturn ui.Span(ya.user_name() .. "@" .. ya.host_name() .. ":"):fg("blue")\n+end\n+\n function Header:render(area)\n \tself.area = area\n\n \tlocal right = ui.Line { self:count(), self:tabs() }\n-\tlocal left = ui.Line { self:cwd(math.max(0, area.w - right:width())) }\n+\tlocal left = ui.Line { self:host(), self:cwd(math.max(0, area.w - right:width())) }\n \treturn {\n \t\tui.Paragraph(area, { left }),\n \t\tui.Paragraph(area, { right }):align(ui.Paragraph.RIGHT),\n'})}),"\n",(0,r.jsx)(n.h2,{id:"helix-with-zellij",children:"File tree picker in Helix with Zellij"}),"\n",(0,r.jsx)(n.p,{children:"Yazi can be used as a file picker to browse and open file(s) in your current Helix instance (running in a Zellij session)."}),"\n",(0,r.jsxs)(n.p,{children:["Add a keymap to your Helix config, for example ",(0,r.jsx)("kbd",{children:"Ctrl"})," + ",(0,r.jsx)("kbd",{children:"y"}),":"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-toml",children:'# ~/.config/helix/config.toml\n[keys.normal]\nC-y = ":sh zellij run -f -x 10% -y 10% --width 80% --height 80% -- bash ~/.config/helix/yazi-picker.sh"\n'})}),"\n",(0,r.jsxs)(n.p,{children:["Then save the following script as ",(0,r.jsx)(n.code,{children:"~/.config/helix/yazi-picker.sh"}),":"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-sh",children:'#!/usr/bin/env bash\n\npaths=$(yazi --chooser-file=/dev/stdout | while read -r; do printf "%q " "$REPLY"; done)\n\nif [[ -n "$paths" ]]; then\n\tzellij action toggle-floating-panes\n\tzellij action write 27 # send <Escape> key\n\tzellij action write-chars ":open $paths"\n\tzellij action write 13 # send <Enter> key\n\tzellij action toggle-floating-panes\nfi\n\nzellij action close-pane\n'})}),"\n",(0,r.jsx)(n.p,{children:"Note: this uses a floating window, but you should also be able to open a new pane to the side, or in place. Review the Zellij documentation for more info."}),"\n",(0,r.jsxs)(n.p,{children:["Original post: ",(0,r.jsx)(n.a,{href:"https://github.com/zellij-org/zellij/issues/3018#issuecomment-2086166900",children:"https://github.com/zellij-org/zellij/issues/3018#issuecomment-2086166900"}),", credits to ",(0,r.jsx)(n.a,{href:"https://github.com/rockboynton",children:"@rockboynton"})," and ",(0,r.jsx)(n.a,{href:"https://github.com/postsolar",children:"@postsolar"})," for sharing and polishing it!"]}),"\n",(0,r.jsxs)(t,{children:[(0,r.jsx)("summary",{children:"Demonstrate Helix+Zellij+Yazi workflow"}),(0,r.jsx)("video",{src:"https://github.com/helix-editor/helix/assets/17523360/a4dde9e0-96bf-42a4-b946-40cbee984e69",width:"100%",controls:!0,muted:!0})]}),"\n",(0,r.jsx)(n.h2,{id:"make-yazi-even-faster",children:"Make Yazi even faster than fast"}),"\n",(0,r.jsx)(n.p,{children:"While Yazi is already fast, there is still plenty of room for optimization for specific users or under certain conditions:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["For users who don't need image previews at all, disabling the default ",(0,r.jsx)(n.code,{children:"image"})," previewer and preloader will make Yazi faster by reducing the I/O read file and CPU decode image consumption."]}),"\n",(0,r.jsx)(n.li,{children:"For users managing network files, it's recommended to disable all previewers and preloaders since previewing and preloading these files means they need to be downloaded locally."}),"\n",(0,r.jsxs)(n.li,{children:["For low-spec devices like Raspberry Pi, ",(0,r.jsx)(n.a,{href:"/docs/configuration/yazi#tasks",children:"reducing the concurrency"})," will make Yazi faster since the default configuration is optimized for PCs, and high concurrency on these low-spec devices may have the opposite effect."]}),"\n",(0,r.jsxs)(n.li,{children:["For users who don't need accurate mime-type, ",(0,r.jsx)(n.a,{href:"https://github.com/DreamMaoMao/mime.yazi",children:(0,r.jsx)(n.code,{children:"mime.yazi"})})," may be useful, as it simply returns mime-type based on file extensions, while Yazi defaults to obtaining mime-type based on file content for accuracy. Mime-type is used for matching opening, previewing, rendering rules. Encourage users to choose the appropriate ",(0,r.jsx)(n.code,{children:"mime"})," plugin based on their needs, which is why we decided to open it up to plugin developers."]}),"\n"]})]})}function m(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},2986:(e,n,t)=>{t.d(n,{Z:()=>s});t(959);var r=t(5341);const i={tabItem:"tabItem_HJm5"};var a=t(1527);function s(e){let{children:n,hidden:t,className:s}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.Z)(i.tabItem,s),hidden:t,children:n})}},8449:(e,n,t)=>{t.d(n,{Z:()=>w});var r=t(959),i=t(5341),a=t(9812),s=t(8903),l=t(4848),o=t(3536),c=t(4902),d=t(5661);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:i}}=e;return{value:n,label:t,attributes:r,default:i}}))}(t);return function(e){const n=(0,c.l)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function m(e){let{queryString:n=!1,groupId:t}=e;const i=(0,s.k6)(),a=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,o._X)(a),(0,r.useCallback)((e=>{if(!a)return;const n=new URLSearchParams(i.location.search);n.set(a,e),i.replace({...i.location,search:n.toString()})}),[a,i])]}function g(e){const{defaultValue:n,queryString:t=!1,groupId:i}=e,a=h(e),[s,o]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:a}))),[c,u]=m({queryString:t,groupId:i}),[g,f]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,a]=(0,d.Nk)(t);return[i,(0,r.useCallback)((e=>{t&&a.set(e)}),[t,a])]}({groupId:i}),x=(()=>{const e=c??g;return p({value:e,tabValues:a})?e:null})();(0,l.Z)((()=>{x&&o(x)}),[x]);return{selectedValue:s,selectValue:(0,r.useCallback)((e=>{if(!p({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);o(e),u(e),f(e)}),[u,f,a]),tabValues:a}}var f=t(2666);const x={tabList:"tabList_lLR2",tabItem:"tabItem_an5g"};var y=t(1527);function j(e){let{className:n,block:t,selectedValue:r,selectValue:s,tabValues:l}=e;const o=[],{blockElementScrollPositionUntilNextRender:c}=(0,a.o5)(),d=e=>{const n=e.currentTarget,t=o.indexOf(n),i=l[t].value;i!==r&&(c(n),s(i))},u=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const t=o.indexOf(e.currentTarget)+1;n=o[t]??o[0];break}case"ArrowLeft":{const t=o.indexOf(e.currentTarget)-1;n=o[t]??o[o.length-1];break}}n?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.Z)("tabs",{"tabs--block":t},n),children:l.map((e=>{let{value:n,label:t,attributes:a}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>o.push(e),onKeyDown:u,onClick:d,...a,className:(0,i.Z)("tabs__item",x.tabItem,a?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function b(e){let{lazy:n,children:t,selectedValue:i}=e;const a=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=a.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:a.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function v(e){const n=g(e);return(0,y.jsxs)("div",{className:(0,i.Z)("tabs-container",x.tabList),children:[(0,y.jsx)(j,{...n,...e}),(0,y.jsx)(b,{...n,...e})]})}function w(e){const n=(0,f.Z)();return(0,y.jsx)(v,{...e,children:u(e.children)},String(n))}},6225:(e,n,t)=>{t.d(n,{Z:()=>l,a:()=>s});var r=t(959);const i={},a=r.createContext(i);function s(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),r.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ccc49370.15c758ef.js b/assets/js/ccc49370.15c758ef.js new file mode 100644 index 000000000..88c1785cf --- /dev/null +++ b/assets/js/ccc49370.15c758ef.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[103],{4475:(e,n,t)=>{t.r(n),t.d(n,{default:()=>j});t(959);var i=t(5341),s=t(5938),a=t(961),o=t(6283),l=t(2645),r=t(3467),c=t(259),d=t(8582),u=t(1527);function m(e){const{nextItem:n,prevItem:t}=e;return(0,u.jsxs)("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,c.I)({id:"theme.blog.post.paginator.navAriaLabel",message:"Blog post page navigation",description:"The ARIA label for the blog posts pagination"}),children:[t&&(0,u.jsx)(d.Z,{...t,subLabel:(0,u.jsx)(c.Z,{id:"theme.blog.post.paginator.newerPost",description:"The blog post button label to navigate to the newer/previous post",children:"Newer Post"})}),n&&(0,u.jsx)(d.Z,{...n,subLabel:(0,u.jsx)(c.Z,{id:"theme.blog.post.paginator.olderPost",description:"The blog post button label to navigate to the older/next post",children:"Older Post"}),isNext:!0})]})}function g(){const{assets:e,metadata:n}=(0,o.C)(),{title:t,description:i,date:a,tags:l,authors:r,frontMatter:c}=n,{keywords:d}=c,m=e.image??c.image;return(0,u.jsxs)(s.d,{title:t,description:i,keywords:d,image:m,children:[(0,u.jsx)("meta",{property:"og:type",content:"article"}),(0,u.jsx)("meta",{property:"article:published_time",content:a}),r.some((e=>e.url))&&(0,u.jsx)("meta",{property:"article:author",content:r.map((e=>e.url)).filter(Boolean).join(",")}),l.length>0&&(0,u.jsx)("meta",{property:"article:tag",content:l.map((e=>e.label)).join(",")})]})}var h=t(2058),f=t(5838);function v(){const e=(0,f.i)();return(0,u.jsx)(h.Z,{children:(0,u.jsx)("script",{type:"application/ld+json",children:JSON.stringify(e)})})}var p=t(2104),x=t(3494);function b(e){let{sidebar:n,children:t}=e;const{metadata:i,toc:s}=(0,o.C)(),{nextItem:a,prevItem:c,frontMatter:d,unlisted:g}=i,{hide_table_of_contents:h,toc_min_heading_level:f,toc_max_heading_level:v}=d;return(0,u.jsxs)(l.Z,{sidebar:n,toc:!h&&s.length>0?(0,u.jsx)(p.Z,{toc:s,minHeadingLevel:f,maxHeadingLevel:v}):void 0,children:[g&&(0,u.jsx)(x.Z,{}),(0,u.jsx)(r.Z,{children:t}),(a||c)&&(0,u.jsx)(m,{nextItem:a,prevItem:c})]})}function j(e){const n=e.content;return(0,u.jsx)(o.n,{content:e.content,isBlogPostPage:!0,children:(0,u.jsxs)(s.FG,{className:(0,i.Z)(a.k.wrapper.blogPages,a.k.page.blogPostPage),children:[(0,u.jsx)(g,{}),(0,u.jsx)(v,{}),(0,u.jsx)(b,{sidebar:e.sidebar,children:(0,u.jsx)(n,{})})]})})}},2104:(e,n,t)=>{t.d(n,{Z:()=>c});t(959);var i=t(5341),s=t(6305);const a={tableOfContents:"tableOfContents_r_Qc",docItemContainer:"docItemContainer_LSLx"};var o=t(1527);const l="table-of-contents__link toc-highlight",r="table-of-contents__link--active";function c(e){let{className:n,...t}=e;return(0,o.jsx)("div",{className:(0,i.Z)(a.tableOfContents,"thin-scrollbar",n),children:(0,o.jsx)(s.Z,{...t,linkClassName:l,linkActiveClassName:r})})}},6305:(e,n,t)=>{t.d(n,{Z:()=>f});var i=t(959),s=t(475);function a(e){const n=e.map((e=>({...e,parentIndex:-1,children:[]}))),t=Array(7).fill(-1);n.forEach(((e,n)=>{const i=t.slice(2,e.level);e.parentIndex=Math.max(...i),t[e.level]=n}));const i=[];return n.forEach((e=>{const{parentIndex:t,...s}=e;t>=0?n[t].children.push(s):i.push(s)})),i}function o(e){let{toc:n,minHeadingLevel:t,maxHeadingLevel:i}=e;return n.flatMap((e=>{const n=o({toc:e.children,minHeadingLevel:t,maxHeadingLevel:i});return function(e){return e.level>=t&&e.level<=i}(e)?[{...e,children:n}]:n}))}function l(e){const n=e.getBoundingClientRect();return n.top===n.bottom?l(e.parentNode):n}function r(e,n){let{anchorTopOffset:t}=n;const i=e.find((e=>l(e).top>=t));if(i){return function(e){return e.top>0&&e.bottom<window.innerHeight/2}(l(i))?i:e[e.indexOf(i)-1]??null}return e[e.length-1]??null}function c(){const e=(0,i.useRef)(0),{navbar:{hideOnScroll:n}}=(0,s.L)();return(0,i.useEffect)((()=>{e.current=n?0:document.querySelector(".navbar").clientHeight}),[n]),e}function d(e){const n=(0,i.useRef)(void 0),t=c();(0,i.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:i,linkActiveClassName:s,minHeadingLevel:a,maxHeadingLevel:o}=e;function l(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(i),l=function(e){let{minHeadingLevel:n,maxHeadingLevel:t}=e;const i=[];for(let s=n;s<=t;s+=1)i.push(`h${s}.anchor`);return Array.from(document.querySelectorAll(i.join()))}({minHeadingLevel:a,maxHeadingLevel:o}),c=r(l,{anchorTopOffset:t.current}),d=e.find((e=>c&&c.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,t){t?(n.current&&n.current!==e&&n.current.classList.remove(s),e.classList.add(s),n.current=e):e.classList.remove(s)}(e,e===d)}))}return document.addEventListener("scroll",l),document.addEventListener("resize",l),l(),()=>{document.removeEventListener("scroll",l),document.removeEventListener("resize",l)}}),[e,t])}var u=t(6788),m=t(1527);function g(e){let{toc:n,className:t,linkClassName:i,isChild:s}=e;return n.length?(0,m.jsx)("ul",{className:s?void 0:t,children:n.map((e=>(0,m.jsxs)("li",{children:[(0,m.jsx)(u.Z,{to:`#${e.id}`,className:i??void 0,dangerouslySetInnerHTML:{__html:e.value}}),(0,m.jsx)(g,{isChild:!0,toc:e.children,className:t,linkClassName:i})]},e.id)))}):null}const h=i.memo(g);function f(e){let{toc:n,className:t="table-of-contents table-of-contents__left-border",linkClassName:l="table-of-contents__link",linkActiveClassName:r,minHeadingLevel:c,maxHeadingLevel:u,...g}=e;const f=(0,s.L)(),v=c??f.tableOfContents.minHeadingLevel,p=u??f.tableOfContents.maxHeadingLevel,x=function(e){let{toc:n,minHeadingLevel:t,maxHeadingLevel:s}=e;return(0,i.useMemo)((()=>o({toc:a(n),minHeadingLevel:t,maxHeadingLevel:s})),[n,t,s])}({toc:n,minHeadingLevel:v,maxHeadingLevel:p});return d((0,i.useMemo)((()=>{if(l&&r)return{linkClassName:l,linkActiveClassName:r,minHeadingLevel:v,maxHeadingLevel:p}}),[l,r,v,p])),(0,m.jsx)(h,{toc:x,className:t,linkClassName:l,...g})}},3494:(e,n,t)=>{t.d(n,{Z:()=>g});t(959);var i=t(5341),s=t(259),a=t(2058),o=t(1527);function l(){return(0,o.jsx)(s.Z,{id:"theme.unlistedContent.title",description:"The unlisted content banner title",children:"Unlisted page"})}function r(){return(0,o.jsx)(s.Z,{id:"theme.unlistedContent.message",description:"The unlisted content banner message",children:"This page is unlisted. Search engines will not index it, and only users having a direct link can access it."})}function c(){return(0,o.jsx)(a.Z,{children:(0,o.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}var d=t(961),u=t(8301);function m(e){let{className:n}=e;return(0,o.jsx)(u.Z,{type:"caution",title:(0,o.jsx)(l,{}),className:(0,i.Z)(n,d.k.common.unlistedBanner),children:(0,o.jsx)(r,{})})}function g(e){return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(c,{}),(0,o.jsx)(m,{...e})]})}}}]); \ No newline at end of file diff --git a/assets/js/d7fbbe43.09cb9b7c.js b/assets/js/d7fbbe43.09cb9b7c.js new file mode 100644 index 000000000..e68472eb3 --- /dev/null +++ b/assets/js/d7fbbe43.09cb9b7c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[269],{846:(e,i,t)=>{t.r(i),t.d(i,{default:()=>u});var s=t(1576),n=t(7623),r=(t(959),t(6788)),a=t(5924);const l={cards:"cards_fs6L",space:"space_jwe0"};var o=t(1527);function c(e){let{heading:i,description:t,link:s}=e;return(0,o.jsxs)("section",{className:"margin-top--lg margin-bottom--lg text--center",children:[(0,o.jsx)(n.Z,{as:"h1",children:i}),t&&(0,o.jsx)("p",{children:t}),(0,o.jsxs)(r.Z,{className:(0,a.Z)("button button--primary",l.space),to:s.to,children:[(0,o.jsx)("span",{"aria-hidden":"true",children:s.emoji}),(0,o.jsx)("span",{children:s.text})]})]})}function d(e){let{from:i}=e;return(0,o.jsx)("section",{className:"margin-top--lg margin-bottom--xl",children:(0,o.jsx)("div",{className:"container",children:(0,o.jsx)("ul",{className:(0,a.Z)("container","clean-list",l.cards),children:i.map((e=>{return i=e,(0,o.jsxs)("li",{className:"card shadow--md",children:[(0,o.jsx)("div",{className:(0,a.Z)("card__image"),children:(0,o.jsx)("video",{src:i.video,width:"100%",autoPlay:!0,controls:!0,loop:!0,muted:!0})}),(0,o.jsxs)("div",{className:"card__body",children:[(0,o.jsx)(n.Z,{as:"h4",children:i.title}),(0,o.jsx)("p",{children:i.description})]}),(0,o.jsx)("ul",{className:(0,a.Z)("card__footer")})]},i.title);var i}))})})})}const m=[{title:"Scrollable Preview",video:"/videos/scrollable-preview.mp4",description:"Preview various types of files, and scroll the content of file while previewing."},{title:"Visual Mode & Bulk Rename",video:"/videos/visual-mode_bulk-rename.mp4",description:"Bulk select files in visual mode, and rename them."},{title:"Vim-like Input & Select Component",video:"/videos/input_select.mp4",description:"Quickly edit filename in the Input, and choose how to open it in the Select."},{title:"Multi-Tab & fzf, zoxide",video:"/videos/multi-tab_zoxide.mp4",description:"Collaborate across multiple tabs, and use fzf, zoxide for quick jumps."},{title:"Multi-Select & Task Management",video:"/videos/multi-select_task-management.mp4",description:"Select multiple files individually, perform copy, cut, etc. Which are scheduled by the task system, providing real-time progress reports and task cancellation."},{title:"Incremental Find",video:"/videos/incremental-find.mp4",description:"Find files incrementally in real-time, with the current position and number of all matches displayed."},{title:"Search",video:"/videos/search.mp4",description:"Search by name using fd, by content using rg, and perform arbitrary operations on the results."}];function u(){return(0,o.jsx)(s.Z,{title:"Features",description:"List of Yazi's features.",children:(0,o.jsxs)("main",{className:"margin-vert--lg",children:[(0,o.jsx)(c,{heading:"Features",description:"List of features shipped with Yazi.",link:{emoji:"\u2728",text:"Suggest a feature!",to:"https://github.com/sxyazi/yazi/issues/new?template=feature.yml"}}),(0,o.jsx)(d,{from:m})]})})}},5924:(e,i,t)=>{function s(e){var i,t,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e))for(i=0;i<e.length;i++)e[i]&&(t=s(e[i]))&&(n&&(n+=" "),n+=t);else for(i in e)e[i]&&(n&&(n+=" "),n+=i);return n}t.d(i,{Z:()=>n});const n=function(){for(var e,i,t=0,n="";t<arguments.length;)(e=arguments[t++])&&(i=s(e))&&(n&&(n+=" "),n+=i);return n}}}]); \ No newline at end of file diff --git a/assets/js/d92a3c43.f35be344.js b/assets/js/d92a3c43.f35be344.js new file mode 100644 index 000000000..01b79ffdc --- /dev/null +++ b/assets/js/d92a3c43.f35be344.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[798],{1128:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>h,contentTitle:()=>l,default:()=>d,frontMatter:()=>t,metadata:()=>a,toc:()=>o});var s=n(1527),r=n(6225);const t={sidebar_position:9,description:"Some awesome plugins for Yazi."},l="Resources",a={id:"resources",title:"Resources",description:"Some awesome plugins for Yazi.",source:"@site/docs/resources.md",sourceDirName:".",slug:"/resources",permalink:"/docs/resources",draft:!1,unlisted:!1,editUrl:"https://github.com/yazi-rs/yazi-rs.github.io/edit/main/docs/resources.md",tags:[],version:"current",sidebarPosition:9,frontMatter:{sidebar_position:9,description:"Some awesome plugins for Yazi."},sidebar:"docsSidebar",previous:{title:"Tips",permalink:"/docs/tips"},next:{title:"Frequently Asked Questions",permalink:"/docs/faq"}},h={},o=[{value:"\ud83d\uddbc\ufe0f Previewers",id:"previewers",level:2},{value:"\ud83e\udde9 Functional plugins",id:"functional",level:2},{value:"\ud83d\ude80 Preloaders",id:"preloaders",level:2},{value:"\ud83d\udd0dFetchers",id:"fetchers",level:2},{value:"\ud83d\udcdd (Neo)vim plugins",id:"vim",level:2},{value:"\ud83d\udc1a Shell plugins",id:"shell",level:2},{value:"\ud83d\udee0\ufe0f Utilities",id:"utilities",level:2},{value:"\ud83d\udc96 Add yours",id:"add-yours",level:2}];function c(e){const i={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.h1,{id:"resources",children:"Resources"}),"\n",(0,s.jsxs)(i.admonition,{type:"warning",children:[(0,s.jsx)(i.p,{children:"The plugin system is still in the early stage, and most of the plugins below only guarantee compatibility with the latest code of Yazi!"}),(0,s.jsxs)(i.p,{children:["Please make sure that both your Yazi and plugins are on the ",(0,s.jsx)(i.code,{children:"HEAD"})," to ensure proper functionality!"]})]}),"\n",(0,s.jsx)(i.h2,{id:"previewers",children:"\ud83d\uddbc\ufe0f Previewers"}),"\n",(0,s.jsx)(i.p,{children:"Markdown:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/Reledia/glow.yazi",children:"glow.yazi"})," - Preview markdown files using ",(0,s.jsx)(i.a,{href:"https://github.com/charmbracelet/glow",children:"glow"}),"."]}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"CSV:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/Reledia/miller.yazi",children:"miller.yazi"})," - Preview CSV files (and other supported formats) using ",(0,s.jsx)(i.a,{href:"https://github.com/johnkerl/miller",children:"miller"}),"."]}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"Binary:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/Reledia/hexyl.yazi",children:"hexyl.yazi"})," - Using ",(0,s.jsx)(i.a,{href:"https://github.com/sharkdp/hexyl",children:"hexyl"})," as the fallback previewer for files."]}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"Audio:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/Sonico98/exifaudio.yazi",children:"exifaudio.yazi"})," - Preview audio metadata and cover using ",(0,s.jsx)(i.a,{href:"https://exiftool.org/",children:"exiftool"}),"."]}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"Archives:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/ndtoan96/ouch.yazi",children:"ouch.yazi"})," - An archive previewer plugin for Yazi, using ",(0,s.jsx)(i.a,{href:"https://github.com/ouch-org/ouch",children:"ouch"}),"."]}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"BitTorrent:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/kirasok/torrent-preview.yazi",children:"torrent-preview.yazi"}),' - Preview "*.torrent" files using ',(0,s.jsx)(i.a,{href:"https://github.com/transmission/transmission",children:"transmission-cli"})]}),"\n"]}),"\n",(0,s.jsx)(i.h2,{id:"functional",children:"\ud83e\udde9 Functional plugins"}),"\n",(0,s.jsx)(i.p,{children:"Jumping:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/dedukun/relative-motions.yazi",children:"relative-motions.yazi"})," - A Yazi plugin based about vim motions."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/DreamMaoMao/keyjump.yazi",children:"keyjump.yazi"})," - A Yazi plugin that jumps to a file by typing a hint character, much like hop.nvim."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/DreamMaoMao/searchjump.yazi",children:"searchjump.yazi"})," - Yazi plugin that navigates your file with search labels, consistent with flash.nvim."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/yazi-rs/plugins/tree/main/jump-to-char.yazi",children:"jump-to-char.yazi"})," - Vim-like ",(0,s.jsx)(i.code,{children:"f<char>"}),", jump to the next file whose name starts with ",(0,s.jsx)(i.code,{children:"<char>"}),"."]}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"Searching:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/DreamMaoMao/fg.yazi",children:"fg.yazi"})," - A Yazi plugin that supports file searching with an fzf preview."]}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"Bookmarks:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/dedukun/bookmarks.yazi",children:"bookmarks.yazi"})," - A Yazi plugin that adds the basic functionality of Vi-like marks."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/DreamMaoMao/bookmarks-persistence.yazi",children:"bookmarks-persistence.yazi"})," - A Yazi plugin that supports persistent bookmark management.No bookmarks are lost after you close yazi."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/h-hg/yamb.yazi",children:"yamb.yazi"})," - Yet another bookmarks plugins. It supports persistence, jumping by a key, jumping by ",(0,s.jsx)(i.a,{href:"https://github.com/junegunn/fzf",children:"fzf"}),"."]}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"File actions:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/yazi-rs/plugins/tree/main/chmod.yazi",children:"chmod.yazi"})," - Execute ",(0,s.jsx)(i.code,{children:"chmod"})," on the selected files to change their mode."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/yazi-rs/plugins/tree/main/diff.yazi",children:"diff.yazi"})," - Diff the selected file with the hovered file, create a living patch, and copy it to the clipboard."]}),"\n"]}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.code,{children:"filter"})," enhancements:"]}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/yazi-rs/plugins/tree/main/smart-filter.yazi",children:"smart-filter.yazi"})," - Makes filters smarter: continuous filtering, automatically enter unique directory, open file on submitting."]}),"\n"]}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.code,{children:"enter"})," enhancements:"]}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/Rolv-Apneseth/bypass.yazi",children:"bypass.yazi"})," - Yazi plugin for skipping directories with only a single sub-directory."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/ourongxing/fast-enter.yazi",children:"fast-enter.yazi"})," - Auto-decompress archives and enter them, or enter the deepest directory until it's not the only subdirectory."]}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"UI enhancements:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/yazi-rs/plugins/tree/main/full-border.yazi",children:"full-border.yazi"})," - Add a full border to Yazi to make it look fancier."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/yazi-rs/plugins/tree/main/max-preview.yazi",children:"max-preview.yazi"})," - Maximize or restore the preview pane."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/yazi-rs/plugins/tree/main/hide-preview.yazi",children:"hide-preview.yazi"})," - Switch the preview pane between hidden and shown."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/Rolv-Apneseth/starship.yazi",children:"starship.yazi"})," - Starship prompt plugin for Yazi."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/saumyajyoti/omp.yazi",children:"omp.yazi"})," - oh-my-posh prompt plugin for Yazi."]}),"\n"]}),"\n",(0,s.jsx)(i.h2,{id:"preloaders",children:"\ud83d\ude80 Preloaders"}),"\n",(0,s.jsx)(i.p,{children:"Images:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/Sonico98/allmytoes.yazi",children:"allmytoes.yazi"})," - Preview freedesktop-compatible thumbnails using ",(0,s.jsx)(i.a,{href:"https://gitlab.com/allmytoes/allmytoes",children:"allmytoes"}),"."]}),"\n"]}),"\n",(0,s.jsx)(i.h2,{id:"fetchers",children:"\ud83d\udd0dFetchers"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/DreamMaoMao/mime.yazi",children:"mime.yazi"})," - Replace the builtin ",(0,s.jsx)(i.code,{children:"mime"})," plugin to speed up the identification of large files by using file extensions instead of file content to obtain the mime-types."]}),"\n"]}),"\n",(0,s.jsx)(i.h2,{id:"vim",children:"\ud83d\udcdd (Neo)vim plugins"}),"\n",(0,s.jsx)(i.p,{children:"Neovim:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/Rolv-Apneseth/tfm.nvim",children:"tfm.nvim"})," - Neovim plugin for terminal file manager integration."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/DreamMaoMao/yazi.nvim",children:"DreamMaoMao/yazi.nvim"})," - A Neovim Plugin for yazi terminal file browser."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/mikavilpas/yazi.nvim",children:"mikavilpas/yazi.nvim"})," - A fork of DreamMaoMao/yazi.nvim with a bunch of additional features."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/Eric-Song-Nop/fm-nvim",children:"fm-nvim"})," - Neovim plugin that lets you use your favorite terminal file managers."]}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"Vim:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/chriszarate/yazi.vim",children:"yazi.vim"})," - Vim plugin for Yazi."]}),"\n"]}),"\n",(0,s.jsx)(i.h2,{id:"shell",children:"\ud83d\udc1a Shell plugins"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/Sonico98/yazi-prompt.sh",children:"yazi-prompt.sh"})," - Display an indicator in your prompt when running inside a yazi subshell."]}),"\n"]}),"\n",(0,s.jsx)(i.h2,{id:"utilities",children:"\ud83d\udee0\ufe0f Utilities"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/lpnh/icons-brew.yazi",children:"icons-brew.yazi"})," - Make a hot ",(0,s.jsx)(i.code,{children:"theme.toml"})," for your Yazi icons with your favorite color palette."]}),"\n"]}),"\n",(0,s.jsx)(i.h2,{id:"add-yours",children:"\ud83d\udc96 Add yours"}),"\n",(0,s.jsx)(i.p,{children:"We are so happy to add your plugin to this page!"}),"\n",(0,s.jsx)(i.p,{children:'If your plugin meets the following requirements, please click "Edit this page" below to add it:'}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Functional"})," - we will install and test it, since we want all links included on this page to be valid. If it's available only on a specific platform, a note should be added in the README."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Follow conventions"})," - it should be a directory/repository ending with ",(0,s.jsx)(i.code,{children:".yazi"}),", and include the files listed in the ",(0,s.jsx)(i.a,{href:"/docs/plugins/overview",children:"plugin documentation"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(i.p,{children:["If it's a Neovim or Shell plugin, appending ",(0,s.jsx)(i.code,{children:".nvim"})," or ",(0,s.jsx)(i.code,{children:".sh"})," to the name to make it distinguishable is a best practice, but it's not required."]})]})}function d(e={}){const{wrapper:i}={...(0,r.a)(),...e.components};return i?(0,s.jsx)(i,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},6225:(e,i,n)=>{n.d(i,{Z:()=>a,a:()=>l});var s=n(959);const r={},t=s.createContext(r);function l(e){const i=s.useContext(t);return s.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function a(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:l(e.components),s.createElement(t.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ee3da606.10d1ef68.js b/assets/js/ee3da606.10d1ef68.js new file mode 100644 index 000000000..27806790e --- /dev/null +++ b/assets/js/ee3da606.10d1ef68.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[464],{5274:(e,i,t)=>{t.r(i),t.d(i,{assets:()=>d,contentTitle:()=>l,default:()=>c,frontMatter:()=>r,metadata:()=>o,toc:()=>a});var s=t(1527),n=t(6225);const r={sidebar_position:4,description:"How to preview images in Yazi."},l="Image Preview",o={id:"image-preview",title:"Image Preview",description:"How to preview images in Yazi.",source:"@site/docs/image-preview.md",sourceDirName:".",slug:"/image-preview",permalink:"/docs/image-preview",draft:!1,unlisted:!1,editUrl:"https://github.com/yazi-rs/yazi-rs.github.io/edit/main/docs/image-preview.md",tags:[],version:"current",sidebarPosition:4,frontMatter:{sidebar_position:4,description:"How to preview images in Yazi."},sidebar:"docsSidebar",previous:{title:"theme.toml",permalink:"/docs/configuration/theme"},next:{title:"Plugins (BETA)",permalink:"/docs/plugins/overview"}},d={},a=[{value:"tmux users",id:"tmux",level:2},{value:"Zellij users",id:"zellij",level:2},{value:"Windows users",id:"windows",level:2},{value:"Windows with WSL users",id:"wsl",level:2},{value:"Neovim users",id:"neovim",level:2},{value:"Why can't I preview images via \xdcberzug++?",id:"debug-ueberzug",level:2},{value:"Why won't my images adapt to terminal size?",id:"size",level:2}];function h(e){const i={a:"a",code:"code",em:"em",h1:"h1",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,n.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.h1,{id:"image-preview",children:"Image Preview"}),"\n",(0,s.jsx)(i.p,{children:"Yazi has done a lot of work to adapt to different terminals and multiplexers, trying their best to make it out-of-the-box for users."}),"\n",(0,s.jsxs)(i.p,{children:["This is by no means a simple task, to reduce maintenance costs, we only guarantee it is available in the ",(0,s.jsx)(i.strong,{children:(0,s.jsx)(i.em,{children:"latest version"})})," of terminals and multiplexers (tmux, Zellij):"]}),"\n",(0,s.jsxs)(i.table,{children:[(0,s.jsx)(i.thead,{children:(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.th,{children:"Platform"}),(0,s.jsx)(i.th,{children:"Protocol"}),(0,s.jsx)(i.th,{children:"Support"})]})}),(0,s.jsxs)(i.tbody,{children:[(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"kitty"}),(0,s.jsx)(i.td,{children:(0,s.jsx)(i.a,{href:"https://sw.kovidgoyal.net/kitty/graphics-protocol/#unicode-placeholders",children:"Kitty unicode placeholders"})}),(0,s.jsx)(i.td,{children:"\u2705 Built-in"})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"Konsole"}),(0,s.jsx)(i.td,{children:(0,s.jsx)(i.a,{href:"https://github.com/sxyazi/yazi/blob/main/yazi-adaptor/src/kitty_old.rs",children:"Kitty old protocol"})}),(0,s.jsx)(i.td,{children:"\u2705 Built-in"})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"iTerm2"}),(0,s.jsx)(i.td,{children:(0,s.jsx)(i.a,{href:"https://iterm2.com/documentation-images.html",children:"Inline images protocol"})}),(0,s.jsx)(i.td,{children:"\u2705 Built-in"})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"WezTerm"}),(0,s.jsx)(i.td,{children:(0,s.jsx)(i.a,{href:"https://iterm2.com/documentation-images.html",children:"Inline images protocol"})}),(0,s.jsx)(i.td,{children:"\u2705 Built-in"})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"Mintty (Git Bash)"}),(0,s.jsx)(i.td,{children:(0,s.jsx)(i.a,{href:"https://iterm2.com/documentation-images.html",children:"Inline images protocol"})}),(0,s.jsx)(i.td,{children:"\u2705 Built-in"})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"foot"}),(0,s.jsx)(i.td,{children:(0,s.jsx)(i.a,{href:"https://www.vt100.net/docs/vt3xx-gp/chapter14.html",children:"Sixel graphics format"})}),(0,s.jsx)(i.td,{children:"\u2705 Built-in"})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"Ghostty"}),(0,s.jsx)(i.td,{children:(0,s.jsx)(i.a,{href:"https://github.com/sxyazi/yazi/blob/main/yazi-adaptor/src/kitty_old.rs",children:"Kitty old protocol"})}),(0,s.jsx)(i.td,{children:"\u2705 Built-in"})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"Black Box"}),(0,s.jsx)(i.td,{children:(0,s.jsx)(i.a,{href:"https://www.vt100.net/docs/vt3xx-gp/chapter14.html",children:"Sixel graphics format"})}),(0,s.jsx)(i.td,{children:"\u2705 Built-in"})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"VSCode"}),(0,s.jsx)(i.td,{children:(0,s.jsx)(i.a,{href:"https://iterm2.com/documentation-images.html",children:"Inline images protocol"})}),(0,s.jsx)(i.td,{children:"\u2705 Built-in"})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"Tabby"}),(0,s.jsx)(i.td,{children:(0,s.jsx)(i.a,{href:"https://iterm2.com/documentation-images.html",children:"Inline images protocol"})}),(0,s.jsx)(i.td,{children:"\u2705 Built-in"})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"Hyper"}),(0,s.jsx)(i.td,{children:(0,s.jsx)(i.a,{href:"https://iterm2.com/documentation-images.html",children:"Inline images protocol"})}),(0,s.jsx)(i.td,{children:"\u2705 Built-in"})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"X11 / Wayland"}),(0,s.jsx)(i.td,{children:"Window system protocol"}),(0,s.jsx)(i.td,{children:"\u2611\ufe0f \xdcberzug++ required"})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"Fallback"}),(0,s.jsx)(i.td,{children:(0,s.jsx)(i.a,{href:"https://hpjansson.org/chafa/",children:"Chafa"})}),(0,s.jsx)(i.td,{children:"\u2611\ufe0f \xdcberzug++ required"})]})]})]}),"\n",(0,s.jsxs)(i.p,{children:["Yazi automatically selects the appropriate preview method for you, based on the priority from top to bottom.\nThat's relying on the ",(0,s.jsx)(i.code,{children:"$TERM"}),", ",(0,s.jsx)(i.code,{children:"$TERM_PROGRAM"}),", and ",(0,s.jsx)(i.code,{children:"$XDG_SESSION_TYPE"})," variables, make sure you don't overwrite them by mistake!"]}),"\n",(0,s.jsxs)(i.p,{children:['For instance, if your terminal is Alacritty, which doesn\'t support displaying images itself, but you are running on an X11/Wayland environment,\nit will automatically use the "Window system protocol" to display images - this requires you to have ',(0,s.jsx)(i.a,{href:"https://github.com/jstkdng/ueberzugpp",children:"\xdcberzug++"})," installed."]}),"\n",(0,s.jsx)(i.h2,{id:"tmux",children:"tmux users"}),"\n",(0,s.jsxs)(i.p,{children:["To enable Yazi's image preview to work correctly in tmux, add the following 3 options to your ",(0,s.jsx)(i.code,{children:"tmux.conf"}),":"]}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-sh",children:"set -g allow-passthrough on\n\nset -ga update-environment TERM\nset -ga update-environment TERM_PROGRAM\n"})}),"\n",(0,s.jsx)(i.p,{children:"Then restart tmux (important):"}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-sh",children:"tmux kill-server && tmux || tmux\n"})}),"\n",(0,s.jsx)(i.p,{children:"Now you should be able to enjoy with the image preview."}),"\n",(0,s.jsx)(i.h2,{id:"zellij",children:"Zellij users"}),"\n",(0,s.jsx)(i.p,{children:"Zellij currently only supports the Sixel graphics format, so you will need a terminal that also supports Sixel."}),"\n",(0,s.jsxs)(i.p,{children:["Note that, the image rendering in Zellij has some performance issues, causing noticeable lagginess when quickly switching between images,\nand sometimes even ",(0,s.jsx)(i.a,{href:"https://github.com/zellij-org/zellij/issues/2576#issuecomment-1707107473",children:"image tearing"}),"."]}),"\n",(0,s.jsxs)(i.p,{children:["These issues won't be improved until Zellij enhances it's Sixel implementation or ",(0,s.jsx)(i.a,{href:"https://github.com/zellij-org/zellij/issues/775",children:"provides a passthrough mode"}),", if the image is a stronger need to you, consider running Yazi outside of Zellij or using \xdcberzug++."]}),"\n",(0,s.jsx)(i.h2,{id:"windows",children:"Windows users"}),"\n",(0,s.jsx)(i.p,{children:"Currently, only the following two terminals support displaying images on Windows:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:"WezTerm"}),"\n",(0,s.jsx)(i.li,{children:"Mintty (Git Bash, which comes with Git for Windows)"}),"\n"]}),"\n",(0,s.jsx)(i.h2,{id:"wsl",children:"Windows with WSL users"}),"\n",(0,s.jsx)(i.p,{children:"Limited by ConPTY, the Windows edition has had to implement many workarounds, which are not perfect."}),"\n",(0,s.jsxs)(i.p,{children:["However, if you run Yazi in WSL, you can experience perfect image previews using ",(0,s.jsx)(i.code,{children:"wezterm ssh"}),".",(0,s.jsx)("br",{}),"\n",(0,s.jsx)(i.a,{href:"https://wezfurlong.org/wezterm/",children:"WezTerm"})," is an excellent terminal that can bypass the limitations of ConPTY through its SSH feature, and it's currently the only terminal that allows this approach."]}),"\n",(0,s.jsxs)(i.p,{children:["You need to install ",(0,s.jsx)(i.code,{children:"sshd"})," in WSL and start it:"]}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-sh",children:"sudo apt install openssh-server\nsudo service ssh restart\n"})}),"\n",(0,s.jsx)(i.p,{children:"Then, on the host machine, connect to WSL over SSH:"}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-sh",children:"wezterm ssh 127.0.0.1\n"})}),"\n",(0,s.jsx)(i.p,{children:"That's it! you can now get Yazi's image preview working properly."}),"\n",(0,s.jsx)(i.h2,{id:"neovim",children:"Neovim users"}),"\n",(0,s.jsxs)(i.p,{children:["The builtin terminal emulator (",(0,s.jsx)(i.code,{children:":term"}),") in Neovim ",(0,s.jsx)(i.a,{href:"https://github.com/neovim/neovim/issues/4349",children:"doesn't support any graphic protocols"}),", so Yazi will try to fallback to X11/Wayland/Chafa in sequence."]}),"\n",(0,s.jsxs)(i.p,{children:["Note that \xdcberzug++ might display images in the wrong position; in that case, please adjust it manually using ",(0,s.jsx)(i.a,{href:"/docs/configuration/yazi/#preview.ueberzug_scale",children:(0,s.jsx)(i.code,{children:"ueberzug_offset"})}),"."]}),"\n",(0,s.jsx)(i.h2,{id:"debug-ueberzug",children:"Why can't I preview images via \xdcberzug++?"}),"\n",(0,s.jsxs)(i.p,{children:["This may be a problem with \xdcberzug++ itself. Please build Yazi in debug mode ",(0,s.jsx)(i.a,{href:"https://yazi-rs.github.io/docs/installation#build-from-source",children:"as per this"})," but ",(0,s.jsx)(i.code,{children:"cargo build"})," without ",(0,s.jsx)(i.code,{children:"--release"})," flag - you can run ",(0,s.jsx)(i.code,{children:"yazi --debug"})," to verify it, and you will see the output includes ",(0,s.jsx)(i.code,{children:"Debug : true"}),"."]}),"\n",(0,s.jsxs)(i.p,{children:["And hover on some images, then find the last \xdcberzug++ command in your ",(0,s.jsx)(i.code,{children:"~/.local/state/yazi/yazi.log"})," sorted by time. It is usually at the very end of the file and looks like:"]}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{children:'ueberzugpp command: {"action":"add","identifier":"yazi","x":96,"y":1,"max_width":400,"max_height":150,"path":"/root/test.jpg"}\n'})}),"\n",(0,s.jsxs)(i.p,{children:["Finally, run ",(0,s.jsx)(i.code,{children:"ueberzugpp layer"})," directly in the terminal without and outside Yazi, and paste the command:"]}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-sh",children:'{"action":"add","identifier":"yazi","x":96,"y":1,"max_width":400,"max_height":150,"path":"/root/test.jpg"}\n'})}),"\n",(0,s.jsxs)(i.p,{children:["into it, press ",(0,s.jsx)(i.code,{children:"Enter"}),", and to see if any image is shown, without exiting the \xdcberzug++."]}),"\n",(0,s.jsx)(i.p,{children:"If the image shows properly when using \xdcberzug++ independently, but not when used with Yazi, please create a bug report with:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:["The contents of ",(0,s.jsx)(i.code,{children:"~/.local/state/yazi/yazi.log"})]}),"\n",(0,s.jsxs)(i.li,{children:["The contents of ",(0,s.jsx)(i.code,{children:"/tmp/ueberzugpp-$USER.log"})]}),"\n",(0,s.jsx)(i.li,{children:"A GIF demonstration of the above steps"}),"\n"]}),"\n",(0,s.jsx)(i.h2,{id:"size",children:"Why won't my images adapt to terminal size?"}),"\n",(0,s.jsx)(i.p,{children:"The size of the image depends on two factors:"}),"\n",(0,s.jsxs)(i.ol,{children:["\n",(0,s.jsxs)(i.li,{children:["The ",(0,s.jsx)(i.a,{href:"/docs/configuration/yazi#preview.max_width",children:"max_width"})," and ",(0,s.jsx)(i.a,{href:"/docs/configuration/yazi#preview.max_height",children:"max_height"})," config options, which need to be adjusted by the user as needed."]}),"\n",(0,s.jsx)(i.li,{children:"The pixel size of the terminal."}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"Yazi will use the smaller of these two factors as the image preview size."}),"\n",(0,s.jsxs)(i.p,{children:["However, some terminals (such as VSCode, Tabby, and all Windows terminals) don't implement the ",(0,s.jsx)(i.code,{children:"ioctl"})," system call, before ",(0,s.jsxs)(i.a,{href:"https://github.com/crossterm-rs/crossterm/pull/810",children:["Add ",(0,s.jsx)(i.code,{children:"CSI 14 t"})," sequence support"]})," is merged, it's not possible to obtain the actual pixel width and height of the terminal."]}),"\n",(0,s.jsxs)(i.p,{children:["Hence, only ",(0,s.jsx)(i.code,{children:"max_width"})," and ",(0,s.jsx)(i.code,{children:"max_height"})," will be used in this case."]})]})}function c(e={}){const{wrapper:i}={...(0,n.a)(),...e.components};return i?(0,s.jsx)(i,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},6225:(e,i,t)=>{t.d(i,{Z:()=>o,a:()=>l});var s=t(959);const n={},r=s.createContext(n);function l(e){const i=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function o(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:l(e.components),s.createElement(r.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/f117dc86.36123578.js b/assets/js/f117dc86.36123578.js new file mode 100644 index 000000000..3b6bcc383 --- /dev/null +++ b/assets/js/f117dc86.36123578.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[722],{4515:(e,i,s)=>{s.r(i),s.d(i,{assets:()=>l,contentTitle:()=>r,default:()=>d,frontMatter:()=>a,metadata:()=>o,toc:()=>h});var n=s(1527),t=s(6225);const a={slug:"why-is-yazi-fast",title:"Why is Yazi fast?",authors:["sxyazi"]},r=void 0,o={permalink:"/blog/why-is-yazi-fast",editUrl:"https://github.com/yazi-rs/yazi-rs.github.io/edit/main/blog/2023-10-29-why-is-yazi-fast.md",source:"@site/blog/2023-10-29-why-is-yazi-fast.md",title:"Why is Yazi fast?",description:"This article assumes that you have already used Yazi and are familiar with most of its features.",date:"2023-10-29T00:00:00.000Z",tags:[],readingTime:6.545,hasTruncateMarker:!1,authors:[{name:"\u4e09\u54b2\u96c5 \xb7 Misaki Masa",title:"Creator of Yazi",url:"https://github.com/sxyazi",imageURL:"https://github.com/sxyazi.png",key:"sxyazi"}],frontMatter:{slug:"why-is-yazi-fast",title:"Why is Yazi fast?",authors:["sxyazi"]},unlisted:!1},l={authorsImageUrls:[void 0]},h=[{value:"Tokio",id:"tokio",level:2},{value:"Pre-Loading",id:"pre-loading",level:2},{value:"Discardable Tasks",id:"discardable-tasks",level:2},{value:"Code Highlighting",id:"code-highlighting",level:2},{value:"Image Preview",id:"image-preview",level:2},{value:"Async Task Scheduling",id:"async-task-scheduling",level:2},{value:"Other optimizations",id:"other-optimizations",level:2},{value:"TODO",id:"todo",level:2}];function c(e){const i={a:"a",code:"code",em:"em",h2:"h2",li:"li",p:"p",ul:"ul",...(0,t.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(i.p,{children:"This article assumes that you have already used Yazi and are familiar with most of its features."}),"\n",(0,n.jsx)(i.p,{children:"Yazi has undergone significant optimizations to enhance user experience. It is designed entirely as an async program, handling all time-consuming tasks (I/O and CPU) as async tasks in a non-blocking, event-driven manner."}),"\n",(0,n.jsx)(i.h2,{id:"tokio",children:"Tokio"}),"\n",(0,n.jsx)(i.p,{children:'Internally, Yazi uses Tokio as its async runtime: hold on! Tokio\'s async may not be "truly async" as you might perceive it!'}),"\n",(0,n.jsx)(i.p,{children:"Uh, okay. From an application-layer perspective, it indeed is async; however, from a system-level view, there are possibly better solutions."}),"\n",(0,n.jsxs)(i.p,{children:["But! This is not the current performance bottleneck for Yazi. Considering Yazi is a TUI app, unlike CLI programs like ",(0,n.jsx)(i.code,{children:"ls"})," and ",(0,n.jsx)(i.code,{children:"eza"})," that need to output all files immediately, Yazi has more optimization opportunities at the application-layer:"]}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:["For large directories (e.g., 100,000 files), Yazi uses ",(0,n.jsx)(i.a,{href:"https://github.com/sxyazi/yazi/pull/117",children:"chunked loading"}),", which is unmatched by ",(0,n.jsx)(i.code,{children:"ls"})," and ",(0,n.jsx)(i.code,{children:"eza"})," since they must load everything at once."]}),"\n",(0,n.jsxs)(i.li,{children:["Yazi also preloads directory file lists in the background, an optimization that ",(0,n.jsx)(i.code,{children:"ls"})," and ",(0,n.jsx)(i.code,{children:"eza"})," do not possess."]}),"\n"]}),"\n",(0,n.jsx)(i.p,{children:"I must express my gratitude to Tokio for providing an excellent and convenient way to realize these application-layer optimizations."}),"\n",(0,n.jsxs)(i.p,{children:["I believe that the benefits brought by these application-level optimizations are more noticeable compared to switching to solutions like ",(0,n.jsx)(i.code,{children:"io_uring"}),". But I'm open to this and welcome any constructive PR."]}),"\n",(0,n.jsxs)(i.p,{children:["Here is a relevant discussion on Reddit: ",(0,n.jsx)(i.a,{href:"https://www.reddit.com/r/rust/comments/16fxr58/comment/k066gmh/",children:"https://www.reddit.com/r/rust/comments/16fxr58/comment/k066gmh/"})]}),"\n",(0,n.jsx)(i.h2,{id:"pre-loading",children:"Pre-Loading"}),"\n",(0,n.jsx)(i.p,{children:"Preloaders are part of Yazi's concurrent plugin system, and the entire pre-loading process is asynchronous and spans multiple threads. This means that preloaders can handle not only expensive IO tasks but also CPU-bound tasks! Here are some built-in preloaders in Yazi:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:["Mimetype: The baseline. Yazi uses the file's mime-type as a reference for tasks such as opening, previewing, and style rendering, and internally utilizes ",(0,n.jsx)(i.code,{children:"file(1)"})," to obtain the file's mime-type. For better performance, Yazi computes them for files of an entire page, rather than for each file individually, and the entire process is chunked to minimize response latency."]}),"\n",(0,n.jsx)(i.li,{children:"Image: To accelerate image previews, Yazi uses a 2-pass process for image files. The first pass is preprocessing, which downscales the image based on user-set max_width/max_height and generates a compressed lossy image as a cache file, significantly reducing file size. The second pass occurs when the user actually switches to the file and downscales it again to fit the terminal size."}),"\n",(0,n.jsx)(i.li,{children:"Video: To speed up video previews, Yazi pre-converts them into images and goes through the first pass of image processing. When the user needs to display the video, it goes the same second pass."}),"\n",(0,n.jsx)(i.li,{children:"PDF: Similar to video."}),"\n",(0,n.jsx)(i.li,{children:"Directory size: Yazi lazily calculates the directory size only when the user sets sorting by file size, as it's a time-consuming operation."}),"\n"]}),"\n",(0,n.jsx)(i.p,{children:"Note: Except for size, all of these are paged, meaning that when you are on the first page, only the first few files will be pre-loaded."}),"\n",(0,n.jsx)(i.p,{children:"For example, if your directory has 1000 files, your terminal height is 10, and you are on the second page, only files 11 to 20 will be processed. This greatly saves resources."}),"\n",(0,n.jsx)(i.h2,{id:"discardable-tasks",children:"Discardable Tasks"}),"\n",(0,n.jsx)(i.p,{children:"Every preview task is discardable. When you navigate between files quickly and the previous file's triggered preview task is still not finished, it will be discarded directly, initiating a new task. This promotes resource utilization:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:["For I/O tasks like loading directory lists, Tokio's ",(0,n.jsx)(i.code,{children:"abort"})," is used;"]}),"\n",(0,n.jsxs)(i.li,{children:["For CPU tasks like code highlighting, an ",(0,n.jsx)(i.code,{children:"Atomic"})," is used to store a ",(0,n.jsx)(i.code,{children:"ticket"}),", and it checks if the value changes on each line code highlight. If it changes, indicates that the current context has changed, and the entire highlighting task is discarded."]}),"\n",(0,n.jsx)(i.li,{children:"For I/O and CPU tasks like previewer/preloader plugins, with Lua, Yazi can check whether these tasks are canceled when a specific number of CPU instructions. If canceled, it interrupts the execution of the Lua script immediately, avoiding wasting more I/O and CPU resources."}),"\n"]}),"\n",(0,n.jsx)(i.h2,{id:"code-highlighting",children:"Code Highlighting"}),"\n",(0,n.jsx)(i.p,{children:"Yazi has built-in code highlighting and keeps it to a minimum for all text files: if your terminal height is 10, only the first 10 lines of the file are read and highlighted."}),"\n",(0,n.jsxs)(i.p,{children:["Other file managers that rely on external programs like ",(0,n.jsx)(i.code,{children:"bat"})," need to wait for ",(0,n.jsx)(i.code,{children:"bat"})," to finish highlighting the ",(0,n.jsx)(i.em,{children:"entire file"})," before displaying only the first 10 lines."]}),"\n",(0,n.jsxs)(i.p,{children:["In cases like JSON that require external program ",(0,n.jsx)(i.code,{children:"jq"}),", Yazi kills ",(0,n.jsx)(i.code,{children:"jq"})," directly after reading the first 10 lines to avoid unnecessary resource consumption."]}),"\n",(0,n.jsx)(i.p,{children:"Since code highlighting is a CPU-bound task, it is distributed among multiple blocking threads, managed through Tokio's spawn_blocking, and is also discardable."}),"\n",(0,n.jsx)(i.h2,{id:"image-preview",children:"Image Preview"}),"\n",(0,n.jsx)(i.p,{children:"Yazi not only has built-in code highlighting but also includes image decoding and downscaling - there is likely nothing faster than having it directly built-in. It is also distributed among multiple threads and is discardable."}),"\n",(0,n.jsx)(i.p,{children:"Besides being fast, Yazi's built-in Kitty graphics protocol, Inline images protocol, and Sixel graphics format allow Yazi to finely control when to display or hide images."}),"\n",(0,n.jsxs)(i.p,{children:["This ensures that in Yazi, there won't be issues, like images stacking on top of each other, or image escape code breaking the entire screen, when navigating through images quickly, as ",(0,n.jsx)(i.code,{children:"stdout"})," is locked while outputting these escape codes. This locking happens after all image data is prepared, so it has no impact on performance."]}),"\n",(0,n.jsx)(i.p,{children:"Yazi even supports partially erasing content in preview images, which is useful for pop-up components (Input, Select). The image won't overlap the input, and when the pop-up disappears, Yazi redraws the image to complete the erased portion automatically."}),"\n",(0,n.jsx)(i.h2,{id:"async-task-scheduling",children:"Async Task Scheduling"}),"\n",(0,n.jsx)(i.p,{children:"In Yazi, tasks are prioritized based on their severity automatically. Yazi categorizes tasks into two types:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsx)(i.li,{children:"Macro tasks: Large and heavy tasks, such as copying large files, typically taking a long time to complete."}),"\n",(0,n.jsx)(i.li,{children:"Micro tasks: Small and urgent tasks, such as fetching file mime-type, pre-loading images, calculating directory size, and so on."}),"\n"]}),"\n",(0,n.jsx)(i.p,{children:"This is similar to having big and small cores in a CPU; when the big cores are idle, they help with the micro tasks. Yazi defaults to starting 5 micro workers and 10 macro workers, and these numbers can be configured by the user!"}),"\n",(0,n.jsx)(i.p,{children:"In addition, Yazi introduces a priority scheduling mechanism. Each task has 3 priority levels: low, normal, and high. High-priority tasks can preempt low-priority tasks, applying to both micro and macro tasks. This increases task concurrency, slowing down HOL blocking caused by queuing execution of sudden requests."}),"\n",(0,n.jsx)(i.p,{children:"For complex tasks like file copying, a combination of micro and macro approaches is employed. Micro is used to gather a list of all files to be copied recursively, allowing users to see the number of tasks and their sizes in advance. Macro, on the other hand, handles the actual copying process."}),"\n",(0,n.jsx)(i.p,{children:"The advantage of task scheduling extends beyond providing ample concurrency for I/O and CPU resources; it also indirectly mitigates the depletion of system resources (such as file handles and CPU) due to sudden task surges."}),"\n",(0,n.jsx)(i.h2,{id:"other-optimizations",children:"Other optimizations"}),"\n",(0,n.jsx)(i.p,{children:"The above optimizations are the most noticeable to users, but behind the scenes, Yazi has also done many other optimizations. Include but are not limited to:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:["The re-implemented highly optimized natural sorting algorithm is ",(0,n.jsxs)(i.a,{href:"https://github.com/sxyazi/yazi/pull/237",children:["~6 times faster than the ",(0,n.jsx)(i.code,{children:"natord"})]})," that ",(0,n.jsx)(i.code,{children:"eza"})," uses in case-insensitive sorting."]}),"\n",(0,n.jsx)(i.li,{children:"Yazi caches the directory state that has already been read, avoiding any unnecessary IO operations."}),"\n",(0,n.jsx)(i.li,{children:"When a file in a directory changes, it only updates the changed files rather than re-reading the entire directory list."}),"\n",(0,n.jsx)(i.li,{children:"Merges multiple renders triggered by multiple commands into a single render, avoiding unnecessary CPU consumption."}),"\n",(0,n.jsx)(i.li,{children:"Frequent updates to components, such as progress bars, are rendered independently, which is no cost compared to a complete render."}),"\n",(0,n.jsx)(i.li,{children:"The entire plugin system is designed with an asynchronous-first philosophy to avoid blocking the main thread with time-consuming tasks."}),"\n"]}),"\n",(0,n.jsx)(i.h2,{id:"todo",children:"TODO"}),"\n",(0,n.jsx)(i.p,{children:"I'll find time to continue writing."})]})}function d(e={}){const{wrapper:i}={...(0,t.a)(),...e.components};return i?(0,n.jsx)(i,{...e,children:(0,n.jsx)(c,{...e})}):c(e)}},6225:(e,i,s)=>{s.d(i,{Z:()=>o,a:()=>r});var n=s(959);const t={},a=n.createContext(t);function r(e){const i=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function o(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),n.createElement(a.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/f18375c2.72830105.js b/assets/js/f18375c2.72830105.js new file mode 100644 index 000000000..e7457e09a --- /dev/null +++ b/assets/js/f18375c2.72830105.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[131],{3776:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>o,contentTitle:()=>d,default:()=>h,frontMatter:()=>l,metadata:()=>c,toc:()=>t});var s=n(1527),r=n(6225);const l={sidebar_position:1,description:"Learn how to configure Yazi's basic functionality."},d="yazi.toml",c={id:"configuration/yazi",title:"yazi.toml",description:"Learn how to configure Yazi's basic functionality.",source:"@site/docs/configuration/yazi.md",sourceDirName:"configuration",slug:"/configuration/yazi",permalink:"/docs/configuration/yazi",draft:!1,unlisted:!1,editUrl:"https://github.com/yazi-rs/yazi-rs.github.io/edit/main/docs/configuration/yazi.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1,description:"Learn how to configure Yazi's basic functionality."},sidebar:"docsSidebar",previous:{title:"Configuration",permalink:"/docs/configuration/overview"},next:{title:"keymap.toml",permalink:"/docs/configuration/keymap"}},o={},t=[{value:"[manager]",id:"manager",level:2},{value:"<code>ratio</code>",id:"manager.ratio",level:3},{value:"<code>sort_by</code>",id:"manager.sort_by",level:3},{value:"<code>sort_sensitive</code>",id:"manager.sort_sensitive",level:3},{value:"<code>sort_reverse</code>",id:"manager.sort_reverse",level:3},{value:"<code>sort_dir_first</code>",id:"manager.sort_dir_first",level:3},{value:"<code>sort_translit</code>",id:"manager.sort_translit",level:3},{value:"<code>linemode</code>",id:"manager.linemode",level:3},{value:"<code>show_hidden</code>",id:"manager.show_hidden",level:3},{value:"<code>show_symlink</code>",id:"manager.show_symlink",level:3},{value:"<code>scrolloff</code>",id:"manager.scrolloff",level:3},{value:"<code>mouse_events</code>",id:"manager.mouse_events",level:3},{value:"[preview]",id:"preview",level:2},{value:"<code>tab_size</code>",id:"preview.tab_size",level:3},{value:"<code>max_width</code>",id:"preview.max_width",level:3},{value:"<code>max_height</code>",id:"preview.max_height",level:3},{value:"<code>cache_dir</code>",id:"preview.cache_dir",level:3},{value:"<code>image_filter</code>",id:"preview.image_filter",level:3},{value:"<code>image_quality</code>",id:"preview.image_quality",level:3},{value:"<code>sixel_fraction</code>",id:"preview.sixel_fraction",level:3},{value:"<code>ueberzug_scale</code> / <code>ueberzug_offset</code>",id:"preview.ueberzug_scale",level:3},{value:"[opener]",id:"opener",level:2},{value:"[open]",id:"open",level:2},{value:"[tasks]",id:"tasks",level:2},{value:"<code>micro_workers</code>",id:"tasks.micro_workers",level:3},{value:"<code>macro_workers</code>",id:"tasks.macro_workers",level:3},{value:"<code>bizarre_retry</code>",id:"tasks.bizarre_retry",level:3},{value:"<code>suppress_preload</code>",id:"tasks.suppress_preload",level:3},{value:"<code>image_alloc</code>",id:"tasks.image_alloc",level:3},{value:"<code>image_bound</code>",id:"tasks.image_bound",level:3},{value:"[plugin]",id:"plugin",level:2},{value:"previewers",id:"plugin.previewers",level:3},{value:"preloaders",id:"plugin.preloaders",level:3},{value:"[input]",id:"input",level:2},{value:"Origin",id:"input.origin",level:3},{value:"Offset",id:"input.offset",level:3},{value:"Placeholder",id:"input.placeholder",level:3},{value:"[select]",id:"select",level:2},{value:"[which]",id:"which",level:2},{value:"<code>sort_by</code>",id:"which.sort_by",level:3},{value:"<code>sort_sensitive</code>",id:"which.sort_sensitive",level:3},{value:"<code>sort_reverse</code>",id:"which.sort_reverse",level:3}];function a(e){const i={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.h1,{id:"yazitoml",children:"yazi.toml"}),"\n",(0,s.jsx)(i.admonition,{type:"note",children:(0,s.jsxs)(i.p,{children:["If you haven't created and used your own configuration file yet, please see ",(0,s.jsx)(i.a,{href:"/docs/configuration/overview",children:"Configuration"}),"."]})}),"\n",(0,s.jsx)(i.h2,{id:"manager",children:"[manager]"}),"\n",(0,s.jsx)(i.h3,{id:"manager.ratio",children:(0,s.jsx)(i.code,{children:"ratio"})}),"\n",(0,s.jsx)(i.p,{children:"Manager layout by ratio, 3-element array."}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"[1, 4, 3]"}),": 1/8 width for parent, 4/8 width for current, 3/8 width for preview"]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"manager.sort_by",children:(0,s.jsx)(i.code,{children:"sort_by"})}),"\n",(0,s.jsx)(i.p,{children:"File sorting method."}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:'"none"'}),": Don't sort."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:'"modified"'}),": Sort by last modified time."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:'"created"'}),": Sort by creation time. (Due to a Rust bug, this is not available at the moment, see ",(0,s.jsx)(i.a,{href:"https://github.com/sxyazi/yazi/issues/356",children:"sxyazi/yazi#356"})," and ",(0,s.jsx)(i.a,{href:"https://github.com/rust-lang/rust/issues/108277",children:"rust-lang/rust#108277"}),")"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:'"extension"'}),": Sort by file extension."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:'"alphabetical"'}),": Sort alphabetically, e.g. ",(0,s.jsx)(i.code,{children:"1.md"})," < ",(0,s.jsx)(i.code,{children:"10.md"})," < ",(0,s.jsx)(i.code,{children:"2.md"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:'"natural"'}),": Sort naturally, e.g. ",(0,s.jsx)(i.code,{children:"1.md"})," < ",(0,s.jsx)(i.code,{children:"2.md"})," < ",(0,s.jsx)(i.code,{children:"10.md"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:'"size"'}),": Sort by file size."]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"manager.sort_sensitive",children:(0,s.jsx)(i.code,{children:"sort_sensitive"})}),"\n",(0,s.jsx)(i.p,{children:"Sort case-sensitively."}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"true"}),": Case-sensitive"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"false"}),": Case-insensitive"]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"manager.sort_reverse",children:(0,s.jsx)(i.code,{children:"sort_reverse"})}),"\n",(0,s.jsx)(i.p,{children:"Display files in reverse order."}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"true"}),": Reverse order"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"false"}),": Normal order"]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"manager.sort_dir_first",children:(0,s.jsx)(i.code,{children:"sort_dir_first"})}),"\n",(0,s.jsx)(i.p,{children:"Display directories first."}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"true"}),": Directories first"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"false"}),": Respects ",(0,s.jsx)(i.code,{children:"sort_by"})," and ",(0,s.jsx)(i.code,{children:"sort_reverse"})," only"]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"manager.sort_translit",children:(0,s.jsx)(i.code,{children:"sort_translit"})}),"\n",(0,s.jsxs)(i.p,{children:["Transliterate filenames for sorting (i.e. replaces ",(0,s.jsx)(i.code,{children:"\xc2"})," as ",(0,s.jsx)(i.code,{children:"A"}),", ",(0,s.jsx)(i.code,{children:"\xc6"})," as ",(0,s.jsx)(i.code,{children:"AE"}),", etc.), only available if ",(0,s.jsx)(i.code,{children:'sort_by = "natural"'}),"."]}),"\n",(0,s.jsx)(i.p,{children:"This is useful for files that contain Hungarian characters. (Currently requires nightly builds.)"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"true"}),": Enabled"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"false"}),": Disabled"]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"manager.linemode",children:(0,s.jsx)(i.code,{children:"linemode"})}),"\n",(0,s.jsx)(i.p,{children:"Line mode: display information associated with the file on the right side of the file list row."}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:'"none"'}),": No line mode."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:'"size"'}),": Display the size in bytes of the file. Since file sizes are only evaluated when sorting by size, it only works after ",(0,s.jsx)(i.a,{href:"/docs/configuration/yazi#manager.sort_by",children:(0,s.jsx)(i.code,{children:'sort_by = "size"'})})," set, and this behavior might change in the future."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:'"permissions"'}),": Display the permissions of the file."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:'"mtime"'}),": Display the last modified time of the file."]}),"\n"]}),"\n",(0,s.jsxs)(i.p,{children:["In addition, you can also specify any 1 to 20 characters, and extend it within a UI plugin.\nWhich means you can implement your own linemode through the plugin by simply overriding the ",(0,s.jsxs)(i.a,{href:"https://github.com/sxyazi/yazi/blob/latest/yazi-plugin/preset/components/folder.lua",children:[(0,s.jsx)(i.code,{children:"Folder:linemode"})," method"]}),"."]}),"\n",(0,s.jsx)(i.h3,{id:"manager.show_hidden",children:(0,s.jsx)(i.code,{children:"show_hidden"})}),"\n",(0,s.jsx)(i.p,{children:"Show hidden files."}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"true"}),": Show"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"false"}),": Do not show"]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"manager.show_symlink",children:(0,s.jsx)(i.code,{children:"show_symlink"})}),"\n",(0,s.jsx)(i.p,{children:"Show the path of the symlink file point to, after the filename."}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"true"}),": Show"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"false"}),": Do not show"]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"manager.scrolloff",children:(0,s.jsx)(i.code,{children:"scrolloff"})}),"\n",(0,s.jsx)(i.p,{children:"The number of files to keep above and below the cursor when moving through the file list."}),"\n",(0,s.jsxs)(i.p,{children:["If the value is larger than half the screen height (e.g. ",(0,s.jsx)(i.code,{children:"200"}),"), the cursor will be centered."]}),"\n",(0,s.jsx)(i.h3,{id:"manager.mouse_events",children:(0,s.jsx)(i.code,{children:"mouse_events"})}),"\n",(0,s.jsx)(i.p,{children:"Array of strings, the types of mouse events can be received by the plugin system, available values:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:'"click"'}),": Mouse click"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:'"scroll"'}),": Mouse vertical scroll"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:'"touch"'}),": Mouse horizontal scroll"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:'"move"'}),": Mouse move"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:'"drag"'}),": Mouse drag (Some terminals do not support this)"]}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"Currently needs the nightly version of Yazi."}),"\n",(0,s.jsx)(i.h2,{id:"preview",children:"[preview]"}),"\n",(0,s.jsx)(i.h3,{id:"preview.tab_size",children:(0,s.jsx)(i.code,{children:"tab_size"})}),"\n",(0,s.jsx)(i.p,{children:"Tab width."}),"\n",(0,s.jsx)(i.h3,{id:"preview.max_width",children:(0,s.jsx)(i.code,{children:"max_width"})}),"\n",(0,s.jsxs)(i.p,{children:["Maximum preview width for images. Do a ",(0,s.jsx)(i.code,{children:"yazi --clear-cache"})," to take effect after changing this."]}),"\n",(0,s.jsx)(i.p,{children:"This value is also used for preloading images; the larger it is, the larger the image cache generated, which consumes more CPU."}),"\n",(0,s.jsx)(i.h3,{id:"preview.max_height",children:(0,s.jsx)(i.code,{children:"max_height"})}),"\n",(0,s.jsxs)(i.p,{children:["Maximum preview height for images. Do a ",(0,s.jsx)(i.code,{children:"yazi --clear-cache"})," to take effect after changing this."]}),"\n",(0,s.jsx)(i.p,{children:"This value is also used for preloading images; the larger it is, the larger the image cache generated, which consumes more CPU."}),"\n",(0,s.jsx)(i.h3,{id:"preview.cache_dir",children:(0,s.jsx)(i.code,{children:"cache_dir"})}),"\n",(0,s.jsx)(i.p,{children:"The system cache directory is used by default, and the cached files will go away on a reboot automatically."}),"\n",(0,s.jsx)(i.p,{children:"If you want to make it more persistent, you can specify the cache directory manually as an absolute path."}),"\n",(0,s.jsx)(i.h3,{id:"preview.image_filter",children:(0,s.jsx)(i.code,{children:"image_filter"})}),"\n",(0,s.jsx)(i.p,{children:"The filter used on image downscaling, available values:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:'"nearest"'})," - Nearest Neighbor"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:'"triangle"'})," - Linear Triangle"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:'"catmull-rom"'})," - Catmull-Rom"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:'"lanczos3"'})," - Lanczos with window 3"]}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"They are arranged in order from fast to slow, and from poor to good quality - Lanczos3 provides the highest quality but is also the slowest."}),"\n",(0,s.jsxs)(i.p,{children:["See the example and benchmark here: ",(0,s.jsx)(i.a,{href:"https://docs.rs/image/0.24.8/image/imageops/enum.FilterType.html#examples",children:"https://docs.rs/image/0.24.8/image/imageops/enum.FilterType.html#examples"})]}),"\n",(0,s.jsx)(i.h3,{id:"preview.image_quality",children:(0,s.jsx)(i.code,{children:"image_quality"})}),"\n",(0,s.jsx)(i.p,{children:"Quality on pre-caching images, range 50-90."}),"\n",(0,s.jsx)(i.p,{children:"The larger value, the better image quality, but slower with more CPU consumption, and generates larger cache files that occupy more storage space."}),"\n",(0,s.jsx)(i.h3,{id:"preview.sixel_fraction",children:(0,s.jsx)(i.code,{children:"sixel_fraction"})}),"\n",(0,s.jsx)(i.p,{children:"Sixel is a very old image format that only supports 256 colors. For better image preview, Yazi trains a neural network for each image to find the most representative colors."}),"\n",(0,s.jsx)(i.p,{children:"This value determines the number of samples used during the training, range 10-20. A smaller value produces better results but is also slower."}),"\n",(0,s.jsxs)(i.h3,{id:"preview.ueberzug_scale",children:[(0,s.jsx)(i.code,{children:"ueberzug_scale"})," / ",(0,s.jsx)(i.code,{children:"ueberzug_offset"})]}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:["ueberzug_scale (Float): Ueberzug image scaling ratio, ",(0,s.jsx)(i.code,{children:"scale>1"})," for enlargement, ",(0,s.jsx)(i.code,{children:"scale<1"})," for reduction. For example, ",(0,s.jsx)(i.code,{children:"0.5"})," indicates a reduction to half."]}),"\n",(0,s.jsxs)(i.li,{children:["ueberzug_offset (",(0,s.jsx)(i.code,{children:"[x, y, width, height]"}),"): Ueberzug image offset, in cell units. For example, ",(0,s.jsx)(i.code,{children:"[0.5, 0.5, -0.5, -0.5]"})," indicates that the image is offset by half a cell in both directions, and the width and height are reduced by half a cell."]}),"\n"]}),"\n",(0,s.jsxs)(i.p,{children:["This is useful for solving ",(0,s.jsx)(i.a,{href:"https://github.com/jstkdng/ueberzugpp/issues/122",children:"a bug of \xdcberzug++ image size calculation"}),"."]}),"\n",(0,s.jsxs)(i.p,{children:["If your monitor has a ",(0,s.jsx)(i.code,{children:"2.0"})," scale factor, and is running on Wayland under Hyprland, you may need to set ",(0,s.jsx)(i.code,{children:"ueberzug_scale: 0.5"}),", and adjust the value of ",(0,s.jsx)(i.code,{children:"ueberzug_offset"})," according to your case, to offset this issue."]}),"\n",(0,s.jsx)(i.h2,{id:"opener",children:"[opener]"}),"\n",(0,s.jsxs)(i.p,{children:["Configure available openers that can be used in ",(0,s.jsx)(i.a,{href:"#open",children:(0,s.jsx)(i.code,{children:"[open]"})}),", for example:"]}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-toml",children:'[opener]\nedit = [\n\t{ run = \'nvim "$@"\', block = true },\n]\nplay = [\n\t{ run = \'mpv "$@"\', orphan = true, for = "unix" },\n]\nopen = [\n\t{ run = \'xdg-open "$@"\', desc = "Open" },\n]\n# ...\n'})}),"\n",(0,s.jsx)(i.p,{children:"Available options are as follows:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"run"}),": The command to open the selected files, with the following variables available:","\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"$n"})," (Unix) / ",(0,s.jsx)(i.code,{children:"%n"})," (Windows): The N-th selected file, starting from ",(0,s.jsx)(i.code,{children:"1"}),". e.g. ",(0,s.jsx)(i.code,{children:"$2"})," represents the second selected file."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"$@"})," (Unix) / ",(0,s.jsx)(i.code,{children:"%*"})," (Windows): All selected files, i.e. ",(0,s.jsx)(i.code,{children:"$1"}),", ",(0,s.jsx)(i.code,{children:"$2"}),", ..., ",(0,s.jsx)(i.code,{children:"$n"}),"."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"$0"})," (Unix) / ",(0,s.jsx)(i.code,{children:"%0"})," (Windows): The hovered file."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"block"}),": Open in a blocking manner. After setting this, Yazi will hide into a secondary screen and display the program on the main screen until it exits. During this time, it can receive I/O signals, which is useful for interactive programs."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"orphan"}),": Keep the process running even if Yazi has exited, once specified, the process will be detached from the task scheduling system."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"desc"}),': Description of the opener, display in interactive components, such as "Open with" and help menu.']}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"for"}),": The opener is only available on this system; if not specified, it's available on all systems. Available values:","\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"unix"}),": Linux and macOS"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"windows"}),": Windows"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"linux"}),": Linux"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"macos"}),": macOS"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(i.h2,{id:"open",children:"[open]"}),"\n",(0,s.jsxs)(i.p,{children:["Set rules for opening specific files. You can prepend or append rules to the default through ",(0,s.jsx)(i.code,{children:"prepend_rules"})," and ",(0,s.jsx)(i.code,{children:"append_rules"})," (See ",(0,s.jsx)(i.a,{href:"/docs/configuration/overview#mixing",children:"Configuration mixing"})," for details):"]}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-toml",children:'[open]\nprepend_rules = [\n\t{ name = "*.json", use = "edit" },\n\n\t# Multiple openers for a single rule\n\t{ name = "*.html", use = [ "open", "edit" ] },\n]\nappend_rules = [\n\t{ name = "*", use = "my-fallback" },\n]\n'})}),"\n",(0,s.jsxs)(i.p,{children:["If your ",(0,s.jsx)(i.code,{children:"append_rules"})," contains wildcard rules, they will always take precedence over the default wildcard rules as the fallback (Currently requires nightly builds)."]}),"\n",(0,s.jsxs)(i.p,{children:["Or, use ",(0,s.jsx)(i.code,{children:"rules"})," to rewrite the entire default rules:"]}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-toml",children:'[open]\nrules = [\n\t{ mime = "text/*", use = "edit" },\n\t{ mime = "video/*", use = "play" },\n\n\t# { mime = "application/json", use = "edit" },\n\t{ name = "*.json", use = "edit" },\n\n\t# Multiple openers for a single rule\n\t{ name = "*.html", use = [ "open", "edit" ] },\n]\n'})}),"\n",(0,s.jsx)(i.p,{children:"Available rule options are as follows:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"name"}),": Glob expression for matching the file name. Case insensitive by default, add ",(0,s.jsx)(i.code,{children:"\\s"})," to the beginning to make it sensitive."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"mime"}),": Glob expression for matching the mime-type. Case insensitive by default, add ",(0,s.jsx)(i.code,{children:"\\s"})," to the beginning to make it sensitive."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"use"}),": Opener name corresponding to the names in the ",(0,s.jsxs)(i.a,{href:"#opener",children:[(0,s.jsx)(i.code,{children:"[opener]"})," section"]}),"."]}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"With that:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:["If you're using the default mime-type preloader, it retrieves the mime-type of a file through ",(0,s.jsx)(i.code,{children:"file -bL --mime-type /path/to/file"})," command."]}),"\n",(0,s.jsxs)(i.li,{children:["If ",(0,s.jsx)(i.code,{children:"use"})," is an array containing multiple openers, all commands in these openers will be merged. ",(0,s.jsx)(i.a,{href:"/docs/configuration/keymap#manager.open",children:(0,s.jsx)(i.code,{children:"open"})})," will run the first of these commands; ",(0,s.jsx)(i.a,{href:"/docs/configuration/keymap#manager.open",children:(0,s.jsx)(i.code,{children:"open --interactive"})}),' will list all of these commands in the "open with" menu.']}),"\n"]}),"\n",(0,s.jsx)(i.h2,{id:"tasks",children:"[tasks]"}),"\n",(0,s.jsx)(i.h3,{id:"tasks.micro_workers",children:(0,s.jsx)(i.code,{children:"micro_workers"})}),"\n",(0,s.jsx)(i.p,{children:"Maximum number of concurrent micro-tasks."}),"\n",(0,s.jsx)(i.h3,{id:"tasks.macro_workers",children:(0,s.jsx)(i.code,{children:"macro_workers"})}),"\n",(0,s.jsx)(i.p,{children:"Maximum number of concurrent macro-tasks."}),"\n",(0,s.jsx)(i.h3,{id:"tasks.bizarre_retry",children:(0,s.jsx)(i.code,{children:"bizarre_retry"})}),"\n",(0,s.jsx)(i.p,{children:"Maximum number of retries when a bizarre failure occurs."}),"\n",(0,s.jsx)(i.h3,{id:"tasks.suppress_preload",children:(0,s.jsx)(i.code,{children:"suppress_preload"})}),"\n",(0,s.jsx)(i.p,{children:"Exclude the preload tasks created by the system from the task list, do not report their progress, and do not consider them on app exit confirming."}),"\n",(0,s.jsx)(i.h3,{id:"tasks.image_alloc",children:(0,s.jsx)(i.code,{children:"image_alloc"})}),"\n",(0,s.jsxs)(i.p,{children:["Maximum memory allocation limit in bytes for decoding a single image, ",(0,s.jsx)(i.code,{children:"0"})," for unlimited."]}),"\n",(0,s.jsx)(i.h3,{id:"tasks.image_bound",children:(0,s.jsx)(i.code,{children:"image_bound"})}),"\n",(0,s.jsxs)(i.p,{children:["An array of ",(0,s.jsx)(i.code,{children:"[width, height]"}),", maximum image size (in pixels) for decoding a single image, and ",(0,s.jsx)(i.code,{children:"0"})," for unlimited."]}),"\n",(0,s.jsx)(i.h2,{id:"plugin",children:"[plugin]"}),"\n",(0,s.jsx)(i.h3,{id:"plugin.previewers",children:"previewers"}),"\n",(0,s.jsxs)(i.p,{children:["You can prepend or append new preview rules to the default ",(0,s.jsx)(i.code,{children:"previewers"})," under ",(0,s.jsx)(i.code,{children:"[plugin]"})," by ",(0,s.jsx)(i.code,{children:"prepend_previewers"})," and ",(0,s.jsx)(i.code,{children:"append_previewers"}),", see ",(0,s.jsx)(i.a,{href:"/docs/configuration/overview#mixing",children:"Configuration mixing"})," for details.\nHere are the available options for a single rule:"]}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"name"})," (String): Glob expression for matching the file name. Case insensitive by default, add ",(0,s.jsx)(i.code,{children:"\\s"})," to the beginning to make it sensitive."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"mime"})," (String): Glob expression for matching the mime-type. Case insensitive by default, add ",(0,s.jsx)(i.code,{children:"\\s"})," to the beginning to make it sensitive."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"run"})," (String): The name of the Lua plugin to be ran."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"sync"})," (Boolean): Whether to run in the sync context, default is ",(0,s.jsx)(i.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-toml",children:'[plugin]\nprepend_previewers = [\n\t# HEIC previewer\n\t{ mime = "image/heic", run = "heic" },\n]\n\nappend_previewers = [\n\t# My fallback previewer\n\t{ name = "*" , run = "binary" },\n]\n'})}),"\n",(0,s.jsxs)(i.p,{children:["If your ",(0,s.jsx)(i.code,{children:"append_previewers"})," contains wildcard ",(0,s.jsx)(i.code,{children:"name"})," rules (",(0,s.jsx)(i.code,{children:'"*"'})," or ",(0,s.jsx)(i.code,{children:'"*/"'}),"), they will always take precedence over the default wildcard rules as the fallback."]}),"\n",(0,s.jsx)(i.p,{children:"Yazi comes with the these previewer plugins:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:"folder: bridge between the Yazi file system and the preview"}),"\n",(0,s.jsx)(i.li,{children:"code: bridge between built-in code highlighting and the preview, providing async concurrent rendering"}),"\n",(0,s.jsxs)(i.li,{children:["json: bridge between ",(0,s.jsx)(i.code,{children:"jq"})," and the preview, providing async concurrent rendering"]}),"\n",(0,s.jsx)(i.li,{children:"noop: no operation"}),"\n",(0,s.jsx)(i.li,{children:"image: presentation layer of built-in image preview, offering mixed preview capabilities"}),"\n",(0,s.jsxs)(i.li,{children:["video: bridge between ",(0,s.jsx)(i.code,{children:"ffmpegthumbnailer"})," and the preview, offering mixed preview capabilities"]}),"\n",(0,s.jsxs)(i.li,{children:["pdf: bridge between ",(0,s.jsx)(i.code,{children:"pdftoppm"})," and the preview, offering mixed preview capabilities"]}),"\n",(0,s.jsxs)(i.li,{children:["archive: bridge between ",(0,s.jsx)(i.code,{children:"unar"})," and the preview, offering mixed preview and concurrent rendering capabilities"]}),"\n"]}),"\n",(0,s.jsxs)(i.p,{children:["If you want to create your own previewer, see ",(0,s.jsx)(i.a,{href:"/docs/plugins/overview#previewer",children:"Previewer API"}),"."]}),"\n",(0,s.jsx)(i.h3,{id:"plugin.preloaders",children:"preloaders"}),"\n",(0,s.jsxs)(i.p,{children:["You can prepend or append new preview rules to the default ",(0,s.jsx)(i.code,{children:"preloaders"})," under ",(0,s.jsx)(i.code,{children:"[plugin]"})," by ",(0,s.jsx)(i.code,{children:"prepend_preloaders"})," and ",(0,s.jsx)(i.code,{children:"append_preloaders"}),", see ",(0,s.jsx)(i.a,{href:"/docs/configuration/overview#mixing",children:"Configuration mixing"})," for details.\nHere are the available options for a single rule:"]}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"name"})," (String): Glob expression for matching the file name. Case insensitive by default, add ",(0,s.jsx)(i.code,{children:"\\s"})," to the beginning to make it sensitive."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"mime"})," (String): Glob expression for matching the mime-type. Case insensitive by default, add ",(0,s.jsx)(i.code,{children:"\\s"})," to the beginning to make it sensitive."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"cond"})," (String): Conditional expression \u2013 Only rules that meet this condition and satisfy either the ",(0,s.jsx)(i.code,{children:"name"})," or ",(0,s.jsx)(i.code,{children:"mime"})," will be applied. For example, ",(0,s.jsx)(i.code,{children:"A & B"})," means A and B, and ",(0,s.jsx)(i.code,{children:"A | !B"})," means A or not B. Here are the available factors:","\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"mime"}),": This file has a mime-type."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"run"})," (String): The name of the Lua plugin to be ran."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"multi"})," (Boolean): Whether to preload multiple files at once."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"prio"})," (String): Preload priority, ",(0,s.jsx)(i.code,{children:"low"}),", ",(0,s.jsx)(i.code,{children:"normal"})," or ",(0,s.jsx)(i.code,{children:"high"}),". The default is ",(0,s.jsx)(i.code,{children:"normal"})," if not specified."]}),"\n"]}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-toml",children:'[plugin]\nprepend_preloaders = [\n\t# HEIC preloader\n\t{ mime = "image/heic", run = "heic" },\n]\n'})}),"\n",(0,s.jsx)(i.p,{children:"Yazi comes with the these preloader plugins:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:"mime: preloads mime-type of files in chunks"}),"\n",(0,s.jsx)(i.li,{children:"noop: no operation"}),"\n",(0,s.jsx)(i.li,{children:"image: preloads and caches images"}),"\n",(0,s.jsx)(i.li,{children:"video: preloads and caches videos"}),"\n",(0,s.jsx)(i.li,{children:"pdf: preloads and caches PDFs."}),"\n"]}),"\n",(0,s.jsxs)(i.p,{children:["If you want to create your own preloader, see ",(0,s.jsx)(i.a,{href:"/docs/plugins/overview#preloader",children:"Preloader API"}),"."]}),"\n",(0,s.jsx)(i.h2,{id:"input",children:"[input]"}),"\n",(0,s.jsxs)(i.p,{children:["You can customize the title and position of each input. As for position, it consists of two parts: ",(0,s.jsx)(i.a,{href:"#input.origin",children:"Origin"})," and ",(0,s.jsx)(i.a,{href:"#input.offset",children:"Offset"}),"."]}),"\n",(0,s.jsx)(i.p,{children:"The origin is the top-left corner of the input, and the offset is the increment from this origin. Together, they determine the area of the input on the screen."}),"\n",(0,s.jsx)(i.h3,{id:"input.origin",children:"Origin"}),"\n",(0,s.jsx)(i.p,{children:"For the origin, the following values are available:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:"top-left"}),"\n",(0,s.jsx)(i.li,{children:"top-center"}),"\n",(0,s.jsx)(i.li,{children:"top-right"}),"\n",(0,s.jsx)(i.li,{children:"bottom-left"}),"\n",(0,s.jsx)(i.li,{children:"bottom-center"}),"\n",(0,s.jsx)(i.li,{children:"bottom-right"}),"\n",(0,s.jsx)(i.li,{children:"center"}),"\n",(0,s.jsx)(i.li,{children:"hovered (the cursor position of hovered file)"}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"input.offset",children:"Offset"}),"\n",(0,s.jsxs)(i.p,{children:["As for the offset, it's a 4-element tuple: ",(0,s.jsx)(i.code,{children:"(x, y, width, height)"}),"."]}),"\n",(0,s.jsx)(i.h3,{id:"input.placeholder",children:"Placeholder"}),"\n",(0,s.jsx)(i.p,{children:"Some inputs have special placeholders that will be replaced with actual content on display:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:["\n",(0,s.jsx)(i.p,{children:"trash_title: String"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"{n}"}),": Number of files to be trashed"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"{s}"}),": ",(0,s.jsx)(i.code,{children:'"s"'})," if ",(0,s.jsx)(i.code,{children:"n > 1"}),", otherwise ",(0,s.jsx)(i.code,{children:'""'})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(i.li,{children:["\n",(0,s.jsx)(i.p,{children:"delete_title: String"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"{n}"}),": Number of files to be deleted"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"{s}"}),": ",(0,s.jsx)(i.code,{children:'"s"'})," if ",(0,s.jsx)(i.code,{children:"n > 1"}),", otherwise ",(0,s.jsx)(i.code,{children:'""'})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(i.li,{children:["\n",(0,s.jsx)(i.p,{children:"find_title: [String, String]"}),"\n",(0,s.jsx)(i.p,{children:'It\'s a tuple of 2-element: first for "Find next", second for "Find previous".'}),"\n"]}),"\n",(0,s.jsxs)(i.li,{children:["\n",(0,s.jsx)(i.p,{children:"search_title: String"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"{n}"}),": Name of the current search engine"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(i.li,{children:["\n",(0,s.jsx)(i.p,{children:"shell_title: [String, String]"}),"\n",(0,s.jsx)(i.p,{children:'It\'s a tuple of 2-element: first for "Non-blocking shell", second for "Blocking shell".'}),"\n"]}),"\n",(0,s.jsxs)(i.li,{children:["\n",(0,s.jsx)(i.p,{children:"quit_title: String"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"{n}"}),": Number of tasks are running"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"{s}"}),": ",(0,s.jsx)(i.code,{children:'"s"'})," if ",(0,s.jsx)(i.code,{children:"n > 1"}),", otherwise ",(0,s.jsx)(i.code,{children:'""'})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(i.h2,{id:"select",children:"[select]"}),"\n",(0,s.jsxs)(i.p,{children:["As same as the ",(0,s.jsx)(i.a,{href:"#input",children:(0,s.jsx)(i.code,{children:"[input]"})})," section."]}),"\n",(0,s.jsx)(i.h2,{id:"which",children:"[which]"}),"\n",(0,s.jsx)(i.h3,{id:"which.sort_by",children:(0,s.jsx)(i.code,{children:"sort_by"})}),"\n",(0,s.jsx)(i.p,{children:"Candidate sorting method."}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:'"none"'}),": Don't sort."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:'"key"'}),": Sort by key."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:'"desc'}),": Sort by description."]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"which.sort_sensitive",children:(0,s.jsx)(i.code,{children:"sort_sensitive"})}),"\n",(0,s.jsx)(i.p,{children:"Sort case-sensitively."}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"true"}),": Case-sensitive"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"false"}),": Case-insensitive"]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"which.sort_reverse",children:(0,s.jsx)(i.code,{children:"sort_reverse"})}),"\n",(0,s.jsx)(i.p,{children:"Display candidates in reverse order."}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"true"}),": Reverse order"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"false"}),": Normal order"]}),"\n"]})]})}function h(e={}){const{wrapper:i}={...(0,r.a)(),...e.components};return i?(0,s.jsx)(i,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},6225:(e,i,n)=>{n.d(i,{Z:()=>c,a:()=>d});var s=n(959);const r={},l=s.createContext(r);function d(e){const i=s.useContext(l);return s.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function c(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),s.createElement(l.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/f81c1134.31f9eb0d.js b/assets/js/f81c1134.31f9eb0d.js new file mode 100644 index 000000000..1ff1a71cf --- /dev/null +++ b/assets/js/f81c1134.31f9eb0d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[31],{4108:e=>{e.exports=JSON.parse('{"archive":{"blogPosts":[{"id":"why-is-yazi-fast","metadata":{"permalink":"/blog/why-is-yazi-fast","editUrl":"https://github.com/yazi-rs/yazi-rs.github.io/edit/main/blog/2023-10-29-why-is-yazi-fast.md","source":"@site/blog/2023-10-29-why-is-yazi-fast.md","title":"Why is Yazi fast?","description":"This article assumes that you have already used Yazi and are familiar with most of its features.","date":"2023-10-29T00:00:00.000Z","tags":[],"readingTime":6.545,"hasTruncateMarker":false,"authors":[{"name":"\u4e09\u54b2\u96c5 \xb7 Misaki Masa","title":"Creator of Yazi","url":"https://github.com/sxyazi","imageURL":"https://github.com/sxyazi.png","key":"sxyazi"}],"frontMatter":{"slug":"why-is-yazi-fast","title":"Why is Yazi fast?","authors":["sxyazi"]},"unlisted":false},"content":"This article assumes that you have already used Yazi and are familiar with most of its features.\\n\\nYazi has undergone significant optimizations to enhance user experience. It is designed entirely as an async program, handling all time-consuming tasks (I/O and CPU) as async tasks in a non-blocking, event-driven manner.\\n\\n## Tokio\\n\\nInternally, Yazi uses Tokio as its async runtime: hold on! Tokio\'s async may not be \\"truly async\\" as you might perceive it!\\n\\nUh, okay. From an application-layer perspective, it indeed is async; however, from a system-level view, there are possibly better solutions.\\n\\nBut! This is not the current performance bottleneck for Yazi. Considering Yazi is a TUI app, unlike CLI programs like `ls` and `eza` that need to output all files immediately, Yazi has more optimization opportunities at the application-layer:\\n\\n- For large directories (e.g., 100,000 files), Yazi uses [chunked loading](https://github.com/sxyazi/yazi/pull/117), which is unmatched by `ls` and `eza` since they must load everything at once.\\n- Yazi also preloads directory file lists in the background, an optimization that `ls` and `eza` do not possess.\\n\\nI must express my gratitude to Tokio for providing an excellent and convenient way to realize these application-layer optimizations.\\n\\nI believe that the benefits brought by these application-level optimizations are more noticeable compared to switching to solutions like `io_uring`. But I\'m open to this and welcome any constructive PR.\\n\\nHere is a relevant discussion on Reddit: https://www.reddit.com/r/rust/comments/16fxr58/comment/k066gmh/\\n\\n## Pre-Loading\\n\\nPreloaders are part of Yazi\'s concurrent plugin system, and the entire pre-loading process is asynchronous and spans multiple threads. This means that preloaders can handle not only expensive IO tasks but also CPU-bound tasks! Here are some built-in preloaders in Yazi:\\n\\n- Mimetype: The baseline. Yazi uses the file\'s mime-type as a reference for tasks such as opening, previewing, and style rendering, and internally utilizes `file(1)` to obtain the file\'s mime-type. For better performance, Yazi computes them for files of an entire page, rather than for each file individually, and the entire process is chunked to minimize response latency.\\n- Image: To accelerate image previews, Yazi uses a 2-pass process for image files. The first pass is preprocessing, which downscales the image based on user-set max_width/max_height and generates a compressed lossy image as a cache file, significantly reducing file size. The second pass occurs when the user actually switches to the file and downscales it again to fit the terminal size.\\n- Video: To speed up video previews, Yazi pre-converts them into images and goes through the first pass of image processing. When the user needs to display the video, it goes the same second pass.\\n- PDF: Similar to video.\\n- Directory size: Yazi lazily calculates the directory size only when the user sets sorting by file size, as it\'s a time-consuming operation.\\n\\nNote: Except for size, all of these are paged, meaning that when you are on the first page, only the first few files will be pre-loaded.\\n\\nFor example, if your directory has 1000 files, your terminal height is 10, and you are on the second page, only files 11 to 20 will be processed. This greatly saves resources.\\n\\n## Discardable Tasks\\n\\nEvery preview task is discardable. When you navigate between files quickly and the previous file\'s triggered preview task is still not finished, it will be discarded directly, initiating a new task. This promotes resource utilization:\\n\\n- For I/O tasks like loading directory lists, Tokio\'s `abort` is used;\\n- For CPU tasks like code highlighting, an `Atomic` is used to store a `ticket`, and it checks if the value changes on each line code highlight. If it changes, indicates that the current context has changed, and the entire highlighting task is discarded.\\n- For I/O and CPU tasks like previewer/preloader plugins, with Lua, Yazi can check whether these tasks are canceled when a specific number of CPU instructions. If canceled, it interrupts the execution of the Lua script immediately, avoiding wasting more I/O and CPU resources.\\n\\n## Code Highlighting\\n\\nYazi has built-in code highlighting and keeps it to a minimum for all text files: if your terminal height is 10, only the first 10 lines of the file are read and highlighted.\\n\\nOther file managers that rely on external programs like `bat` need to wait for `bat` to finish highlighting the _entire file_ before displaying only the first 10 lines.\\n\\nIn cases like JSON that require external program `jq`, Yazi kills `jq` directly after reading the first 10 lines to avoid unnecessary resource consumption.\\n\\nSince code highlighting is a CPU-bound task, it is distributed among multiple blocking threads, managed through Tokio\'s spawn_blocking, and is also discardable.\\n\\n## Image Preview\\n\\nYazi not only has built-in code highlighting but also includes image decoding and downscaling - there is likely nothing faster than having it directly built-in. It is also distributed among multiple threads and is discardable.\\n\\nBesides being fast, Yazi\'s built-in Kitty graphics protocol, Inline images protocol, and Sixel graphics format allow Yazi to finely control when to display or hide images.\\n\\nThis ensures that in Yazi, there won\'t be issues, like images stacking on top of each other, or image escape code breaking the entire screen, when navigating through images quickly, as `stdout` is locked while outputting these escape codes. This locking happens after all image data is prepared, so it has no impact on performance.\\n\\nYazi even supports partially erasing content in preview images, which is useful for pop-up components (Input, Select). The image won\'t overlap the input, and when the pop-up disappears, Yazi redraws the image to complete the erased portion automatically.\\n\\n## Async Task Scheduling\\n\\nIn Yazi, tasks are prioritized based on their severity automatically. Yazi categorizes tasks into two types:\\n\\n- Macro tasks: Large and heavy tasks, such as copying large files, typically taking a long time to complete.\\n- Micro tasks: Small and urgent tasks, such as fetching file mime-type, pre-loading images, calculating directory size, and so on.\\n\\nThis is similar to having big and small cores in a CPU; when the big cores are idle, they help with the micro tasks. Yazi defaults to starting 5 micro workers and 10 macro workers, and these numbers can be configured by the user!\\n\\nIn addition, Yazi introduces a priority scheduling mechanism. Each task has 3 priority levels: low, normal, and high. High-priority tasks can preempt low-priority tasks, applying to both micro and macro tasks. This increases task concurrency, slowing down HOL blocking caused by queuing execution of sudden requests.\\n\\nFor complex tasks like file copying, a combination of micro and macro approaches is employed. Micro is used to gather a list of all files to be copied recursively, allowing users to see the number of tasks and their sizes in advance. Macro, on the other hand, handles the actual copying process.\\n\\nThe advantage of task scheduling extends beyond providing ample concurrency for I/O and CPU resources; it also indirectly mitigates the depletion of system resources (such as file handles and CPU) due to sudden task surges.\\n\\n## Other optimizations\\n\\nThe above optimizations are the most noticeable to users, but behind the scenes, Yazi has also done many other optimizations. Include but are not limited to:\\n\\n- The re-implemented highly optimized natural sorting algorithm is [~6 times faster than the `natord`](https://github.com/sxyazi/yazi/pull/237) that `eza` uses in case-insensitive sorting.\\n- Yazi caches the directory state that has already been read, avoiding any unnecessary IO operations.\\n- When a file in a directory changes, it only updates the changed files rather than re-reading the entire directory list.\\n- Merges multiple renders triggered by multiple commands into a single render, avoiding unnecessary CPU consumption.\\n- Frequent updates to components, such as progress bars, are rendered independently, which is no cost compared to a complete render.\\n- The entire plugin system is designed with an asynchronous-first philosophy to avoid blocking the main thread with time-consuming tasks.\\n\\n## TODO\\n\\nI\'ll find time to continue writing."}]}}')}}]); \ No newline at end of file diff --git a/assets/js/main.3de6501c.js b/assets/js/main.3de6501c.js new file mode 100644 index 000000000..d6c8fcb5d --- /dev/null +++ b/assets/js/main.3de6501c.js @@ -0,0 +1,2 @@ +/*! For license information please see main.3de6501c.js.LICENSE.txt */ +(self.webpackChunk=self.webpackChunk||[]).push([[179],{35:(e,t,n)=>{"use strict";n.d(t,{W:()=>a});var r=n(959);function a(){return r.createElement("svg",{width:"20",height:"20",className:"DocSearch-Search-Icon",viewBox:"0 0 20 20"},r.createElement("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}},7854:(e,t,n)=>{var r={"./prism-bash":3209,"./prism-diff":3931,"./prism-lua":505,"./prism-nix":5093,"./prism-powershell":6777,"./prism-toml":4265};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=7854},8723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});n(959);var r=n(4144),a=n.n(r),o=n(6887);const i={"0058b4c6":[()=>n.e(88).then(n.t.bind(n,6462,19)),"@generated/docusaurus-plugin-content-docs/default/p/docs-175.json",6462],"017b72a7":[()=>n.e(213).then(n.bind(n,5728)),"@site/docs/plugins/overview.md",5728],"0480b142":[()=>n.e(836).then(n.bind(n,1718)),"@site/docs/faq.md",1718],"0f425520":[()=>n.e(240).then(n.bind(n,6822)),"@site/docs/configuration/overview.md",6822],"115d3643":[()=>n.e(418).then(n.bind(n,3701)),"@site/docs/plugins/layout.md",3701],17896441:[()=>Promise.all([n.e(532),n.e(719),n.e(918)]).then(n.bind(n,4068)),"@theme/DocItem",4068],"1a4e3797":[()=>Promise.all([n.e(532),n.e(920)]).then(n.bind(n,1803)),"@theme/SearchPage",1803],"1df93b7f":[()=>Promise.all([n.e(532),n.e(237)]).then(n.bind(n,480)),"@site/src/pages/index.tsx",480],"248731ca":[()=>n.e(175).then(n.bind(n,7274)),"@site/docs/flavors/overview.md",7274],"340345ee":[()=>n.e(402).then(n.bind(n,3132)),"@site/docs/plugins/types.md",3132],"36994c47":[()=>n.e(208).then(n.t.bind(n,4468,19)),"@generated/docusaurus-plugin-content-blog/default/__plugin.json",4468],"3b25d5a1":[()=>n.e(826).then(n.bind(n,7038)),"@site/blog/2023-10-29-why-is-yazi-fast.md",7038],"3b8c55ea":[()=>n.e(217).then(n.bind(n,6867)),"@site/docs/installation.md",6867],"3ec017a6":[()=>Promise.all([n.e(532),n.e(40)]).then(n.bind(n,7390)),"@site/docs/dds.md",7390],"468e7028":[()=>n.e(871).then(n.bind(n,9342)),"@site/docs/configuration/theme.md",9342],"5e95c892":[()=>n.e(661).then(n.bind(n,4414)),"@theme/DocsRoot",4414],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,6809)),"@generated/docusaurus.config",6809],"72e14192":[()=>Promise.all([n.e(532),n.e(239)]).then(n.bind(n,569)),"@site/docs/quick-start.md",569],"814f3328":[()=>n.e(535).then(n.t.bind(n,5641,19)),"~blog/default/blog-post-list-prop-default.json",5641],"9e2c8087":[()=>n.e(857).then(n.bind(n,4007)),"@site/docs/configuration/keymap.md",4007],"9e4087bc":[()=>n.e(608).then(n.bind(n,2203)),"@theme/BlogArchivePage",2203],a6aa9e1f:[()=>Promise.all([n.e(532),n.e(719),n.e(703),n.e(89)]).then(n.bind(n,2687)),"@theme/BlogListPage",2687],a7456010:[()=>n.e(980).then(n.t.bind(n,9365,19)),"@generated/docusaurus-plugin-content-pages/default/__plugin.json",9365],a7bd4aaa:[()=>n.e(518).then(n.bind(n,3502)),"@theme/DocVersionRoot",3502],a94703ab:[()=>Promise.all([n.e(532),n.e(368)]).then(n.bind(n,7594)),"@theme/DocRoot",7594],aba21aa0:[()=>n.e(629).then(n.t.bind(n,1765,19)),"@generated/docusaurus-plugin-content-docs/default/__plugin.json",1765],acecf23e:[()=>n.e(393).then(n.t.bind(n,1838,19)),"~blog/default/blogMetadata-default.json",1838],b789b11d:[()=>n.e(882).then(n.bind(n,7386)),"@site/docs/plugins/utils.md",7386],c141421f:[()=>n.e(4).then(n.t.bind(n,1324,19)),"@generated/docusaurus-theme-search-algolia/default/__plugin.json",1324],c15d9823:[()=>n.e(642).then(n.t.bind(n,2506,19)),"@generated/docusaurus-plugin-content-blog/default/p/blog-bd9.json",2506],c798e513:[()=>n.e(197).then(n.bind(n,904)),"@site/docs/plugins/config.md",904],c8b3d7d6:[()=>Promise.all([n.e(532),n.e(307)]).then(n.bind(n,2468)),"@site/docs/tips.md",2468],ccc49370:[()=>Promise.all([n.e(532),n.e(719),n.e(703),n.e(103)]).then(n.bind(n,4475)),"@theme/BlogPostPage",4475],d7fbbe43:[()=>Promise.all([n.e(532),n.e(269)]).then(n.bind(n,846)),"@site/src/pages/features/index.tsx",846],d92a3c43:[()=>n.e(798).then(n.bind(n,1128)),"@site/docs/resources.md",1128],ee3da606:[()=>n.e(464).then(n.bind(n,5274)),"@site/docs/image-preview.md",5274],f117dc86:[()=>n.e(722).then(n.bind(n,4515)),"@site/blog/2023-10-29-why-is-yazi-fast.md?truncated=true",4515],f18375c2:[()=>n.e(131).then(n.bind(n,3776)),"@site/docs/configuration/yazi.md",3776],f81c1134:[()=>n.e(31).then(n.t.bind(n,4108,19)),"@generated/docusaurus-plugin-content-blog/default/p/blog-archive-f05.json",4108]};var l=n(1527);function s(e){let{error:t,retry:n,pastDelay:r}=e;return t?(0,l.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,l.jsx)("p",{children:String(t)}),(0,l.jsx)("div",{children:(0,l.jsx)("button",{type:"button",onClick:n,children:"Retry"})})]}):r?(0,l.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,l.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,l.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,l.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var u=n(8645),c=n(6933);function d(e,t){if("*"===e)return a()({loading:s,loader:()=>n.e(812).then(n.bind(n,4842)),modules:["@theme/NotFound"],webpack:()=>[4842],render(e,t){const n=e.default;return(0,l.jsx)(c.z,{value:{plugin:{name:"native",id:"default"}},children:(0,l.jsx)(n,{...t})})}});const r=o[`${e}-${t}`],d={},f=[],p=[],h=(0,u.Z)(r);return Object.entries(h).forEach((e=>{let[t,n]=e;const r=i[n];r&&(d[t]=r[0],f.push(r[1]),p.push(r[2]))})),a().Map({loading:s,loader:d,modules:f,webpack:()=>p,render(t,n){const a=JSON.parse(JSON.stringify(r));Object.entries(t).forEach((t=>{let[n,r]=t;const o=r.default;if(!o)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof o&&"function"!=typeof o||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{o[e]=r[e]}));let i=a;const l=n.split(".");l.slice(0,-1).forEach((e=>{i=i[e]})),i[l[l.length-1]]=o}));const o=a.__comp;delete a.__comp;const i=a.__context;delete a.__context;const s=a.__props;return delete a.__props,(0,l.jsx)(c.z,{value:i,children:(0,l.jsx)(o,{...a,...s,...n})})}})}const f=[{path:"/blog",component:d("/blog","9ad"),exact:!0},{path:"/blog/archive",component:d("/blog/archive","182"),exact:!0},{path:"/blog/why-is-yazi-fast",component:d("/blog/why-is-yazi-fast","ebb"),exact:!0},{path:"/features/",component:d("/features/","259"),exact:!0},{path:"/search",component:d("/search","5de"),exact:!0},{path:"/docs",component:d("/docs","d16"),routes:[{path:"/docs",component:d("/docs","5e9"),routes:[{path:"/docs",component:d("/docs","8dc"),routes:[{path:"/docs/configuration/keymap",component:d("/docs/configuration/keymap","ab2"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/configuration/overview",component:d("/docs/configuration/overview","724"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/configuration/theme",component:d("/docs/configuration/theme","5c5"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/configuration/yazi",component:d("/docs/configuration/yazi","f6c"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/dds",component:d("/docs/dds","89e"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/faq",component:d("/docs/faq","ec8"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/flavors/overview",component:d("/docs/flavors/overview","0b2"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/image-preview",component:d("/docs/image-preview","d2c"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/installation",component:d("/docs/installation","034"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/plugins/config",component:d("/docs/plugins/config","613"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/plugins/layout",component:d("/docs/plugins/layout","070"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/plugins/overview",component:d("/docs/plugins/overview","1ca"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/plugins/types",component:d("/docs/plugins/types","de9"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/plugins/utils",component:d("/docs/plugins/utils","4a3"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/quick-start",component:d("/docs/quick-start","b98"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/resources",component:d("/docs/resources","a32"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/tips",component:d("/docs/tips","a3e"),exact:!0,sidebar:"docsSidebar"}]}]}]},{path:"/",component:d("/","e5f"),exact:!0},{path:"*",component:d("*")}]},2565:(e,t,n)=>{"use strict";n.d(t,{_:()=>o,t:()=>i});var r=n(959),a=n(1527);const o=r.createContext(!1);function i(e){let{children:t}=e;const[n,i]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{i(!0)}),[]),(0,a.jsx)(o.Provider,{value:n,children:t})}},9910:(e,t,n)=>{"use strict";var r=n(959),a=n(4478),o=n(2402),i=n(9500),l=n(6809),s=n(3360);const u=[n(2458),n(5018),n(9534),n(3572)];var c=n(8723),d=n(8903),f=n(819),p=n(1527);function h(e){let{children:t}=e;return(0,p.jsx)(p.Fragment,{children:t})}var g=n(2058),m=n(8927),y=n(2915),b=n(475),v=n(5938),w=n(9790),k=n(8010),x=n(9398),S=n(7787),E=n(5695);function _(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,m.Z)(),r=(0,w.l)(),a=n[e].htmlLang,o=e=>e.replace("-","_");return(0,p.jsxs)(g.Z,{children:[Object.entries(n).map((e=>{let[t,{htmlLang:n}]=e;return(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)})),(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,p.jsx)("meta",{property:"og:locale",content:o(a)}),Object.values(n).filter((e=>a!==e.htmlLang)).map((e=>(0,p.jsx)("meta",{property:"og:locale:alternate",content:o(e.htmlLang)},`meta-og-${e.htmlLang}`)))]})}function C(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,m.Z)(),r=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,m.Z)(),{pathname:r}=(0,d.TH)();return e+(0,S.applyTrailingSlash)((0,y.ZP)(r),{trailingSlash:n,baseUrl:t})}(),a=t?`${n}${t}`:r;return(0,p.jsxs)(g.Z,{children:[(0,p.jsx)("meta",{property:"og:url",content:a}),(0,p.jsx)("link",{rel:"canonical",href:a})]})}function T(){const{i18n:{currentLocale:e}}=(0,m.Z)(),{metadata:t,image:n}=(0,b.L)();return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(g.Z,{children:[(0,p.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,p.jsx)("body",{className:k.h})]}),n&&(0,p.jsx)(v.d,{image:n}),(0,p.jsx)(C,{}),(0,p.jsx)(_,{}),(0,p.jsx)(E.Z,{tag:x.HX,locale:e}),(0,p.jsx)(g.Z,{children:t.map(((e,t)=>(0,p.jsx)("meta",{...e},t)))})]})}const A=new Map;var N=n(2565),P=n(6196),L=n(4848);function O(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];const a=u.map((t=>{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>a.forEach((e=>e?.()))}const R=function(e){let{children:t,location:n,previousLocation:r}=e;return(0,L.Z)((()=>{r!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:r}),O("onRouteDidUpdate",{previousLocation:r,location:n}))}),[r,n]),t};function j(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,f.f)(c.Z,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class I extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=s.Z.canUseDOM?O("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=O("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),j(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return(0,p.jsx)(R,{previousLocation:this.previousLocation,location:t,children:(0,p.jsx)(d.AW,{location:t,render:()=>e})})}}const M=I,D="__docusaurus-base-url-issue-banner-container",F="__docusaurus-base-url-issue-banner",z="__docusaurus-base-url-issue-banner-suggestion-container";function B(e){return`\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '${D}';\n var bannerHtml = ${JSON.stringify(function(e){return`\n<div id="${F}" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseUrl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">${e}</span> ${"/"===e?" (default value)":""}</p>\n <p>We suggest trying baseUrl = <span id="${z}" style="font-weight: bold; color: green;"></span></p>\n</div>\n`}(e)).replace(/</g,"\\<")};\n bannerContainer.innerHTML = bannerHtml;\n document.body.prepend(bannerContainer);\n var suggestionContainer = document.getElementById('${z}');\n var actualHomePagePath = window.location.pathname;\n var suggestedBaseUrl = actualHomePagePath.substr(-1) === '/'\n ? actualHomePagePath\n : actualHomePagePath + '/';\n suggestionContainer.innerHTML = suggestedBaseUrl;\n}\n`}function $(){const{siteConfig:{baseUrl:e}}=(0,m.Z)();return(0,p.jsx)(p.Fragment,{children:!s.Z.canUseDOM&&(0,p.jsx)(g.Z,{children:(0,p.jsx)("script",{children:B(e)})})})}function U(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,m.Z)(),{pathname:n}=(0,d.TH)();return t&&n===e?(0,p.jsx)($,{}):null}function Z(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:r,localeConfigs:a}}=(0,m.Z)(),o=(0,y.ZP)(e),{htmlLang:i,direction:l}=a[r];return(0,p.jsxs)(g.Z,{children:[(0,p.jsx)("html",{lang:i,dir:l}),(0,p.jsx)("title",{children:t}),(0,p.jsx)("meta",{property:"og:title",content:t}),(0,p.jsx)("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&(0,p.jsx)("meta",{name:"robots",content:"noindex, nofollow"}),e&&(0,p.jsx)("link",{rel:"icon",href:o})]})}var H=n(7045),W=n(2666);function V(){const e=(0,W.Z)();return(0,p.jsx)(g.Z,{children:(0,p.jsx)("html",{"data-has-hydrated":e})})}const q=(0,f.H)(c.Z);function G(){const e=function(e){if(A.has(e.pathname))return{...e,pathname:A.get(e.pathname)};if((0,f.f)(c.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return A.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return A.set(e.pathname,t),{...e,pathname:t}}((0,d.TH)());return(0,p.jsx)(M,{location:e,children:q})}function Y(){return(0,p.jsx)(H.Z,{children:(0,p.jsx)(P.M,{children:(0,p.jsxs)(N.t,{children:[(0,p.jsxs)(h,{children:[(0,p.jsx)(Z,{}),(0,p.jsx)(T,{}),(0,p.jsx)(U,{}),(0,p.jsx)(G,{})]}),(0,p.jsx)(V,{})]})})})}var K=n(6887);const Q=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const a=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;a?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var X=n(8645);const J=new Set,ee=new Set,te=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,ne={prefetch:e=>{if(!(e=>!te()&&!ee.has(e)&&!J.has(e))(e))return!1;J.add(e);const t=(0,f.f)(c.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(K).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,X.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?Q(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!te()&&!ee.has(e))(e)&&(ee.add(e),j(e))},re=Object.freeze(ne);function ae(e){let{children:t}=e;return"hash"===l.default.future.experimental_router?(0,p.jsx)(i.UT,{children:t}):(0,p.jsx)(i.VK,{children:t})}const oe=Boolean(!0);if(s.Z.canUseDOM){window.docusaurus=re;const e=document.getElementById("__docusaurus"),t=(0,p.jsx)(o.B6,{children:(0,p.jsx)(ae,{children:(0,p.jsx)(Y,{})})}),n=(e,t)=>{console.error("Docusaurus React Root onRecoverableError:",e,t)},i=()=>{if(window.docusaurusRoot)window.docusaurusRoot.render(t);else if(oe)window.docusaurusRoot=a.hydrateRoot(e,t,{onRecoverableError:n});else{const r=a.createRoot(e,{onRecoverableError:n});r.render(t),window.docusaurusRoot=r}};j(window.location.pathname).then((()=>{(0,r.startTransition)(i)}))}},6196:(e,t,n)=>{"use strict";n.d(t,{_:()=>d,M:()=>f});var r=n(959),a=n(6809);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"installation","docs":[{"id":"configuration/keymap","path":"/docs/configuration/keymap","sidebar":"docsSidebar"},{"id":"configuration/overview","path":"/docs/configuration/overview","sidebar":"docsSidebar"},{"id":"configuration/theme","path":"/docs/configuration/theme","sidebar":"docsSidebar"},{"id":"configuration/yazi","path":"/docs/configuration/yazi","sidebar":"docsSidebar"},{"id":"dds","path":"/docs/dds","sidebar":"docsSidebar"},{"id":"faq","path":"/docs/faq","sidebar":"docsSidebar"},{"id":"flavors/overview","path":"/docs/flavors/overview","sidebar":"docsSidebar"},{"id":"image-preview","path":"/docs/image-preview","sidebar":"docsSidebar"},{"id":"installation","path":"/docs/installation","sidebar":"docsSidebar"},{"id":"plugins/config","path":"/docs/plugins/config","sidebar":"docsSidebar"},{"id":"plugins/layout","path":"/docs/plugins/layout","sidebar":"docsSidebar"},{"id":"plugins/overview","path":"/docs/plugins/overview","sidebar":"docsSidebar"},{"id":"plugins/types","path":"/docs/plugins/types","sidebar":"docsSidebar"},{"id":"plugins/utils","path":"/docs/plugins/utils","sidebar":"docsSidebar"},{"id":"quick-start","path":"/docs/quick-start","sidebar":"docsSidebar"},{"id":"resources","path":"/docs/resources","sidebar":"docsSidebar"},{"id":"tips","path":"/docs/tips","sidebar":"docsSidebar"}],"draftIds":[],"sidebars":{"docsSidebar":{"link":{"path":"/docs/installation","label":"installation"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var l=n(7529);const s=JSON.parse('{"docusaurusVersion":"3.4.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.4.0"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"3.4.0"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.4.0"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.4.0"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.4.0"},"docusaurus-theme-search-algolia":{"type":"package","name":"@docusaurus/theme-search-algolia","version":"3.4.0"}}}');var u=n(1527);const c={siteConfig:a.default,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},d=r.createContext(c);function f(e){let{children:t}=e;return(0,u.jsx)(d.Provider,{value:c,children:t})}},7045:(e,t,n)=>{"use strict";n.d(t,{Z:()=>g});var r=n(959),a=n(3360),o=n(2058),i=n(7787),l=n(1576),s=n(6933),u=n(1527);function c(e){let{error:t,tryAgain:n}=e;return(0,u.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,u.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,u.jsx)("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,u.jsx)(d,{error:t})]})}function d(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,u.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:n})}function f(e){let{children:t}=e;return(0,u.jsx)(s.z,{value:{plugin:{name:"docusaurus-core-error-boundary",id:"default"}},children:t})}function p(e){let{error:t,tryAgain:n}=e;return(0,u.jsx)(f,{children:(0,u.jsxs)(g,{fallback:()=>(0,u.jsx)(c,{error:t,tryAgain:n}),children:[(0,u.jsx)(o.Z,{children:(0,u.jsx)("title",{children:"Page Error"})}),(0,u.jsx)(l.Z,{children:(0,u.jsx)(c,{error:t,tryAgain:n})})]})})}const h=e=>(0,u.jsx)(p,{...e});class g extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.Z.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??h)(e)}return e??null}}},3360:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},2058:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});n(959);var r=n(2402),a=n(1527);function o(e){return(0,a.jsx)(r.ql,{...e})}},6788:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(959),a=n(9500),o=n(7787),i=n(8927),l=n(3291),s=n(3360),u=n(6266),c=n(2915),d=n(1527);function f(e,t){let{isNavLink:n,to:f,href:p,activeClassName:h,isActive:g,"data-noBrokenLinkCheck":m,autoAddBaseUrl:y=!0,...b}=e;const{siteConfig:v}=(0,i.Z)(),{trailingSlash:w,baseUrl:k}=v,x=v.future.experimental_router,{withBaseUrl:S}=(0,c.Cg)(),E=(0,u.Z)(),_=(0,r.useRef)(null);(0,r.useImperativeHandle)(t,(()=>_.current));const C=f||p;const T=(0,l.Z)(C),A=C?.replace("pathname://","");let N=void 0!==A?(P=A,y&&(e=>e.startsWith("/"))(P)?S(P):P):void 0;var P;"hash"===x&&N?.startsWith("./")&&(N=N?.slice(1)),N&&T&&(N=(0,o.applyTrailingSlash)(N,{trailingSlash:w,baseUrl:k}));const L=(0,r.useRef)(!1),O=n?a.OL:a.rU,R=s.Z.canUseIntersectionObserver,j=(0,r.useRef)(),I=()=>{L.current||null==N||(window.docusaurus.preload(N),L.current=!0)};(0,r.useEffect)((()=>(!R&&T&&null!=N&&window.docusaurus.prefetch(N),()=>{R&&j.current&&j.current.disconnect()})),[j,N,R,T]);const M=N?.startsWith("#")??!1,D=!b.target||"_self"===b.target,F=!N||!T||!D;return m||!M&&F||E.collectLink(N),b.id&&E.collectAnchor(b.id),F?(0,d.jsx)("a",{ref:_,href:N,...C&&!T&&{target:"_blank",rel:"noopener noreferrer"},...b}):(0,d.jsx)(O,{...b,onMouseEnter:I,onTouchStart:I,innerRef:e=>{_.current=e,R&&e&&T&&(j.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(j.current.unobserve(e),j.current.disconnect(),null!=N&&window.docusaurus.prefetch(N))}))})),j.current.observe(e))},to:N,...n&&{isActive:g,activeClassName:h}})}const p=r.forwardRef(f)},259:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u,I:()=>s});var r=n(959),a=n(1527);function o(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var i=n(7529);function l(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return i[t??n]??n??t}function s(e,t){let{message:n,id:r}=e;return o(l({message:n,id:r}),t)}function u(e){let{children:t,id:n,values:r}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal <Translate> children",t),new Error("The Docusaurus <Translate> component only accept simple string values");const i=l({message:t,id:n});return(0,a.jsx)(a.Fragment,{children:o(i,r)})}},1841:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},3291:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>a,b:()=>r})},2915:(e,t,n)=>{"use strict";n.d(t,{Cg:()=>i,ZP:()=>l});var r=n(959),a=n(8927),o=n(3291);function i(){const{siteConfig:e}=(0,a.Z)(),{baseUrl:t,url:n}=e,i=e.future.experimental_router,l=(0,r.useCallback)(((e,r)=>function(e){let{siteUrl:t,baseUrl:n,url:r,options:{forcePrependBaseUrl:a=!1,absolute:i=!1}={},router:l}=e;if(!r||r.startsWith("#")||(0,o.b)(r))return r;if("hash"===l)return r.startsWith("/")?`.${r}`:`./${r}`;if(a)return n+r.replace(/^\//,"");if(r===n.replace(/\/$/,""))return n;const s=r.startsWith(n)?r:n+r.replace(/^\//,"");return i?t+s:s}({siteUrl:n,baseUrl:t,url:e,options:r,router:i})),[n,t,i]);return{withBaseUrl:l}}function l(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},6266:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(959);n(1527);const a=r.createContext({collectAnchor:()=>{},collectLink:()=>{}}),o=()=>(0,r.useContext)(a);function i(){return o()}},8927:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(959),a=n(6196);function o(){return(0,r.useContext)(a._)}},2666:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(959),a=n(2565);function o(){return(0,r.useContext)(a._)}},4848:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(959);const a=n(3360).Z.canUseDOM?r.useLayoutEffect:r.useEffect},3689:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(959),a=n(6933);function o(){const e=r.useContext(a._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}},8645:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function a(e){const t={};return function e(n,a){Object.entries(n).forEach((n=>{let[o,i]=n;const l=a?`${a}.${o}`:o;r(i)?e(i,l):t[l]=i}))}(e),t}},6933:(e,t,n)=>{"use strict";n.d(t,{_:()=>o,z:()=>i});var r=n(959),a=n(1527);const o=r.createContext(null);function i(e){let{children:t,value:n}=e;const i=r.useContext(o),l=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:i,value:n})),[i,n]);return(0,a.jsx)(o.Provider,{value:l,children:t})}},9775:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>y,gA:()=>p,WS:()=>h,_r:()=>d,Jo:()=>b,zh:()=>f,yW:()=>m,gB:()=>g});var r=n(8903),a=n(8927),o=n(1841);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,a.Z)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const l=e=>e.versions.find((e=>e.isLast));function s(e,t){const n=l(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}function u(e,t){const n=s(e,t),a=n?.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const c={},d=()=>i("docusaurus-plugin-content-docs")??c,f=e=>{try{return function(e,t,n){void 0===t&&(t=o.m),void 0===n&&(n={});const r=i(e),a=r?.[t];if(!a&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return a}("docusaurus-plugin-content-docs",e,{failfast:!0})}catch(t){throw new Error("You are using a feature of the Docusaurus docs plugin, but this plugin does not seem to be enabled"+("Default"===e?"":` (pluginId=${e}`),{cause:t})}};function p(e){void 0===e&&(e={});const t=d(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const a=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.LX)(t,{path:n.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return o}(t,n,e)}function h(e){void 0===e&&(e={});const t=p(e),{pathname:n}=(0,r.TH)();if(!t)return;return{activePlugin:t,activeVersion:s(t.pluginData,n)}}function g(e){return f(e).versions}function m(e){const t=f(e);return l(t)}function y(e){const t=f(e),{pathname:n}=(0,r.TH)();return u(t,n)}function b(e){const t=f(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=l(e);return{latestDocSuggestion:u(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},4144:(e,t,n)=>{"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function a(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i.apply(this,arguments)}var l=n(959),s=[],u=[];var c=l.createContext(null);function d(e){var t=e(),n={loading:!0,loaded:null,error:null};return n.promise=t.then((function(e){return n.loading=!1,n.loaded=e,e})).catch((function(e){throw n.loading=!1,n.error=e,e})),n}function f(e){var t={loading:!1,loaded:{},error:null},n=[];try{Object.keys(e).forEach((function(r){var a=d(e[r]);a.loading?t.loading=!0:(t.loaded[r]=a.loaded,t.error=a.error),n.push(a.promise),a.promise.then((function(e){t.loaded[r]=e})).catch((function(e){t.error=e}))}))}catch(r){t.error=r}return t.promise=Promise.all(n).then((function(e){return t.loading=!1,e})).catch((function(e){throw t.loading=!1,e})),t}function p(e,t){return l.createElement((n=e)&&n.__esModule?n.default:n,t);var n}function h(e,t){var d,f;if(!t.loading)throw new Error("react-loadable requires a `loading` component");var h=i({loader:null,loading:null,delay:200,timeout:null,render:p,webpack:null,modules:null},t),g=null;function m(){return g||(g=e(h.loader)),g.promise}return s.push(m),"function"==typeof h.webpack&&u.push((function(){if((0,h.webpack)().every((function(e){return void 0!==e&&void 0!==n.m[e]})))return m()})),f=d=function(t){function n(n){var r;return o(a(a(r=t.call(this,n)||this)),"retry",(function(){r.setState({error:null,loading:!0,timedOut:!1}),g=e(h.loader),r._loadModule()})),m(),r.state={error:g.error,pastDelay:!1,timedOut:!1,loading:g.loading,loaded:g.loaded},r}r(n,t),n.preload=function(){return m()};var i=n.prototype;return i.UNSAFE_componentWillMount=function(){this._loadModule()},i.componentDidMount=function(){this._mounted=!0},i._loadModule=function(){var e=this;if(this.context&&Array.isArray(h.modules)&&h.modules.forEach((function(t){e.context.report(t)})),g.loading){var t=function(t){e._mounted&&e.setState(t)};"number"==typeof h.delay&&(0===h.delay?this.setState({pastDelay:!0}):this._delay=setTimeout((function(){t({pastDelay:!0})}),h.delay)),"number"==typeof h.timeout&&(this._timeout=setTimeout((function(){t({timedOut:!0})}),h.timeout));var n=function(){t({error:g.error,loaded:g.loaded,loading:g.loading}),e._clearTimeouts()};g.promise.then((function(){return n(),null})).catch((function(e){return n(),null}))}},i.componentWillUnmount=function(){this._mounted=!1,this._clearTimeouts()},i._clearTimeouts=function(){clearTimeout(this._delay),clearTimeout(this._timeout)},i.render=function(){return this.state.loading||this.state.error?l.createElement(h.loading,{isLoading:this.state.loading,pastDelay:this.state.pastDelay,timedOut:this.state.timedOut,error:this.state.error,retry:this.retry}):this.state.loaded?h.render(this.state.loaded,this.props):null},n}(l.Component),o(d,"contextType",c),f}function g(e){return h(d,e)}g.Map=function(e){if("function"!=typeof e.render)throw new Error("LoadableMap requires a `render(loaded, props)` function");return h(f,e)};var m=function(e){function t(){return e.apply(this,arguments)||this}return r(t,e),t.prototype.render=function(){return l.createElement(c.Provider,{value:{report:this.props.report}},l.Children.only(this.props.children))},t}(l.Component);function y(e){for(var t=[];e.length;){var n=e.pop();t.push(n())}return Promise.all(t).then((function(){if(e.length)return y(e)}))}g.Capture=m,g.preloadAll=function(){return new Promise((function(e,t){y(s).then(e,t)}))},g.preloadReady=function(){return new Promise((function(e,t){y(u).then(e,e)}))},e.exports=g},9534:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(9981),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},5018:(e,t,n)=>{"use strict";n.r(t);var r=n(2281),a=n(6809);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{"php"===e&&n(1559),n(7854)(`./prism-${e}`)})),delete globalThis.Prism}(r.p1)},7623:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});n(959);var r=n(5341),a=n(259),o=n(475),i=n(6788),l=n(6266);const s={anchorWithStickyNavbar:"anchorWithStickyNavbar_Nfoc",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WwFx"};var u=n(1527);function c(e){let{as:t,id:n,...c}=e;const d=(0,l.Z)(),{navbar:{hideOnScroll:f}}=(0,o.L)();if("h1"===t||!n)return(0,u.jsx)(t,{...c,id:void 0});d.collectAnchor(n);const p=(0,a.I)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof c.children?c.children:n});return(0,u.jsxs)(t,{...c,className:(0,r.Z)("anchor",f?s.anchorWithHideOnScrollNavbar:s.anchorWithStickyNavbar,c.className),id:n,children:[c.children,(0,u.jsx)(i.Z,{className:"hash-link",to:`#${n}`,"aria-label":p,title:p,children:"\u200b"})]})}},3407:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});n(959);const r={iconExternalLink:"iconExternalLink_ylYq"};var a=n(1527);function o(e){let{width:t=13.5,height:n=13.5}=e;return(0,a.jsx)("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:r.iconExternalLink,children:(0,a.jsx)("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"})})}},1576:(e,t,n)=>{"use strict";n.d(t,{Z:()=>Ot});var r=n(959),a=n(5341),o=n(7045),i=n(5938),l=n(8903),s=n(259),u=n(5610),c=n(1527);const d="__docusaurus_skipToContent_fallback";function f(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function p(){const e=(0,r.useRef)(null),{action:t}=(0,l.k6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&f(t)}),[]);return(0,u.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&f(e.current)})),{containerRef:e,onClick:n}}const h=(0,s.I)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function g(e){const t=e.children??h,{containerRef:n,onClick:r}=p();return(0,c.jsx)("div",{ref:n,role:"region","aria-label":h,children:(0,c.jsx)("a",{...e,href:`#${d}`,onClick:r,children:t})})}var m=n(961),y=n(8010);const b={skipToContent:"skipToContent_Kzag"};function v(){return(0,c.jsx)(g,{className:b.skipToContent})}var w=n(475),k=n(1387);function x(e){let{width:t=21,height:n=21,color:r="currentColor",strokeWidth:a=1.2,className:o,...i}=e;return(0,c.jsx)("svg",{viewBox:"0 0 15 15",width:t,height:n,...i,children:(0,c.jsx)("g",{stroke:r,strokeWidth:a,children:(0,c.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})})}const S={closeButton:"closeButton_KAc_"};function E(e){return(0,c.jsx)("button",{type:"button","aria-label":(0,s.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"}),...e,className:(0,a.Z)("clean-btn close",S.closeButton,e.className),children:(0,c.jsx)(x,{width:14,height:14,strokeWidth:3.1})})}const _={content:"content_ywzz"};function C(e){const{announcementBar:t}=(0,w.L)(),{content:n}=t;return(0,c.jsx)("div",{...e,className:(0,a.Z)(_.content,e.className),dangerouslySetInnerHTML:{__html:n}})}const T={announcementBar:"announcementBar_ON6v",announcementBarPlaceholder:"announcementBarPlaceholder_Usd8",announcementBarClose:"announcementBarClose_j27w",announcementBarContent:"announcementBarContent_snsp"};function A(){const{announcementBar:e}=(0,w.L)(),{isActive:t,close:n}=(0,k.n)();if(!t)return null;const{backgroundColor:r,textColor:a,isCloseable:o}=e;return(0,c.jsxs)("div",{className:T.announcementBar,style:{backgroundColor:r,color:a},role:"banner",children:[o&&(0,c.jsx)("div",{className:T.announcementBarPlaceholder}),(0,c.jsx)(C,{className:T.announcementBarContent}),o&&(0,c.jsx)(E,{onClick:n,className:T.announcementBarClose})]})}var N=n(2582),P=n(9812);var L=n(3272),O=n(625);const R=r.createContext(null);function j(e){let{children:t}=e;const n=function(){const e=(0,N.e)(),t=(0,O.HY)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,L.D9)(o);return(0,r.useEffect)((()=>{o&&!i&&a(!0)}),[o,i]),(0,r.useEffect)((()=>{o?e.shown||a(!0):a(!1)}),[e.shown,o]),(0,r.useMemo)((()=>[n,a]),[n])}();return(0,c.jsx)(R.Provider,{value:n,children:t})}function I(e){if(e.component){const t=e.component;return(0,c.jsx)(t,{...e.props})}}function M(){const e=(0,r.useContext)(R);if(!e)throw new L.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,O.HY)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:I(o)})),[a,o,t])}function D(e){let{header:t,primaryMenu:n,secondaryMenu:r}=e;const{shown:o}=M();return(0,c.jsxs)("div",{className:"navbar-sidebar",children:[t,(0,c.jsxs)("div",{className:(0,a.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":o}),children:[(0,c.jsx)("div",{className:"navbar-sidebar__item menu",children:n}),(0,c.jsx)("div",{className:"navbar-sidebar__item menu",children:r})]})]})}var F=n(9843),z=n(2666);function B(e){return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,c.jsx)("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"})})}function $(e){return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,c.jsx)("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"})})}const U={toggle:"toggle_TiUU",toggleButton:"toggleButton_opfx",darkToggleIcon:"darkToggleIcon_dlSY",lightToggleIcon:"lightToggleIcon_gnuG",toggleButtonDisabled:"toggleButtonDisabled_jsqO"};function Z(e){let{className:t,buttonClassName:n,value:r,onChange:o}=e;const i=(0,z.Z)(),l=(0,s.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===r?(0,s.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,s.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return(0,c.jsx)("div",{className:(0,a.Z)(U.toggle,t),children:(0,c.jsxs)("button",{className:(0,a.Z)("clean-btn",U.toggleButton,!i&&U.toggleButtonDisabled,n),type:"button",onClick:()=>o("dark"===r?"light":"dark"),disabled:!i,title:l,"aria-label":l,"aria-live":"polite",children:[(0,c.jsx)(B,{className:(0,a.Z)(U.toggleIcon,U.lightToggleIcon)}),(0,c.jsx)($,{className:(0,a.Z)(U.toggleIcon,U.darkToggleIcon)})]})})}const H=r.memo(Z),W={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_D_4u"};function V(e){let{className:t}=e;const n=(0,w.L)().navbar.style,r=(0,w.L)().colorMode.disableSwitch,{colorMode:a,setColorMode:o}=(0,F.I)();return r?null:(0,c.jsx)(H,{className:t,buttonClassName:"dark"===n?W.darkNavbarColorModeToggle:void 0,value:a,onChange:o})}var q=n(3165);function G(){return(0,c.jsx)(q.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function Y(){const e=(0,N.e)();return(0,c.jsx)("button",{type:"button","aria-label":(0,s.I)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle(),children:(0,c.jsx)(x,{color:"var(--ifm-color-emphasis-600)"})})}function K(){return(0,c.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,c.jsx)(G,{}),(0,c.jsx)(V,{className:"margin-right--md"}),(0,c.jsx)(Y,{})]})}var Q=n(6788),X=n(2915),J=n(3291),ee=n(4632),te=n(3407);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:r,href:a,label:o,html:i,isDropdownLink:l,prependBaseUrlToHref:s,...u}=e;const d=(0,X.ZP)(r),f=(0,X.ZP)(t),p=(0,X.ZP)(a,{forcePrependBaseUrl:!0}),h=o&&a&&!(0,J.Z)(a),g=i?{dangerouslySetInnerHTML:{__html:i}}:{children:(0,c.jsxs)(c.Fragment,{children:[o,h&&(0,c.jsx)(te.Z,{...l&&{width:12,height:12}})]})};return a?(0,c.jsx)(Q.Z,{href:s?p:a,...u,...g}):(0,c.jsx)(Q.Z,{to:d,isNavLink:!0,...(t||n)&&{isActive:(e,t)=>n?(0,ee.F)(n,t.pathname):t.pathname.startsWith(f)},...u,...g})}function re(e){let{className:t,isDropdownItem:n=!1,...r}=e;const o=(0,c.jsx)(ne,{className:(0,a.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n,...r});return n?(0,c.jsx)("li",{children:o}):o}function ae(e){let{className:t,isDropdownItem:n,...r}=e;return(0,c.jsx)("li",{className:"menu__list-item",children:(0,c.jsx)(ne,{className:(0,a.Z)("menu__link",t),...r})})}function oe(e){let{mobile:t=!1,position:n,...r}=e;const a=t?ae:re;return(0,c.jsx)(a,{...r,activeClassName:r.activeClassName??(t?"menu__link--active":"navbar__link--active")})}var ie=n(5267),le=n(9057),se=n(8927);const ue={dropdownNavbarItemMobile:"dropdownNavbarItemMobile_dv8G"};function ce(e,t){return e.some((e=>function(e,t){return!!(0,le.Mg)(e.to,t)||!!(0,ee.F)(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function de(e){let{items:t,position:n,className:o,onClick:i,...l}=e;const s=(0,r.useRef)(null),[u,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{s.current&&!s.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[s]),(0,c.jsxs)("div",{ref:s,className:(0,a.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":u}),children:[(0,c.jsx)(ne,{"aria-haspopup":"true","aria-expanded":u,role:"button",href:l.to?void 0:"#",className:(0,a.Z)("navbar__link",o),...l,onClick:l.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!u))},children:l.children??l.label}),(0,c.jsx)("ul",{className:"dropdown__menu",children:t.map(((e,t)=>(0,r.createElement)(He,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t})))})]})}function fe(e){let{items:t,className:n,position:o,onClick:i,...s}=e;const u=function(){const{siteConfig:{baseUrl:e}}=(0,se.Z)(),{pathname:t}=(0,l.TH)();return t.replace(e,"/")}(),d=ce(t,u),{collapsed:f,toggleCollapsed:p,setCollapsed:h}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&h(!d)}),[u,d,h]),(0,c.jsxs)("li",{className:(0,a.Z)("menu__list-item",{"menu__list-item--collapsed":f}),children:[(0,c.jsx)(ne,{role:"button",className:(0,a.Z)(ue.dropdownNavbarItemMobile,"menu__link menu__link--sublist menu__link--sublist-caret",n),...s,onClick:e=>{e.preventDefault(),p()},children:s.children??s.label}),(0,c.jsx)(ie.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:f,children:t.map(((e,t)=>(0,r.createElement)(He,{mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active",...e,key:t})))})]})}function pe(e){let{mobile:t=!1,...n}=e;const r=t?fe:de;return(0,c.jsx)(r,{...n})}var he=n(9790);function ge(e){let{width:t=20,height:n=20,...r}=e;return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0,...r,children:(0,c.jsx)("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"})})}const me="iconLanguage_UaRh";var ye=n(422);function be(){return r.createElement("svg",{width:"15",height:"15",className:"DocSearch-Control-Key-Icon"},r.createElement("path",{d:"M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953",strokeWidth:"1.2",stroke:"currentColor",fill:"none",strokeLinecap:"square"}))}var ve=n(35),we=["translations"];function ke(){return ke=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ke.apply(this,arguments)}function xe(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,a,o=[],i=!0,l=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);i=!0);}catch(s){l=!0,a=s}finally{try{i||null==n.return||n.return()}finally{if(l)throw a}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return Se(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Se(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Se(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Ee(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var _e="Ctrl";var Ce=r.forwardRef((function(e,t){var n=e.translations,a=void 0===n?{}:n,o=Ee(e,we),i=a.buttonText,l=void 0===i?"Search":i,s=a.buttonAriaLabel,u=void 0===s?"Search":s,c=xe((0,r.useState)(null),2),d=c[0],f=c[1];return(0,r.useEffect)((function(){"undefined"!=typeof navigator&&(/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?f("\u2318"):f(_e))}),[]),r.createElement("button",ke({type:"button",className:"DocSearch DocSearch-Button","aria-label":u},o,{ref:t}),r.createElement("span",{className:"DocSearch-Button-Container"},r.createElement(ve.W,null),r.createElement("span",{className:"DocSearch-Button-Placeholder"},l)),r.createElement("span",{className:"DocSearch-Button-Keys"},null!==d&&r.createElement(r.Fragment,null,r.createElement("kbd",{className:"DocSearch-Button-Key"},d===_e?r.createElement(be,null):d),r.createElement("kbd",{className:"DocSearch-Button-Key"},"K"))))})),Te=n(2058),Ae=n(1029),Ne=n(2156),Pe=n(9398);const Le={button:{buttonText:(0,s.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"}),buttonAriaLabel:(0,s.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"})},modal:{searchBox:{resetButtonTitle:(0,s.I)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),resetButtonAriaLabel:(0,s.I)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),cancelButtonText:(0,s.I)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"}),cancelButtonAriaLabel:(0,s.I)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"})},startScreen:{recentSearchesTitle:(0,s.I)({id:"theme.SearchModal.startScreen.recentSearchesTitle",message:"Recent",description:"The title for recent searches"}),noRecentSearchesText:(0,s.I)({id:"theme.SearchModal.startScreen.noRecentSearchesText",message:"No recent searches",description:"The text when no recent searches"}),saveRecentSearchButtonTitle:(0,s.I)({id:"theme.SearchModal.startScreen.saveRecentSearchButtonTitle",message:"Save this search",description:"The label for save recent search button"}),removeRecentSearchButtonTitle:(0,s.I)({id:"theme.SearchModal.startScreen.removeRecentSearchButtonTitle",message:"Remove this search from history",description:"The label for remove recent search button"}),favoriteSearchesTitle:(0,s.I)({id:"theme.SearchModal.startScreen.favoriteSearchesTitle",message:"Favorite",description:"The title for favorite searches"}),removeFavoriteSearchButtonTitle:(0,s.I)({id:"theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle",message:"Remove this search from favorites",description:"The label for remove favorite search button"})},errorScreen:{titleText:(0,s.I)({id:"theme.SearchModal.errorScreen.titleText",message:"Unable to fetch results",description:"The title for error screen of search modal"}),helpText:(0,s.I)({id:"theme.SearchModal.errorScreen.helpText",message:"You might want to check your network connection.",description:"The help text for error screen of search modal"})},footer:{selectText:(0,s.I)({id:"theme.SearchModal.footer.selectText",message:"to select",description:"The explanatory text of the action for the enter key"}),selectKeyAriaLabel:(0,s.I)({id:"theme.SearchModal.footer.selectKeyAriaLabel",message:"Enter key",description:"The ARIA label for the Enter key button that makes the selection"}),navigateText:(0,s.I)({id:"theme.SearchModal.footer.navigateText",message:"to navigate",description:"The explanatory text of the action for the Arrow up and Arrow down key"}),navigateUpKeyAriaLabel:(0,s.I)({id:"theme.SearchModal.footer.navigateUpKeyAriaLabel",message:"Arrow up",description:"The ARIA label for the Arrow up key button that makes the navigation"}),navigateDownKeyAriaLabel:(0,s.I)({id:"theme.SearchModal.footer.navigateDownKeyAriaLabel",message:"Arrow down",description:"The ARIA label for the Arrow down key button that makes the navigation"}),closeText:(0,s.I)({id:"theme.SearchModal.footer.closeText",message:"to close",description:"The explanatory text of the action for Escape key"}),closeKeyAriaLabel:(0,s.I)({id:"theme.SearchModal.footer.closeKeyAriaLabel",message:"Escape key",description:"The ARIA label for the Escape key button that close the modal"}),searchByText:(0,s.I)({id:"theme.SearchModal.footer.searchByText",message:"Search by",description:"The text explain that the search is making by Algolia"})},noResultsScreen:{noResultsText:(0,s.I)({id:"theme.SearchModal.noResultsScreen.noResultsText",message:"No results for",description:"The text explains that there are no results for the following search"}),suggestedQueryText:(0,s.I)({id:"theme.SearchModal.noResultsScreen.suggestedQueryText",message:"Try searching for",description:"The text for the suggested query when no results are found for the following search"}),reportMissingResultsText:(0,s.I)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsText",message:"Believe this query should return results?",description:"The text for the question where the user thinks there are missing results"}),reportMissingResultsLinkText:(0,s.I)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsLinkText",message:"Let us know.",description:"The text for the link to report missing results"})}},placeholder:(0,s.I)({id:"theme.SearchModal.placeholder",message:"Search docs",description:"The placeholder of the input of the DocSearch pop-up modal"})};let Oe=null;function Re(e){let{hit:t,children:n}=e;return(0,c.jsx)(Q.Z,{to:t.url,children:n})}function je(e){let{state:t,onClose:n}=e;const r=(0,Ae.M)();return(0,c.jsx)(Q.Z,{to:r(t.query),onClick:n,children:(0,c.jsx)(s.Z,{id:"theme.SearchBar.seeAll",values:{count:t.context.nbHits},children:"See all {count} results"})})}function Ie(e){let{contextualSearch:t,externalUrlRegex:a,...o}=e;const{siteMetadata:i}=(0,se.Z)(),s=(0,Ne.l)(),u=function(){const{locale:e,tags:t}=(0,Pe._q)();return[`language:${e}`,t.map((e=>`docusaurus_tag:${e}`))]}(),d=o.searchParameters?.facetFilters??[],f=t?function(e,t){const n=e=>"string"==typeof e?[e]:e;return[...n(e),...n(t)]}(u,d):d,p={...o.searchParameters,facetFilters:f},h=(0,l.k6)(),g=(0,r.useRef)(null),m=(0,r.useRef)(null),[y,b]=(0,r.useState)(!1),[v,w]=(0,r.useState)(void 0),k=(0,r.useCallback)((()=>Oe?Promise.resolve():Promise.all([n.e(86).then(n.bind(n,2086)),Promise.all([n.e(532),n.e(60)]).then(n.bind(n,5060)),Promise.all([n.e(532),n.e(153)]).then(n.bind(n,4153))]).then((e=>{let[{DocSearchModal:t}]=e;Oe=t}))),[]),x=(0,r.useCallback)((()=>{if(!g.current){const e=document.createElement("div");g.current=e,document.body.insertBefore(e,document.body.firstChild)}}),[]),S=(0,r.useCallback)((()=>{x(),k().then((()=>b(!0)))}),[k,x]),E=(0,r.useCallback)((()=>{b(!1),m.current?.focus()}),[]),_=(0,r.useCallback)((e=>{e.preventDefault(),w(e.key),S()}),[S]),C=(0,r.useRef)({navigate(e){let{itemUrl:t}=e;(0,ee.F)(a,t)?window.location.href=t:h.push(t)}}).current,T=(0,r.useRef)((e=>o.transformItems?o.transformItems(e):e.map((e=>({...e,url:s(e.url)}))))).current,A=(0,r.useMemo)((()=>e=>(0,c.jsx)(je,{...e,onClose:E})),[E]),N=(0,r.useCallback)((e=>(e.addAlgoliaAgent("docusaurus",i.docusaurusVersion),e)),[i.docusaurusVersion]);return function(e){var t=e.isOpen,n=e.onOpen,a=e.onClose,o=e.onInput,i=e.searchButtonRef;r.useEffect((function(){function e(e){var r;(27===e.keyCode&&t||"k"===(null===(r=e.key)||void 0===r?void 0:r.toLowerCase())&&(e.metaKey||e.ctrlKey)||!function(e){var t=e.target,n=t.tagName;return t.isContentEditable||"INPUT"===n||"SELECT"===n||"TEXTAREA"===n}(e)&&"/"===e.key&&!t)&&(e.preventDefault(),t?a():document.body.classList.contains("DocSearch--active")||document.body.classList.contains("DocSearch--active")||n()),i&&i.current===document.activeElement&&o&&/[a-zA-Z0-9]/.test(String.fromCharCode(e.keyCode))&&o(e)}return window.addEventListener("keydown",e),function(){window.removeEventListener("keydown",e)}}),[t,n,a,o,i])}({isOpen:y,onOpen:S,onClose:E,onInput:_,searchButtonRef:m}),(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(Te.Z,{children:(0,c.jsx)("link",{rel:"preconnect",href:`https://${o.appId}-dsn.algolia.net`,crossOrigin:"anonymous"})}),(0,c.jsx)(Ce,{onTouchStart:k,onFocus:k,onMouseOver:k,onClick:S,ref:m,translations:Le.button}),y&&Oe&&g.current&&(0,ye.createPortal)((0,c.jsx)(Oe,{onClose:E,initialScrollY:window.scrollY,initialQuery:v,navigator:C,transformItems:T,hitComponent:Re,transformSearchClient:N,...o.searchPagePath&&{resultsFooterComponent:A},...o,searchParameters:p,placeholder:Le.placeholder,translations:Le.modal}),g.current)]})}function Me(){const{siteConfig:e}=(0,se.Z)();return(0,c.jsx)(Ie,{...e.themeConfig.algolia})}const De={navbarSearchContainer:"navbarSearchContainer_dDWb"};function Fe(e){let{children:t,className:n}=e;return(0,c.jsx)("div",{className:(0,a.Z)(n,De.navbarSearchContainer),children:t})}var ze=n(9775),Be=n(5079);var $e=n(2632);const Ue=e=>e.docs.find((t=>t.id===e.mainDocId));const Ze={default:oe,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:r,queryString:a="",...o}=e;const{i18n:{currentLocale:i,locales:u,localeConfigs:d}}=(0,se.Z)(),f=(0,he.l)(),{search:p,hash:h}=(0,l.TH)(),g=[...n,...u.map((e=>{const n=`${`pathname://${f.createUrl({locale:e,fullyQualified:!1})}`}${p}${h}${a}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...r],m=t?(0,s.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return(0,c.jsx)(pe,{...o,mobile:t,label:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(ge,{className:me}),m]}),items:g})},search:function(e){let{mobile:t,className:n}=e;return t?null:(0,c.jsx)(Fe,{className:n,children:(0,c.jsx)(Me,{})})},dropdown:pe,html:function(e){let{value:t,className:n,mobile:r=!1,isDropdownItem:o=!1}=e;const i=o?"li":"div";return(0,c.jsx)(i,{className:(0,a.Z)({navbar__item:!r&&!o,"menu__list-item":r},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:r,...a}=e;const{activeDoc:o}=(0,ze.Iw)(r),i=(0,Be.vY)(t,r),l=o?.path===i?.path;return null===i||i.unlisted&&!l?null:(0,c.jsx)(oe,{exact:!0,...a,isActive:()=>l||!!o?.sidebar&&o.sidebar===i.sidebar,label:n??i.id,to:i.path})},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:r,...a}=e;const{activeDoc:o}=(0,ze.Iw)(r),i=(0,Be.oz)(t,r).link;if(!i)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return(0,c.jsx)(oe,{exact:!0,...a,isActive:()=>o?.sidebar===t,label:n??i.label,to:i.path})},docsVersion:function(e){let{label:t,to:n,docsPluginId:r,...a}=e;const o=(0,Be.lO)(r)[0],i=t??o.label,l=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(o).path;return(0,c.jsx)(oe,{...a,label:i,to:l})},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:r,dropdownItemsBefore:a,dropdownItemsAfter:o,...i}=e;const{search:u,hash:d}=(0,l.TH)(),f=(0,ze.Iw)(n),p=(0,ze.gB)(n),{savePreferredVersionName:h}=(0,$e.J)(n),g=[...a,...p.map((e=>{const t=f.alternateDocVersions[e.name]??Ue(e);return{label:e.label,to:`${t.path}${u}${d}`,isActive:()=>e===f.activeVersion,onClick:()=>h(e.name)}})),...o],m=(0,Be.lO)(n)[0],y=t&&g.length>1?(0,s.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):m.label,b=t&&g.length>1?void 0:Ue(m).path;return g.length<=1?(0,c.jsx)(oe,{...i,mobile:t,label:y,to:b,isActive:r?()=>!1:void 0}):(0,c.jsx)(pe,{...i,mobile:t,label:y,to:b,items:g,isActive:r?()=>!1:void 0})}};function He(e){let{type:t,...n}=e;const r=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),a=Ze[r];if(!a)throw new Error(`No NavbarItem component found for type "${t}".`);return(0,c.jsx)(a,{...n})}function We(){const e=(0,N.e)(),t=(0,w.L)().navbar.items;return(0,c.jsx)("ul",{className:"menu__list",children:t.map(((t,n)=>(0,r.createElement)(He,{mobile:!0,...t,onClick:()=>e.toggle(),key:n})))})}function Ve(e){return(0,c.jsx)("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back",children:(0,c.jsx)(s.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)",children:"\u2190 Back to main menu"})})}function qe(){const e=0===(0,w.L)().navbar.items.length,t=M();return(0,c.jsxs)(c.Fragment,{children:[!e&&(0,c.jsx)(Ve,{onClick:()=>t.hide()}),t.content]})}function Ge(){const e=(0,N.e)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?(0,c.jsx)(D,{header:(0,c.jsx)(K,{}),primaryMenu:(0,c.jsx)(We,{}),secondaryMenu:(0,c.jsx)(qe,{})}):null}const Ye={navbarHideable:"navbarHideable_fWn9",navbarHidden:"navbarHidden_u0mJ"};function Ke(e){return(0,c.jsx)("div",{role:"presentation",...e,className:(0,a.Z)("navbar-sidebar__backdrop",e.className)})}function Qe(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,w.L)(),i=(0,N.e)(),{navbarRef:l,isNavbarVisible:d}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,P.RF)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i<o.current)return void n(!0);if(a.current)return void(a.current=!1);const l=r?.scrollY,s=document.documentElement.scrollHeight-o.current,u=window.innerHeight;l&&i>=l?n(!1):i+u<s&&n(!0)})),(0,u.S)((t=>{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return(0,c.jsxs)("nav",{ref:l,"aria-label":(0,s.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,a.Z)("navbar","navbar--fixed-top",n&&[Ye.navbarHideable,!d&&Ye.navbarHidden],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown}),children:[t,(0,c.jsx)(Ke,{onClick:i.toggle}),(0,c.jsx)(Ge,{})]})}var Xe=n(7787);const Je={errorBoundaryError:"errorBoundaryError_jk6f",errorBoundaryFallback:"errorBoundaryFallback_O5DU"};function et(e){return(0,c.jsx)("button",{type:"button",...e,children:(0,c.jsx)(s.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})})}function tt(e){let{error:t}=e;const n=(0,Xe.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,c.jsx)("p",{className:Je.errorBoundaryError,children:n})}class nt extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const rt="right";function at(e){let{width:t=30,height:n=30,className:r,...a}=e;return(0,c.jsx)("svg",{className:r,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true",...a,children:(0,c.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"})})}function ot(){const{toggle:e,shown:t}=(0,N.e)();return(0,c.jsx)("button",{onClick:e,"aria-label":(0,s.I)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button",children:(0,c.jsx)(at,{})})}const it={colorModeToggle:"colorModeToggle_z618"};function lt(e){let{items:t}=e;return(0,c.jsx)(c.Fragment,{children:t.map(((e,t)=>(0,c.jsx)(nt,{onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t}),children:(0,c.jsx)(He,{...e})},t)))})}function st(e){let{left:t,right:n}=e;return(0,c.jsxs)("div",{className:"navbar__inner",children:[(0,c.jsx)("div",{className:"navbar__items",children:t}),(0,c.jsx)("div",{className:"navbar__items navbar__items--right",children:n})]})}function ut(){const e=(0,N.e)(),t=(0,w.L)().navbar.items,[n,r]=function(e){function t(e){return"left"===(e.position??rt)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),a=t.find((e=>"search"===e.type));return(0,c.jsx)(st,{left:(0,c.jsxs)(c.Fragment,{children:[!e.disabled&&(0,c.jsx)(ot,{}),(0,c.jsx)(G,{}),(0,c.jsx)(lt,{items:n})]}),right:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(lt,{items:r}),(0,c.jsx)(V,{className:it.colorModeToggle}),!a&&(0,c.jsx)(Fe,{children:(0,c.jsx)(Me,{})})]})})}function ct(){return(0,c.jsx)(Qe,{children:(0,c.jsx)(ut,{})})}function dt(e){let{item:t}=e;const{to:n,href:r,label:a,prependBaseUrlToHref:o,...i}=t,l=(0,X.ZP)(n),s=(0,X.ZP)(r,{forcePrependBaseUrl:!0});return(0,c.jsxs)(Q.Z,{className:"footer__link-item",...r?{href:o?s:r}:{to:l},...i,children:[a,r&&!(0,J.Z)(r)&&(0,c.jsx)(te.Z,{})]})}function ft(e){let{item:t}=e;return t.html?(0,c.jsx)("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):(0,c.jsx)("li",{className:"footer__item",children:(0,c.jsx)(dt,{item:t})},t.href??t.to)}function pt(e){let{column:t}=e;return(0,c.jsxs)("div",{className:"col footer__col",children:[(0,c.jsx)("div",{className:"footer__title",children:t.title}),(0,c.jsx)("ul",{className:"footer__items clean-list",children:t.items.map(((e,t)=>(0,c.jsx)(ft,{item:e},t)))})]})}function ht(e){let{columns:t}=e;return(0,c.jsx)("div",{className:"row footer__links",children:t.map(((e,t)=>(0,c.jsx)(pt,{column:e},t)))})}function gt(){return(0,c.jsx)("span",{className:"footer__link-separator",children:"\xb7"})}function mt(e){let{item:t}=e;return t.html?(0,c.jsx)("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):(0,c.jsx)(dt,{item:t})}function yt(e){let{links:t}=e;return(0,c.jsx)("div",{className:"footer__links text--center",children:(0,c.jsx)("div",{className:"footer__links",children:t.map(((e,n)=>(0,c.jsxs)(r.Fragment,{children:[(0,c.jsx)(mt,{item:e}),t.length!==n+1&&(0,c.jsx)(gt,{})]},n)))})})}function bt(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?(0,c.jsx)(ht,{columns:t}):(0,c.jsx)(yt,{links:t})}var vt=n(3870);const wt={footerLogoLink:"footerLogoLink_WaJj"};function kt(e){let{logo:t}=e;const{withBaseUrl:n}=(0,X.Cg)(),r={light:n(t.src),dark:n(t.srcDark??t.src)};return(0,c.jsx)(vt.Z,{className:(0,a.Z)("footer__logo",t.className),alt:t.alt,sources:r,width:t.width,height:t.height,style:t.style})}function xt(e){let{logo:t}=e;return t.href?(0,c.jsx)(Q.Z,{href:t.href,className:wt.footerLogoLink,target:t.target,children:(0,c.jsx)(kt,{logo:t})}):(0,c.jsx)(kt,{logo:t})}function St(e){let{copyright:t}=e;return(0,c.jsx)("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function Et(e){let{style:t,links:n,logo:r,copyright:o}=e;return(0,c.jsx)("footer",{className:(0,a.Z)("footer",{"footer--dark":"dark"===t}),children:(0,c.jsxs)("div",{className:"container container-fluid",children:[n,(r||o)&&(0,c.jsxs)("div",{className:"footer__bottom text--center",children:[r&&(0,c.jsx)("div",{className:"margin-bottom--sm",children:r}),o]})]})})}function _t(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:r,style:a}=e;return(0,c.jsx)(Et,{style:a,links:n&&n.length>0&&(0,c.jsx)(bt,{links:n}),logo:r&&(0,c.jsx)(xt,{logo:r}),copyright:t&&(0,c.jsx)(St,{copyright:t})})}const Ct=r.memo(_t),Tt=(0,L.Qc)([F.S,k.p,P.OC,$e.L5,i.VC,function(e){let{children:t}=e;return(0,c.jsx)(O.n2,{children:(0,c.jsx)(N.M,{children:(0,c.jsx)(j,{children:t})})})}]);function At(e){let{children:t}=e;return(0,c.jsx)(Tt,{children:t})}var Nt=n(7623);function Pt(e){let{error:t,tryAgain:n}=e;return(0,c.jsx)("main",{className:"container margin-vert--xl",children:(0,c.jsx)("div",{className:"row",children:(0,c.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,c.jsx)(Nt.Z,{as:"h1",className:"hero__title",children:(0,c.jsx)(s.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed",children:"This page crashed."})}),(0,c.jsx)("div",{className:"margin-vert--lg",children:(0,c.jsx)(et,{onClick:n,className:"button button--primary shadow--lw"})}),(0,c.jsx)("hr",{}),(0,c.jsx)("div",{className:"margin-vert--md",children:(0,c.jsx)(tt,{error:t})})]})})})}const Lt={mainWrapper:"mainWrapper_J0GB"};function Ot(e){const{children:t,noFooter:n,wrapperClassName:r,title:l,description:s}=e;return(0,y.t)(),(0,c.jsxs)(At,{children:[(0,c.jsx)(i.d,{title:l,description:s}),(0,c.jsx)(v,{}),(0,c.jsx)(A,{}),(0,c.jsx)(ct,{}),(0,c.jsx)("div",{id:d,className:(0,a.Z)(m.k.wrapper.main,Lt.mainWrapper,r),children:(0,c.jsx)(o.Z,{fallback:e=>(0,c.jsx)(Pt,{...e}),children:t})}),!n&&(0,c.jsx)(Ct,{})]})}},3165:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});n(959);var r=n(6788),a=n(2915),o=n(8927),i=n(475),l=n(3870),s=n(1527);function u(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,a.ZP)(t.src),dark:(0,a.ZP)(t.srcDark||t.src)},i=(0,s.jsx)(l.Z,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?(0,s.jsx)("div",{className:r,children:i}):i}function c(e){const{siteConfig:{title:t}}=(0,o.Z)(),{navbar:{title:n,logo:l}}=(0,i.L)(),{imageClassName:c,titleClassName:d,...f}=e,p=(0,a.ZP)(l?.href||"/"),h=n?"":t,g=l?.alt??h;return(0,s.jsxs)(r.Z,{to:p,...f,...l?.target&&{target:l.target},children:[l&&(0,s.jsx)(u,{logo:l,alt:g,imageClassName:c}),null!=n&&(0,s.jsx)("b",{className:d,children:n})]})}},5695:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});n(959);var r=n(2058),a=n(1527);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return(0,a.jsxs)(r.Z,{children:[t&&(0,a.jsx)("meta",{name:"docusaurus_locale",content:t}),n&&(0,a.jsx)("meta",{name:"docusaurus_version",content:n}),o&&(0,a.jsx)("meta",{name:"docusaurus_tag",content:o}),i&&(0,a.jsx)("meta",{name:"docsearch:language",content:i}),n&&(0,a.jsx)("meta",{name:"docsearch:version",content:n}),o&&(0,a.jsx)("meta",{name:"docsearch:docusaurus_tag",content:o})]})}},3870:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(959),a=n(5341),o=n(2666),i=n(9843);const l={themedComponent:"themedComponent_MU6j","themedComponent--light":"themedComponent--light_uY59","themedComponent--dark":"themedComponent--dark_eHrL"};var s=n(1527);function u(e){let{className:t,children:n}=e;const u=(0,o.Z)(),{colorMode:c}=(0,i.I)();return(0,s.jsx)(s.Fragment,{children:(u?"dark"===c?["dark"]:["light"]:["light","dark"]).map((e=>{const o=n({theme:e,className:(0,a.Z)(t,l.themedComponent,l[`themedComponent--${e}`])});return(0,s.jsx)(r.Fragment,{children:o},e)}))})}function c(e){const{sources:t,className:n,alt:r,...a}=e;return(0,s.jsx)(u,{className:n,children:e=>{let{theme:n,className:o}=e;return(0,s.jsx)("img",{src:t[n],alt:r,className:o,...a})}})}},5267:(e,t,n)=>{"use strict";n.d(t,{u:()=>u,z:()=>y});var r=n(959),a=n(3360),o=n(4848),i=n(3250),l=n(1527);const s="ease-in-out";function u(e){let{initialState:t}=e;const[n,a]=(0,r.useState)(t??!1),o=(0,r.useCallback)((()=>{a((e=>!e))}),[]);return{collapsed:n,setCollapsed:a,toggleCollapsed:o}}const c={display:"none",overflow:"hidden",height:"0px"},d={display:"block",overflow:"visible",height:"auto"};function f(e,t){const n=t?c:d;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function p(e){let{collapsibleRef:t,collapsed:n,animation:a}=e;const o=(0,r.useRef)(!1);(0,r.useEffect)((()=>{const e=t.current;function r(){const t=e.scrollHeight,n=a?.duration??function(e){if((0,i.n)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${a?.easing??s}`,height:`${t}px`}}function l(){const t=r();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return f(e,n),void(o.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(l(),requestAnimationFrame((()=>{e.style.height=c.height,e.style.overflow=c.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{l()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,a])}function h(e){if(!a.Z.canUseDOM)return e?c:d}function g(e){let{as:t="div",collapsed:n,children:a,animation:o,onCollapseTransitionEnd:i,className:s,disableSSRStyle:u}=e;const c=(0,r.useRef)(null);return p({collapsibleRef:c,collapsed:n,animation:o}),(0,l.jsx)(t,{ref:c,style:u?void 0:h(n),onTransitionEnd:e=>{"height"===e.propertyName&&(f(c.current,n),i?.(n))},className:s,children:a})}function m(e){let{collapsed:t,...n}=e;const[a,i]=(0,r.useState)(!t),[s,u]=(0,r.useState)(t);return(0,o.Z)((()=>{t||i(!0)}),[t]),(0,o.Z)((()=>{a&&u(t)}),[a,t]),a?(0,l.jsx)(g,{...n,collapsed:s}):null}function y(e){let{lazy:t,...n}=e;const r=t?m:g;return(0,l.jsx)(r,{...n})}},1387:(e,t,n)=>{"use strict";n.d(t,{n:()=>g,p:()=>h});var r=n(959),a=n(2666),o=n(5661),i=n(3272),l=n(475),s=n(1527);const u=(0,o.WA)("docusaurus.announcement.dismiss"),c=(0,o.WA)("docusaurus.announcement.id"),d=()=>"true"===u.get(),f=e=>u.set(String(e)),p=r.createContext(null);function h(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.L)(),t=(0,a.Z)(),[n,o]=(0,r.useState)((()=>!!t&&d()));(0,r.useEffect)((()=>{o(d())}),[]);const i=(0,r.useCallback)((()=>{f(!0),o(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=c.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;c.set(t),r&&f(!1),!r&&d()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return(0,s.jsx)(p.Provider,{value:n,children:t})}function g(){const e=(0,r.useContext)(p);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},9843:(e,t,n)=>{"use strict";n.d(t,{I:()=>y,S:()=>m});var r=n(959),a=n(3360),o=n(3272),i=n(5661),l=n(475),s=n(1527);const u=r.createContext(void 0),c="theme",d=(0,i.WA)(c),f={light:"light",dark:"dark"},p=e=>e===f.dark?f.dark:f.light,h=e=>a.Z.canUseDOM?p(document.documentElement.getAttribute("data-theme")):p(e),g=e=>{d.set(p(e))};function m(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.L)(),[a,o]=(0,r.useState)(h(e));(0,r.useEffect)((()=>{t&&d.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(o(t),a&&g(t)):(o(n?window.matchMedia("(prefers-color-scheme: dark)").matches?f.dark:f.light:e),d.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",p(a))}),[a]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==c)return;const t=d.get();null!==t&&i(p(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const s=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||s.current?s.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:a,setColorMode:i,get isDarkTheme(){return a===f.dark},setLightTheme(){i(f.light)},setDarkTheme(){i(f.dark)}})),[a,i])}();return(0,s.jsx)(u.Provider,{value:n,children:t})}function y(){const e=(0,r.useContext)(u);if(null==e)throw new o.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},2632:(e,t,n)=>{"use strict";n.d(t,{J:()=>v,L5:()=>y,Oh:()=>w});var r=n(959),a=n(9775),o=n(1841),i=n(475),l=n(5079),s=n(3272),u=n(5661),c=n(1527);const d=e=>`docs-preferred-version-${e}`,f={save:(e,t,n)=>{(0,u.WA)(d(e),{persistence:t}).set(n)},read:(e,t)=>(0,u.WA)(d(e),{persistence:t}).get(),clear:(e,t)=>{(0,u.WA)(d(e),{persistence:t}).del()}},p=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const h=r.createContext(null);function g(){const e=(0,a._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,l]=(0,r.useState)((()=>p(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(e){const t=f.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(f.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){f.save(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function m(e){let{children:t}=e;const n=g();return(0,c.jsx)(h.Provider,{value:n,children:t})}function y(e){let{children:t}=e;return l.cE?(0,c.jsx)(m,{children:t}):(0,c.jsx)(c.Fragment,{children:t})}function b(){const e=(0,r.useContext)(h);if(!e)throw new s.i6("DocsPreferredVersionContextProvider");return e}function v(e){void 0===e&&(e=o.m);const t=(0,a.zh)(e),[n,i]=b(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find((e=>e.name===l))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}function w(){const e=(0,a._r)(),[t]=b();function n(n){const r=e[n],{preferredVersionName:a}=t[n];return r.versions.find((e=>e.name===a))??null}const r=Object.keys(e);return Object.fromEntries(r.map((e=>[e,n(e)])))}},1626:(e,t,n)=>{"use strict";n.d(t,{V:()=>u,b:()=>s});var r=n(959),a=n(3272),o=n(1527);const i=Symbol("EmptyContext"),l=r.createContext(i);function s(e){let{children:t,name:n,items:a}=e;const i=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return(0,o.jsx)(l.Provider,{value:i,children:t})}function u(){const e=(0,r.useContext)(l);if(e===i)throw new a.i6("DocsSidebarProvider");return e}},4517:(e,t,n)=>{"use strict";n.d(t,{E:()=>s,q:()=>l});var r=n(959),a=n(3272),o=n(1527);const i=r.createContext(null);function l(e){let{children:t,version:n}=e;return(0,o.jsx)(i.Provider,{value:n,children:t})}function s(){const e=(0,r.useContext)(i);if(null===e)throw new a.i6("DocsVersionProvider");return e}},2582:(e,t,n)=>{"use strict";n.d(t,{M:()=>f,e:()=>p});var r=n(959),a=n(625),o=n(6563),i=n(3536),l=n(475),s=n(3272),u=n(1527);const c=r.createContext(void 0);function d(){const e=function(){const e=(0,a.HY)(),{items:t}=(0,l.L)().navbar;return 0===t.length&&!e.component}(),t=(0,o.i)(),n=!e&&"mobile"===t,[s,u]=(0,r.useState)(!1);(0,i.Rb)((()=>{if(s)return u(!1),!1}));const c=(0,r.useCallback)((()=>{u((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&u(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:c,shown:s})),[e,n,c,s])}function f(e){let{children:t}=e;const n=d();return(0,u.jsx)(c.Provider,{value:n,children:t})}function p(){const e=r.useContext(c);if(void 0===e)throw new s.i6("NavbarMobileSidebarProvider");return e}},625:(e,t,n)=>{"use strict";n.d(t,{HY:()=>s,Zo:()=>u,n2:()=>l});var r=n(959),a=n(3272),o=n(1527);const i=r.createContext(null);function l(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return(0,o.jsx)(i.Provider,{value:n,children:t})}function s(){const e=(0,r.useContext)(i);if(!e)throw new a.i6("NavbarSecondaryMenuContentProvider");return e[0]}function u(e){let{component:t,props:n}=e;const o=(0,r.useContext)(i);if(!o)throw new a.i6("NavbarSecondaryMenuContentProvider");const[,l]=o,s=(0,a.Ql)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},8010:(e,t,n)=>{"use strict";n.d(t,{h:()=>a,t:()=>o});var r=n(959);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},1029:(e,t,n)=>{"use strict";n.d(t,{K:()=>l,M:()=>s});var r=n(959),a=n(8927),o=n(3536);const i="q";function l(){return(0,o.Nc)(i)}function s(){const{siteConfig:{baseUrl:e,themeConfig:t}}=(0,a.Z)(),{algolia:{searchPagePath:n}}=t;return(0,r.useCallback)((t=>`${e}${n}?${i}=${encodeURIComponent(t)}`),[e,n])}},6563:(e,t,n)=>{"use strict";n.d(t,{i:()=>l});var r=n(959),a=n(3360);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function l(e){let{desktopBreakpoint:t=i}=void 0===e?{}:e;const[n,l]=(0,r.useState)((()=>"ssr"));return(0,r.useEffect)((()=>{function e(){l(function(e){if(!a.Z.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>e?o.desktop:o.mobile}(t))}return e(),window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}}),[t]),n}},961:(e,t,n)=>{"use strict";n.d(t,{k:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",unlistedBanner:"theme-unlisted-banner",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{blogFooterTagsRow:"theme-blog-footer-tags-row",blogFooterEditMetaRow:"theme-blog-footer-edit-meta-row"},pages:{pageFooterEditMetaRow:"theme-pages-footer-edit-meta-row"}}},3250:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{n:()=>r})},5079:(e,t,n)=>{"use strict";n.d(t,{LM:()=>p,SN:()=>E,_F:()=>m,cE:()=>f,f:()=>b,lO:()=>k,oz:()=>x,s1:()=>w,vY:()=>S});var r=n(959),a=n(8903),o=n(819),i=n(9775),l=n(2632),s=n(4517),u=n(1626),c=n(4902),d=n(9057);const f=!!i._r;function p(e){return"link"!==e.type||e.unlisted?"category"===e.type?function(e){if(e.href&&!e.linkUnlisted)return e.href;for(const t of e.items){const e=p(t);if(e)return e}}(e):void 0:e.href}const h=(e,t)=>void 0!==e&&(0,d.Mg)(e,t),g=(e,t)=>e.some((e=>m(e,t)));function m(e,t){return"link"===e.type?h(e.href,t):"category"===e.type&&(h(e.href,t)||g(e.items,t))}function y(e,t){switch(e.type){case"category":return m(e,t)||e.items.some((e=>y(e,t)));case"link":return!e.unlisted||m(e,t);default:return!0}}function b(e,t){return(0,r.useMemo)((()=>e.filter((e=>y(e,t)))),[e,t])}function v(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,d.Mg)(o.href,n)||e(o.items))||"link"===o.type&&(0,d.Mg)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function w(){const e=(0,u.V)(),{pathname:t}=(0,a.TH)(),n=(0,i.gA)()?.pluginData.breadcrumbs;return!1!==n&&e?v({sidebarItems:e.items,pathname:t}):null}function k(e){const{activeVersion:t}=(0,i.Iw)(e),{preferredVersion:n}=(0,l.J)(e),a=(0,i.yW)(e);return(0,r.useMemo)((()=>(0,c.j)([t,n,a].filter(Boolean))),[t,n,a])}function x(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function S(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${(0,c.j)(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function E(e){let{route:t}=e;const n=(0,a.TH)(),r=(0,s.E)(),i=t.routes,l=i.find((e=>(0,a.LX)(n.pathname,e)));if(!l)return null;const u=l.sidebar,c=u?r.docsSidebars[u]:void 0;return{docElement:(0,o.H)(i),sidebarName:u,sidebarItems:c}}},690:(e,t,n)=>{"use strict";n.d(t,{p:()=>a});var r=n(8927);function a(e){const{siteConfig:t}=(0,r.Z)(),{title:n,titleDelimiter:a}=t;return e?.trim().length?`${e.trim()} ${a} ${n}`:n}},3536:(e,t,n)=>{"use strict";n.d(t,{Nc:()=>u,Rb:()=>i,_X:()=>s});var r=n(959),a=n(8903),o=n(3272);function i(e){!function(e){const t=(0,a.k6)(),n=(0,o.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}function l(e){const t=(0,a.k6)();return(0,r.useSyncExternalStore)(t.listen,(()=>e(t)),(()=>e(t)))}function s(e){return l((t=>null===e?null:new URLSearchParams(t.location.search).get(e)))}function u(e){const t=s(e)??"",n=function(e){const t=(0,a.k6)();return(0,r.useCallback)(((n,r)=>{const a=new URLSearchParams(t.location.search);n?a.set(e,n):a.delete(e),(r?.push?t.push:t.replace)({search:a.toString()})}),[e,t])}(e);return[t,n]}},4902:(e,t,n)=>{"use strict";function r(e,t){return void 0===t&&(t=(e,t)=>e===t),e.filter(((n,r)=>e.findIndex((e=>t(e,n)))!==r))}function a(e){return Array.from(new Set(e))}n.d(t,{j:()=>a,l:()=>r})},5938:(e,t,n)=>{"use strict";n.d(t,{FG:()=>f,VC:()=>p,d:()=>c});var r=n(959),a=n(5341),o=n(2058),i=n(3689),l=n(2915),s=n(690),u=n(1527);function c(e){let{title:t,description:n,keywords:r,image:a,children:i}=e;const c=(0,s.p)(t),{withBaseUrl:d}=(0,l.Cg)(),f=a?d(a,{absolute:!0}):void 0;return(0,u.jsxs)(o.Z,{children:[t&&(0,u.jsx)("title",{children:c}),t&&(0,u.jsx)("meta",{property:"og:title",content:c}),n&&(0,u.jsx)("meta",{name:"description",content:n}),n&&(0,u.jsx)("meta",{property:"og:description",content:n}),r&&(0,u.jsx)("meta",{name:"keywords",content:Array.isArray(r)?r.join(","):r}),f&&(0,u.jsx)("meta",{property:"og:image",content:f}),f&&(0,u.jsx)("meta",{name:"twitter:image",content:f}),i]})}const d=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(d),l=(0,a.Z)(i,t);return(0,u.jsxs)(d.Provider,{value:l,children:[(0,u.jsx)(o.Z,{children:(0,u.jsx)("html",{className:l})}),n]})}function p(e){let{children:t}=e;const n=(0,i.Z)(),r=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const o=`plugin-id-${n.plugin.id}`;return(0,u.jsx)(f,{className:(0,a.Z)(r,o),children:t})}},3272:(e,t,n)=>{"use strict";n.d(t,{D9:()=>l,Qc:()=>c,Ql:()=>u,i6:()=>s,zX:()=>i});var r=n(959),a=n(4848),o=n(1527);function i(e){const t=(0,r.useRef)(e);return(0,a.Z)((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function l(e){const t=(0,r.useRef)();return(0,a.Z)((()=>{t.current=e})),t.current}class s extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?<name>\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function u(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function c(e){return t=>{let{children:n}=t;return(0,o.jsx)(o.Fragment,{children:e.reduceRight(((e,t)=>(0,o.jsx)(t,{children:e})),n)})}}},4632:(e,t,n)=>{"use strict";function r(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}n.d(t,{F:()=>r})},9057:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>l});var r=n(959),a=n(8723),o=n(8927);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function l(){const{baseUrl:e}=(0,o.Z)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>e.routes??[])))}(n)}({routes:a.Z,baseUrl:e})),[e])}},9812:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>g,OC:()=>c,RF:()=>p,o5:()=>h});var r=n(959),a=n(3360),o=n(2666),i=n(4848),l=n(3272),s=n(1527);const u=r.createContext(void 0);function c(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return(0,s.jsx)(u.Provider,{value:n,children:t})}function d(){const e=(0,r.useContext)(u);if(null==e)throw new l.i6("ScrollControllerProvider");return e}const f=()=>a.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function p(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=d(),a=(0,r.useRef)(f()),o=(0,l.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=f();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function h(){const e=d(),t=function(){const e=(0,r.useRef)({elem:null,top:0}),t=(0,r.useCallback)((t=>{e.current={elem:t,top:t.getBoundingClientRect().top}}),[]),n=(0,r.useCallback)((()=>{const{current:{elem:t,top:n}}=e;if(!t)return{restored:!1};const r=t.getBoundingClientRect().top-n;return r&&window.scrollBy({left:0,top:r}),e.current={elem:null,top:0},{restored:0!==r}}),[]);return(0,r.useMemo)((()=>({save:t,restore:n})),[n,t])}(),n=(0,r.useRef)(void 0),a=(0,r.useCallback)((r=>{t.save(r),e.disableScrollEvents(),n.current=()=>{const{restored:r}=t.restore();if(n.current=void 0,r){const t=()=>{e.enableScrollEvents(),window.removeEventListener("scroll",t)};window.addEventListener("scroll",t)}else e.enableScrollEvents()}}),[e,t]);return(0,i.Z)((()=>{queueMicrotask((()=>n.current?.()))})),{blockElementScrollPositionUntilNextRender:a}}function g(){const e=(0,r.useRef)(null),t=(0,o.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&a<e)&&(t=requestAnimationFrame(r),window.scrollTo(0,Math.floor(.85*(a-e))+e))}(),()=>t&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},9398:(e,t,n)=>{"use strict";n.d(t,{HX:()=>i,_q:()=>s,os:()=>l});var r=n(9775),a=n(8927),o=n(2632);const i="default";function l(e,t){return`docs-${e}-${t}`}function s(){const{i18n:e}=(0,a.Z)(),t=(0,r._r)(),n=(0,r.WS)(),s=(0,o.Oh)();const u=[i,...Object.keys(t).map((function(e){const r=n?.activePlugin.pluginId===e?n.activeVersion:void 0,a=s[e],o=t[e].versions.find((e=>e.isLast));return l(e,(r??a??o).name)}))];return{locale:e.currentLocale,tags:u}}},5661:(e,t,n)=>{"use strict";n.d(t,{WA:()=>c,Nk:()=>d});var r=n(959);const a=JSON.parse('{"d":"localStorage","u":""}'),o=a.d;function i(e){let{key:t,oldValue:n,newValue:r,storage:a}=e;if(n===r)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}function l(e){if(void 0===e&&(e=o),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,s||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),s=!0),null}var t}let s=!1;const u={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function c(e,t){const n=`${e}${a.u}`;if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(n);const r=l(t?.persistence);return null===r?u:{get:()=>{try{return r.getItem(n)}catch(e){return console.error(`Docusaurus storage error, can't get key=${n}`,e),null}},set:e=>{try{const t=r.getItem(n);r.setItem(n,e),i({key:n,oldValue:t,newValue:e,storage:r})}catch(t){console.error(`Docusaurus storage error, can't set ${n}=${e}`,t)}},del:()=>{try{const e=r.getItem(n);r.removeItem(n),i({key:n,oldValue:e,newValue:null,storage:r})}catch(e){console.error(`Docusaurus storage error, can't delete key=${n}`,e)}},listen:e=>{try{const t=t=>{t.storageArea===r&&t.key===n&&e(t)};return window.addEventListener("storage",t),()=>window.removeEventListener("storage",t)}catch(t){return console.error(`Docusaurus storage error, can't listen for changes of key=${n}`,t),()=>{}}}}}function d(e,t){const n=(0,r.useRef)((()=>null===e?u:c(e,t))).current(),a=(0,r.useCallback)((e=>"undefined"==typeof window?()=>{}:n.listen(e)),[n]);return[(0,r.useSyncExternalStore)(a,(()=>"undefined"==typeof window?null:n.get()),(()=>null)),n]}},9790:(e,t,n)=>{"use strict";n.d(t,{l:()=>i});var r=n(8927),a=n(8903),o=n(7787);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:l}}=(0,r.Z)(),{pathname:s}=(0,a.TH)(),u=(0,o.applyTrailingSlash)(s,{trailingSlash:n,baseUrl:e}),c=l===i?e:e.replace(`/${l}/`,"/"),d=u.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:r}=e;return`${r?t:""}${function(e){return e===i?`${c}`:`${c}${e}/`}(n)}${d}`}}}},5610:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var r=n(959),a=n(8903),o=n(3272);function i(e){const t=(0,a.TH)(),n=(0,o.D9)(t),i=(0,o.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},475:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(8927);function a(){return(0,r.Z)().siteConfig.themeConfig}},6756:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(8927);function a(){const{siteConfig:{themeConfig:e}}=(0,r.Z)();return e}},2156:(e,t,n)=>{"use strict";n.d(t,{l:()=>l});var r=n(959),a=n(4632),o=n(2915),i=n(6756);function l(){const{withBaseUrl:e}=(0,o.Cg)(),{algolia:{externalUrlRegex:t,replaceSearchResultPathname:n}}=(0,i.L)();return(0,r.useCallback)((r=>{const o=new URL(r);if((0,a.F)(t,o.href))return r;const i=`${o.pathname+o.hash}`;return e(function(e,t){return t?e.replaceAll(new RegExp(t.from,"g"),t.to):e}(i,n))}),[e,t,n])}},7950:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.removeTrailingSlash=t.addLeadingSlash=t.addTrailingSlash=void 0;const r=n(2984);function a(e){return e.endsWith("/")?e:`${e}/`}function o(e){return(0,r.removeSuffix)(e,"/")}t.addTrailingSlash=a,t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[i]=e.split(/[#?]/),l="/"===i||i===r?i:(s=i,n?a(s):o(s));var s;return e.replace(i,l)},t.addLeadingSlash=function(e){return(0,r.addPrefix)(e,"/")},t.removeTrailingSlash=o},8073:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},7787:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.removePrefix=t.addSuffix=t.removeSuffix=t.addPrefix=t.removeTrailingSlash=t.addLeadingSlash=t.addTrailingSlash=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var a=n(7950);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}}),Object.defineProperty(t,"addTrailingSlash",{enumerable:!0,get:function(){return a.addTrailingSlash}}),Object.defineProperty(t,"addLeadingSlash",{enumerable:!0,get:function(){return a.addLeadingSlash}}),Object.defineProperty(t,"removeTrailingSlash",{enumerable:!0,get:function(){return a.removeTrailingSlash}});var o=n(2984);Object.defineProperty(t,"addPrefix",{enumerable:!0,get:function(){return o.addPrefix}}),Object.defineProperty(t,"removeSuffix",{enumerable:!0,get:function(){return o.removeSuffix}}),Object.defineProperty(t,"addSuffix",{enumerable:!0,get:function(){return o.addSuffix}}),Object.defineProperty(t,"removePrefix",{enumerable:!0,get:function(){return o.removePrefix}});var i=n(8073);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return i.getErrorCausalChain}})},2984:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.removePrefix=t.addSuffix=t.removeSuffix=t.addPrefix=void 0,t.addPrefix=function(e,t){return e.startsWith(t)?e:`${t}${e}`},t.removeSuffix=function(e,t){return""===t?e:e.endsWith(t)?e.slice(0,-t.length):e},t.addSuffix=function(e,t){return e.endsWith(t)?e:`${e}${t}`},t.removePrefix=function(e,t){return e.startsWith(t)?e.slice(t.length):e}},4047:(e,t,n)=>{"use strict";n.d(t,{lX:()=>w,q_:()=>C,ob:()=>p,PP:()=>A,Ep:()=>f});var r=n(7605);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r<a;n+=1,r+=1)e[n]=e[r];e.pop()}const i=function(e,t){void 0===t&&(t="");var n,r=e&&e.split("/")||[],i=t&&t.split("/")||[],l=e&&a(e),s=t&&a(t),u=l||s;if(e&&a(e)?i=r:r.length&&(i.pop(),i=i.concat(r)),!i.length)return"/";if(i.length){var c=i[i.length-1];n="."===c||".."===c||""===c}else n=!1;for(var d=0,f=i.length;f>=0;f--){var p=i[f];"."===p?o(i,f):".."===p?(o(i,f),d++):d&&(o(i,f),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&a(i[0])||i.unshift("");var h=i.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h};var l=n(8624);function s(e){return"/"===e.charAt(0)?e:"/"+e}function u(e){return"/"===e.charAt(0)?e.substr(1):e}function c(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function f(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function p(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.Z)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function h(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.forEach((function(e){return e.apply(void 0,n)}))}}}var g=!("undefined"==typeof window||!window.document||!window.document.createElement);function m(e,t){t(window.confirm(e))}var y="popstate",b="hashchange";function v(){try{return window.history.state||{}}catch(e){return{}}}function w(e){void 0===e&&(e={}),g||(0,l.Z)(!1);var t,n=window.history,a=(-1===(t=window.navigator.userAgent).indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history,o=!(-1===window.navigator.userAgent.indexOf("Trident")),i=e,u=i.forceRefresh,w=void 0!==u&&u,k=i.getUserConfirmation,x=void 0===k?m:k,S=i.keyLength,E=void 0===S?6:S,_=e.basename?d(s(e.basename)):"";function C(e){var t=e||{},n=t.key,r=t.state,a=window.location,o=a.pathname+a.search+a.hash;return _&&(o=c(o,_)),p(o,r,n)}function T(){return Math.random().toString(36).substr(2,E)}var A=h();function N(e){(0,r.Z)($,e),$.length=n.length,A.notifyListeners($.location,$.action)}function P(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||R(C(e.state))}function L(){R(C(v()))}var O=!1;function R(e){if(O)O=!1,N();else{A.confirmTransitionTo(e,"POP",x,(function(t){t?N({action:"POP",location:e}):function(e){var t=$.location,n=I.indexOf(t.key);-1===n&&(n=0);var r=I.indexOf(e.key);-1===r&&(r=0);var a=n-r;a&&(O=!0,D(a))}(e)}))}}var j=C(v()),I=[j.key];function M(e){return _+f(e)}function D(e){n.go(e)}var F=0;function z(e){1===(F+=e)&&1===e?(window.addEventListener(y,P),o&&window.addEventListener(b,L)):0===F&&(window.removeEventListener(y,P),o&&window.removeEventListener(b,L))}var B=!1;var $={length:n.length,action:"POP",location:j,createHref:M,push:function(e,t){var r="PUSH",o=p(e,t,T(),$.location);A.confirmTransitionTo(o,r,x,(function(e){if(e){var t=M(o),i=o.key,l=o.state;if(a)if(n.pushState({key:i,state:l},null,t),w)window.location.href=t;else{var s=I.indexOf($.location.key),u=I.slice(0,s+1);u.push(o.key),I=u,N({action:r,location:o})}else window.location.href=t}}))},replace:function(e,t){var r="REPLACE",o=p(e,t,T(),$.location);A.confirmTransitionTo(o,r,x,(function(e){if(e){var t=M(o),i=o.key,l=o.state;if(a)if(n.replaceState({key:i,state:l},null,t),w)window.location.replace(t);else{var s=I.indexOf($.location.key);-1!==s&&(I[s]=o.key),N({action:r,location:o})}else window.location.replace(t)}}))},go:D,goBack:function(){D(-1)},goForward:function(){D(1)},block:function(e){void 0===e&&(e=!1);var t=A.setPrompt(e);return B||(z(1),B=!0),function(){return B&&(B=!1,z(-1)),t()}},listen:function(e){var t=A.appendListener(e);return z(1),function(){z(-1),t()}}};return $}var k="hashchange",x={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+u(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:u,decodePath:s},slash:{encodePath:s,decodePath:s}};function S(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function E(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function _(e){window.location.replace(S(window.location.href)+"#"+e)}function C(e){void 0===e&&(e={}),g||(0,l.Z)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),a=n.getUserConfirmation,o=void 0===a?m:a,i=n.hashType,u=void 0===i?"slash":i,y=e.basename?d(s(e.basename)):"",b=x[u],v=b.encodePath,w=b.decodePath;function C(){var e=w(E());return y&&(e=c(e,y)),p(e)}var T=h();function A(e){(0,r.Z)(B,e),B.length=t.length,T.notifyListeners(B.location,B.action)}var N=!1,P=null;function L(){var e,t,n=E(),r=v(n);if(n!==r)_(r);else{var a=C(),i=B.location;if(!N&&(t=a,(e=i).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(P===f(a))return;P=null,function(e){if(N)N=!1,A();else{var t="POP";T.confirmTransitionTo(e,t,o,(function(n){n?A({action:t,location:e}):function(e){var t=B.location,n=I.lastIndexOf(f(t));-1===n&&(n=0);var r=I.lastIndexOf(f(e));-1===r&&(r=0);var a=n-r;a&&(N=!0,M(a))}(e)}))}}(a)}}var O=E(),R=v(O);O!==R&&_(R);var j=C(),I=[f(j)];function M(e){t.go(e)}var D=0;function F(e){1===(D+=e)&&1===e?window.addEventListener(k,L):0===D&&window.removeEventListener(k,L)}var z=!1;var B={length:t.length,action:"POP",location:j,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=S(window.location.href)),n+"#"+v(y+f(e))},push:function(e,t){var n="PUSH",r=p(e,void 0,void 0,B.location);T.confirmTransitionTo(r,n,o,(function(e){if(e){var t=f(r),a=v(y+t);if(E()!==a){P=t,function(e){window.location.hash=e}(a);var o=I.lastIndexOf(f(B.location)),i=I.slice(0,o+1);i.push(t),I=i,A({action:n,location:r})}else A()}}))},replace:function(e,t){var n="REPLACE",r=p(e,void 0,void 0,B.location);T.confirmTransitionTo(r,n,o,(function(e){if(e){var t=f(r),a=v(y+t);E()!==a&&(P=t,_(a));var o=I.indexOf(f(B.location));-1!==o&&(I[o]=t),A({action:n,location:r})}}))},go:M,goBack:function(){M(-1)},goForward:function(){M(1)},block:function(e){void 0===e&&(e=!1);var t=T.setPrompt(e);return z||(F(1),z=!0),function(){return z&&(z=!1,F(-1)),t()}},listen:function(e){var t=T.appendListener(e);return F(1),function(){F(-1),t()}}};return B}function T(e,t,n){return Math.min(Math.max(e,t),n)}function A(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,a=t.initialEntries,o=void 0===a?["/"]:a,i=t.initialIndex,l=void 0===i?0:i,s=t.keyLength,u=void 0===s?6:s,c=h();function d(e){(0,r.Z)(w,e),w.length=w.entries.length,c.notifyListeners(w.location,w.action)}function g(){return Math.random().toString(36).substr(2,u)}var m=T(l,0,o.length-1),y=o.map((function(e){return p(e,void 0,"string"==typeof e?g():e.key||g())})),b=f;function v(e){var t=T(w.index+e,0,w.entries.length-1),r=w.entries[t];c.confirmTransitionTo(r,"POP",n,(function(e){e?d({action:"POP",location:r,index:t}):d()}))}var w={length:y.length,action:"POP",location:y[m],index:m,entries:y,createHref:b,push:function(e,t){var r="PUSH",a=p(e,t,g(),w.location);c.confirmTransitionTo(a,r,n,(function(e){if(e){var t=w.index+1,n=w.entries.slice(0);n.length>t?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=p(e,t,g(),w.location);c.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=w.index+e;return t>=0&&t<w.entries.length},block:function(e){return void 0===e&&(e=!1),c.setPrompt(e)},listen:function(e){return c.appendListener(e)}};return w}},2535:(e,t,n)=>{"use strict";var r=n(6237),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||a}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(h){var a=p(n);a&&a!==h&&e(t,a,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var l=s(t),g=s(n),m=0;m<i.length;++m){var y=i[m];if(!(o[y]||r&&r[y]||g&&g[y]||l&&l[y])){var b=f(n,y);try{u(t,y,b)}catch(v){}}}}return t}},3670:e=>{"use strict";e.exports=function(e,t,n,r,a,o,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,a,o,i,l],c=0;(s=new Error(t.replace(/%s/g,(function(){return u[c++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},901:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},2458:(e,t,n)=>{"use strict";n.r(t)},3572:(e,t,n)=>{"use strict";n.r(t)},9981:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'};function a(e,t,n){return e<t?t:e>n?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),u=o.querySelector(r.barSelector),c=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,i(e,c,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(o,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),u=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&p(a),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&p(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function u(e,t){return("string"==typeof e?e:f(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=f(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=f(e);u(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function f(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function p(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},7720:(e,t,n)=>{var r=n(901);e.exports=p,e.exports.parse=o,e.exports.compile=function(e,t){return l(o(e,t),t)},e.exports.tokensToFunction=l,e.exports.tokensToRegExp=f;var a=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,r=[],o=0,i=0,l="",c=t&&t.delimiter||"/";null!=(n=a.exec(e));){var d=n[0],f=n[1],p=n.index;if(l+=e.slice(i,p),i=p+d.length,f)l+=f[1];else{var h=e[i],g=n[2],m=n[3],y=n[4],b=n[5],v=n[6],w=n[7];l&&(r.push(l),l="");var k=null!=g&&null!=h&&h!==g,x="+"===v||"*"===v,S="?"===v||"*"===v,E=n[2]||c,_=y||b;r.push({name:m||o++,prefix:g||"",delimiter:E,optional:S,repeat:x,partial:k,asterisk:!!w,pattern:_?u(_):w?".*":"[^"+s(E)+"]+?"})}}return i<e.length&&(l+=e.substr(i)),l&&r.push(l),r}function i(e){return encodeURI(e).replace(/[\/?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function l(e,t){for(var n=new Array(e.length),a=0;a<e.length;a++)"object"==typeof e[a]&&(n[a]=new RegExp("^(?:"+e[a].pattern+")$",d(t)));return function(t,a){for(var o="",l=t||{},s=(a||{}).pretty?i:encodeURIComponent,u=0;u<e.length;u++){var c=e[u];if("string"!=typeof c){var d,f=l[c.name];if(null==f){if(c.optional){c.partial&&(o+=c.prefix);continue}throw new TypeError('Expected "'+c.name+'" to be defined')}if(r(f)){if(!c.repeat)throw new TypeError('Expected "'+c.name+'" to not repeat, but received `'+JSON.stringify(f)+"`");if(0===f.length){if(c.optional)continue;throw new TypeError('Expected "'+c.name+'" to not be empty')}for(var p=0;p<f.length;p++){if(d=s(f[p]),!n[u].test(d))throw new TypeError('Expected all "'+c.name+'" to match "'+c.pattern+'", but received `'+JSON.stringify(d)+"`");o+=(0===p?c.prefix:c.delimiter)+d}}else{if(d=c.asterisk?encodeURI(f).replace(/[?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})):s(f),!n[u].test(d))throw new TypeError('Expected "'+c.name+'" to match "'+c.pattern+'", but received "'+d+'"');o+=c.prefix+d}}else o+=c}return o}}function s(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function u(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function c(e,t){return e.keys=t,e}function d(e){return e&&e.sensitive?"":"i"}function f(e,t,n){r(t)||(n=t||n,t=[]);for(var a=(n=n||{}).strict,o=!1!==n.end,i="",l=0;l<e.length;l++){var u=e[l];if("string"==typeof u)i+=s(u);else{var f=s(u.prefix),p="(?:"+u.pattern+")";t.push(u),u.repeat&&(p+="(?:"+f+p+")*"),i+=p=u.optional?u.partial?f+"("+p+")?":"(?:"+f+"("+p+"))?":f+"("+p+")"}}var h=s(n.delimiter||"/"),g=i.slice(-h.length)===h;return a||(i=(g?i.slice(0,-h.length):i)+"(?:"+h+"(?=$))?"),i+=o?"$":a&&g?"":"(?="+h+"|$)",c(new RegExp("^"+i,d(n)),t)}function p(e,t,n){return r(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)t.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return c(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],a=0;a<e.length;a++)r.push(p(e[a],t,n).source);return c(new RegExp("(?:"+r.join("|")+")",d(n)),t)}(e,t,n):function(e,t,n){return f(o(e,n),t,n)}(e,t,n)}},3209:()=>{!function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},parameter:{pattern:/(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/,alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","parameter","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i<a.length;i++)o[a[i]]=e.languages.bash[a[i]];e.languages.sh=e.languages.bash,e.languages.shell=e.languages.bash}(Prism)},3931:()=>{!function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var r=t[n],a=[];/^\w+$/.test(n)||a.push(/\w+/.exec(n)[0]),"diff"===n&&a.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:a,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(Prism)},505:()=>{Prism.languages.lua={comment:/^#!.+|--(?:\[(=*)\[[\s\S]*?\]\1\]|.*)/m,string:{pattern:/(["'])(?:(?!\1)[^\\\r\n]|\\z(?:\r\n|\s)|\\(?:\r\n|[^z]))*\1|\[(=*)\[[\s\S]*?\]\2\]/,greedy:!0},number:/\b0x[a-f\d]+(?:\.[a-f\d]*)?(?:p[+-]?\d+)?\b|\b\d+(?:\.\B|(?:\.\d*)?(?:e[+-]?\d+)?\b)|\B\.\d+(?:e[+-]?\d+)?\b/i,keyword:/\b(?:and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/,function:/(?!\d)\w+(?=\s*(?:[({]))/,operator:[/[-+*%^&|#]|\/\/?|<[<=]?|>[>=]?|[=~]=?/,{pattern:/(^|[^.])\.\.(?!\.)/,lookbehind:!0}],punctuation:/[\[\](){},;]|\.+|:+/}},1559:()=>{!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s<l.length&&!(a>=o.length);s++){var u=l[s];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=o[a],d=n.tokenStack[c],f="string"==typeof u?u:u.content,p=t(r,c),h=f.indexOf(p);if(h>-1){++a;var g=f.substring(0,h),m=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),y=f.substring(h+p.length),b=[];g&&b.push.apply(b,i([g])),b.push(m),y&&b.push.apply(b,i([y])),"string"==typeof u?l.splice.apply(l,[s,1].concat(b)):u.content=b}}else u.content&&i(u.content)}return l}(n.tokens)}}}})}(Prism)},5093:()=>{Prism.languages.nix={comment:{pattern:/\/\*[\s\S]*?\*\/|#.*/,greedy:!0},string:{pattern:/"(?:[^"\\]|\\[\s\S])*"|''(?:(?!'')[\s\S]|''(?:'|\\|\$\{))*''/,greedy:!0,inside:{interpolation:{pattern:/(^|(?:^|(?!'').)[^\\])\$\{(?:[^{}]|\{[^}]*\})*\}/,lookbehind:!0,inside:null}}},url:[/\b(?:[a-z]{3,7}:\/\/)[\w\-+%~\/.:#=?&]+/,{pattern:/([^\/])(?:[\w\-+%~.:#=?&]*(?!\/\/)[\w\-+%~\/.:#=?&])?(?!\/\/)\/[\w\-+%~\/.:#=?&]*/,lookbehind:!0}],antiquotation:{pattern:/\$(?=\{)/,alias:"important"},number:/\b\d+\b/,keyword:/\b(?:assert|builtins|else|if|in|inherit|let|null|or|then|with)\b/,function:/\b(?:abort|add|all|any|attrNames|attrValues|baseNameOf|compareVersions|concatLists|currentSystem|deepSeq|derivation|dirOf|div|elem(?:At)?|fetch(?:Tarball|url)|filter(?:Source)?|fromJSON|genList|getAttr|getEnv|hasAttr|hashString|head|import|intersectAttrs|is(?:Attrs|Bool|Function|Int|List|Null|String)|length|lessThan|listToAttrs|map|mul|parseDrvName|pathExists|read(?:Dir|File)|removeAttrs|replaceStrings|seq|sort|stringLength|sub(?:string)?|tail|throw|to(?:File|JSON|Path|String|XML)|trace|typeOf)\b|\bfoldl'\B/,boolean:/\b(?:false|true)\b/,operator:/[=!<>]=?|\+\+?|\|\||&&|\/\/|->?|[?@]/,punctuation:/[{}()[\].,:;]/},Prism.languages.nix.string.inside.interpolation.inside=Prism.languages.nix},6777:()=>{!function(e){var t=e.languages.powershell={comment:[{pattern:/(^|[^`])<#[\s\S]*?#>/,lookbehind:!0},{pattern:/(^|[^`])#.*/,lookbehind:!0}],string:[{pattern:/"(?:`[\s\S]|[^`"])*"/,greedy:!0,inside:null},{pattern:/'(?:[^']|'')*'/,greedy:!0}],namespace:/\[[a-z](?:\[(?:\[[^\]]*\]|[^\[\]])*\]|[^\[\]])*\]/i,boolean:/\$(?:false|true)\b/i,variable:/\$\w+\b/,function:[/\b(?:Add|Approve|Assert|Backup|Block|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|ForEach|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Sort|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Tee|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Where|Write)-[a-z]+\b/i,/\b(?:ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\b/i],keyword:/\b(?:Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\b/i,operator:{pattern:/(^|\W)(?:!|-(?:b?(?:and|x?or)|as|(?:Not)?(?:Contains|In|Like|Match)|eq|ge|gt|is(?:Not)?|Join|le|lt|ne|not|Replace|sh[lr])\b|-[-=]?|\+[+=]?|[*\/%]=?)/i,lookbehind:!0},punctuation:/[|{}[\];(),.]/};t.string[0].inside={function:{pattern:/(^|[^`])\$\((?:\$\([^\r\n()]*\)|(?!\$\()[^\r\n)])*\)/,lookbehind:!0,inside:t},boolean:t.boolean,variable:t.variable}}(Prism)},4265:()=>{!function(e){var t=/(?:[\w-]+|'[^'\n\r]*'|"(?:\\.|[^\\"\r\n])*")/.source;function n(e){return e.replace(/__/g,(function(){return t}))}e.languages.toml={comment:{pattern:/#.*/,greedy:!0},table:{pattern:RegExp(n(/(^[\t ]*\[\s*(?:\[\s*)?)__(?:\s*\.\s*__)*(?=\s*\])/.source),"m"),lookbehind:!0,greedy:!0,alias:"class-name"},key:{pattern:RegExp(n(/(^[\t ]*|[{,]\s*)__(?:\s*\.\s*__)*(?=\s*=)/.source),"m"),lookbehind:!0,greedy:!0,alias:"property"},string:{pattern:/"""(?:\\[\s\S]|[^\\])*?"""|'''[\s\S]*?'''|'[^'\n\r]*'|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},date:[{pattern:/\b\d{4}-\d{2}-\d{2}(?:[T\s]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})?)?\b/i,alias:"number"},{pattern:/\b\d{2}:\d{2}:\d{2}(?:\.\d+)?\b/,alias:"number"}],number:/(?:\b0(?:x[\da-zA-Z]+(?:_[\da-zA-Z]+)*|o[0-7]+(?:_[0-7]+)*|b[10]+(?:_[10]+)*))\b|[-+]?\b\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?\b|[-+]?\b(?:inf|nan)\b/,boolean:/\b(?:false|true)\b/,punctuation:/[.,=[\]{}]/}}(Prism)},4049:(e,t,n)=>{"use strict";var r=n(6257);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},507:(e,t,n)=>{e.exports=n(4049)()},6257:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},3746:(e,t,n)=>{"use strict";var r=n(959),a=n(2962);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var i=new Set,l={};function s(e,t){u(e,t),u(e+"Capture",t)}function u(e,t){for(l[e]=t,e=0;e<t.length;e++)i.add(t[e])}var c=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),d=Object.prototype.hasOwnProperty,f=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,p={},h={};function g(e,t,n,r,a,o,i){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=a,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=i}var m={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){m[e]=new g(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];m[t]=new g(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){m[e]=new g(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){m[e]=new g(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){m[e]=new g(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){m[e]=new g(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){m[e]=new g(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){m[e]=new g(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){m[e]=new g(e,5,!1,e.toLowerCase(),null,!1,!1)}));var y=/[\-:]([a-z])/g;function b(e){return e[1].toUpperCase()}function v(e,t,n,r){var a=m.hasOwnProperty(t)?m[t]:null;(null!==a?0!==a.type:r||!(2<t.length)||"o"!==t[0]&&"O"!==t[0]||"n"!==t[1]&&"N"!==t[1])&&(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,a,r)&&(n=null),r||null===a?function(e){return!!d.call(h,e)||!d.call(p,e)&&(f.test(e)?h[e]=!0:(p[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):a.mustUseProperty?e[a.propertyName]=null===n?3!==a.type&&"":n:(t=a.attributeName,r=a.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(a=a.type)||4===a&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(y,b);m[t]=new g(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(y,b);m[t]=new g(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(y,b);m[t]=new g(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){m[e]=new g(e,1,!1,e.toLowerCase(),null,!1,!1)})),m.xlinkHref=new g("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){m[e]=new g(e,1,!1,e.toLowerCase(),null,!0,!0)}));var w=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,k=Symbol.for("react.element"),x=Symbol.for("react.portal"),S=Symbol.for("react.fragment"),E=Symbol.for("react.strict_mode"),_=Symbol.for("react.profiler"),C=Symbol.for("react.provider"),T=Symbol.for("react.context"),A=Symbol.for("react.forward_ref"),N=Symbol.for("react.suspense"),P=Symbol.for("react.suspense_list"),L=Symbol.for("react.memo"),O=Symbol.for("react.lazy");Symbol.for("react.scope"),Symbol.for("react.debug_trace_mode");var R=Symbol.for("react.offscreen");Symbol.for("react.legacy_hidden"),Symbol.for("react.cache"),Symbol.for("react.tracing_marker");var j=Symbol.iterator;function I(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=j&&e[j]||e["@@iterator"])?e:null}var M,D=Object.assign;function F(e){if(void 0===M)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);M=t&&t[1]||""}return"\n"+M+e}var z=!1;function B(e,t){if(!e||z)return"";z=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(u){var r=u}Reflect.construct(e,[],t)}else{try{t.call()}catch(u){r=u}e.call(t.prototype)}else{try{throw Error()}catch(u){r=u}e()}}catch(u){if(u&&r&&"string"==typeof u.stack){for(var a=u.stack.split("\n"),o=r.stack.split("\n"),i=a.length-1,l=o.length-1;1<=i&&0<=l&&a[i]!==o[l];)l--;for(;1<=i&&0<=l;i--,l--)if(a[i]!==o[l]){if(1!==i||1!==l)do{if(i--,0>--l||a[i]!==o[l]){var s="\n"+a[i].replace(" at new "," at ");return e.displayName&&s.includes("<anonymous>")&&(s=s.replace("<anonymous>",e.displayName)),s}}while(1<=i&&0<=l);break}}}finally{z=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?F(e):""}function $(e){switch(e.tag){case 5:return F(e.type);case 16:return F("Lazy");case 13:return F("Suspense");case 19:return F("SuspenseList");case 0:case 2:case 15:return e=B(e.type,!1);case 11:return e=B(e.type.render,!1);case 1:return e=B(e.type,!0);default:return""}}function U(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case S:return"Fragment";case x:return"Portal";case _:return"Profiler";case E:return"StrictMode";case N:return"Suspense";case P:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case T:return(e.displayName||"Context")+".Consumer";case C:return(e._context.displayName||"Context")+".Provider";case A:var t=e.render;return(e=e.displayName)||(e=""!==(e=t.displayName||t.name||"")?"ForwardRef("+e+")":"ForwardRef"),e;case L:return null!==(t=e.displayName||null)?t:U(e.type)||"Memo";case O:t=e._payload,e=e._init;try{return U(e(t))}catch(n){}}return null}function Z(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=(e=t.render).displayName||e.name||"",t.displayName||(""!==e?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return U(t);case 8:return t===E?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if("function"==typeof t)return t.displayName||t.name||null;if("string"==typeof t)return t}return null}function H(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":case"object":return e;default:return""}}function W(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function V(e){e._valueTracker||(e._valueTracker=function(e){var t=W(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var a=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return a.call(this)},set:function(e){r=""+e,o.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function q(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=W(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function G(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function Y(e,t){var n=t.checked;return D({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function K(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=H(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function Q(e,t){null!=(t=t.checked)&&v(e,"checked",t,!1)}function X(e,t){Q(e,t);var n=H(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?ee(e,t.type,n):t.hasOwnProperty("defaultValue")&&ee(e,t.type,H(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function J(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function ee(e,t,n){"number"===t&&G(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var te=Array.isArray;function ne(e,t,n,r){if(e=e.options,t){t={};for(var a=0;a<n.length;a++)t["$"+n[a]]=!0;for(n=0;n<e.length;n++)a=t.hasOwnProperty("$"+e[n].value),e[n].selected!==a&&(e[n].selected=a),a&&r&&(e[n].defaultSelected=!0)}else{for(n=""+H(n),t=null,a=0;a<e.length;a++){if(e[a].value===n)return e[a].selected=!0,void(r&&(e[a].defaultSelected=!0));null!==t||e[a].disabled||(t=e[a])}null!==t&&(t.selected=!0)}}function re(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(o(91));return D({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function ae(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(o(92));if(te(n)){if(1<n.length)throw Error(o(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:H(n)}}function oe(e,t){var n=H(t.value),r=H(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function ie(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}function le(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function se(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?le(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var ue,ce,de=(ce=function(e,t){if("http://www.w3.org/2000/svg"!==e.namespaceURI||"innerHTML"in e)e.innerHTML=t;else{for((ue=ue||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=ue.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return ce(e,t)}))}:ce);function fe(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var pe={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},he=["Webkit","ms","Moz","O"];function ge(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||pe.hasOwnProperty(e)&&pe[e]?(""+t).trim():t+"px"}function me(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),a=ge(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,a):e[n]=a}}Object.keys(pe).forEach((function(e){he.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),pe[t]=pe[e]}))}));var ye=D({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function be(e,t){if(t){if(ye[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(o(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(o(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(o(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(o(62))}}function ve(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var we=null;function ke(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var xe=null,Se=null,Ee=null;function _e(e){if(e=va(e)){if("function"!=typeof xe)throw Error(o(280));var t=e.stateNode;t&&(t=ka(t),xe(e.stateNode,e.type,t))}}function Ce(e){Se?Ee?Ee.push(e):Ee=[e]:Se=e}function Te(){if(Se){var e=Se,t=Ee;if(Ee=Se=null,_e(e),t)for(e=0;e<t.length;e++)_e(t[e])}}function Ae(e,t){return e(t)}function Ne(){}var Pe=!1;function Le(e,t,n){if(Pe)return e(t,n);Pe=!0;try{return Ae(e,t,n)}finally{Pe=!1,(null!==Se||null!==Ee)&&(Ne(),Te())}}function Oe(e,t){var n=e.stateNode;if(null===n)return null;var r=ka(n);if(null===r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(o(231,t,typeof n));return n}var Re=!1;if(c)try{var je={};Object.defineProperty(je,"passive",{get:function(){Re=!0}}),window.addEventListener("test",je,je),window.removeEventListener("test",je,je)}catch(ce){Re=!1}function Ie(e,t,n,r,a,o,i,l,s){var u=Array.prototype.slice.call(arguments,3);try{t.apply(n,u)}catch(c){this.onError(c)}}var Me=!1,De=null,Fe=!1,ze=null,Be={onError:function(e){Me=!0,De=e}};function $e(e,t,n,r,a,o,i,l,s){Me=!1,De=null,Ie.apply(Be,arguments)}function Ue(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(4098&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function Ze(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function He(e){if(Ue(e)!==e)throw Error(o(188))}function We(e){return null!==(e=function(e){var t=e.alternate;if(!t){if(null===(t=Ue(e)))throw Error(o(188));return t!==e?null:e}for(var n=e,r=t;;){var a=n.return;if(null===a)break;var i=a.alternate;if(null===i){if(null!==(r=a.return)){n=r;continue}break}if(a.child===i.child){for(i=a.child;i;){if(i===n)return He(a),e;if(i===r)return He(a),t;i=i.sibling}throw Error(o(188))}if(n.return!==r.return)n=a,r=i;else{for(var l=!1,s=a.child;s;){if(s===n){l=!0,n=a,r=i;break}if(s===r){l=!0,r=a,n=i;break}s=s.sibling}if(!l){for(s=i.child;s;){if(s===n){l=!0,n=i,r=a;break}if(s===r){l=!0,r=i,n=a;break}s=s.sibling}if(!l)throw Error(o(189))}}if(n.alternate!==r)throw Error(o(190))}if(3!==n.tag)throw Error(o(188));return n.stateNode.current===n?e:t}(e))?Ve(e):null}function Ve(e){if(5===e.tag||6===e.tag)return e;for(e=e.child;null!==e;){var t=Ve(e);if(null!==t)return t;e=e.sibling}return null}var qe=a.unstable_scheduleCallback,Ge=a.unstable_cancelCallback,Ye=a.unstable_shouldYield,Ke=a.unstable_requestPaint,Qe=a.unstable_now,Xe=a.unstable_getCurrentPriorityLevel,Je=a.unstable_ImmediatePriority,et=a.unstable_UserBlockingPriority,tt=a.unstable_NormalPriority,nt=a.unstable_LowPriority,rt=a.unstable_IdlePriority,at=null,ot=null;var it=Math.clz32?Math.clz32:function(e){return e>>>=0,0===e?32:31-(lt(e)/st|0)|0},lt=Math.log,st=Math.LN2;var ut=64,ct=4194304;function dt(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194240&e;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return 130023424&e;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function ft(e,t){var n=e.pendingLanes;if(0===n)return 0;var r=0,a=e.suspendedLanes,o=e.pingedLanes,i=268435455&n;if(0!==i){var l=i&~a;0!==l?r=dt(l):0!==(o&=i)&&(r=dt(o))}else 0!==(i=n&~a)?r=dt(i):0!==o&&(r=dt(o));if(0===r)return 0;if(0!==t&&t!==r&&0==(t&a)&&((a=r&-r)>=(o=t&-t)||16===a&&0!=(4194240&o)))return t;if(0!=(4&r)&&(r|=16&n),0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)a=1<<(n=31-it(t)),r|=e[n],t&=~a;return r}function pt(e,t){switch(e){case 1:case 2:case 4:return t+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;default:return-1}}function ht(e){return 0!==(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function gt(){var e=ut;return 0==(4194240&(ut<<=1))&&(ut=64),e}function mt(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function yt(e,t,n){e.pendingLanes|=t,536870912!==t&&(e.suspendedLanes=0,e.pingedLanes=0),(e=e.eventTimes)[t=31-it(t)]=n}function bt(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-it(n),a=1<<r;a&t|e[r]&t&&(e[r]|=t),n&=~a}}var vt=0;function wt(e){return 1<(e&=-e)?4<e?0!=(268435455&e)?16:536870912:4:1}var kt,xt,St,Et,_t,Ct=!1,Tt=[],At=null,Nt=null,Pt=null,Lt=new Map,Ot=new Map,Rt=[],jt="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function It(e,t){switch(e){case"focusin":case"focusout":At=null;break;case"dragenter":case"dragleave":Nt=null;break;case"mouseover":case"mouseout":Pt=null;break;case"pointerover":case"pointerout":Lt.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":Ot.delete(t.pointerId)}}function Mt(e,t,n,r,a,o){return null===e||e.nativeEvent!==o?(e={blockedOn:t,domEventName:n,eventSystemFlags:r,nativeEvent:o,targetContainers:[a]},null!==t&&(null!==(t=va(t))&&xt(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==a&&-1===t.indexOf(a)&&t.push(a),e)}function Dt(e){var t=ba(e.target);if(null!==t){var n=Ue(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=Ze(n)))return e.blockedOn=t,void _t(e.priority,(function(){St(n)}))}else if(3===t&&n.stateNode.current.memoizedState.isDehydrated)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function Ft(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Yt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=va(n))&&xt(t),e.blockedOn=n,!1;var r=new(n=e.nativeEvent).constructor(n.type,n);we=r,n.target.dispatchEvent(r),we=null,t.shift()}return!0}function zt(e,t,n){Ft(e)&&n.delete(t)}function Bt(){Ct=!1,null!==At&&Ft(At)&&(At=null),null!==Nt&&Ft(Nt)&&(Nt=null),null!==Pt&&Ft(Pt)&&(Pt=null),Lt.forEach(zt),Ot.forEach(zt)}function $t(e,t){e.blockedOn===t&&(e.blockedOn=null,Ct||(Ct=!0,a.unstable_scheduleCallback(a.unstable_NormalPriority,Bt)))}function Ut(e){function t(t){return $t(t,e)}if(0<Tt.length){$t(Tt[0],e);for(var n=1;n<Tt.length;n++){var r=Tt[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==At&&$t(At,e),null!==Nt&&$t(Nt,e),null!==Pt&&$t(Pt,e),Lt.forEach(t),Ot.forEach(t),n=0;n<Rt.length;n++)(r=Rt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<Rt.length&&null===(n=Rt[0]).blockedOn;)Dt(n),null===n.blockedOn&&Rt.shift()}var Zt=w.ReactCurrentBatchConfig,Ht=!0;function Wt(e,t,n,r){var a=vt,o=Zt.transition;Zt.transition=null;try{vt=1,qt(e,t,n,r)}finally{vt=a,Zt.transition=o}}function Vt(e,t,n,r){var a=vt,o=Zt.transition;Zt.transition=null;try{vt=4,qt(e,t,n,r)}finally{vt=a,Zt.transition=o}}function qt(e,t,n,r){if(Ht){var a=Yt(e,t,n,r);if(null===a)Hr(e,t,r,Gt,n),It(e,r);else if(function(e,t,n,r,a){switch(t){case"focusin":return At=Mt(At,e,t,n,r,a),!0;case"dragenter":return Nt=Mt(Nt,e,t,n,r,a),!0;case"mouseover":return Pt=Mt(Pt,e,t,n,r,a),!0;case"pointerover":var o=a.pointerId;return Lt.set(o,Mt(Lt.get(o)||null,e,t,n,r,a)),!0;case"gotpointercapture":return o=a.pointerId,Ot.set(o,Mt(Ot.get(o)||null,e,t,n,r,a)),!0}return!1}(a,e,t,n,r))r.stopPropagation();else if(It(e,r),4&t&&-1<jt.indexOf(e)){for(;null!==a;){var o=va(a);if(null!==o&&kt(o),null===(o=Yt(e,t,n,r))&&Hr(e,t,r,Gt,n),o===a)break;a=o}null!==a&&r.stopPropagation()}else Hr(e,t,r,null,n)}}var Gt=null;function Yt(e,t,n,r){if(Gt=null,null!==(e=ba(e=ke(r))))if(null===(t=Ue(e)))e=null;else if(13===(n=t.tag)){if(null!==(e=Ze(t)))return e;e=null}else if(3===n){if(t.stateNode.current.memoizedState.isDehydrated)return 3===t.tag?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null);return Gt=e,null}function Kt(e){switch(e){case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 1;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"toggle":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 4;case"message":switch(Xe()){case Je:return 1;case et:return 4;case tt:case nt:return 16;case rt:return 536870912;default:return 16}default:return 16}}var Qt=null,Xt=null,Jt=null;function en(){if(Jt)return Jt;var e,t,n=Xt,r=n.length,a="value"in Qt?Qt.value:Qt.textContent,o=a.length;for(e=0;e<r&&n[e]===a[e];e++);var i=r-e;for(t=1;t<=i&&n[r-t]===a[o-t];t++);return Jt=a.slice(e,1<t?1-t:void 0)}function tn(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function nn(){return!0}function rn(){return!1}function an(e){function t(t,n,r,a,o){for(var i in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=a,this.target=o,this.currentTarget=null,e)e.hasOwnProperty(i)&&(t=e[i],this[i]=t?t(a):a[i]);return this.isDefaultPrevented=(null!=a.defaultPrevented?a.defaultPrevented:!1===a.returnValue)?nn:rn,this.isPropagationStopped=rn,this}return D(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=nn)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=nn)},persist:function(){},isPersistent:nn}),t}var on,ln,sn,un={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},cn=an(un),dn=D({},un,{view:0,detail:0}),fn=an(dn),pn=D({},dn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:_n,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==sn&&(sn&&"mousemove"===e.type?(on=e.screenX-sn.screenX,ln=e.screenY-sn.screenY):ln=on=0,sn=e),on)},movementY:function(e){return"movementY"in e?e.movementY:ln}}),hn=an(pn),gn=an(D({},pn,{dataTransfer:0})),mn=an(D({},dn,{relatedTarget:0})),yn=an(D({},un,{animationName:0,elapsedTime:0,pseudoElement:0})),bn=D({},un,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),vn=an(bn),wn=an(D({},un,{data:0})),kn={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},xn={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},Sn={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function En(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=Sn[e])&&!!t[e]}function _n(){return En}var Cn=D({},dn,{key:function(e){if(e.key){var t=kn[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=tn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?xn[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:_n,charCode:function(e){return"keypress"===e.type?tn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?tn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),Tn=an(Cn),An=an(D({},pn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Nn=an(D({},dn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:_n})),Pn=an(D({},un,{propertyName:0,elapsedTime:0,pseudoElement:0})),Ln=D({},pn,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),On=an(Ln),Rn=[9,13,27,32],jn=c&&"CompositionEvent"in window,In=null;c&&"documentMode"in document&&(In=document.documentMode);var Mn=c&&"TextEvent"in window&&!In,Dn=c&&(!jn||In&&8<In&&11>=In),Fn=String.fromCharCode(32),zn=!1;function Bn(e,t){switch(e){case"keyup":return-1!==Rn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function $n(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Un=!1;var Zn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Hn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Zn[e.type]:"textarea"===t}function Wn(e,t,n,r){Ce(r),0<(t=Vr(t,"onChange")).length&&(n=new cn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Vn=null,qn=null;function Gn(e){Fr(e,0)}function Yn(e){if(q(wa(e)))return e}function Kn(e,t){if("change"===e)return t}var Qn=!1;if(c){var Xn;if(c){var Jn="oninput"in document;if(!Jn){var er=document.createElement("div");er.setAttribute("oninput","return;"),Jn="function"==typeof er.oninput}Xn=Jn}else Xn=!1;Qn=Xn&&(!document.documentMode||9<document.documentMode)}function tr(){Vn&&(Vn.detachEvent("onpropertychange",nr),qn=Vn=null)}function nr(e){if("value"===e.propertyName&&Yn(qn)){var t=[];Wn(t,qn,e,ke(e)),Le(Gn,t)}}function rr(e,t,n){"focusin"===e?(tr(),qn=n,(Vn=t).attachEvent("onpropertychange",nr)):"focusout"===e&&tr()}function ar(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Yn(qn)}function or(e,t){if("click"===e)return Yn(t)}function ir(e,t){if("input"===e||"change"===e)return Yn(t)}var lr="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t};function sr(e,t){if(lr(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++){var a=n[r];if(!d.call(t,a)||!lr(e[a],t[a]))return!1}return!0}function ur(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function cr(e,t){var n,r=ur(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=ur(r)}}function dr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?dr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function fr(){for(var e=window,t=G();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=G((e=t.contentWindow).document)}return t}function pr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}function hr(e){var t=fr(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&dr(n.ownerDocument.documentElement,n)){if(null!==r&&pr(n))if(t=r.start,void 0===(e=r.end)&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if((e=(t=n.ownerDocument||document)&&t.defaultView||window).getSelection){e=e.getSelection();var a=n.textContent.length,o=Math.min(r.start,a);r=void 0===r.end?o:Math.min(r.end,a),!e.extend&&o>r&&(a=r,r=o,o=a),a=cr(n,o);var i=cr(n,r);a&&i&&(1!==e.rangeCount||e.anchorNode!==a.node||e.anchorOffset!==a.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&((t=t.createRange()).setStart(a.node,a.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),e.addRange(t)))}for(t=[],e=n;e=e.parentNode;)1===e.nodeType&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for("function"==typeof n.focus&&n.focus(),n=0;n<t.length;n++)(e=t[n]).element.scrollLeft=e.left,e.element.scrollTop=e.top}}var gr=c&&"documentMode"in document&&11>=document.documentMode,mr=null,yr=null,br=null,vr=!1;function wr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;vr||null==mr||mr!==G(r)||("selectionStart"in(r=mr)&&pr(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},br&&sr(br,r)||(br=r,0<(r=Vr(yr,"onSelect")).length&&(t=new cn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=mr)))}function kr(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var xr={animationend:kr("Animation","AnimationEnd"),animationiteration:kr("Animation","AnimationIteration"),animationstart:kr("Animation","AnimationStart"),transitionend:kr("Transition","TransitionEnd")},Sr={},Er={};function _r(e){if(Sr[e])return Sr[e];if(!xr[e])return e;var t,n=xr[e];for(t in n)if(n.hasOwnProperty(t)&&t in Er)return Sr[e]=n[t];return e}c&&(Er=document.createElement("div").style,"AnimationEvent"in window||(delete xr.animationend.animation,delete xr.animationiteration.animation,delete xr.animationstart.animation),"TransitionEvent"in window||delete xr.transitionend.transition);var Cr=_r("animationend"),Tr=_r("animationiteration"),Ar=_r("animationstart"),Nr=_r("transitionend"),Pr=new Map,Lr="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function Or(e,t){Pr.set(e,t),s(t,[e])}for(var Rr=0;Rr<Lr.length;Rr++){var jr=Lr[Rr];Or(jr.toLowerCase(),"on"+(jr[0].toUpperCase()+jr.slice(1)))}Or(Cr,"onAnimationEnd"),Or(Tr,"onAnimationIteration"),Or(Ar,"onAnimationStart"),Or("dblclick","onDoubleClick"),Or("focusin","onFocus"),Or("focusout","onBlur"),Or(Nr,"onTransitionEnd"),u("onMouseEnter",["mouseout","mouseover"]),u("onMouseLeave",["mouseout","mouseover"]),u("onPointerEnter",["pointerout","pointerover"]),u("onPointerLeave",["pointerout","pointerover"]),s("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),s("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),s("onBeforeInput",["compositionend","keypress","textInput","paste"]),s("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),s("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),s("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Ir="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Mr=new Set("cancel close invalid load scroll toggle".split(" ").concat(Ir));function Dr(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,a,i,l,s,u){if($e.apply(this,arguments),Me){if(!Me)throw Error(o(198));var c=De;Me=!1,De=null,Fe||(Fe=!0,ze=c)}}(r,t,void 0,e),e.currentTarget=null}function Fr(e,t){t=0!=(4&t);for(var n=0;n<e.length;n++){var r=e[n],a=r.event;r=r.listeners;e:{var o=void 0;if(t)for(var i=r.length-1;0<=i;i--){var l=r[i],s=l.instance,u=l.currentTarget;if(l=l.listener,s!==o&&a.isPropagationStopped())break e;Dr(a,l,u),o=s}else for(i=0;i<r.length;i++){if(s=(l=r[i]).instance,u=l.currentTarget,l=l.listener,s!==o&&a.isPropagationStopped())break e;Dr(a,l,u),o=s}}}if(Fe)throw e=ze,Fe=!1,ze=null,e}function zr(e,t){var n=t[ga];void 0===n&&(n=t[ga]=new Set);var r=e+"__bubble";n.has(r)||(Zr(t,e,2,!1),n.add(r))}function Br(e,t,n){var r=0;t&&(r|=4),Zr(n,e,r,t)}var $r="_reactListening"+Math.random().toString(36).slice(2);function Ur(e){if(!e[$r]){e[$r]=!0,i.forEach((function(t){"selectionchange"!==t&&(Mr.has(t)||Br(t,!1,e),Br(t,!0,e))}));var t=9===e.nodeType?e:e.ownerDocument;null===t||t[$r]||(t[$r]=!0,Br("selectionchange",!1,t))}}function Zr(e,t,n,r){switch(Kt(t)){case 1:var a=Wt;break;case 4:a=Vt;break;default:a=qt}n=a.bind(null,t,n,e),a=void 0,!Re||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(a=!0),r?void 0!==a?e.addEventListener(t,n,{capture:!0,passive:a}):e.addEventListener(t,n,!0):void 0!==a?e.addEventListener(t,n,{passive:a}):e.addEventListener(t,n,!1)}function Hr(e,t,n,r,a){var o=r;if(0==(1&t)&&0==(2&t)&&null!==r)e:for(;;){if(null===r)return;var i=r.tag;if(3===i||4===i){var l=r.stateNode.containerInfo;if(l===a||8===l.nodeType&&l.parentNode===a)break;if(4===i)for(i=r.return;null!==i;){var s=i.tag;if((3===s||4===s)&&((s=i.stateNode.containerInfo)===a||8===s.nodeType&&s.parentNode===a))return;i=i.return}for(;null!==l;){if(null===(i=ba(l)))return;if(5===(s=i.tag)||6===s){r=o=i;continue e}l=l.parentNode}}r=r.return}Le((function(){var r=o,a=ke(n),i=[];e:{var l=Pr.get(e);if(void 0!==l){var s=cn,u=e;switch(e){case"keypress":if(0===tn(n))break e;case"keydown":case"keyup":s=Tn;break;case"focusin":u="focus",s=mn;break;case"focusout":u="blur",s=mn;break;case"beforeblur":case"afterblur":s=mn;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":s=hn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":s=gn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":s=Nn;break;case Cr:case Tr:case Ar:s=yn;break;case Nr:s=Pn;break;case"scroll":s=fn;break;case"wheel":s=On;break;case"copy":case"cut":case"paste":s=vn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":s=An}var c=0!=(4&t),d=!c&&"scroll"===e,f=c?null!==l?l+"Capture":null:l;c=[];for(var p,h=r;null!==h;){var g=(p=h).stateNode;if(5===p.tag&&null!==g&&(p=g,null!==f&&(null!=(g=Oe(h,f))&&c.push(Wr(h,g,p)))),d)break;h=h.return}0<c.length&&(l=new s(l,u,null,n,a),i.push({event:l,listeners:c}))}}if(0==(7&t)){if(s="mouseout"===e||"pointerout"===e,(!(l="mouseover"===e||"pointerover"===e)||n===we||!(u=n.relatedTarget||n.fromElement)||!ba(u)&&!u[ha])&&(s||l)&&(l=a.window===a?a:(l=a.ownerDocument)?l.defaultView||l.parentWindow:window,s?(s=r,null!==(u=(u=n.relatedTarget||n.toElement)?ba(u):null)&&(u!==(d=Ue(u))||5!==u.tag&&6!==u.tag)&&(u=null)):(s=null,u=r),s!==u)){if(c=hn,g="onMouseLeave",f="onMouseEnter",h="mouse","pointerout"!==e&&"pointerover"!==e||(c=An,g="onPointerLeave",f="onPointerEnter",h="pointer"),d=null==s?l:wa(s),p=null==u?l:wa(u),(l=new c(g,h+"leave",s,n,a)).target=d,l.relatedTarget=p,g=null,ba(a)===r&&((c=new c(f,h+"enter",u,n,a)).target=p,c.relatedTarget=d,g=c),d=g,s&&u)e:{for(f=u,h=0,p=c=s;p;p=qr(p))h++;for(p=0,g=f;g;g=qr(g))p++;for(;0<h-p;)c=qr(c),h--;for(;0<p-h;)f=qr(f),p--;for(;h--;){if(c===f||null!==f&&c===f.alternate)break e;c=qr(c),f=qr(f)}c=null}else c=null;null!==s&&Gr(i,l,s,c,!1),null!==u&&null!==d&&Gr(i,d,u,c,!0)}if("select"===(s=(l=r?wa(r):window).nodeName&&l.nodeName.toLowerCase())||"input"===s&&"file"===l.type)var m=Kn;else if(Hn(l))if(Qn)m=ir;else{m=ar;var y=rr}else(s=l.nodeName)&&"input"===s.toLowerCase()&&("checkbox"===l.type||"radio"===l.type)&&(m=or);switch(m&&(m=m(e,r))?Wn(i,m,n,a):(y&&y(e,l,r),"focusout"===e&&(y=l._wrapperState)&&y.controlled&&"number"===l.type&&ee(l,"number",l.value)),y=r?wa(r):window,e){case"focusin":(Hn(y)||"true"===y.contentEditable)&&(mr=y,yr=r,br=null);break;case"focusout":br=yr=mr=null;break;case"mousedown":vr=!0;break;case"contextmenu":case"mouseup":case"dragend":vr=!1,wr(i,n,a);break;case"selectionchange":if(gr)break;case"keydown":case"keyup":wr(i,n,a)}var b;if(jn)e:{switch(e){case"compositionstart":var v="onCompositionStart";break e;case"compositionend":v="onCompositionEnd";break e;case"compositionupdate":v="onCompositionUpdate";break e}v=void 0}else Un?Bn(e,n)&&(v="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(v="onCompositionStart");v&&(Dn&&"ko"!==n.locale&&(Un||"onCompositionStart"!==v?"onCompositionEnd"===v&&Un&&(b=en()):(Xt="value"in(Qt=a)?Qt.value:Qt.textContent,Un=!0)),0<(y=Vr(r,v)).length&&(v=new wn(v,e,null,n,a),i.push({event:v,listeners:y}),b?v.data=b:null!==(b=$n(n))&&(v.data=b))),(b=Mn?function(e,t){switch(e){case"compositionend":return $n(t);case"keypress":return 32!==t.which?null:(zn=!0,Fn);case"textInput":return(e=t.data)===Fn&&zn?null:e;default:return null}}(e,n):function(e,t){if(Un)return"compositionend"===e||!jn&&Bn(e,t)?(e=en(),Jt=Xt=Qt=null,Un=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Dn&&"ko"!==t.locale?null:t.data}}(e,n))&&(0<(r=Vr(r,"onBeforeInput")).length&&(a=new wn("onBeforeInput","beforeinput",null,n,a),i.push({event:a,listeners:r}),a.data=b))}Fr(i,t)}))}function Wr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Vr(e,t){for(var n=t+"Capture",r=[];null!==e;){var a=e,o=a.stateNode;5===a.tag&&null!==o&&(a=o,null!=(o=Oe(e,n))&&r.unshift(Wr(e,o,a)),null!=(o=Oe(e,t))&&r.push(Wr(e,o,a))),e=e.return}return r}function qr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Gr(e,t,n,r,a){for(var o=t._reactName,i=[];null!==n&&n!==r;){var l=n,s=l.alternate,u=l.stateNode;if(null!==s&&s===r)break;5===l.tag&&null!==u&&(l=u,a?null!=(s=Oe(n,o))&&i.unshift(Wr(n,s,l)):a||null!=(s=Oe(n,o))&&i.push(Wr(n,s,l))),n=n.return}0!==i.length&&e.push({event:t,listeners:i})}var Yr=/\r\n?/g,Kr=/\u0000|\uFFFD/g;function Qr(e){return("string"==typeof e?e:""+e).replace(Yr,"\n").replace(Kr,"")}function Xr(e,t,n){if(t=Qr(t),Qr(e)!==t&&n)throw Error(o(425))}function Jr(){}var ea=null,ta=null;function na(e,t){return"textarea"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var ra="function"==typeof setTimeout?setTimeout:void 0,aa="function"==typeof clearTimeout?clearTimeout:void 0,oa="function"==typeof Promise?Promise:void 0,ia="function"==typeof queueMicrotask?queueMicrotask:void 0!==oa?function(e){return oa.resolve(null).then(e).catch(la)}:ra;function la(e){setTimeout((function(){throw e}))}function sa(e,t){var n=t,r=0;do{var a=n.nextSibling;if(e.removeChild(n),a&&8===a.nodeType)if("/$"===(n=a.data)){if(0===r)return e.removeChild(a),void Ut(t);r--}else"$"!==n&&"$?"!==n&&"$!"!==n||r++;n=a}while(n);Ut(t)}function ua(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break;if(8===t){if("$"===(t=e.data)||"$!"===t||"$?"===t)break;if("/$"===t)return null}}return e}function ca(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var da=Math.random().toString(36).slice(2),fa="__reactFiber$"+da,pa="__reactProps$"+da,ha="__reactContainer$"+da,ga="__reactEvents$"+da,ma="__reactListeners$"+da,ya="__reactHandles$"+da;function ba(e){var t=e[fa];if(t)return t;for(var n=e.parentNode;n;){if(t=n[ha]||n[fa]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=ca(e);null!==e;){if(n=e[fa])return n;e=ca(e)}return t}n=(e=n).parentNode}return null}function va(e){return!(e=e[fa]||e[ha])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function wa(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(o(33))}function ka(e){return e[pa]||null}var xa=[],Sa=-1;function Ea(e){return{current:e}}function _a(e){0>Sa||(e.current=xa[Sa],xa[Sa]=null,Sa--)}function Ca(e,t){Sa++,xa[Sa]=e.current,e.current=t}var Ta={},Aa=Ea(Ta),Na=Ea(!1),Pa=Ta;function La(e,t){var n=e.type.contextTypes;if(!n)return Ta;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var a,o={};for(a in n)o[a]=t[a];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function Oa(e){return null!=(e=e.childContextTypes)}function Ra(){_a(Na),_a(Aa)}function ja(e,t,n){if(Aa.current!==Ta)throw Error(o(168));Ca(Aa,t),Ca(Na,n)}function Ia(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var a in r=r.getChildContext())if(!(a in t))throw Error(o(108,Z(e)||"Unknown",a));return D({},n,r)}function Ma(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Ta,Pa=Aa.current,Ca(Aa,e),Ca(Na,Na.current),!0}function Da(e,t,n){var r=e.stateNode;if(!r)throw Error(o(169));n?(e=Ia(e,t,Pa),r.__reactInternalMemoizedMergedChildContext=e,_a(Na),_a(Aa),Ca(Aa,e)):_a(Na),Ca(Na,n)}var Fa=null,za=!1,Ba=!1;function $a(e){null===Fa?Fa=[e]:Fa.push(e)}function Ua(){if(!Ba&&null!==Fa){Ba=!0;var e=0,t=vt;try{var n=Fa;for(vt=1;e<n.length;e++){var r=n[e];do{r=r(!0)}while(null!==r)}Fa=null,za=!1}catch(a){throw null!==Fa&&(Fa=Fa.slice(e+1)),qe(Je,Ua),a}finally{vt=t,Ba=!1}}return null}var Za=[],Ha=0,Wa=null,Va=0,qa=[],Ga=0,Ya=null,Ka=1,Qa="";function Xa(e,t){Za[Ha++]=Va,Za[Ha++]=Wa,Wa=e,Va=t}function Ja(e,t,n){qa[Ga++]=Ka,qa[Ga++]=Qa,qa[Ga++]=Ya,Ya=e;var r=Ka;e=Qa;var a=32-it(r)-1;r&=~(1<<a),n+=1;var o=32-it(t)+a;if(30<o){var i=a-a%5;o=(r&(1<<i)-1).toString(32),r>>=i,a-=i,Ka=1<<32-it(t)+a|n<<a|r,Qa=o+e}else Ka=1<<o|n<<a|r,Qa=e}function eo(e){null!==e.return&&(Xa(e,1),Ja(e,1,0))}function to(e){for(;e===Wa;)Wa=Za[--Ha],Za[Ha]=null,Va=Za[--Ha],Za[Ha]=null;for(;e===Ya;)Ya=qa[--Ga],qa[Ga]=null,Qa=qa[--Ga],qa[Ga]=null,Ka=qa[--Ga],qa[Ga]=null}var no=null,ro=null,ao=!1,oo=null;function io(e,t){var n=Ou(5,null,null,0);n.elementType="DELETED",n.stateNode=t,n.return=e,null===(t=e.deletions)?(e.deletions=[n],e.flags|=16):t.push(n)}function lo(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,no=e,ro=ua(t.firstChild),!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,no=e,ro=null,!0);case 13:return null!==(t=8!==t.nodeType?null:t)&&(n=null!==Ya?{id:Ka,overflow:Qa}:null,e.memoizedState={dehydrated:t,treeContext:n,retryLane:1073741824},(n=Ou(18,null,null,0)).stateNode=t,n.return=e,e.child=n,no=e,ro=null,!0);default:return!1}}function so(e){return 0!=(1&e.mode)&&0==(128&e.flags)}function uo(e){if(ao){var t=ro;if(t){var n=t;if(!lo(e,t)){if(so(e))throw Error(o(418));t=ua(n.nextSibling);var r=no;t&&lo(e,t)?io(r,n):(e.flags=-4097&e.flags|2,ao=!1,no=e)}}else{if(so(e))throw Error(o(418));e.flags=-4097&e.flags|2,ao=!1,no=e}}}function co(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;no=e}function fo(e){if(e!==no)return!1;if(!ao)return co(e),ao=!0,!1;var t;if((t=3!==e.tag)&&!(t=5!==e.tag)&&(t="head"!==(t=e.type)&&"body"!==t&&!na(e.type,e.memoizedProps)),t&&(t=ro)){if(so(e))throw po(),Error(o(418));for(;t;)io(e,t),t=ua(t.nextSibling)}if(co(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(o(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){ro=ua(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}ro=null}}else ro=no?ua(e.stateNode.nextSibling):null;return!0}function po(){for(var e=ro;e;)e=ua(e.nextSibling)}function ho(){ro=no=null,ao=!1}function go(e){null===oo?oo=[e]:oo.push(e)}var mo=w.ReactCurrentBatchConfig;function yo(e,t){if(e&&e.defaultProps){for(var n in t=D({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}var bo=Ea(null),vo=null,wo=null,ko=null;function xo(){ko=wo=vo=null}function So(e){var t=bo.current;_a(bo),e._currentValue=t}function Eo(e,t,n){for(;null!==e;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,null!==r&&(r.childLanes|=t)):null!==r&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function _o(e,t){vo=e,ko=wo=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!=(e.lanes&t)&&(wl=!0),e.firstContext=null)}function Co(e){var t=e._currentValue;if(ko!==e)if(e={context:e,memoizedValue:t,next:null},null===wo){if(null===vo)throw Error(o(308));wo=e,vo.dependencies={lanes:0,firstContext:e}}else wo=wo.next=e;return t}var To=null;function Ao(e){null===To?To=[e]:To.push(e)}function No(e,t,n,r){var a=t.interleaved;return null===a?(n.next=n,Ao(t)):(n.next=a.next,a.next=n),t.interleaved=n,Po(e,r)}function Po(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}var Lo=!1;function Oo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Ro(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function jo(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Io(e,t,n){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,0!=(2&Ns)){var a=r.pending;return null===a?t.next=t:(t.next=a.next,a.next=t),r.pending=t,Po(e,n)}return null===(a=r.interleaved)?(t.next=t,Ao(r)):(t.next=a.next,a.next=t),r.interleaved=t,Po(e,n)}function Mo(e,t,n){if(null!==(t=t.updateQueue)&&(t=t.shared,0!=(4194240&n))){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,bt(e,n)}}function Do(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var a=null,o=null;if(null!==(n=n.firstBaseUpdate)){do{var i={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===o?a=o=i:o=o.next=i,n=n.next}while(null!==n);null===o?a=o=t:o=o.next=t}else a=o=t;return n={baseState:r.baseState,firstBaseUpdate:a,lastBaseUpdate:o,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function Fo(e,t,n,r){var a=e.updateQueue;Lo=!1;var o=a.firstBaseUpdate,i=a.lastBaseUpdate,l=a.shared.pending;if(null!==l){a.shared.pending=null;var s=l,u=s.next;s.next=null,null===i?o=u:i.next=u,i=s;var c=e.alternate;null!==c&&((l=(c=c.updateQueue).lastBaseUpdate)!==i&&(null===l?c.firstBaseUpdate=u:l.next=u,c.lastBaseUpdate=s))}if(null!==o){var d=a.baseState;for(i=0,c=u=s=null,l=o;;){var f=l.lane,p=l.eventTime;if((r&f)===f){null!==c&&(c=c.next={eventTime:p,lane:0,tag:l.tag,payload:l.payload,callback:l.callback,next:null});e:{var h=e,g=l;switch(f=t,p=n,g.tag){case 1:if("function"==typeof(h=g.payload)){d=h.call(p,d,f);break e}d=h;break e;case 3:h.flags=-65537&h.flags|128;case 0:if(null==(f="function"==typeof(h=g.payload)?h.call(p,d,f):h))break e;d=D({},d,f);break e;case 2:Lo=!0}}null!==l.callback&&0!==l.lane&&(e.flags|=64,null===(f=a.effects)?a.effects=[l]:f.push(l))}else p={eventTime:p,lane:f,tag:l.tag,payload:l.payload,callback:l.callback,next:null},null===c?(u=c=p,s=d):c=c.next=p,i|=f;if(null===(l=l.next)){if(null===(l=a.shared.pending))break;l=(f=l).next,f.next=null,a.lastBaseUpdate=f,a.shared.pending=null}}if(null===c&&(s=d),a.baseState=s,a.firstBaseUpdate=u,a.lastBaseUpdate=c,null!==(t=a.shared.interleaved)){a=t;do{i|=a.lane,a=a.next}while(a!==t)}else null===o&&(a.shared.lanes=0);Ds|=i,e.lanes=i,e.memoizedState=d}}function zo(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],a=r.callback;if(null!==a){if(r.callback=null,r=n,"function"!=typeof a)throw Error(o(191,a));a.call(r)}}}var Bo=(new r.Component).refs;function $o(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:D({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var Uo={isMounted:function(e){return!!(e=e._reactInternals)&&Ue(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=tu(),a=nu(e),o=jo(r,a);o.payload=t,null!=n&&(o.callback=n),null!==(t=Io(e,o,a))&&(ru(t,e,a,r),Mo(t,e,a))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=tu(),a=nu(e),o=jo(r,a);o.tag=1,o.payload=t,null!=n&&(o.callback=n),null!==(t=Io(e,o,a))&&(ru(t,e,a,r),Mo(t,e,a))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=tu(),r=nu(e),a=jo(n,r);a.tag=2,null!=t&&(a.callback=t),null!==(t=Io(e,a,r))&&(ru(t,e,r,n),Mo(t,e,r))}};function Zo(e,t,n,r,a,o,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,o,i):!t.prototype||!t.prototype.isPureReactComponent||(!sr(n,r)||!sr(a,o))}function Ho(e,t,n){var r=!1,a=Ta,o=t.contextType;return"object"==typeof o&&null!==o?o=Co(o):(a=Oa(t)?Pa:Aa.current,o=(r=null!=(r=t.contextTypes))?La(e,a):Ta),t=new t(n,o),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=Uo,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=a,e.__reactInternalMemoizedMaskedChildContext=o),t}function Wo(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&Uo.enqueueReplaceState(t,t.state,null)}function Vo(e,t,n,r){var a=e.stateNode;a.props=n,a.state=e.memoizedState,a.refs=Bo,Oo(e);var o=t.contextType;"object"==typeof o&&null!==o?a.context=Co(o):(o=Oa(t)?Pa:Aa.current,a.context=La(e,o)),a.state=e.memoizedState,"function"==typeof(o=t.getDerivedStateFromProps)&&($o(e,t,o,n),a.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof a.getSnapshotBeforeUpdate||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||(t=a.state,"function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),t!==a.state&&Uo.enqueueReplaceState(a,a.state,null),Fo(e,n,a,r),a.state=e.memoizedState),"function"==typeof a.componentDidMount&&(e.flags|=4194308)}function qo(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(o(309));var r=n.stateNode}if(!r)throw Error(o(147,e));var a=r,i=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===i?t.ref:(t=function(e){var t=a.refs;t===Bo&&(t=a.refs={}),null===e?delete t[i]:t[i]=e},t._stringRef=i,t)}if("string"!=typeof e)throw Error(o(284));if(!n._owner)throw Error(o(290,e))}return e}function Go(e,t){throw e=Object.prototype.toString.call(t),Error(o(31,"[object Object]"===e?"object with keys {"+Object.keys(t).join(", ")+"}":e))}function Yo(e){return(0,e._init)(e._payload)}function Ko(e){function t(t,n){if(e){var r=t.deletions;null===r?(t.deletions=[n],t.flags|=16):r.push(n)}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function a(e,t){return(e=ju(e,t)).index=0,e.sibling=null,e}function i(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags|=2,n):r:(t.flags|=2,n):(t.flags|=1048576,n)}function l(t){return e&&null===t.alternate&&(t.flags|=2),t}function s(e,t,n,r){return null===t||6!==t.tag?((t=Fu(n,e.mode,r)).return=e,t):((t=a(t,n)).return=e,t)}function u(e,t,n,r){var o=n.type;return o===S?d(e,t,n.props.children,r,n.key):null!==t&&(t.elementType===o||"object"==typeof o&&null!==o&&o.$$typeof===O&&Yo(o)===t.type)?((r=a(t,n.props)).ref=qo(e,t,n),r.return=e,r):((r=Iu(n.type,n.key,n.props,null,e.mode,r)).ref=qo(e,t,n),r.return=e,r)}function c(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=zu(n,e.mode,r)).return=e,t):((t=a(t,n.children||[])).return=e,t)}function d(e,t,n,r,o){return null===t||7!==t.tag?((t=Mu(n,e.mode,r,o)).return=e,t):((t=a(t,n)).return=e,t)}function f(e,t,n){if("string"==typeof t&&""!==t||"number"==typeof t)return(t=Fu(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case k:return(n=Iu(t.type,t.key,t.props,null,e.mode,n)).ref=qo(e,null,t),n.return=e,n;case x:return(t=zu(t,e.mode,n)).return=e,t;case O:return f(e,(0,t._init)(t._payload),n)}if(te(t)||I(t))return(t=Mu(t,e.mode,n,null)).return=e,t;Go(e,t)}return null}function p(e,t,n,r){var a=null!==t?t.key:null;if("string"==typeof n&&""!==n||"number"==typeof n)return null!==a?null:s(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case k:return n.key===a?u(e,t,n,r):null;case x:return n.key===a?c(e,t,n,r):null;case O:return p(e,t,(a=n._init)(n._payload),r)}if(te(n)||I(n))return null!==a?null:d(e,t,n,r,null);Go(e,n)}return null}function h(e,t,n,r,a){if("string"==typeof r&&""!==r||"number"==typeof r)return s(t,e=e.get(n)||null,""+r,a);if("object"==typeof r&&null!==r){switch(r.$$typeof){case k:return u(t,e=e.get(null===r.key?n:r.key)||null,r,a);case x:return c(t,e=e.get(null===r.key?n:r.key)||null,r,a);case O:return h(e,t,n,(0,r._init)(r._payload),a)}if(te(r)||I(r))return d(t,e=e.get(n)||null,r,a,null);Go(t,r)}return null}function g(a,o,l,s){for(var u=null,c=null,d=o,g=o=0,m=null;null!==d&&g<l.length;g++){d.index>g?(m=d,d=null):m=d.sibling;var y=p(a,d,l[g],s);if(null===y){null===d&&(d=m);break}e&&d&&null===y.alternate&&t(a,d),o=i(y,o,g),null===c?u=y:c.sibling=y,c=y,d=m}if(g===l.length)return n(a,d),ao&&Xa(a,g),u;if(null===d){for(;g<l.length;g++)null!==(d=f(a,l[g],s))&&(o=i(d,o,g),null===c?u=d:c.sibling=d,c=d);return ao&&Xa(a,g),u}for(d=r(a,d);g<l.length;g++)null!==(m=h(d,a,g,l[g],s))&&(e&&null!==m.alternate&&d.delete(null===m.key?g:m.key),o=i(m,o,g),null===c?u=m:c.sibling=m,c=m);return e&&d.forEach((function(e){return t(a,e)})),ao&&Xa(a,g),u}function m(a,l,s,u){var c=I(s);if("function"!=typeof c)throw Error(o(150));if(null==(s=c.call(s)))throw Error(o(151));for(var d=c=null,g=l,m=l=0,y=null,b=s.next();null!==g&&!b.done;m++,b=s.next()){g.index>m?(y=g,g=null):y=g.sibling;var v=p(a,g,b.value,u);if(null===v){null===g&&(g=y);break}e&&g&&null===v.alternate&&t(a,g),l=i(v,l,m),null===d?c=v:d.sibling=v,d=v,g=y}if(b.done)return n(a,g),ao&&Xa(a,m),c;if(null===g){for(;!b.done;m++,b=s.next())null!==(b=f(a,b.value,u))&&(l=i(b,l,m),null===d?c=b:d.sibling=b,d=b);return ao&&Xa(a,m),c}for(g=r(a,g);!b.done;m++,b=s.next())null!==(b=h(g,a,m,b.value,u))&&(e&&null!==b.alternate&&g.delete(null===b.key?m:b.key),l=i(b,l,m),null===d?c=b:d.sibling=b,d=b);return e&&g.forEach((function(e){return t(a,e)})),ao&&Xa(a,m),c}return function e(r,o,i,s){if("object"==typeof i&&null!==i&&i.type===S&&null===i.key&&(i=i.props.children),"object"==typeof i&&null!==i){switch(i.$$typeof){case k:e:{for(var u=i.key,c=o;null!==c;){if(c.key===u){if((u=i.type)===S){if(7===c.tag){n(r,c.sibling),(o=a(c,i.props.children)).return=r,r=o;break e}}else if(c.elementType===u||"object"==typeof u&&null!==u&&u.$$typeof===O&&Yo(u)===c.type){n(r,c.sibling),(o=a(c,i.props)).ref=qo(r,c,i),o.return=r,r=o;break e}n(r,c);break}t(r,c),c=c.sibling}i.type===S?((o=Mu(i.props.children,r.mode,s,i.key)).return=r,r=o):((s=Iu(i.type,i.key,i.props,null,r.mode,s)).ref=qo(r,o,i),s.return=r,r=s)}return l(r);case x:e:{for(c=i.key;null!==o;){if(o.key===c){if(4===o.tag&&o.stateNode.containerInfo===i.containerInfo&&o.stateNode.implementation===i.implementation){n(r,o.sibling),(o=a(o,i.children||[])).return=r,r=o;break e}n(r,o);break}t(r,o),o=o.sibling}(o=zu(i,r.mode,s)).return=r,r=o}return l(r);case O:return e(r,o,(c=i._init)(i._payload),s)}if(te(i))return g(r,o,i,s);if(I(i))return m(r,o,i,s);Go(r,i)}return"string"==typeof i&&""!==i||"number"==typeof i?(i=""+i,null!==o&&6===o.tag?(n(r,o.sibling),(o=a(o,i)).return=r,r=o):(n(r,o),(o=Fu(i,r.mode,s)).return=r,r=o),l(r)):n(r,o)}}var Qo=Ko(!0),Xo=Ko(!1),Jo={},ei=Ea(Jo),ti=Ea(Jo),ni=Ea(Jo);function ri(e){if(e===Jo)throw Error(o(174));return e}function ai(e,t){switch(Ca(ni,t),Ca(ti,e),Ca(ei,Jo),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:se(null,"");break;default:t=se(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}_a(ei),Ca(ei,t)}function oi(){_a(ei),_a(ti),_a(ni)}function ii(e){ri(ni.current);var t=ri(ei.current),n=se(t,e.type);t!==n&&(Ca(ti,e),Ca(ei,n))}function li(e){ti.current===e&&(_a(ei),_a(ti))}var si=Ea(0);function ui(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(128&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var ci=[];function di(){for(var e=0;e<ci.length;e++)ci[e]._workInProgressVersionPrimary=null;ci.length=0}var fi=w.ReactCurrentDispatcher,pi=w.ReactCurrentBatchConfig,hi=0,gi=null,mi=null,yi=null,bi=!1,vi=!1,wi=0,ki=0;function xi(){throw Error(o(321))}function Si(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!lr(e[n],t[n]))return!1;return!0}function Ei(e,t,n,r,a,i){if(hi=i,gi=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,fi.current=null===e||null===e.memoizedState?ll:sl,e=n(r,a),vi){i=0;do{if(vi=!1,wi=0,25<=i)throw Error(o(301));i+=1,yi=mi=null,t.updateQueue=null,fi.current=ul,e=n(r,a)}while(vi)}if(fi.current=il,t=null!==mi&&null!==mi.next,hi=0,yi=mi=gi=null,bi=!1,t)throw Error(o(300));return e}function _i(){var e=0!==wi;return wi=0,e}function Ci(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===yi?gi.memoizedState=yi=e:yi=yi.next=e,yi}function Ti(){if(null===mi){var e=gi.alternate;e=null!==e?e.memoizedState:null}else e=mi.next;var t=null===yi?gi.memoizedState:yi.next;if(null!==t)yi=t,mi=e;else{if(null===e)throw Error(o(310));e={memoizedState:(mi=e).memoizedState,baseState:mi.baseState,baseQueue:mi.baseQueue,queue:mi.queue,next:null},null===yi?gi.memoizedState=yi=e:yi=yi.next=e}return yi}function Ai(e,t){return"function"==typeof t?t(e):t}function Ni(e){var t=Ti(),n=t.queue;if(null===n)throw Error(o(311));n.lastRenderedReducer=e;var r=mi,a=r.baseQueue,i=n.pending;if(null!==i){if(null!==a){var l=a.next;a.next=i.next,i.next=l}r.baseQueue=a=i,n.pending=null}if(null!==a){i=a.next,r=r.baseState;var s=l=null,u=null,c=i;do{var d=c.lane;if((hi&d)===d)null!==u&&(u=u.next={lane:0,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null}),r=c.hasEagerState?c.eagerState:e(r,c.action);else{var f={lane:d,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null};null===u?(s=u=f,l=r):u=u.next=f,gi.lanes|=d,Ds|=d}c=c.next}while(null!==c&&c!==i);null===u?l=r:u.next=s,lr(r,t.memoizedState)||(wl=!0),t.memoizedState=r,t.baseState=l,t.baseQueue=u,n.lastRenderedState=r}if(null!==(e=n.interleaved)){a=e;do{i=a.lane,gi.lanes|=i,Ds|=i,a=a.next}while(a!==e)}else null===a&&(n.lanes=0);return[t.memoizedState,n.dispatch]}function Pi(e){var t=Ti(),n=t.queue;if(null===n)throw Error(o(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,i=t.memoizedState;if(null!==a){n.pending=null;var l=a=a.next;do{i=e(i,l.action),l=l.next}while(l!==a);lr(i,t.memoizedState)||(wl=!0),t.memoizedState=i,null===t.baseQueue&&(t.baseState=i),n.lastRenderedState=i}return[i,r]}function Li(){}function Oi(e,t){var n=gi,r=Ti(),a=t(),i=!lr(r.memoizedState,a);if(i&&(r.memoizedState=a,wl=!0),r=r.queue,Hi(Ii.bind(null,n,r,e),[e]),r.getSnapshot!==t||i||null!==yi&&1&yi.memoizedState.tag){if(n.flags|=2048,zi(9,ji.bind(null,n,r,a,t),void 0,null),null===Ps)throw Error(o(349));0!=(30&hi)||Ri(n,t,a)}return a}function Ri(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},null===(t=gi.updateQueue)?(t={lastEffect:null,stores:null},gi.updateQueue=t,t.stores=[e]):null===(n=t.stores)?t.stores=[e]:n.push(e)}function ji(e,t,n,r){t.value=n,t.getSnapshot=r,Mi(t)&&Di(e)}function Ii(e,t,n){return n((function(){Mi(t)&&Di(e)}))}function Mi(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!lr(e,n)}catch(r){return!0}}function Di(e){var t=Po(e,1);null!==t&&ru(t,e,1,-1)}function Fi(e){var t=Ci();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Ai,lastRenderedState:e},t.queue=e,e=e.dispatch=nl.bind(null,gi,e),[t.memoizedState,e]}function zi(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=gi.updateQueue)?(t={lastEffect:null,stores:null},gi.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function Bi(){return Ti().memoizedState}function $i(e,t,n,r){var a=Ci();gi.flags|=e,a.memoizedState=zi(1|t,n,void 0,void 0===r?null:r)}function Ui(e,t,n,r){var a=Ti();r=void 0===r?null:r;var o=void 0;if(null!==mi){var i=mi.memoizedState;if(o=i.destroy,null!==r&&Si(r,i.deps))return void(a.memoizedState=zi(t,n,o,r))}gi.flags|=e,a.memoizedState=zi(1|t,n,o,r)}function Zi(e,t){return $i(8390656,8,e,t)}function Hi(e,t){return Ui(2048,8,e,t)}function Wi(e,t){return Ui(4,2,e,t)}function Vi(e,t){return Ui(4,4,e,t)}function qi(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function Gi(e,t,n){return n=null!=n?n.concat([e]):null,Ui(4,4,qi.bind(null,t,e),n)}function Yi(){}function Ki(e,t){var n=Ti();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&Si(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Qi(e,t){var n=Ti();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&Si(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Xi(e,t,n){return 0==(21&hi)?(e.baseState&&(e.baseState=!1,wl=!0),e.memoizedState=n):(lr(n,t)||(n=gt(),gi.lanes|=n,Ds|=n,e.baseState=!0),t)}function Ji(e,t){var n=vt;vt=0!==n&&4>n?n:4,e(!0);var r=pi.transition;pi.transition={};try{e(!1),t()}finally{vt=n,pi.transition=r}}function el(){return Ti().memoizedState}function tl(e,t,n){var r=nu(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},rl(e))al(t,n);else if(null!==(n=No(e,t,n,r))){ru(n,e,r,tu()),ol(n,t,r)}}function nl(e,t,n){var r=nu(e),a={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(rl(e))al(t,a);else{var o=e.alternate;if(0===e.lanes&&(null===o||0===o.lanes)&&null!==(o=t.lastRenderedReducer))try{var i=t.lastRenderedState,l=o(i,n);if(a.hasEagerState=!0,a.eagerState=l,lr(l,i)){var s=t.interleaved;return null===s?(a.next=a,Ao(t)):(a.next=s.next,s.next=a),void(t.interleaved=a)}}catch(u){}null!==(n=No(e,t,a,r))&&(ru(n,e,r,a=tu()),ol(n,t,r))}}function rl(e){var t=e.alternate;return e===gi||null!==t&&t===gi}function al(e,t){vi=bi=!0;var n=e.pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function ol(e,t,n){if(0!=(4194240&n)){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,bt(e,n)}}var il={readContext:Co,useCallback:xi,useContext:xi,useEffect:xi,useImperativeHandle:xi,useInsertionEffect:xi,useLayoutEffect:xi,useMemo:xi,useReducer:xi,useRef:xi,useState:xi,useDebugValue:xi,useDeferredValue:xi,useTransition:xi,useMutableSource:xi,useSyncExternalStore:xi,useId:xi,unstable_isNewReconciler:!1},ll={readContext:Co,useCallback:function(e,t){return Ci().memoizedState=[e,void 0===t?null:t],e},useContext:Co,useEffect:Zi,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,$i(4194308,4,qi.bind(null,t,e),n)},useLayoutEffect:function(e,t){return $i(4194308,4,e,t)},useInsertionEffect:function(e,t){return $i(4,2,e,t)},useMemo:function(e,t){var n=Ci();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Ci();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=tl.bind(null,gi,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},Ci().memoizedState=e},useState:Fi,useDebugValue:Yi,useDeferredValue:function(e){return Ci().memoizedState=e},useTransition:function(){var e=Fi(!1),t=e[0];return e=Ji.bind(null,e[1]),Ci().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=gi,a=Ci();if(ao){if(void 0===n)throw Error(o(407));n=n()}else{if(n=t(),null===Ps)throw Error(o(349));0!=(30&hi)||Ri(r,t,n)}a.memoizedState=n;var i={value:n,getSnapshot:t};return a.queue=i,Zi(Ii.bind(null,r,i,e),[e]),r.flags|=2048,zi(9,ji.bind(null,r,i,n,t),void 0,null),n},useId:function(){var e=Ci(),t=Ps.identifierPrefix;if(ao){var n=Qa;t=":"+t+"R"+(n=(Ka&~(1<<32-it(Ka)-1)).toString(32)+n),0<(n=wi++)&&(t+="H"+n.toString(32)),t+=":"}else t=":"+t+"r"+(n=ki++).toString(32)+":";return e.memoizedState=t},unstable_isNewReconciler:!1},sl={readContext:Co,useCallback:Ki,useContext:Co,useEffect:Hi,useImperativeHandle:Gi,useInsertionEffect:Wi,useLayoutEffect:Vi,useMemo:Qi,useReducer:Ni,useRef:Bi,useState:function(){return Ni(Ai)},useDebugValue:Yi,useDeferredValue:function(e){return Xi(Ti(),mi.memoizedState,e)},useTransition:function(){return[Ni(Ai)[0],Ti().memoizedState]},useMutableSource:Li,useSyncExternalStore:Oi,useId:el,unstable_isNewReconciler:!1},ul={readContext:Co,useCallback:Ki,useContext:Co,useEffect:Hi,useImperativeHandle:Gi,useInsertionEffect:Wi,useLayoutEffect:Vi,useMemo:Qi,useReducer:Pi,useRef:Bi,useState:function(){return Pi(Ai)},useDebugValue:Yi,useDeferredValue:function(e){var t=Ti();return null===mi?t.memoizedState=e:Xi(t,mi.memoizedState,e)},useTransition:function(){return[Pi(Ai)[0],Ti().memoizedState]},useMutableSource:Li,useSyncExternalStore:Oi,useId:el,unstable_isNewReconciler:!1};function cl(e,t){try{var n="",r=t;do{n+=$(r),r=r.return}while(r);var a=n}catch(o){a="\nError generating stack: "+o.message+"\n"+o.stack}return{value:e,source:t,stack:a,digest:null}}function dl(e,t,n){return{value:e,source:null,stack:null!=n?n:null,digest:null!=t?t:null}}function fl(e,t){try{console.error(t.value)}catch(n){setTimeout((function(){throw n}))}}var pl="function"==typeof WeakMap?WeakMap:Map;function hl(e,t,n){(n=jo(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Ws||(Ws=!0,Vs=r),fl(0,t)},n}function gl(e,t,n){(n=jo(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var a=t.value;n.payload=function(){return r(a)},n.callback=function(){fl(0,t)}}var o=e.stateNode;return null!==o&&"function"==typeof o.componentDidCatch&&(n.callback=function(){fl(0,t),"function"!=typeof r&&(null===qs?qs=new Set([this]):qs.add(this));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}function ml(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new pl;var a=new Set;r.set(t,a)}else void 0===(a=r.get(t))&&(a=new Set,r.set(t,a));a.has(n)||(a.add(n),e=Cu.bind(null,e,t,n),t.then(e,e))}function yl(e){do{var t;if((t=13===e.tag)&&(t=null===(t=e.memoizedState)||null!==t.dehydrated),t)return e;e=e.return}while(null!==e);return null}function bl(e,t,n,r,a){return 0==(1&e.mode)?(e===t?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&=-52805,1===n.tag&&(null===n.alternate?n.tag=17:((t=jo(-1,1)).tag=2,Io(n,t,1))),n.lanes|=1),e):(e.flags|=65536,e.lanes=a,e)}var vl=w.ReactCurrentOwner,wl=!1;function kl(e,t,n,r){t.child=null===e?Xo(t,null,n,r):Qo(t,e.child,n,r)}function xl(e,t,n,r,a){n=n.render;var o=t.ref;return _o(t,a),r=Ei(e,t,n,r,o,a),n=_i(),null===e||wl?(ao&&n&&eo(t),t.flags|=1,kl(e,t,r,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~a,Wl(e,t,a))}function Sl(e,t,n,r,a){if(null===e){var o=n.type;return"function"!=typeof o||Ru(o)||void 0!==o.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Iu(n.type,null,r,t,t.mode,a)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=o,El(e,t,o,r,a))}if(o=e.child,0==(e.lanes&a)){var i=o.memoizedProps;if((n=null!==(n=n.compare)?n:sr)(i,r)&&e.ref===t.ref)return Wl(e,t,a)}return t.flags|=1,(e=ju(o,r)).ref=t.ref,e.return=t,t.child=e}function El(e,t,n,r,a){if(null!==e){var o=e.memoizedProps;if(sr(o,r)&&e.ref===t.ref){if(wl=!1,t.pendingProps=r=o,0==(e.lanes&a))return t.lanes=e.lanes,Wl(e,t,a);0!=(131072&e.flags)&&(wl=!0)}}return Tl(e,t,n,r,a)}function _l(e,t,n){var r=t.pendingProps,a=r.children,o=null!==e?e.memoizedState:null;if("hidden"===r.mode)if(0==(1&t.mode))t.memoizedState={baseLanes:0,cachePool:null,transitions:null},Ca(js,Rs),Rs|=n;else{if(0==(1073741824&n))return e=null!==o?o.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,Ca(js,Rs),Rs|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=null!==o?o.baseLanes:n,Ca(js,Rs),Rs|=r}else null!==o?(r=o.baseLanes|n,t.memoizedState=null):r=n,Ca(js,Rs),Rs|=r;return kl(e,t,a,n),t.child}function Cl(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function Tl(e,t,n,r,a){var o=Oa(n)?Pa:Aa.current;return o=La(t,o),_o(t,a),n=Ei(e,t,n,r,o,a),r=_i(),null===e||wl?(ao&&r&&eo(t),t.flags|=1,kl(e,t,n,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~a,Wl(e,t,a))}function Al(e,t,n,r,a){if(Oa(n)){var o=!0;Ma(t)}else o=!1;if(_o(t,a),null===t.stateNode)Hl(e,t),Ho(t,n,r),Vo(t,n,r,a),r=!0;else if(null===e){var i=t.stateNode,l=t.memoizedProps;i.props=l;var s=i.context,u=n.contextType;"object"==typeof u&&null!==u?u=Co(u):u=La(t,u=Oa(n)?Pa:Aa.current);var c=n.getDerivedStateFromProps,d="function"==typeof c||"function"==typeof i.getSnapshotBeforeUpdate;d||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==r||s!==u)&&Wo(t,i,r,u),Lo=!1;var f=t.memoizedState;i.state=f,Fo(t,r,i,a),s=t.memoizedState,l!==r||f!==s||Na.current||Lo?("function"==typeof c&&($o(t,n,c,r),s=t.memoizedState),(l=Lo||Zo(t,n,l,r,f,s,u))?(d||"function"!=typeof i.UNSAFE_componentWillMount&&"function"!=typeof i.componentWillMount||("function"==typeof i.componentWillMount&&i.componentWillMount(),"function"==typeof i.UNSAFE_componentWillMount&&i.UNSAFE_componentWillMount()),"function"==typeof i.componentDidMount&&(t.flags|=4194308)):("function"==typeof i.componentDidMount&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=s),i.props=r,i.state=s,i.context=u,r=l):("function"==typeof i.componentDidMount&&(t.flags|=4194308),r=!1)}else{i=t.stateNode,Ro(e,t),l=t.memoizedProps,u=t.type===t.elementType?l:yo(t.type,l),i.props=u,d=t.pendingProps,f=i.context,"object"==typeof(s=n.contextType)&&null!==s?s=Co(s):s=La(t,s=Oa(n)?Pa:Aa.current);var p=n.getDerivedStateFromProps;(c="function"==typeof p||"function"==typeof i.getSnapshotBeforeUpdate)||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==d||f!==s)&&Wo(t,i,r,s),Lo=!1,f=t.memoizedState,i.state=f,Fo(t,r,i,a);var h=t.memoizedState;l!==d||f!==h||Na.current||Lo?("function"==typeof p&&($o(t,n,p,r),h=t.memoizedState),(u=Lo||Zo(t,n,u,r,f,h,s)||!1)?(c||"function"!=typeof i.UNSAFE_componentWillUpdate&&"function"!=typeof i.componentWillUpdate||("function"==typeof i.componentWillUpdate&&i.componentWillUpdate(r,h,s),"function"==typeof i.UNSAFE_componentWillUpdate&&i.UNSAFE_componentWillUpdate(r,h,s)),"function"==typeof i.componentDidUpdate&&(t.flags|=4),"function"==typeof i.getSnapshotBeforeUpdate&&(t.flags|=1024)):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=h),i.props=r,i.state=h,i.context=s,r=u):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=1024),r=!1)}return Nl(e,t,n,r,o,a)}function Nl(e,t,n,r,a,o){Cl(e,t);var i=0!=(128&t.flags);if(!r&&!i)return a&&Da(t,n,!1),Wl(e,t,o);r=t.stateNode,vl.current=t;var l=i&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&i?(t.child=Qo(t,e.child,null,o),t.child=Qo(t,null,l,o)):kl(e,t,l,o),t.memoizedState=r.state,a&&Da(t,n,!0),t.child}function Pl(e){var t=e.stateNode;t.pendingContext?ja(0,t.pendingContext,t.pendingContext!==t.context):t.context&&ja(0,t.context,!1),ai(e,t.containerInfo)}function Ll(e,t,n,r,a){return ho(),go(a),t.flags|=256,kl(e,t,n,r),t.child}var Ol,Rl,jl,Il,Ml={dehydrated:null,treeContext:null,retryLane:0};function Dl(e){return{baseLanes:e,cachePool:null,transitions:null}}function Fl(e,t,n){var r,a=t.pendingProps,i=si.current,l=!1,s=0!=(128&t.flags);if((r=s)||(r=(null===e||null!==e.memoizedState)&&0!=(2&i)),r?(l=!0,t.flags&=-129):null!==e&&null===e.memoizedState||(i|=1),Ca(si,1&i),null===e)return uo(t),null!==(e=t.memoizedState)&&null!==(e=e.dehydrated)?(0==(1&t.mode)?t.lanes=1:"$!"===e.data?t.lanes=8:t.lanes=1073741824,null):(s=a.children,e=a.fallback,l?(a=t.mode,l=t.child,s={mode:"hidden",children:s},0==(1&a)&&null!==l?(l.childLanes=0,l.pendingProps=s):l=Du(s,a,0,null),e=Mu(e,a,n,null),l.return=t,e.return=t,l.sibling=e,t.child=l,t.child.memoizedState=Dl(n),t.memoizedState=Ml,e):zl(t,s));if(null!==(i=e.memoizedState)&&null!==(r=i.dehydrated))return function(e,t,n,r,a,i,l){if(n)return 256&t.flags?(t.flags&=-257,Bl(e,t,l,r=dl(Error(o(422))))):null!==t.memoizedState?(t.child=e.child,t.flags|=128,null):(i=r.fallback,a=t.mode,r=Du({mode:"visible",children:r.children},a,0,null),(i=Mu(i,a,l,null)).flags|=2,r.return=t,i.return=t,r.sibling=i,t.child=r,0!=(1&t.mode)&&Qo(t,e.child,null,l),t.child.memoizedState=Dl(l),t.memoizedState=Ml,i);if(0==(1&t.mode))return Bl(e,t,l,null);if("$!"===a.data){if(r=a.nextSibling&&a.nextSibling.dataset)var s=r.dgst;return r=s,Bl(e,t,l,r=dl(i=Error(o(419)),r,void 0))}if(s=0!=(l&e.childLanes),wl||s){if(null!==(r=Ps)){switch(l&-l){case 4:a=2;break;case 16:a=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:a=32;break;case 536870912:a=268435456;break;default:a=0}0!==(a=0!=(a&(r.suspendedLanes|l))?0:a)&&a!==i.retryLane&&(i.retryLane=a,Po(e,a),ru(r,e,a,-1))}return mu(),Bl(e,t,l,r=dl(Error(o(421))))}return"$?"===a.data?(t.flags|=128,t.child=e.child,t=Au.bind(null,e),a._reactRetry=t,null):(e=i.treeContext,ro=ua(a.nextSibling),no=t,ao=!0,oo=null,null!==e&&(qa[Ga++]=Ka,qa[Ga++]=Qa,qa[Ga++]=Ya,Ka=e.id,Qa=e.overflow,Ya=t),t=zl(t,r.children),t.flags|=4096,t)}(e,t,s,a,r,i,n);if(l){l=a.fallback,s=t.mode,r=(i=e.child).sibling;var u={mode:"hidden",children:a.children};return 0==(1&s)&&t.child!==i?((a=t.child).childLanes=0,a.pendingProps=u,t.deletions=null):(a=ju(i,u)).subtreeFlags=14680064&i.subtreeFlags,null!==r?l=ju(r,l):(l=Mu(l,s,n,null)).flags|=2,l.return=t,a.return=t,a.sibling=l,t.child=a,a=l,l=t.child,s=null===(s=e.child.memoizedState)?Dl(n):{baseLanes:s.baseLanes|n,cachePool:null,transitions:s.transitions},l.memoizedState=s,l.childLanes=e.childLanes&~n,t.memoizedState=Ml,a}return e=(l=e.child).sibling,a=ju(l,{mode:"visible",children:a.children}),0==(1&t.mode)&&(a.lanes=n),a.return=t,a.sibling=null,null!==e&&(null===(n=t.deletions)?(t.deletions=[e],t.flags|=16):n.push(e)),t.child=a,t.memoizedState=null,a}function zl(e,t){return(t=Du({mode:"visible",children:t},e.mode,0,null)).return=e,e.child=t}function Bl(e,t,n,r){return null!==r&&go(r),Qo(t,e.child,null,n),(e=zl(t,t.pendingProps.children)).flags|=2,t.memoizedState=null,e}function $l(e,t,n){e.lanes|=t;var r=e.alternate;null!==r&&(r.lanes|=t),Eo(e.return,t,n)}function Ul(e,t,n,r,a){var o=e.memoizedState;null===o?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:a}:(o.isBackwards=t,o.rendering=null,o.renderingStartTime=0,o.last=r,o.tail=n,o.tailMode=a)}function Zl(e,t,n){var r=t.pendingProps,a=r.revealOrder,o=r.tail;if(kl(e,t,r.children,n),0!=(2&(r=si.current)))r=1&r|2,t.flags|=128;else{if(null!==e&&0!=(128&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&$l(e,n,t);else if(19===e.tag)$l(e,n,t);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(Ca(si,r),0==(1&t.mode))t.memoizedState=null;else switch(a){case"forwards":for(n=t.child,a=null;null!==n;)null!==(e=n.alternate)&&null===ui(e)&&(a=n),n=n.sibling;null===(n=a)?(a=t.child,t.child=null):(a=n.sibling,n.sibling=null),Ul(t,!1,a,n,o);break;case"backwards":for(n=null,a=t.child,t.child=null;null!==a;){if(null!==(e=a.alternate)&&null===ui(e)){t.child=a;break}e=a.sibling,a.sibling=n,n=a,a=e}Ul(t,!0,n,null,o);break;case"together":Ul(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function Hl(e,t){0==(1&t.mode)&&null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2)}function Wl(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Ds|=t.lanes,0==(n&t.childLanes))return null;if(null!==e&&t.child!==e.child)throw Error(o(153));if(null!==t.child){for(n=ju(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=ju(e,e.pendingProps)).return=t;n.sibling=null}return t.child}function Vl(e,t){if(!ao)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function ql(e){var t=null!==e.alternate&&e.alternate.child===e.child,n=0,r=0;if(t)for(var a=e.child;null!==a;)n|=a.lanes|a.childLanes,r|=14680064&a.subtreeFlags,r|=14680064&a.flags,a.return=e,a=a.sibling;else for(a=e.child;null!==a;)n|=a.lanes|a.childLanes,r|=a.subtreeFlags,r|=a.flags,a.return=e,a=a.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function Gl(e,t,n){var r=t.pendingProps;switch(to(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return ql(t),null;case 1:case 17:return Oa(t.type)&&Ra(),ql(t),null;case 3:return r=t.stateNode,oi(),_a(Na),_a(Aa),di(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(fo(t)?t.flags|=4:null===e||e.memoizedState.isDehydrated&&0==(256&t.flags)||(t.flags|=1024,null!==oo&&(lu(oo),oo=null))),Rl(e,t),ql(t),null;case 5:li(t);var a=ri(ni.current);if(n=t.type,null!==e&&null!=t.stateNode)jl(e,t,n,r,a),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!r){if(null===t.stateNode)throw Error(o(166));return ql(t),null}if(e=ri(ei.current),fo(t)){r=t.stateNode,n=t.type;var i=t.memoizedProps;switch(r[fa]=t,r[pa]=i,e=0!=(1&t.mode),n){case"dialog":zr("cancel",r),zr("close",r);break;case"iframe":case"object":case"embed":zr("load",r);break;case"video":case"audio":for(a=0;a<Ir.length;a++)zr(Ir[a],r);break;case"source":zr("error",r);break;case"img":case"image":case"link":zr("error",r),zr("load",r);break;case"details":zr("toggle",r);break;case"input":K(r,i),zr("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!i.multiple},zr("invalid",r);break;case"textarea":ae(r,i),zr("invalid",r)}for(var s in be(n,i),a=null,i)if(i.hasOwnProperty(s)){var u=i[s];"children"===s?"string"==typeof u?r.textContent!==u&&(!0!==i.suppressHydrationWarning&&Xr(r.textContent,u,e),a=["children",u]):"number"==typeof u&&r.textContent!==""+u&&(!0!==i.suppressHydrationWarning&&Xr(r.textContent,u,e),a=["children",""+u]):l.hasOwnProperty(s)&&null!=u&&"onScroll"===s&&zr("scroll",r)}switch(n){case"input":V(r),J(r,i,!0);break;case"textarea":V(r),ie(r);break;case"select":case"option":break;default:"function"==typeof i.onClick&&(r.onclick=Jr)}r=a,t.updateQueue=r,null!==r&&(t.flags|=4)}else{s=9===a.nodeType?a:a.ownerDocument,"http://www.w3.org/1999/xhtml"===e&&(e=le(n)),"http://www.w3.org/1999/xhtml"===e?"script"===n?((e=s.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=s.createElement(n,{is:r.is}):(e=s.createElement(n),"select"===n&&(s=e,r.multiple?s.multiple=!0:r.size&&(s.size=r.size))):e=s.createElementNS(e,n),e[fa]=t,e[pa]=r,Ol(e,t,!1,!1),t.stateNode=e;e:{switch(s=ve(n,r),n){case"dialog":zr("cancel",e),zr("close",e),a=r;break;case"iframe":case"object":case"embed":zr("load",e),a=r;break;case"video":case"audio":for(a=0;a<Ir.length;a++)zr(Ir[a],e);a=r;break;case"source":zr("error",e),a=r;break;case"img":case"image":case"link":zr("error",e),zr("load",e),a=r;break;case"details":zr("toggle",e),a=r;break;case"input":K(e,r),a=Y(e,r),zr("invalid",e);break;case"option":default:a=r;break;case"select":e._wrapperState={wasMultiple:!!r.multiple},a=D({},r,{value:void 0}),zr("invalid",e);break;case"textarea":ae(e,r),a=re(e,r),zr("invalid",e)}for(i in be(n,a),u=a)if(u.hasOwnProperty(i)){var c=u[i];"style"===i?me(e,c):"dangerouslySetInnerHTML"===i?null!=(c=c?c.__html:void 0)&&de(e,c):"children"===i?"string"==typeof c?("textarea"!==n||""!==c)&&fe(e,c):"number"==typeof c&&fe(e,""+c):"suppressContentEditableWarning"!==i&&"suppressHydrationWarning"!==i&&"autoFocus"!==i&&(l.hasOwnProperty(i)?null!=c&&"onScroll"===i&&zr("scroll",e):null!=c&&v(e,i,c,s))}switch(n){case"input":V(e),J(e,r,!1);break;case"textarea":V(e),ie(e);break;case"option":null!=r.value&&e.setAttribute("value",""+H(r.value));break;case"select":e.multiple=!!r.multiple,null!=(i=r.value)?ne(e,!!r.multiple,i,!1):null!=r.defaultValue&&ne(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof a.onClick&&(e.onclick=Jr)}switch(n){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break e;case"img":r=!0;break e;default:r=!1}}r&&(t.flags|=4)}null!==t.ref&&(t.flags|=512,t.flags|=2097152)}return ql(t),null;case 6:if(e&&null!=t.stateNode)Il(e,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(o(166));if(n=ri(ni.current),ri(ei.current),fo(t)){if(r=t.stateNode,n=t.memoizedProps,r[fa]=t,(i=r.nodeValue!==n)&&null!==(e=no))switch(e.tag){case 3:Xr(r.nodeValue,n,0!=(1&e.mode));break;case 5:!0!==e.memoizedProps.suppressHydrationWarning&&Xr(r.nodeValue,n,0!=(1&e.mode))}i&&(t.flags|=4)}else(r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[fa]=t,t.stateNode=r}return ql(t),null;case 13:if(_a(si),r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(ao&&null!==ro&&0!=(1&t.mode)&&0==(128&t.flags))po(),ho(),t.flags|=98560,i=!1;else if(i=fo(t),null!==r&&null!==r.dehydrated){if(null===e){if(!i)throw Error(o(318));if(!(i=null!==(i=t.memoizedState)?i.dehydrated:null))throw Error(o(317));i[fa]=t}else ho(),0==(128&t.flags)&&(t.memoizedState=null),t.flags|=4;ql(t),i=!1}else null!==oo&&(lu(oo),oo=null),i=!0;if(!i)return 65536&t.flags?t:null}return 0!=(128&t.flags)?(t.lanes=n,t):((r=null!==r)!==(null!==e&&null!==e.memoizedState)&&r&&(t.child.flags|=8192,0!=(1&t.mode)&&(null===e||0!=(1&si.current)?0===Is&&(Is=3):mu())),null!==t.updateQueue&&(t.flags|=4),ql(t),null);case 4:return oi(),Rl(e,t),null===e&&Ur(t.stateNode.containerInfo),ql(t),null;case 10:return So(t.type._context),ql(t),null;case 19:if(_a(si),null===(i=t.memoizedState))return ql(t),null;if(r=0!=(128&t.flags),null===(s=i.rendering))if(r)Vl(i,!1);else{if(0!==Is||null!==e&&0!=(128&e.flags))for(e=t.child;null!==e;){if(null!==(s=ui(e))){for(t.flags|=128,Vl(i,!1),null!==(r=s.updateQueue)&&(t.updateQueue=r,t.flags|=4),t.subtreeFlags=0,r=n,n=t.child;null!==n;)e=r,(i=n).flags&=14680066,null===(s=i.alternate)?(i.childLanes=0,i.lanes=e,i.child=null,i.subtreeFlags=0,i.memoizedProps=null,i.memoizedState=null,i.updateQueue=null,i.dependencies=null,i.stateNode=null):(i.childLanes=s.childLanes,i.lanes=s.lanes,i.child=s.child,i.subtreeFlags=0,i.deletions=null,i.memoizedProps=s.memoizedProps,i.memoizedState=s.memoizedState,i.updateQueue=s.updateQueue,i.type=s.type,e=s.dependencies,i.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return Ca(si,1&si.current|2),t.child}e=e.sibling}null!==i.tail&&Qe()>Zs&&(t.flags|=128,r=!0,Vl(i,!1),t.lanes=4194304)}else{if(!r)if(null!==(e=ui(s))){if(t.flags|=128,r=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),Vl(i,!0),null===i.tail&&"hidden"===i.tailMode&&!s.alternate&&!ao)return ql(t),null}else 2*Qe()-i.renderingStartTime>Zs&&1073741824!==n&&(t.flags|=128,r=!0,Vl(i,!1),t.lanes=4194304);i.isBackwards?(s.sibling=t.child,t.child=s):(null!==(n=i.last)?n.sibling=s:t.child=s,i.last=s)}return null!==i.tail?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=Qe(),t.sibling=null,n=si.current,Ca(si,r?1&n|2:1&n),t):(ql(t),null);case 22:case 23:return fu(),r=null!==t.memoizedState,null!==e&&null!==e.memoizedState!==r&&(t.flags|=8192),r&&0!=(1&t.mode)?0!=(1073741824&Rs)&&(ql(t),6&t.subtreeFlags&&(t.flags|=8192)):ql(t),null;case 24:case 25:return null}throw Error(o(156,t.tag))}function Yl(e,t){switch(to(t),t.tag){case 1:return Oa(t.type)&&Ra(),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return oi(),_a(Na),_a(Aa),di(),0!=(65536&(e=t.flags))&&0==(128&e)?(t.flags=-65537&e|128,t):null;case 5:return li(t),null;case 13:if(_a(si),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(o(340));ho()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return _a(si),null;case 4:return oi(),null;case 10:return So(t.type._context),null;case 22:case 23:return fu(),null;default:return null}}Ol=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Rl=function(){},jl=function(e,t,n,r){var a=e.memoizedProps;if(a!==r){e=t.stateNode,ri(ei.current);var o,i=null;switch(n){case"input":a=Y(e,a),r=Y(e,r),i=[];break;case"select":a=D({},a,{value:void 0}),r=D({},r,{value:void 0}),i=[];break;case"textarea":a=re(e,a),r=re(e,r),i=[];break;default:"function"!=typeof a.onClick&&"function"==typeof r.onClick&&(e.onclick=Jr)}for(c in be(n,r),n=null,a)if(!r.hasOwnProperty(c)&&a.hasOwnProperty(c)&&null!=a[c])if("style"===c){var s=a[c];for(o in s)s.hasOwnProperty(o)&&(n||(n={}),n[o]="")}else"dangerouslySetInnerHTML"!==c&&"children"!==c&&"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&"autoFocus"!==c&&(l.hasOwnProperty(c)?i||(i=[]):(i=i||[]).push(c,null));for(c in r){var u=r[c];if(s=null!=a?a[c]:void 0,r.hasOwnProperty(c)&&u!==s&&(null!=u||null!=s))if("style"===c)if(s){for(o in s)!s.hasOwnProperty(o)||u&&u.hasOwnProperty(o)||(n||(n={}),n[o]="");for(o in u)u.hasOwnProperty(o)&&s[o]!==u[o]&&(n||(n={}),n[o]=u[o])}else n||(i||(i=[]),i.push(c,n)),n=u;else"dangerouslySetInnerHTML"===c?(u=u?u.__html:void 0,s=s?s.__html:void 0,null!=u&&s!==u&&(i=i||[]).push(c,u)):"children"===c?"string"!=typeof u&&"number"!=typeof u||(i=i||[]).push(c,""+u):"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&(l.hasOwnProperty(c)?(null!=u&&"onScroll"===c&&zr("scroll",e),i||s===u||(i=[])):(i=i||[]).push(c,u))}n&&(i=i||[]).push("style",n);var c=i;(t.updateQueue=c)&&(t.flags|=4)}},Il=function(e,t,n,r){n!==r&&(t.flags|=4)};var Kl=!1,Ql=!1,Xl="function"==typeof WeakSet?WeakSet:Set,Jl=null;function es(e,t){var n=e.ref;if(null!==n)if("function"==typeof n)try{n(null)}catch(r){_u(e,t,r)}else n.current=null}function ts(e,t,n){try{n()}catch(r){_u(e,t,r)}}var ns=!1;function rs(e,t,n){var r=t.updateQueue;if(null!==(r=null!==r?r.lastEffect:null)){var a=r=r.next;do{if((a.tag&e)===e){var o=a.destroy;a.destroy=void 0,void 0!==o&&ts(t,n,o)}a=a.next}while(a!==r)}}function as(e,t){if(null!==(t=null!==(t=t.updateQueue)?t.lastEffect:null)){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function os(e){var t=e.ref;if(null!==t){var n=e.stateNode;e.tag,e=n,"function"==typeof t?t(e):t.current=e}}function is(e){var t=e.alternate;null!==t&&(e.alternate=null,is(t)),e.child=null,e.deletions=null,e.sibling=null,5===e.tag&&(null!==(t=e.stateNode)&&(delete t[fa],delete t[pa],delete t[ga],delete t[ma],delete t[ya])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function ls(e){return 5===e.tag||3===e.tag||4===e.tag}function ss(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||ls(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(2&e.flags)continue e;if(null===e.child||4===e.tag)continue e;e.child.return=e,e=e.child}if(!(2&e.flags))return e.stateNode}}function us(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=Jr));else if(4!==r&&null!==(e=e.child))for(us(e,t,n),e=e.sibling;null!==e;)us(e,t,n),e=e.sibling}function cs(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(cs(e,t,n),e=e.sibling;null!==e;)cs(e,t,n),e=e.sibling}var ds=null,fs=!1;function ps(e,t,n){for(n=n.child;null!==n;)hs(e,t,n),n=n.sibling}function hs(e,t,n){if(ot&&"function"==typeof ot.onCommitFiberUnmount)try{ot.onCommitFiberUnmount(at,n)}catch(l){}switch(n.tag){case 5:Ql||es(n,t);case 6:var r=ds,a=fs;ds=null,ps(e,t,n),fs=a,null!==(ds=r)&&(fs?(e=ds,n=n.stateNode,8===e.nodeType?e.parentNode.removeChild(n):e.removeChild(n)):ds.removeChild(n.stateNode));break;case 18:null!==ds&&(fs?(e=ds,n=n.stateNode,8===e.nodeType?sa(e.parentNode,n):1===e.nodeType&&sa(e,n),Ut(e)):sa(ds,n.stateNode));break;case 4:r=ds,a=fs,ds=n.stateNode.containerInfo,fs=!0,ps(e,t,n),ds=r,fs=a;break;case 0:case 11:case 14:case 15:if(!Ql&&(null!==(r=n.updateQueue)&&null!==(r=r.lastEffect))){a=r=r.next;do{var o=a,i=o.destroy;o=o.tag,void 0!==i&&(0!=(2&o)||0!=(4&o))&&ts(n,t,i),a=a.next}while(a!==r)}ps(e,t,n);break;case 1:if(!Ql&&(es(n,t),"function"==typeof(r=n.stateNode).componentWillUnmount))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(l){_u(n,t,l)}ps(e,t,n);break;case 21:ps(e,t,n);break;case 22:1&n.mode?(Ql=(r=Ql)||null!==n.memoizedState,ps(e,t,n),Ql=r):ps(e,t,n);break;default:ps(e,t,n)}}function gs(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new Xl),t.forEach((function(t){var r=Nu.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function ms(e,t){var n=t.deletions;if(null!==n)for(var r=0;r<n.length;r++){var a=n[r];try{var i=e,l=t,s=l;e:for(;null!==s;){switch(s.tag){case 5:ds=s.stateNode,fs=!1;break e;case 3:case 4:ds=s.stateNode.containerInfo,fs=!0;break e}s=s.return}if(null===ds)throw Error(o(160));hs(i,l,a),ds=null,fs=!1;var u=a.alternate;null!==u&&(u.return=null),a.return=null}catch(c){_u(a,t,c)}}if(12854&t.subtreeFlags)for(t=t.child;null!==t;)ys(t,e),t=t.sibling}function ys(e,t){var n=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:if(ms(t,e),bs(e),4&r){try{rs(3,e,e.return),as(3,e)}catch(m){_u(e,e.return,m)}try{rs(5,e,e.return)}catch(m){_u(e,e.return,m)}}break;case 1:ms(t,e),bs(e),512&r&&null!==n&&es(n,n.return);break;case 5:if(ms(t,e),bs(e),512&r&&null!==n&&es(n,n.return),32&e.flags){var a=e.stateNode;try{fe(a,"")}catch(m){_u(e,e.return,m)}}if(4&r&&null!=(a=e.stateNode)){var i=e.memoizedProps,l=null!==n?n.memoizedProps:i,s=e.type,u=e.updateQueue;if(e.updateQueue=null,null!==u)try{"input"===s&&"radio"===i.type&&null!=i.name&&Q(a,i),ve(s,l);var c=ve(s,i);for(l=0;l<u.length;l+=2){var d=u[l],f=u[l+1];"style"===d?me(a,f):"dangerouslySetInnerHTML"===d?de(a,f):"children"===d?fe(a,f):v(a,d,f,c)}switch(s){case"input":X(a,i);break;case"textarea":oe(a,i);break;case"select":var p=a._wrapperState.wasMultiple;a._wrapperState.wasMultiple=!!i.multiple;var h=i.value;null!=h?ne(a,!!i.multiple,h,!1):p!==!!i.multiple&&(null!=i.defaultValue?ne(a,!!i.multiple,i.defaultValue,!0):ne(a,!!i.multiple,i.multiple?[]:"",!1))}a[pa]=i}catch(m){_u(e,e.return,m)}}break;case 6:if(ms(t,e),bs(e),4&r){if(null===e.stateNode)throw Error(o(162));a=e.stateNode,i=e.memoizedProps;try{a.nodeValue=i}catch(m){_u(e,e.return,m)}}break;case 3:if(ms(t,e),bs(e),4&r&&null!==n&&n.memoizedState.isDehydrated)try{Ut(t.containerInfo)}catch(m){_u(e,e.return,m)}break;case 4:default:ms(t,e),bs(e);break;case 13:ms(t,e),bs(e),8192&(a=e.child).flags&&(i=null!==a.memoizedState,a.stateNode.isHidden=i,!i||null!==a.alternate&&null!==a.alternate.memoizedState||(Us=Qe())),4&r&&gs(e);break;case 22:if(d=null!==n&&null!==n.memoizedState,1&e.mode?(Ql=(c=Ql)||d,ms(t,e),Ql=c):ms(t,e),bs(e),8192&r){if(c=null!==e.memoizedState,(e.stateNode.isHidden=c)&&!d&&0!=(1&e.mode))for(Jl=e,d=e.child;null!==d;){for(f=Jl=d;null!==Jl;){switch(h=(p=Jl).child,p.tag){case 0:case 11:case 14:case 15:rs(4,p,p.return);break;case 1:es(p,p.return);var g=p.stateNode;if("function"==typeof g.componentWillUnmount){r=p,n=p.return;try{t=r,g.props=t.memoizedProps,g.state=t.memoizedState,g.componentWillUnmount()}catch(m){_u(r,n,m)}}break;case 5:es(p,p.return);break;case 22:if(null!==p.memoizedState){xs(f);continue}}null!==h?(h.return=p,Jl=h):xs(f)}d=d.sibling}e:for(d=null,f=e;;){if(5===f.tag){if(null===d){d=f;try{a=f.stateNode,c?"function"==typeof(i=a.style).setProperty?i.setProperty("display","none","important"):i.display="none":(s=f.stateNode,l=null!=(u=f.memoizedProps.style)&&u.hasOwnProperty("display")?u.display:null,s.style.display=ge("display",l))}catch(m){_u(e,e.return,m)}}}else if(6===f.tag){if(null===d)try{f.stateNode.nodeValue=c?"":f.memoizedProps}catch(m){_u(e,e.return,m)}}else if((22!==f.tag&&23!==f.tag||null===f.memoizedState||f===e)&&null!==f.child){f.child.return=f,f=f.child;continue}if(f===e)break e;for(;null===f.sibling;){if(null===f.return||f.return===e)break e;d===f&&(d=null),f=f.return}d===f&&(d=null),f.sibling.return=f.return,f=f.sibling}}break;case 19:ms(t,e),bs(e),4&r&&gs(e);case 21:}}function bs(e){var t=e.flags;if(2&t){try{e:{for(var n=e.return;null!==n;){if(ls(n)){var r=n;break e}n=n.return}throw Error(o(160))}switch(r.tag){case 5:var a=r.stateNode;32&r.flags&&(fe(a,""),r.flags&=-33),cs(e,ss(e),a);break;case 3:case 4:var i=r.stateNode.containerInfo;us(e,ss(e),i);break;default:throw Error(o(161))}}catch(l){_u(e,e.return,l)}e.flags&=-3}4096&t&&(e.flags&=-4097)}function vs(e,t,n){Jl=e,ws(e,t,n)}function ws(e,t,n){for(var r=0!=(1&e.mode);null!==Jl;){var a=Jl,o=a.child;if(22===a.tag&&r){var i=null!==a.memoizedState||Kl;if(!i){var l=a.alternate,s=null!==l&&null!==l.memoizedState||Ql;l=Kl;var u=Ql;if(Kl=i,(Ql=s)&&!u)for(Jl=a;null!==Jl;)s=(i=Jl).child,22===i.tag&&null!==i.memoizedState?Ss(a):null!==s?(s.return=i,Jl=s):Ss(a);for(;null!==o;)Jl=o,ws(o,t,n),o=o.sibling;Jl=a,Kl=l,Ql=u}ks(e)}else 0!=(8772&a.subtreeFlags)&&null!==o?(o.return=a,Jl=o):ks(e)}}function ks(e){for(;null!==Jl;){var t=Jl;if(0!=(8772&t.flags)){var n=t.alternate;try{if(0!=(8772&t.flags))switch(t.tag){case 0:case 11:case 15:Ql||as(5,t);break;case 1:var r=t.stateNode;if(4&t.flags&&!Ql)if(null===n)r.componentDidMount();else{var a=t.elementType===t.type?n.memoizedProps:yo(t.type,n.memoizedProps);r.componentDidUpdate(a,n.memoizedState,r.__reactInternalSnapshotBeforeUpdate)}var i=t.updateQueue;null!==i&&zo(t,i,r);break;case 3:var l=t.updateQueue;if(null!==l){if(n=null,null!==t.child)switch(t.child.tag){case 5:case 1:n=t.child.stateNode}zo(t,l,n)}break;case 5:var s=t.stateNode;if(null===n&&4&t.flags){n=s;var u=t.memoizedProps;switch(t.type){case"button":case"input":case"select":case"textarea":u.autoFocus&&n.focus();break;case"img":u.src&&(n.src=u.src)}}break;case 6:case 4:case 12:case 19:case 17:case 21:case 22:case 23:case 25:break;case 13:if(null===t.memoizedState){var c=t.alternate;if(null!==c){var d=c.memoizedState;if(null!==d){var f=d.dehydrated;null!==f&&Ut(f)}}}break;default:throw Error(o(163))}Ql||512&t.flags&&os(t)}catch(p){_u(t,t.return,p)}}if(t===e){Jl=null;break}if(null!==(n=t.sibling)){n.return=t.return,Jl=n;break}Jl=t.return}}function xs(e){for(;null!==Jl;){var t=Jl;if(t===e){Jl=null;break}var n=t.sibling;if(null!==n){n.return=t.return,Jl=n;break}Jl=t.return}}function Ss(e){for(;null!==Jl;){var t=Jl;try{switch(t.tag){case 0:case 11:case 15:var n=t.return;try{as(4,t)}catch(s){_u(t,n,s)}break;case 1:var r=t.stateNode;if("function"==typeof r.componentDidMount){var a=t.return;try{r.componentDidMount()}catch(s){_u(t,a,s)}}var o=t.return;try{os(t)}catch(s){_u(t,o,s)}break;case 5:var i=t.return;try{os(t)}catch(s){_u(t,i,s)}}}catch(s){_u(t,t.return,s)}if(t===e){Jl=null;break}var l=t.sibling;if(null!==l){l.return=t.return,Jl=l;break}Jl=t.return}}var Es,_s=Math.ceil,Cs=w.ReactCurrentDispatcher,Ts=w.ReactCurrentOwner,As=w.ReactCurrentBatchConfig,Ns=0,Ps=null,Ls=null,Os=0,Rs=0,js=Ea(0),Is=0,Ms=null,Ds=0,Fs=0,zs=0,Bs=null,$s=null,Us=0,Zs=1/0,Hs=null,Ws=!1,Vs=null,qs=null,Gs=!1,Ys=null,Ks=0,Qs=0,Xs=null,Js=-1,eu=0;function tu(){return 0!=(6&Ns)?Qe():-1!==Js?Js:Js=Qe()}function nu(e){return 0==(1&e.mode)?1:0!=(2&Ns)&&0!==Os?Os&-Os:null!==mo.transition?(0===eu&&(eu=gt()),eu):0!==(e=vt)?e:e=void 0===(e=window.event)?16:Kt(e.type)}function ru(e,t,n,r){if(50<Qs)throw Qs=0,Xs=null,Error(o(185));yt(e,n,r),0!=(2&Ns)&&e===Ps||(e===Ps&&(0==(2&Ns)&&(Fs|=n),4===Is&&su(e,Os)),au(e,r),1===n&&0===Ns&&0==(1&t.mode)&&(Zs=Qe()+500,za&&Ua()))}function au(e,t){var n=e.callbackNode;!function(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,a=e.expirationTimes,o=e.pendingLanes;0<o;){var i=31-it(o),l=1<<i,s=a[i];-1===s?0!=(l&n)&&0==(l&r)||(a[i]=pt(l,t)):s<=t&&(e.expiredLanes|=l),o&=~l}}(e,t);var r=ft(e,e===Ps?Os:0);if(0===r)null!==n&&Ge(n),e.callbackNode=null,e.callbackPriority=0;else if(t=r&-r,e.callbackPriority!==t){if(null!=n&&Ge(n),1===t)0===e.tag?function(e){za=!0,$a(e)}(uu.bind(null,e)):$a(uu.bind(null,e)),ia((function(){0==(6&Ns)&&Ua()})),n=null;else{switch(wt(r)){case 1:n=Je;break;case 4:n=et;break;case 16:default:n=tt;break;case 536870912:n=rt}n=Pu(n,ou.bind(null,e))}e.callbackPriority=t,e.callbackNode=n}}function ou(e,t){if(Js=-1,eu=0,0!=(6&Ns))throw Error(o(327));var n=e.callbackNode;if(Su()&&e.callbackNode!==n)return null;var r=ft(e,e===Ps?Os:0);if(0===r)return null;if(0!=(30&r)||0!=(r&e.expiredLanes)||t)t=yu(e,r);else{t=r;var a=Ns;Ns|=2;var i=gu();for(Ps===e&&Os===t||(Hs=null,Zs=Qe()+500,pu(e,t));;)try{vu();break}catch(s){hu(e,s)}xo(),Cs.current=i,Ns=a,null!==Ls?t=0:(Ps=null,Os=0,t=Is)}if(0!==t){if(2===t&&(0!==(a=ht(e))&&(r=a,t=iu(e,a))),1===t)throw n=Ms,pu(e,0),su(e,r),au(e,Qe()),n;if(6===t)su(e,r);else{if(a=e.current.alternate,0==(30&r)&&!function(e){for(var t=e;;){if(16384&t.flags){var n=t.updateQueue;if(null!==n&&null!==(n=n.stores))for(var r=0;r<n.length;r++){var a=n[r],o=a.getSnapshot;a=a.value;try{if(!lr(o(),a))return!1}catch(l){return!1}}}if(n=t.child,16384&t.subtreeFlags&&null!==n)n.return=t,t=n;else{if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}(a)&&(2===(t=yu(e,r))&&(0!==(i=ht(e))&&(r=i,t=iu(e,i))),1===t))throw n=Ms,pu(e,0),su(e,r),au(e,Qe()),n;switch(e.finishedWork=a,e.finishedLanes=r,t){case 0:case 1:throw Error(o(345));case 2:case 5:xu(e,$s,Hs);break;case 3:if(su(e,r),(130023424&r)===r&&10<(t=Us+500-Qe())){if(0!==ft(e,0))break;if(((a=e.suspendedLanes)&r)!==r){tu(),e.pingedLanes|=e.suspendedLanes&a;break}e.timeoutHandle=ra(xu.bind(null,e,$s,Hs),t);break}xu(e,$s,Hs);break;case 4:if(su(e,r),(4194240&r)===r)break;for(t=e.eventTimes,a=-1;0<r;){var l=31-it(r);i=1<<l,(l=t[l])>a&&(a=l),r&=~i}if(r=a,10<(r=(120>(r=Qe()-r)?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*_s(r/1960))-r)){e.timeoutHandle=ra(xu.bind(null,e,$s,Hs),r);break}xu(e,$s,Hs);break;default:throw Error(o(329))}}}return au(e,Qe()),e.callbackNode===n?ou.bind(null,e):null}function iu(e,t){var n=Bs;return e.current.memoizedState.isDehydrated&&(pu(e,t).flags|=256),2!==(e=yu(e,t))&&(t=$s,$s=n,null!==t&&lu(t)),e}function lu(e){null===$s?$s=e:$s.push.apply($s,e)}function su(e,t){for(t&=~zs,t&=~Fs,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-it(t),r=1<<n;e[n]=-1,t&=~r}}function uu(e){if(0!=(6&Ns))throw Error(o(327));Su();var t=ft(e,0);if(0==(1&t))return au(e,Qe()),null;var n=yu(e,t);if(0!==e.tag&&2===n){var r=ht(e);0!==r&&(t=r,n=iu(e,r))}if(1===n)throw n=Ms,pu(e,0),su(e,t),au(e,Qe()),n;if(6===n)throw Error(o(345));return e.finishedWork=e.current.alternate,e.finishedLanes=t,xu(e,$s,Hs),au(e,Qe()),null}function cu(e,t){var n=Ns;Ns|=1;try{return e(t)}finally{0===(Ns=n)&&(Zs=Qe()+500,za&&Ua())}}function du(e){null!==Ys&&0===Ys.tag&&0==(6&Ns)&&Su();var t=Ns;Ns|=1;var n=As.transition,r=vt;try{if(As.transition=null,vt=1,e)return e()}finally{vt=r,As.transition=n,0==(6&(Ns=t))&&Ua()}}function fu(){Rs=js.current,_a(js)}function pu(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,aa(n)),null!==Ls)for(n=Ls.return;null!==n;){var r=n;switch(to(r),r.tag){case 1:null!=(r=r.type.childContextTypes)&&Ra();break;case 3:oi(),_a(Na),_a(Aa),di();break;case 5:li(r);break;case 4:oi();break;case 13:case 19:_a(si);break;case 10:So(r.type._context);break;case 22:case 23:fu()}n=n.return}if(Ps=e,Ls=e=ju(e.current,null),Os=Rs=t,Is=0,Ms=null,zs=Fs=Ds=0,$s=Bs=null,null!==To){for(t=0;t<To.length;t++)if(null!==(r=(n=To[t]).interleaved)){n.interleaved=null;var a=r.next,o=n.pending;if(null!==o){var i=o.next;o.next=a,r.next=i}n.pending=r}To=null}return e}function hu(e,t){for(;;){var n=Ls;try{if(xo(),fi.current=il,bi){for(var r=gi.memoizedState;null!==r;){var a=r.queue;null!==a&&(a.pending=null),r=r.next}bi=!1}if(hi=0,yi=mi=gi=null,vi=!1,wi=0,Ts.current=null,null===n||null===n.return){Is=1,Ms=t,Ls=null;break}e:{var i=e,l=n.return,s=n,u=t;if(t=Os,s.flags|=32768,null!==u&&"object"==typeof u&&"function"==typeof u.then){var c=u,d=s,f=d.tag;if(0==(1&d.mode)&&(0===f||11===f||15===f)){var p=d.alternate;p?(d.updateQueue=p.updateQueue,d.memoizedState=p.memoizedState,d.lanes=p.lanes):(d.updateQueue=null,d.memoizedState=null)}var h=yl(l);if(null!==h){h.flags&=-257,bl(h,l,s,0,t),1&h.mode&&ml(i,c,t),u=c;var g=(t=h).updateQueue;if(null===g){var m=new Set;m.add(u),t.updateQueue=m}else g.add(u);break e}if(0==(1&t)){ml(i,c,t),mu();break e}u=Error(o(426))}else if(ao&&1&s.mode){var y=yl(l);if(null!==y){0==(65536&y.flags)&&(y.flags|=256),bl(y,l,s,0,t),go(cl(u,s));break e}}i=u=cl(u,s),4!==Is&&(Is=2),null===Bs?Bs=[i]:Bs.push(i),i=l;do{switch(i.tag){case 3:i.flags|=65536,t&=-t,i.lanes|=t,Do(i,hl(0,u,t));break e;case 1:s=u;var b=i.type,v=i.stateNode;if(0==(128&i.flags)&&("function"==typeof b.getDerivedStateFromError||null!==v&&"function"==typeof v.componentDidCatch&&(null===qs||!qs.has(v)))){i.flags|=65536,t&=-t,i.lanes|=t,Do(i,gl(i,s,t));break e}}i=i.return}while(null!==i)}ku(n)}catch(w){t=w,Ls===n&&null!==n&&(Ls=n=n.return);continue}break}}function gu(){var e=Cs.current;return Cs.current=il,null===e?il:e}function mu(){0!==Is&&3!==Is&&2!==Is||(Is=4),null===Ps||0==(268435455&Ds)&&0==(268435455&Fs)||su(Ps,Os)}function yu(e,t){var n=Ns;Ns|=2;var r=gu();for(Ps===e&&Os===t||(Hs=null,pu(e,t));;)try{bu();break}catch(a){hu(e,a)}if(xo(),Ns=n,Cs.current=r,null!==Ls)throw Error(o(261));return Ps=null,Os=0,Is}function bu(){for(;null!==Ls;)wu(Ls)}function vu(){for(;null!==Ls&&!Ye();)wu(Ls)}function wu(e){var t=Es(e.alternate,e,Rs);e.memoizedProps=e.pendingProps,null===t?ku(e):Ls=t,Ts.current=null}function ku(e){var t=e;do{var n=t.alternate;if(e=t.return,0==(32768&t.flags)){if(null!==(n=Gl(n,t,Rs)))return void(Ls=n)}else{if(null!==(n=Yl(n,t)))return n.flags&=32767,void(Ls=n);if(null===e)return Is=6,void(Ls=null);e.flags|=32768,e.subtreeFlags=0,e.deletions=null}if(null!==(t=t.sibling))return void(Ls=t);Ls=t=e}while(null!==t);0===Is&&(Is=5)}function xu(e,t,n){var r=vt,a=As.transition;try{As.transition=null,vt=1,function(e,t,n,r){do{Su()}while(null!==Ys);if(0!=(6&Ns))throw Error(o(327));n=e.finishedWork;var a=e.finishedLanes;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(o(177));e.callbackNode=null,e.callbackPriority=0;var i=n.lanes|n.childLanes;if(function(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0<n;){var a=31-it(n),o=1<<a;t[a]=0,r[a]=-1,e[a]=-1,n&=~o}}(e,i),e===Ps&&(Ls=Ps=null,Os=0),0==(2064&n.subtreeFlags)&&0==(2064&n.flags)||Gs||(Gs=!0,Pu(tt,(function(){return Su(),null}))),i=0!=(15990&n.flags),0!=(15990&n.subtreeFlags)||i){i=As.transition,As.transition=null;var l=vt;vt=1;var s=Ns;Ns|=4,Ts.current=null,function(e,t){if(ea=Ht,pr(e=fr())){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{var r=(n=(n=e.ownerDocument)&&n.defaultView||window).getSelection&&n.getSelection();if(r&&0!==r.rangeCount){n=r.anchorNode;var a=r.anchorOffset,i=r.focusNode;r=r.focusOffset;try{n.nodeType,i.nodeType}catch(k){n=null;break e}var l=0,s=-1,u=-1,c=0,d=0,f=e,p=null;t:for(;;){for(var h;f!==n||0!==a&&3!==f.nodeType||(s=l+a),f!==i||0!==r&&3!==f.nodeType||(u=l+r),3===f.nodeType&&(l+=f.nodeValue.length),null!==(h=f.firstChild);)p=f,f=h;for(;;){if(f===e)break t;if(p===n&&++c===a&&(s=l),p===i&&++d===r&&(u=l),null!==(h=f.nextSibling))break;p=(f=p).parentNode}f=h}n=-1===s||-1===u?null:{start:s,end:u}}else n=null}n=n||{start:0,end:0}}else n=null;for(ta={focusedElem:e,selectionRange:n},Ht=!1,Jl=t;null!==Jl;)if(e=(t=Jl).child,0!=(1028&t.subtreeFlags)&&null!==e)e.return=t,Jl=e;else for(;null!==Jl;){t=Jl;try{var g=t.alternate;if(0!=(1024&t.flags))switch(t.tag){case 0:case 11:case 15:case 5:case 6:case 4:case 17:break;case 1:if(null!==g){var m=g.memoizedProps,y=g.memoizedState,b=t.stateNode,v=b.getSnapshotBeforeUpdate(t.elementType===t.type?m:yo(t.type,m),y);b.__reactInternalSnapshotBeforeUpdate=v}break;case 3:var w=t.stateNode.containerInfo;1===w.nodeType?w.textContent="":9===w.nodeType&&w.documentElement&&w.removeChild(w.documentElement);break;default:throw Error(o(163))}}catch(k){_u(t,t.return,k)}if(null!==(e=t.sibling)){e.return=t.return,Jl=e;break}Jl=t.return}g=ns,ns=!1}(e,n),ys(n,e),hr(ta),Ht=!!ea,ta=ea=null,e.current=n,vs(n,e,a),Ke(),Ns=s,vt=l,As.transition=i}else e.current=n;if(Gs&&(Gs=!1,Ys=e,Ks=a),i=e.pendingLanes,0===i&&(qs=null),function(e){if(ot&&"function"==typeof ot.onCommitFiberRoot)try{ot.onCommitFiberRoot(at,e,void 0,128==(128&e.current.flags))}catch(t){}}(n.stateNode),au(e,Qe()),null!==t)for(r=e.onRecoverableError,n=0;n<t.length;n++)a=t[n],r(a.value,{componentStack:a.stack,digest:a.digest});if(Ws)throw Ws=!1,e=Vs,Vs=null,e;0!=(1&Ks)&&0!==e.tag&&Su(),i=e.pendingLanes,0!=(1&i)?e===Xs?Qs++:(Qs=0,Xs=e):Qs=0,Ua()}(e,t,n,r)}finally{As.transition=a,vt=r}return null}function Su(){if(null!==Ys){var e=wt(Ks),t=As.transition,n=vt;try{if(As.transition=null,vt=16>e?16:e,null===Ys)var r=!1;else{if(e=Ys,Ys=null,Ks=0,0!=(6&Ns))throw Error(o(331));var a=Ns;for(Ns|=4,Jl=e.current;null!==Jl;){var i=Jl,l=i.child;if(0!=(16&Jl.flags)){var s=i.deletions;if(null!==s){for(var u=0;u<s.length;u++){var c=s[u];for(Jl=c;null!==Jl;){var d=Jl;switch(d.tag){case 0:case 11:case 15:rs(8,d,i)}var f=d.child;if(null!==f)f.return=d,Jl=f;else for(;null!==Jl;){var p=(d=Jl).sibling,h=d.return;if(is(d),d===c){Jl=null;break}if(null!==p){p.return=h,Jl=p;break}Jl=h}}}var g=i.alternate;if(null!==g){var m=g.child;if(null!==m){g.child=null;do{var y=m.sibling;m.sibling=null,m=y}while(null!==m)}}Jl=i}}if(0!=(2064&i.subtreeFlags)&&null!==l)l.return=i,Jl=l;else e:for(;null!==Jl;){if(0!=(2048&(i=Jl).flags))switch(i.tag){case 0:case 11:case 15:rs(9,i,i.return)}var b=i.sibling;if(null!==b){b.return=i.return,Jl=b;break e}Jl=i.return}}var v=e.current;for(Jl=v;null!==Jl;){var w=(l=Jl).child;if(0!=(2064&l.subtreeFlags)&&null!==w)w.return=l,Jl=w;else e:for(l=v;null!==Jl;){if(0!=(2048&(s=Jl).flags))try{switch(s.tag){case 0:case 11:case 15:as(9,s)}}catch(x){_u(s,s.return,x)}if(s===l){Jl=null;break e}var k=s.sibling;if(null!==k){k.return=s.return,Jl=k;break e}Jl=s.return}}if(Ns=a,Ua(),ot&&"function"==typeof ot.onPostCommitFiberRoot)try{ot.onPostCommitFiberRoot(at,e)}catch(x){}r=!0}return r}finally{vt=n,As.transition=t}}return!1}function Eu(e,t,n){e=Io(e,t=hl(0,t=cl(n,t),1),1),t=tu(),null!==e&&(yt(e,1,t),au(e,t))}function _u(e,t,n){if(3===e.tag)Eu(e,e,n);else for(;null!==t;){if(3===t.tag){Eu(t,e,n);break}if(1===t.tag){var r=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===qs||!qs.has(r))){t=Io(t,e=gl(t,e=cl(n,e),1),1),e=tu(),null!==t&&(yt(t,1,e),au(t,e));break}}t=t.return}}function Cu(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=tu(),e.pingedLanes|=e.suspendedLanes&n,Ps===e&&(Os&n)===n&&(4===Is||3===Is&&(130023424&Os)===Os&&500>Qe()-Us?pu(e,0):zs|=n),au(e,t)}function Tu(e,t){0===t&&(0==(1&e.mode)?t=1:(t=ct,0==(130023424&(ct<<=1))&&(ct=4194304)));var n=tu();null!==(e=Po(e,t))&&(yt(e,t,n),au(e,n))}function Au(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),Tu(e,n)}function Nu(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,a=e.memoizedState;null!==a&&(n=a.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(o(314))}null!==r&&r.delete(t),Tu(e,n)}function Pu(e,t){return qe(e,t)}function Lu(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Ou(e,t,n,r){return new Lu(e,t,n,r)}function Ru(e){return!(!(e=e.prototype)||!e.isReactComponent)}function ju(e,t){var n=e.alternate;return null===n?((n=Ou(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=14680064&e.flags,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Iu(e,t,n,r,a,i){var l=2;if(r=e,"function"==typeof e)Ru(e)&&(l=1);else if("string"==typeof e)l=5;else e:switch(e){case S:return Mu(n.children,a,i,t);case E:l=8,a|=8;break;case _:return(e=Ou(12,n,t,2|a)).elementType=_,e.lanes=i,e;case N:return(e=Ou(13,n,t,a)).elementType=N,e.lanes=i,e;case P:return(e=Ou(19,n,t,a)).elementType=P,e.lanes=i,e;case R:return Du(n,a,i,t);default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case C:l=10;break e;case T:l=9;break e;case A:l=11;break e;case L:l=14;break e;case O:l=16,r=null;break e}throw Error(o(130,null==e?e:typeof e,""))}return(t=Ou(l,n,t,a)).elementType=e,t.type=r,t.lanes=i,t}function Mu(e,t,n,r){return(e=Ou(7,e,r,t)).lanes=n,e}function Du(e,t,n,r){return(e=Ou(22,e,r,t)).elementType=R,e.lanes=n,e.stateNode={isHidden:!1},e}function Fu(e,t,n){return(e=Ou(6,e,null,t)).lanes=n,e}function zu(e,t,n){return(t=Ou(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Bu(e,t,n,r,a){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=mt(0),this.expirationTimes=mt(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=mt(0),this.identifierPrefix=r,this.onRecoverableError=a,this.mutableSourceEagerHydrationData=null}function $u(e,t,n,r,a,o,i,l,s){return e=new Bu(e,t,n,l,s),1===t?(t=1,!0===o&&(t|=8)):t=0,o=Ou(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Oo(o),e}function Uu(e){if(!e)return Ta;e:{if(Ue(e=e._reactInternals)!==e||1!==e.tag)throw Error(o(170));var t=e;do{switch(t.tag){case 3:t=t.stateNode.context;break e;case 1:if(Oa(t.type)){t=t.stateNode.__reactInternalMemoizedMergedChildContext;break e}}t=t.return}while(null!==t);throw Error(o(171))}if(1===e.tag){var n=e.type;if(Oa(n))return Ia(e,n,t)}return t}function Zu(e,t,n,r,a,o,i,l,s){return(e=$u(n,r,!0,e,0,o,0,l,s)).context=Uu(null),n=e.current,(o=jo(r=tu(),a=nu(n))).callback=null!=t?t:null,Io(n,o,a),e.current.lanes=a,yt(e,a,r),au(e,r),e}function Hu(e,t,n,r){var a=t.current,o=tu(),i=nu(a);return n=Uu(n),null===t.context?t.context=n:t.pendingContext=n,(t=jo(o,i)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),null!==(e=Io(a,t,i))&&(ru(e,a,i,o),Mo(e,a,i)),i}function Wu(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function Vu(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function qu(e,t){Vu(e,t),(e=e.alternate)&&Vu(e,t)}Es=function(e,t,n){if(null!==e)if(e.memoizedProps!==t.pendingProps||Na.current)wl=!0;else{if(0==(e.lanes&n)&&0==(128&t.flags))return wl=!1,function(e,t,n){switch(t.tag){case 3:Pl(t),ho();break;case 5:ii(t);break;case 1:Oa(t.type)&&Ma(t);break;case 4:ai(t,t.stateNode.containerInfo);break;case 10:var r=t.type._context,a=t.memoizedProps.value;Ca(bo,r._currentValue),r._currentValue=a;break;case 13:if(null!==(r=t.memoizedState))return null!==r.dehydrated?(Ca(si,1&si.current),t.flags|=128,null):0!=(n&t.child.childLanes)?Fl(e,t,n):(Ca(si,1&si.current),null!==(e=Wl(e,t,n))?e.sibling:null);Ca(si,1&si.current);break;case 19:if(r=0!=(n&t.childLanes),0!=(128&e.flags)){if(r)return Zl(e,t,n);t.flags|=128}if(null!==(a=t.memoizedState)&&(a.rendering=null,a.tail=null,a.lastEffect=null),Ca(si,si.current),r)break;return null;case 22:case 23:return t.lanes=0,_l(e,t,n)}return Wl(e,t,n)}(e,t,n);wl=0!=(131072&e.flags)}else wl=!1,ao&&0!=(1048576&t.flags)&&Ja(t,Va,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Hl(e,t),e=t.pendingProps;var a=La(t,Aa.current);_o(t,n),a=Ei(null,t,r,e,a,n);var i=_i();return t.flags|=1,"object"==typeof a&&null!==a&&"function"==typeof a.render&&void 0===a.$$typeof?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Oa(r)?(i=!0,Ma(t)):i=!1,t.memoizedState=null!==a.state&&void 0!==a.state?a.state:null,Oo(t),a.updater=Uo,t.stateNode=a,a._reactInternals=t,Vo(t,r,e,n),t=Nl(null,t,r,!0,i,n)):(t.tag=0,ao&&i&&eo(t),kl(null,t,a,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Hl(e,t),e=t.pendingProps,r=(a=r._init)(r._payload),t.type=r,a=t.tag=function(e){if("function"==typeof e)return Ru(e)?1:0;if(null!=e){if((e=e.$$typeof)===A)return 11;if(e===L)return 14}return 2}(r),e=yo(r,e),a){case 0:t=Tl(null,t,r,e,n);break e;case 1:t=Al(null,t,r,e,n);break e;case 11:t=xl(null,t,r,e,n);break e;case 14:t=Sl(null,t,r,yo(r.type,e),n);break e}throw Error(o(306,r,""))}return t;case 0:return r=t.type,a=t.pendingProps,Tl(e,t,r,a=t.elementType===r?a:yo(r,a),n);case 1:return r=t.type,a=t.pendingProps,Al(e,t,r,a=t.elementType===r?a:yo(r,a),n);case 3:e:{if(Pl(t),null===e)throw Error(o(387));r=t.pendingProps,a=(i=t.memoizedState).element,Ro(e,t),Fo(t,r,null,n);var l=t.memoizedState;if(r=l.element,i.isDehydrated){if(i={element:r,isDehydrated:!1,cache:l.cache,pendingSuspenseBoundaries:l.pendingSuspenseBoundaries,transitions:l.transitions},t.updateQueue.baseState=i,t.memoizedState=i,256&t.flags){t=Ll(e,t,r,n,a=cl(Error(o(423)),t));break e}if(r!==a){t=Ll(e,t,r,n,a=cl(Error(o(424)),t));break e}for(ro=ua(t.stateNode.containerInfo.firstChild),no=t,ao=!0,oo=null,n=Xo(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|4096,n=n.sibling}else{if(ho(),r===a){t=Wl(e,t,n);break e}kl(e,t,r,n)}t=t.child}return t;case 5:return ii(t),null===e&&uo(t),r=t.type,a=t.pendingProps,i=null!==e?e.memoizedProps:null,l=a.children,na(r,a)?l=null:null!==i&&na(r,i)&&(t.flags|=32),Cl(e,t),kl(e,t,l,n),t.child;case 6:return null===e&&uo(t),null;case 13:return Fl(e,t,n);case 4:return ai(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=Qo(t,null,r,n):kl(e,t,r,n),t.child;case 11:return r=t.type,a=t.pendingProps,xl(e,t,r,a=t.elementType===r?a:yo(r,a),n);case 7:return kl(e,t,t.pendingProps,n),t.child;case 8:case 12:return kl(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,a=t.pendingProps,i=t.memoizedProps,l=a.value,Ca(bo,r._currentValue),r._currentValue=l,null!==i)if(lr(i.value,l)){if(i.children===a.children&&!Na.current){t=Wl(e,t,n);break e}}else for(null!==(i=t.child)&&(i.return=t);null!==i;){var s=i.dependencies;if(null!==s){l=i.child;for(var u=s.firstContext;null!==u;){if(u.context===r){if(1===i.tag){(u=jo(-1,n&-n)).tag=2;var c=i.updateQueue;if(null!==c){var d=(c=c.shared).pending;null===d?u.next=u:(u.next=d.next,d.next=u),c.pending=u}}i.lanes|=n,null!==(u=i.alternate)&&(u.lanes|=n),Eo(i.return,n,t),s.lanes|=n;break}u=u.next}}else if(10===i.tag)l=i.type===t.type?null:i.child;else if(18===i.tag){if(null===(l=i.return))throw Error(o(341));l.lanes|=n,null!==(s=l.alternate)&&(s.lanes|=n),Eo(l,n,t),l=i.sibling}else l=i.child;if(null!==l)l.return=i;else for(l=i;null!==l;){if(l===t){l=null;break}if(null!==(i=l.sibling)){i.return=l.return,l=i;break}l=l.return}i=l}kl(e,t,a.children,n),t=t.child}return t;case 9:return a=t.type,r=t.pendingProps.children,_o(t,n),r=r(a=Co(a)),t.flags|=1,kl(e,t,r,n),t.child;case 14:return a=yo(r=t.type,t.pendingProps),Sl(e,t,r,a=yo(r.type,a),n);case 15:return El(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:yo(r,a),Hl(e,t),t.tag=1,Oa(r)?(e=!0,Ma(t)):e=!1,_o(t,n),Ho(t,r,a),Vo(t,r,a,n),Nl(null,t,r,!0,e,n);case 19:return Zl(e,t,n);case 22:return _l(e,t,n)}throw Error(o(156,t.tag))};var Gu="function"==typeof reportError?reportError:function(e){console.error(e)};function Yu(e){this._internalRoot=e}function Ku(e){this._internalRoot=e}function Qu(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType)}function Xu(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function Ju(){}function ec(e,t,n,r,a){var o=n._reactRootContainer;if(o){var i=o;if("function"==typeof a){var l=a;a=function(){var e=Wu(i);l.call(e)}}Hu(t,i,e,a)}else i=function(e,t,n,r,a){if(a){if("function"==typeof r){var o=r;r=function(){var e=Wu(i);o.call(e)}}var i=Zu(t,r,e,0,null,!1,0,"",Ju);return e._reactRootContainer=i,e[ha]=i.current,Ur(8===e.nodeType?e.parentNode:e),du(),i}for(;a=e.lastChild;)e.removeChild(a);if("function"==typeof r){var l=r;r=function(){var e=Wu(s);l.call(e)}}var s=$u(e,0,!1,null,0,!1,0,"",Ju);return e._reactRootContainer=s,e[ha]=s.current,Ur(8===e.nodeType?e.parentNode:e),du((function(){Hu(t,s,n,r)})),s}(n,t,e,a,r);return Wu(i)}Ku.prototype.render=Yu.prototype.render=function(e){var t=this._internalRoot;if(null===t)throw Error(o(409));Hu(e,t,null,null)},Ku.prototype.unmount=Yu.prototype.unmount=function(){var e=this._internalRoot;if(null!==e){this._internalRoot=null;var t=e.containerInfo;du((function(){Hu(null,e,null,null)})),t[ha]=null}},Ku.prototype.unstable_scheduleHydration=function(e){if(e){var t=Et();e={blockedOn:null,target:e,priority:t};for(var n=0;n<Rt.length&&0!==t&&t<Rt[n].priority;n++);Rt.splice(n,0,e),0===n&&Dt(e)}},kt=function(e){switch(e.tag){case 3:var t=e.stateNode;if(t.current.memoizedState.isDehydrated){var n=dt(t.pendingLanes);0!==n&&(bt(t,1|n),au(t,Qe()),0==(6&Ns)&&(Zs=Qe()+500,Ua()))}break;case 13:du((function(){var t=Po(e,1);if(null!==t){var n=tu();ru(t,e,1,n)}})),qu(e,1)}},xt=function(e){if(13===e.tag){var t=Po(e,134217728);if(null!==t)ru(t,e,134217728,tu());qu(e,134217728)}},St=function(e){if(13===e.tag){var t=nu(e),n=Po(e,t);if(null!==n)ru(n,e,t,tu());qu(e,t)}},Et=function(){return vt},_t=function(e,t){var n=vt;try{return vt=e,t()}finally{vt=n}},xe=function(e,t,n){switch(t){case"input":if(X(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var a=ka(r);if(!a)throw Error(o(90));q(r),X(r,a)}}}break;case"textarea":oe(e,n);break;case"select":null!=(t=n.value)&&ne(e,!!n.multiple,t,!1)}},Ae=cu,Ne=du;var tc={usingClientEntryPoint:!1,Events:[va,wa,ka,Ce,Te,cu]},nc={findFiberByHostInstance:ba,bundleType:0,version:"18.2.0",rendererPackageName:"react-dom"},rc={bundleType:nc.bundleType,version:nc.version,rendererPackageName:nc.rendererPackageName,rendererConfig:nc.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:w.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=We(e))?null:e.stateNode},findFiberByHostInstance:nc.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.2.0-next-9e3b772b8-20220608"};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var ac=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!ac.isDisabled&&ac.supportsFiber)try{at=ac.inject(rc),ot=ac}catch(ce){}}t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=tc,t.createPortal=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!Qu(t))throw Error(o(200));return function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:x,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)},t.createRoot=function(e,t){if(!Qu(e))throw Error(o(299));var n=!1,r="",a=Gu;return null!=t&&(!0===t.unstable_strictMode&&(n=!0),void 0!==t.identifierPrefix&&(r=t.identifierPrefix),void 0!==t.onRecoverableError&&(a=t.onRecoverableError)),t=$u(e,1,!1,null,0,n,0,r,a),e[ha]=t.current,Ur(8===e.nodeType?e.parentNode:e),new Yu(t)},t.findDOMNode=function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternals;if(void 0===t){if("function"==typeof e.render)throw Error(o(188));throw e=Object.keys(e).join(","),Error(o(268,e))}return e=null===(e=We(t))?null:e.stateNode},t.flushSync=function(e){return du(e)},t.hydrate=function(e,t,n){if(!Xu(t))throw Error(o(200));return ec(null,e,t,!0,n)},t.hydrateRoot=function(e,t,n){if(!Qu(e))throw Error(o(405));var r=null!=n&&n.hydratedSources||null,a=!1,i="",l=Gu;if(null!=n&&(!0===n.unstable_strictMode&&(a=!0),void 0!==n.identifierPrefix&&(i=n.identifierPrefix),void 0!==n.onRecoverableError&&(l=n.onRecoverableError)),t=Zu(t,null,e,1,null!=n?n:null,a,0,i,l),e[ha]=t.current,Ur(e),r)for(e=0;e<r.length;e++)a=(a=(n=r[e])._getVersion)(n._source),null==t.mutableSourceEagerHydrationData?t.mutableSourceEagerHydrationData=[n,a]:t.mutableSourceEagerHydrationData.push(n,a);return new Ku(t)},t.render=function(e,t,n){if(!Xu(t))throw Error(o(200));return ec(null,e,t,!1,n)},t.unmountComponentAtNode=function(e){if(!Xu(e))throw Error(o(40));return!!e._reactRootContainer&&(du((function(){ec(null,null,e,!1,(function(){e._reactRootContainer=null,e[ha]=null}))})),!0)},t.unstable_batchedUpdates=cu,t.unstable_renderSubtreeIntoContainer=function(e,t,n,r){if(!Xu(n))throw Error(o(200));if(null==e||void 0===e._reactInternals)throw Error(o(38));return ec(e,t,n,!1,r)},t.version="18.2.0-next-9e3b772b8-20220608"},4478:(e,t,n)=>{"use strict";var r=n(422);t.createRoot=r.createRoot,t.hydrateRoot=r.hydrateRoot},422:(e,t,n)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(3746)},5154:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,a="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function o(e,i){if(e===i)return!0;if(e&&i&&"object"==typeof e&&"object"==typeof i){if(e.constructor!==i.constructor)return!1;var l,s,u,c;if(Array.isArray(e)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(!o(e[s],i[s]))return!1;return!0}if(n&&e instanceof Map&&i instanceof Map){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;for(c=e.entries();!(s=c.next()).done;)if(!o(s.value[1],i.get(s.value[0])))return!1;return!0}if(r&&e instanceof Set&&i instanceof Set){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;return!0}if(a&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(i)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(e[s]!==i[s])return!1;return!0}if(e.constructor===RegExp)return e.source===i.source&&e.flags===i.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"==typeof e.valueOf&&"function"==typeof i.valueOf)return e.valueOf()===i.valueOf();if(e.toString!==Object.prototype.toString&&"function"==typeof e.toString&&"function"==typeof i.toString)return e.toString()===i.toString();if((l=(u=Object.keys(e)).length)!==Object.keys(i).length)return!1;for(s=l;0!=s--;)if(!Object.prototype.hasOwnProperty.call(i,u[s]))return!1;if(t&&e instanceof Element)return!1;for(s=l;0!=s--;)if(("_owner"!==u[s]&&"__v"!==u[s]&&"__o"!==u[s]||!e.$$typeof)&&!o(e[u[s]],i[u[s]]))return!1;return!0}return e!=e&&i!=i}e.exports=function(e,t){try{return o(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},2402:(e,t,n)=>{"use strict";n.d(t,{B6:()=>W,ql:()=>J});var r=n(959),a=n(507),o=n.n(a),i=n(5154),l=n.n(i),s=n(3670),u=n.n(s),c=n(631),d=n.n(c);function f(){return f=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},f.apply(this,arguments)}function p(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,h(e,t)}function h(e,t){return h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},h(e,t)}function g(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t.indexOf(n=o[r])>=0||(a[n]=e[n]);return a}var m={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},y={rel:["amphtml","canonical","alternate"]},b={type:["application/ld+json"]},v={charset:"",name:["robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},w=Object.keys(m).map((function(e){return m[e]})),k={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},x=Object.keys(k).reduce((function(e,t){return e[k[t]]=t,e}),{}),S=function(e,t){for(var n=e.length-1;n>=0;n-=1){var r=e[n];if(Object.prototype.hasOwnProperty.call(r,t))return r[t]}return null},E=function(e){var t=S(e,m.TITLE),n=S(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,(function(){return t}));var r=S(e,"defaultTitle");return t||r||void 0},_=function(e){return S(e,"onChangeClientState")||function(){}},C=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return f({},e,t)}),{})},T=function(e,t){return t.filter((function(e){return void 0!==e[m.BASE]})).map((function(e){return e[m.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),a=0;a<r.length;a+=1){var o=r[a].toLowerCase();if(-1!==e.indexOf(o)&&n[o])return t.concat(n)}return t}),[])},A=function(e,t,n){var r={};return n.filter((function(t){return!!Array.isArray(t[e])||(void 0!==t[e]&&console&&"function"==typeof console.warn&&console.warn("Helmet: "+e+' should be of type "Array". Instead found type "'+typeof t[e]+'"'),!1)})).map((function(t){return t[e]})).reverse().reduce((function(e,n){var a={};n.filter((function(e){for(var n,o=Object.keys(e),i=0;i<o.length;i+=1){var l=o[i],s=l.toLowerCase();-1===t.indexOf(s)||"rel"===n&&"canonical"===e[n].toLowerCase()||"rel"===s&&"stylesheet"===e[s].toLowerCase()||(n=s),-1===t.indexOf(l)||"innerHTML"!==l&&"cssText"!==l&&"itemprop"!==l||(n=l)}if(!n||!e[n])return!1;var u=e[n].toLowerCase();return r[n]||(r[n]={}),a[n]||(a[n]={}),!r[n][u]&&(a[n][u]=!0,!0)})).reverse().forEach((function(t){return e.push(t)}));for(var o=Object.keys(a),i=0;i<o.length;i+=1){var l=o[i],s=f({},r[l],a[l]);r[l]=s}return e}),[]).reverse()},N=function(e,t){if(Array.isArray(e)&&e.length)for(var n=0;n<e.length;n+=1)if(e[n][t])return!0;return!1},P=function(e){return Array.isArray(e)?e.join(""):e},L=function(e,t){return Array.isArray(e)?e.reduce((function(e,n){return function(e,t){for(var n=Object.keys(e),r=0;r<n.length;r+=1)if(t[n[r]]&&t[n[r]].includes(e[n[r]]))return!0;return!1}(n,t)?e.priority.push(n):e.default.push(n),e}),{priority:[],default:[]}):{default:e}},O=function(e,t){var n;return f({},e,((n={})[t]=void 0,n))},R=[m.NOSCRIPT,m.SCRIPT,m.STYLE],j=function(e,t){return void 0===t&&(t=!0),!1===t?String(e):String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},I=function(e){return Object.keys(e).reduce((function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r}),"")},M=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce((function(t,n){return t[k[n]||n]=e[n],t}),t)},D=function(e,t){return t.map((function(t,n){var a,o=((a={key:n})["data-rh"]=!0,a);return Object.keys(t).forEach((function(e){var n=k[e]||e;"innerHTML"===n||"cssText"===n?o.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:o[n]=t[e]})),r.createElement(e,o)}))},F=function(e,t,n){switch(e){case m.TITLE:return{toComponent:function(){return n=t.titleAttributes,(a={key:e=t.title})["data-rh"]=!0,o=M(n,a),[r.createElement(m.TITLE,o,e)];var e,n,a,o},toString:function(){return function(e,t,n,r){var a=I(n),o=P(t);return a?"<"+e+' data-rh="true" '+a+">"+j(o,r)+"</"+e+">":"<"+e+' data-rh="true">'+j(o,r)+"</"+e+">"}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return M(t)},toString:function(){return I(t)}};default:return{toComponent:function(){return D(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var a=Object.keys(r).filter((function(e){return!("innerHTML"===e||"cssText"===e)})).reduce((function(e,t){var a=void 0===r[t]?t:t+'="'+j(r[t],n)+'"';return e?e+" "+a:a}),""),o=r.innerHTML||r.cssText||"",i=-1===R.indexOf(e);return t+"<"+e+' data-rh="true" '+a+(i?"/>":">"+o+"</"+e+">")}),"")}(e,t,n)}}}},z=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,a=e.htmlAttributes,o=e.noscriptTags,i=e.styleTags,l=e.title,s=void 0===l?"":l,u=e.titleAttributes,c=e.linkTags,d=e.metaTags,f=e.scriptTags,p={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var h=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,a=L(e.metaTags,v),o=L(t,y),i=L(n,b);return{priorityMethods:{toComponent:function(){return[].concat(D(m.META,a.priority),D(m.LINK,o.priority),D(m.SCRIPT,i.priority))},toString:function(){return F(m.META,a.priority,r)+" "+F(m.LINK,o.priority,r)+" "+F(m.SCRIPT,i.priority,r)}},metaTags:a.default,linkTags:o.default,scriptTags:i.default}}(e);p=h.priorityMethods,c=h.linkTags,d=h.metaTags,f=h.scriptTags}return{priority:p,base:F(m.BASE,t,r),bodyAttributes:F("bodyAttributes",n,r),htmlAttributes:F("htmlAttributes",a,r),link:F(m.LINK,c,r),meta:F(m.META,d,r),noscript:F(m.NOSCRIPT,o,r),script:F(m.SCRIPT,f,r),style:F(m.STYLE,i,r),title:F(m.TITLE,{title:s,titleAttributes:u},r)}},B=[],$=function(e,t){var n=this;void 0===t&&(t="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?B:n.instances},add:function(e){(n.canUseDOM?B:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?B:n.instances).indexOf(e);(n.canUseDOM?B:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=z({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},U=r.createContext({}),Z=o().shape({setHelmet:o().func,helmetInstances:o().shape({get:o().func,add:o().func,remove:o().func})}),H="undefined"!=typeof document,W=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new $(r.props.context,t.canUseDOM),r}return p(t,e),t.prototype.render=function(){return r.createElement(U.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);W.canUseDOM=H,W.propTypes={context:o().shape({helmet:o().shape()}),children:o().node.isRequired},W.defaultProps={context:{}},W.displayName="HelmetProvider";var V=function(e,t){var n,r=document.head||document.querySelector(m.HEAD),a=r.querySelectorAll(e+"[data-rh]"),o=[].slice.call(a),i=[];return t&&t.length&&t.forEach((function(t){var r=document.createElement(e);for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&("innerHTML"===a?r.innerHTML=t.innerHTML:"cssText"===a?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(a,void 0===t[a]?"":t[a]));r.setAttribute("data-rh","true"),o.some((function(e,t){return n=t,r.isEqualNode(e)}))?o.splice(n,1):i.push(r)})),o.forEach((function(e){return e.parentNode.removeChild(e)})),i.forEach((function(e){return r.appendChild(e)})),{oldTags:o,newTags:i}},q=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),a=r?r.split(","):[],o=[].concat(a),i=Object.keys(t),l=0;l<i.length;l+=1){var s=i[l],u=t[s]||"";n.getAttribute(s)!==u&&n.setAttribute(s,u),-1===a.indexOf(s)&&a.push(s);var c=o.indexOf(s);-1!==c&&o.splice(c,1)}for(var d=o.length-1;d>=0;d-=1)n.removeAttribute(o[d]);a.length===o.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==i.join(",")&&n.setAttribute("data-rh",i.join(","))}},G=function(e,t){var n=e.baseTag,r=e.htmlAttributes,a=e.linkTags,o=e.metaTags,i=e.noscriptTags,l=e.onChangeClientState,s=e.scriptTags,u=e.styleTags,c=e.title,d=e.titleAttributes;q(m.BODY,e.bodyAttributes),q(m.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=P(e)),q(m.TITLE,t)}(c,d);var f={baseTag:V(m.BASE,n),linkTags:V(m.LINK,a),metaTags:V(m.META,o),noscriptTags:V(m.NOSCRIPT,i),scriptTags:V(m.SCRIPT,s),styleTags:V(m.STYLE,u)},p={},h={};Object.keys(f).forEach((function(e){var t=f[e],n=t.newTags,r=t.oldTags;n.length&&(p[e]=n),r.length&&(h[e]=f[e].oldTags)})),t&&t(),l(e,p,h)},Y=null,K=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).rendered=!1,t}p(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!d()(e,this.props)},n.componentDidUpdate=function(){this.emitChange()},n.componentWillUnmount=function(){this.props.context.helmetInstances.remove(this),this.emitChange()},n.emitChange=function(){var e,t,n=this.props.context,r=n.setHelmet,a=null,o=(e=n.helmetInstances.get().map((function(e){var t=f({},e.props);return delete t.context,t})),{baseTag:T(["href"],e),bodyAttributes:C("bodyAttributes",e),defer:S(e,"defer"),encode:S(e,"encodeSpecialCharacters"),htmlAttributes:C("htmlAttributes",e),linkTags:A(m.LINK,["rel","href"],e),metaTags:A(m.META,["name","charset","http-equiv","property","itemprop"],e),noscriptTags:A(m.NOSCRIPT,["innerHTML"],e),onChangeClientState:_(e),scriptTags:A(m.SCRIPT,["src","innerHTML"],e),styleTags:A(m.STYLE,["cssText"],e),title:E(e),titleAttributes:C("titleAttributes",e),prioritizeSeoTags:N(e,"prioritizeSeoTags")});W.canUseDOM?(t=o,Y&&cancelAnimationFrame(Y),t.defer?Y=requestAnimationFrame((function(){G(t,(function(){Y=null}))})):(G(t),Y=null)):z&&(a=z(o)),r(a)},n.init=function(){this.rendered||(this.rendered=!0,this.props.context.helmetInstances.add(this),this.emitChange())},n.render=function(){return this.init(),null},t}(r.Component);K.propTypes={context:Z.isRequired},K.displayName="HelmetDispatcher";var Q=["children"],X=["children"],J=function(e){function t(){return e.apply(this,arguments)||this}p(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!l()(O(this.props,"helmetData"),O(e,"helmetData"))},n.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case m.SCRIPT:case m.NOSCRIPT:return{innerHTML:t};case m.STYLE:return{cssText:t};default:throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren;return f({},r,((t={})[n.type]=[].concat(r[n.type]||[],[f({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,r=e.child,a=e.newProps,o=e.newChildProps,i=e.nestedChildren;switch(r.type){case m.TITLE:return f({},a,((t={})[r.type]=i,t.titleAttributes=f({},o),t));case m.BODY:return f({},a,{bodyAttributes:f({},o)});case m.HTML:return f({},a,{htmlAttributes:f({},o)});default:return f({},a,((n={})[r.type]=f({},o),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=f({},t);return Object.keys(e).forEach((function(t){var r;n=f({},n,((r={})[t]=e[t],r))})),n},n.warnOnInvalidChildren=function(e,t){return u()(w.some((function(t){return e.type===t})),"function"==typeof e.type?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+w.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),u()(!t||"string"==typeof t||Array.isArray(t)&&!t.some((function(e){return"string"!=typeof e})),"Helmet expects a string as a child of <"+e.type+">. Did you forget to wrap your children in braces? ( <"+e.type+">{``}</"+e.type+"> ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,t){var n=this,a={};return r.Children.forEach(e,(function(e){if(e&&e.props){var r=e.props,o=r.children,i=g(r,Q),l=Object.keys(i).reduce((function(e,t){return e[x[t]||t]=i[t],e}),{}),s=e.type;switch("symbol"==typeof s?s=s.toString():n.warnOnInvalidChildren(e,o),s){case m.FRAGMENT:t=n.mapChildrenToProps(o,t);break;case m.LINK:case m.META:case m.NOSCRIPT:case m.SCRIPT:case m.STYLE:a=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:a,newChildProps:l,nestedChildren:o});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:l,nestedChildren:o})}}})),this.mapArrayTypeChildrenToProps(a,t)},n.render=function(){var e=this.props,t=e.children,n=g(e,X),a=f({},n),o=n.helmetData;return t&&(a=this.mapChildrenToProps(t,a)),!o||o instanceof $||(o=new $(o.context,o.instances)),o?r.createElement(K,f({},a,{context:o.value,helmetData:void 0})):r.createElement(U.Consumer,null,(function(e){return r.createElement(K,f({},a,{context:e}))}))},t}(r.Component);J.propTypes={base:o().object,bodyAttributes:o().object,children:o().oneOfType([o().arrayOf(o().node),o().node]),defaultTitle:o().string,defer:o().bool,encodeSpecialCharacters:o().bool,htmlAttributes:o().object,link:o().arrayOf(o().object),meta:o().arrayOf(o().object),noscript:o().arrayOf(o().object),onChangeClientState:o().func,script:o().arrayOf(o().object),style:o().arrayOf(o().object),title:o().string,titleAttributes:o().object,titleTemplate:o().string,prioritizeSeoTags:o().bool,helmetData:o().object},J.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},J.displayName="Helmet"},198:(e,t)=>{"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,a=n?Symbol.for("react.portal"):60106,o=n?Symbol.for("react.fragment"):60107,i=n?Symbol.for("react.strict_mode"):60108,l=n?Symbol.for("react.profiler"):60114,s=n?Symbol.for("react.provider"):60109,u=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,f=n?Symbol.for("react.forward_ref"):60112,p=n?Symbol.for("react.suspense"):60113,h=n?Symbol.for("react.suspense_list"):60120,g=n?Symbol.for("react.memo"):60115,m=n?Symbol.for("react.lazy"):60116,y=n?Symbol.for("react.block"):60121,b=n?Symbol.for("react.fundamental"):60117,v=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function k(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case c:case d:case o:case l:case i:case p:return e;default:switch(e=e&&e.$$typeof){case u:case f:case m:case g:case s:return e;default:return t}}case a:return t}}}function x(e){return k(e)===d}t.AsyncMode=c,t.ConcurrentMode=d,t.ContextConsumer=u,t.ContextProvider=s,t.Element=r,t.ForwardRef=f,t.Fragment=o,t.Lazy=m,t.Memo=g,t.Portal=a,t.Profiler=l,t.StrictMode=i,t.Suspense=p,t.isAsyncMode=function(e){return x(e)||k(e)===c},t.isConcurrentMode=x,t.isContextConsumer=function(e){return k(e)===u},t.isContextProvider=function(e){return k(e)===s},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return k(e)===f},t.isFragment=function(e){return k(e)===o},t.isLazy=function(e){return k(e)===m},t.isMemo=function(e){return k(e)===g},t.isPortal=function(e){return k(e)===a},t.isProfiler=function(e){return k(e)===l},t.isStrictMode=function(e){return k(e)===i},t.isSuspense=function(e){return k(e)===p},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===d||e===l||e===i||e===p||e===h||"object"==typeof e&&null!==e&&(e.$$typeof===m||e.$$typeof===g||e.$$typeof===s||e.$$typeof===u||e.$$typeof===f||e.$$typeof===b||e.$$typeof===v||e.$$typeof===w||e.$$typeof===y)},t.typeOf=k},6237:(e,t,n)=>{"use strict";e.exports=n(198)},819:(e,t,n)=>{"use strict";n.d(t,{H:()=>l,f:()=>i});var r=n(8903),a=n(7605),o=n(959);function i(e,t,n){return void 0===n&&(n=[]),e.some((function(e){var a=e.path?(0,r.LX)(t,e):n.length?n[n.length-1].match:r.F0.computeRootMatch(t);return a&&(n.push({route:e,match:a}),e.routes&&i(e.routes,t,n)),a})),n}function l(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?o.createElement(r.rs,n,e.map((function(e,n){return o.createElement(r.AW,{key:e.key||n,path:e.path,exact:e.exact,strict:e.strict,render:function(n){return e.render?e.render((0,a.Z)({},n,{},t,{route:e})):o.createElement(e.component,(0,a.Z)({},n,t,{route:e}))}})}))):null}},9500:(e,t,n)=>{"use strict";n.d(t,{OL:()=>w,UT:()=>d,VK:()=>c,rU:()=>y});var r=n(8903),a=n(2840),o=n(959),i=n(4047),l=n(7605),s=n(3727),u=n(8624),c=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,i.lX)(t.props),t}return(0,a.Z)(t,e),t.prototype.render=function(){return o.createElement(r.F0,{history:this.history,children:this.props.children})},t}(o.Component);var d=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,i.q_)(t.props),t}return(0,a.Z)(t,e),t.prototype.render=function(){return o.createElement(r.F0,{history:this.history,children:this.props.children})},t}(o.Component);var f=function(e,t){return"function"==typeof e?e(t):e},p=function(e,t){return"string"==typeof e?(0,i.ob)(e,null,null,t):e},h=function(e){return e},g=o.forwardRef;void 0===g&&(g=h);var m=g((function(e,t){var n=e.innerRef,r=e.navigate,a=e.onClick,i=(0,s.Z)(e,["innerRef","navigate","onClick"]),u=i.target,c=(0,l.Z)({},i,{onClick:function(e){try{a&&a(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||u&&"_self"!==u||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),r())}});return c.ref=h!==g&&t||n,o.createElement("a",c)}));var y=g((function(e,t){var n=e.component,a=void 0===n?m:n,c=e.replace,d=e.to,y=e.innerRef,b=(0,s.Z)(e,["component","replace","to","innerRef"]);return o.createElement(r.s6.Consumer,null,(function(e){e||(0,u.Z)(!1);var n=e.history,r=p(f(d,e.location),e.location),s=r?n.createHref(r):"",m=(0,l.Z)({},b,{href:s,navigate:function(){var t=f(d,e.location),r=(0,i.Ep)(e.location)===(0,i.Ep)(p(t));(c||r?n.replace:n.push)(t)}});return h!==g?m.ref=t||y:m.innerRef=y,o.createElement(a,m)}))})),b=function(e){return e},v=o.forwardRef;void 0===v&&(v=b);var w=v((function(e,t){var n=e["aria-current"],a=void 0===n?"page":n,i=e.activeClassName,c=void 0===i?"active":i,d=e.activeStyle,h=e.className,g=e.exact,m=e.isActive,w=e.location,k=e.sensitive,x=e.strict,S=e.style,E=e.to,_=e.innerRef,C=(0,s.Z)(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return o.createElement(r.s6.Consumer,null,(function(e){e||(0,u.Z)(!1);var n=w||e.location,i=p(f(E,n),n),s=i.pathname,T=s&&s.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),A=T?(0,r.LX)(n.pathname,{path:T,exact:g,sensitive:k,strict:x}):null,N=!!(m?m(A,n):A),P="function"==typeof h?h(N):h,L="function"==typeof S?S(N):S;N&&(P=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter((function(e){return e})).join(" ")}(P,c),L=(0,l.Z)({},L,d));var O=(0,l.Z)({"aria-current":N&&a||null,className:P,style:L,to:i},C);return b!==v?O.ref=t||_:O.innerRef=_,o.createElement(y,O)}))}))},8903:(e,t,n)=>{"use strict";n.d(t,{AW:()=>E,F0:()=>v,LX:()=>S,TH:()=>R,k6:()=>O,rs:()=>P,s6:()=>b});var r=n(2840),a=n(959),o=n(507),i=n.n(o),l=n(4047),s=n(8624),u=n(7605),c=n(7720),d=n.n(c),f=(n(6237),n(3727)),p=(n(2535),1073741823),h="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:{};var g=a.createContext||function(e,t){var n,o,l="__create-react-context-"+function(){var e="__global_unique_id__";return h[e]=(h[e]||0)+1}()+"__",s=function(e){function n(){for(var t,n,r,a=arguments.length,o=new Array(a),i=0;i<a;i++)o[i]=arguments[i];return(t=e.call.apply(e,[this].concat(o))||this).emitter=(n=t.props.value,r=[],{on:function(e){r.push(e)},off:function(e){r=r.filter((function(t){return t!==e}))},get:function(){return n},set:function(e,t){n=e,r.forEach((function(e){return e(n,t)}))}}),t}(0,r.Z)(n,e);var a=n.prototype;return a.getChildContext=function(){var e;return(e={})[l]=this.emitter,e},a.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,a=e.value;((o=r)===(i=a)?0!==o||1/o==1/i:o!=o&&i!=i)?n=0:(n="function"==typeof t?t(r,a):p,0!==(n|=0)&&this.emitter.set(e.value,n))}var o,i},a.render=function(){return this.props.children},n}(a.Component);s.childContextTypes=((n={})[l]=i().object.isRequired,n);var u=function(t){function n(){for(var e,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(e=t.call.apply(t,[this].concat(r))||this).observedBits=void 0,e.state={value:e.getValue()},e.onUpdate=function(t,n){0!=((0|e.observedBits)&n)&&e.setState({value:e.getValue()})},e}(0,r.Z)(n,t);var a=n.prototype;return a.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?p:t},a.componentDidMount=function(){this.context[l]&&this.context[l].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?p:e},a.componentWillUnmount=function(){this.context[l]&&this.context[l].off(this.onUpdate)},a.getValue=function(){return this.context[l]?this.context[l].get():e},a.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(a.Component);return u.contextTypes=((o={})[l]=i().object,o),{Provider:s,Consumer:u}},m=function(e){var t=g();return t.displayName=e,t},y=m("Router-History"),b=m("Router"),v=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen((function(e){n._pendingLocation=e}))),n}(0,r.Z)(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){var e=this;this._isMounted=!0,this.unlisten&&this.unlisten(),this.props.staticContext||(this.unlisten=this.props.history.listen((function(t){e._isMounted&&e.setState({location:t})}))),this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&(this.unlisten(),this._isMounted=!1,this._pendingLocation=null)},n.render=function(){return a.createElement(b.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},a.createElement(y.Provider,{children:this.props.children||null,value:this.props.history}))},t}(a.Component);a.Component;a.Component;var w={},k=1e4,x=0;function S(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,a=n.exact,o=void 0!==a&&a,i=n.strict,l=void 0!==i&&i,s=n.sensitive,u=void 0!==s&&s;return[].concat(r).reduce((function(t,n){if(!n&&""!==n)return null;if(t)return t;var r=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=w[n]||(w[n]={});if(r[e])return r[e];var a=[],o={regexp:d()(e,a,t),keys:a};return x<k&&(r[e]=o,x++),o}(n,{end:o,strict:l,sensitive:u}),a=r.regexp,i=r.keys,s=a.exec(e);if(!s)return null;var c=s[0],f=s.slice(1),p=e===c;return o&&!p?null:{path:n,url:"/"===n&&""===c?"/":c,isExact:p,params:i.reduce((function(e,t,n){return e[t.name]=f[n],e}),{})}}),null)}var E=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return a.createElement(b.Consumer,null,(function(t){t||(0,s.Z)(!1);var n=e.props.location||t.location,r=e.props.computedMatch?e.props.computedMatch:e.props.path?S(n.pathname,e.props):t.match,o=(0,u.Z)({},t,{location:n,match:r}),i=e.props,l=i.children,c=i.component,d=i.render;return Array.isArray(l)&&function(e){return 0===a.Children.count(e)}(l)&&(l=null),a.createElement(b.Provider,{value:o},o.match?l?"function"==typeof l?l(o):l:c?a.createElement(c,o):d?d(o):null:"function"==typeof l?l(o):null)}))},t}(a.Component);function _(e){return"/"===e.charAt(0)?e:"/"+e}function C(e,t){if(!e)return t;var n=_(e);return 0!==t.pathname.indexOf(n)?t:(0,u.Z)({},t,{pathname:t.pathname.substr(n.length)})}function T(e){return"string"==typeof e?e:(0,l.Ep)(e)}function A(e){return function(){(0,s.Z)(!1)}}function N(){}a.Component;var P=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return a.createElement(b.Consumer,null,(function(t){t||(0,s.Z)(!1);var n,r,o=e.props.location||t.location;return a.Children.forEach(e.props.children,(function(e){if(null==r&&a.isValidElement(e)){n=e;var i=e.props.path||e.props.from;r=i?S(o.pathname,(0,u.Z)({},e.props,{path:i})):t.match}})),r?a.cloneElement(n,{location:o,computedMatch:r}):null}))},t}(a.Component);var L=a.useContext;function O(){return L(y)}function R(){return L(b).location}},3354:(e,t,n)=>{"use strict";var r=n(959),a=Symbol.for("react.element"),o=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,l=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,s={key:!0,ref:!0,__self:!0,__source:!0};function u(e,t,n){var r,o={},u=null,c=null;for(r in void 0!==n&&(u=""+n),void 0!==t.key&&(u=""+t.key),void 0!==t.ref&&(c=t.ref),t)i.call(t,r)&&!s.hasOwnProperty(r)&&(o[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===o[r]&&(o[r]=t[r]);return{$$typeof:a,type:e,key:u,ref:c,props:o,_owner:l.current}}t.Fragment=o,t.jsx=u,t.jsxs=u},5257:(e,t)=>{"use strict";var n=Symbol.for("react.element"),r=Symbol.for("react.portal"),a=Symbol.for("react.fragment"),o=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),l=Symbol.for("react.provider"),s=Symbol.for("react.context"),u=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),d=Symbol.for("react.memo"),f=Symbol.for("react.lazy"),p=Symbol.iterator;var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,m={};function y(e,t,n){this.props=e,this.context=t,this.refs=m,this.updater=n||h}function b(){}function v(e,t,n){this.props=e,this.context=t,this.refs=m,this.updater=n||h}y.prototype.isReactComponent={},y.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},b.prototype=y.prototype;var w=v.prototype=new b;w.constructor=v,g(w,y.prototype),w.isPureReactComponent=!0;var k=Array.isArray,x=Object.prototype.hasOwnProperty,S={current:null},E={key:!0,ref:!0,__self:!0,__source:!0};function _(e,t,r){var a,o={},i=null,l=null;if(null!=t)for(a in void 0!==t.ref&&(l=t.ref),void 0!==t.key&&(i=""+t.key),t)x.call(t,a)&&!E.hasOwnProperty(a)&&(o[a]=t[a]);var s=arguments.length-2;if(1===s)o.children=r;else if(1<s){for(var u=Array(s),c=0;c<s;c++)u[c]=arguments[c+2];o.children=u}if(e&&e.defaultProps)for(a in s=e.defaultProps)void 0===o[a]&&(o[a]=s[a]);return{$$typeof:n,type:e,key:i,ref:l,props:o,_owner:S.current}}function C(e){return"object"==typeof e&&null!==e&&e.$$typeof===n}var T=/\/+/g;function A(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,(function(e){return t[e]}))}(""+e.key):t.toString(36)}function N(e,t,a,o,i){var l=typeof e;"undefined"!==l&&"boolean"!==l||(e=null);var s=!1;if(null===e)s=!0;else switch(l){case"string":case"number":s=!0;break;case"object":switch(e.$$typeof){case n:case r:s=!0}}if(s)return i=i(s=e),e=""===o?"."+A(s,0):o,k(i)?(a="",null!=e&&(a=e.replace(T,"$&/")+"/"),N(i,t,a,"",(function(e){return e}))):null!=i&&(C(i)&&(i=function(e,t){return{$$typeof:n,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(i,a+(!i.key||s&&s.key===i.key?"":(""+i.key).replace(T,"$&/")+"/")+e)),t.push(i)),1;if(s=0,o=""===o?".":o+":",k(e))for(var u=0;u<e.length;u++){var c=o+A(l=e[u],u);s+=N(l,t,a,c,i)}else if(c=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=p&&e[p]||e["@@iterator"])?e:null}(e),"function"==typeof c)for(e=c.call(e),u=0;!(l=e.next()).done;)s+=N(l=l.value,t,a,c=o+A(l,u++),i);else if("object"===l)throw t=String(e),Error("Objects are not valid as a React child (found: "+("[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.");return s}function P(e,t,n){if(null==e)return e;var r=[],a=0;return N(e,r,"","",(function(e){return t.call(n,e,a++)})),r}function L(e){if(-1===e._status){var t=e._result;(t=t()).then((function(t){0!==e._status&&-1!==e._status||(e._status=1,e._result=t)}),(function(t){0!==e._status&&-1!==e._status||(e._status=2,e._result=t)})),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var O={current:null},R={transition:null},j={ReactCurrentDispatcher:O,ReactCurrentBatchConfig:R,ReactCurrentOwner:S};t.Children={map:P,forEach:function(e,t,n){P(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return P(e,(function(){t++})),t},toArray:function(e){return P(e,(function(e){return e}))||[]},only:function(e){if(!C(e))throw Error("React.Children.only expected to receive a single React element child.");return e}},t.Component=y,t.Fragment=a,t.Profiler=i,t.PureComponent=v,t.StrictMode=o,t.Suspense=c,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=j,t.cloneElement=function(e,t,r){if(null==e)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var a=g({},e.props),o=e.key,i=e.ref,l=e._owner;if(null!=t){if(void 0!==t.ref&&(i=t.ref,l=S.current),void 0!==t.key&&(o=""+t.key),e.type&&e.type.defaultProps)var s=e.type.defaultProps;for(u in t)x.call(t,u)&&!E.hasOwnProperty(u)&&(a[u]=void 0===t[u]&&void 0!==s?s[u]:t[u])}var u=arguments.length-2;if(1===u)a.children=r;else if(1<u){s=Array(u);for(var c=0;c<u;c++)s[c]=arguments[c+2];a.children=s}return{$$typeof:n,type:e.type,key:o,ref:i,props:a,_owner:l}},t.createContext=function(e){return(e={$$typeof:s,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null}).Provider={$$typeof:l,_context:e},e.Consumer=e},t.createElement=_,t.createFactory=function(e){var t=_.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:u,render:e}},t.isValidElement=C,t.lazy=function(e){return{$$typeof:f,_payload:{_status:-1,_result:e},_init:L}},t.memo=function(e,t){return{$$typeof:d,type:e,compare:void 0===t?null:t}},t.startTransition=function(e){var t=R.transition;R.transition={};try{e()}finally{R.transition=t}},t.unstable_act=function(){throw Error("act(...) is not supported in production builds of React.")},t.useCallback=function(e,t){return O.current.useCallback(e,t)},t.useContext=function(e){return O.current.useContext(e)},t.useDebugValue=function(){},t.useDeferredValue=function(e){return O.current.useDeferredValue(e)},t.useEffect=function(e,t){return O.current.useEffect(e,t)},t.useId=function(){return O.current.useId()},t.useImperativeHandle=function(e,t,n){return O.current.useImperativeHandle(e,t,n)},t.useInsertionEffect=function(e,t){return O.current.useInsertionEffect(e,t)},t.useLayoutEffect=function(e,t){return O.current.useLayoutEffect(e,t)},t.useMemo=function(e,t){return O.current.useMemo(e,t)},t.useReducer=function(e,t,n){return O.current.useReducer(e,t,n)},t.useRef=function(e){return O.current.useRef(e)},t.useState=function(e){return O.current.useState(e)},t.useSyncExternalStore=function(e,t,n){return O.current.useSyncExternalStore(e,t,n)},t.useTransition=function(){return O.current.useTransition()},t.version="18.2.0"},959:(e,t,n)=>{"use strict";e.exports=n(5257)},1527:(e,t,n)=>{"use strict";e.exports=n(3354)},5568:(e,t)=>{"use strict";function n(e,t){var n=e.length;e.push(t);e:for(;0<n;){var r=n-1>>>1,a=e[r];if(!(0<o(a,t)))break e;e[r]=t,e[n]=a,n=r}}function r(e){return 0===e.length?null:e[0]}function a(e){if(0===e.length)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,a=e.length,i=a>>>1;r<i;){var l=2*(r+1)-1,s=e[l],u=l+1,c=e[u];if(0>o(s,n))u<a&&0>o(c,s)?(e[r]=c,e[u]=n,r=u):(e[r]=s,e[l]=n,r=l);else{if(!(u<a&&0>o(c,n)))break e;e[r]=c,e[u]=n,r=u}}}return t}function o(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if("object"==typeof performance&&"function"==typeof performance.now){var i=performance;t.unstable_now=function(){return i.now()}}else{var l=Date,s=l.now();t.unstable_now=function(){return l.now()-s}}var u=[],c=[],d=1,f=null,p=3,h=!1,g=!1,m=!1,y="function"==typeof setTimeout?setTimeout:null,b="function"==typeof clearTimeout?clearTimeout:null,v="undefined"!=typeof setImmediate?setImmediate:null;function w(e){for(var t=r(c);null!==t;){if(null===t.callback)a(c);else{if(!(t.startTime<=e))break;a(c),t.sortIndex=t.expirationTime,n(u,t)}t=r(c)}}function k(e){if(m=!1,w(e),!g)if(null!==r(u))g=!0,R(x);else{var t=r(c);null!==t&&j(k,t.startTime-e)}}function x(e,n){g=!1,m&&(m=!1,b(C),C=-1),h=!0;var o=p;try{for(w(n),f=r(u);null!==f&&(!(f.expirationTime>n)||e&&!N());){var i=f.callback;if("function"==typeof i){f.callback=null,p=f.priorityLevel;var l=i(f.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?f.callback=l:f===r(u)&&a(u),w(n)}else a(u);f=r(u)}if(null!==f)var s=!0;else{var d=r(c);null!==d&&j(k,d.startTime-n),s=!1}return s}finally{f=null,p=o,h=!1}}"undefined"!=typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);var S,E=!1,_=null,C=-1,T=5,A=-1;function N(){return!(t.unstable_now()-A<T)}function P(){if(null!==_){var e=t.unstable_now();A=e;var n=!0;try{n=_(!0,e)}finally{n?S():(E=!1,_=null)}}else E=!1}if("function"==typeof v)S=function(){v(P)};else if("undefined"!=typeof MessageChannel){var L=new MessageChannel,O=L.port2;L.port1.onmessage=P,S=function(){O.postMessage(null)}}else S=function(){y(P,0)};function R(e){_=e,E||(E=!0,S())}function j(e,n){C=y((function(){e(t.unstable_now())}),n)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){g||h||(g=!0,R(x))},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):T=0<e?Math.floor(1e3/e):5},t.unstable_getCurrentPriorityLevel=function(){return p},t.unstable_getFirstCallbackNode=function(){return r(u)},t.unstable_next=function(e){switch(p){case 1:case 2:case 3:var t=3;break;default:t=p}var n=p;p=t;try{return e()}finally{p=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=function(){},t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=p;p=e;try{return t()}finally{p=n}},t.unstable_scheduleCallback=function(e,a,o){var i=t.unstable_now();switch("object"==typeof o&&null!==o?o="number"==typeof(o=o.delay)&&0<o?i+o:i:o=i,e){case 1:var l=-1;break;case 2:l=250;break;case 5:l=1073741823;break;case 4:l=1e4;break;default:l=5e3}return e={id:d++,callback:a,priorityLevel:e,startTime:o,expirationTime:l=o+l,sortIndex:-1},o>i?(e.sortIndex=o,n(c,e),null===r(u)&&e===r(c)&&(m?(b(C),C=-1):m=!0,j(k,o-i))):(e.sortIndex=l,n(u,e),g||h||(g=!0,R(x))),e},t.unstable_shouldYield=N,t.unstable_wrapCallback=function(e){var t=p;return function(){var n=p;p=t;try{return e.apply(this,arguments)}finally{p=n}}}},2962:(e,t,n)=>{"use strict";e.exports=n(5568)},631:e=>{e.exports=function(e,t,n,r){var a=n?n.call(r,e,t):void 0;if(void 0!==a)return!!a;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var o=Object.keys(e),i=Object.keys(t);if(o.length!==i.length)return!1;for(var l=Object.prototype.hasOwnProperty.bind(t),s=0;s<o.length;s++){var u=o[s];if(!l(u))return!1;var c=e[u],d=t[u];if(!1===(a=n?n.call(r,c,d,u):void 0)||void 0===a&&c!==d)return!1}return!0}},6809:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={title:"Yazi",tagline:"\u26a1\ufe0f Blazing fast terminal file manager written in Rust, based on async I/O.",favicon:"img/logo.png",url:"https://yazi-rs.github.io",baseUrl:"/",organizationName:"yazi-rs",projectName:"yazi-rs.github.io",onBrokenLinks:"throw",onBrokenMarkdownLinks:"warn",i18n:{defaultLocale:"en",locales:["en"],path:"i18n",localeConfigs:{}},presets:[["classic",{docs:{path:"docs",routeBasePath:"docs",sidebarPath:"./sidebars.ts",editUrl:"https://github.com/yazi-rs/yazi-rs.github.io/edit/main/"},blog:{showReadingTime:!0,editUrl:"https://github.com/yazi-rs/yazi-rs.github.io/edit/main/"},theme:{customCss:"./src/css/custom.css"}}]],themeConfig:{image:"img/docusaurus-social-card.jpg",navbar:{title:"Yazi",logo:{alt:"Yazi file manager",src:"img/logo.png"},items:[{type:"docSidebar",sidebarId:"docsSidebar",position:"left",label:"Docs"},{to:"/features",label:"Features",position:"left"},{to:"/blog",label:"Blog",position:"left"},{href:"https://github.com/sxyazi/yazi",label:"GitHub",position:"right"}],hideOnScroll:!1},footer:{style:"dark",links:[{title:"Resources",items:[{label:"Docs",to:"/docs/installation"},{label:"Features",to:"/features"},{label:"Blog",to:"/blog"}]},{title:"Community",items:[{label:"Discord (English mainly)",href:"https://discord.gg/qfADduSdJu"},{label:"Telegram (Chinese mainly)",href:"https://t.me/yazi_rs"}]},{title:"More",items:[{label:"GitHub",href:"https://github.com/sxyazi/yazi"}]}],copyright:"Copyright \xa9 2024 Yazi. Built with \u2764\ufe0f\ufe0f."},prism:{theme:{plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},darkTheme:{plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},additionalLanguages:["bash","diff","lua","nix","powershell","toml"],magicComments:[{className:"theme-code-block-highlighted-line",line:"highlight-next-line",block:{start:"highlight-start",end:"highlight-end"}}]},algolia:{appId:"MS4XF9Z1OE",apiKey:"d88c4dc9a8ebab02a753d7d950c61246",indexName:"yazi-rsio",contextualSearch:!0,searchParameters:{},searchPagePath:"search"},announcementBar:{id:"improve-docs",content:'\ud83d\ude4f Please help us improve docs: If you find any errors, don\'t hesitate to click the "Edit this page" link at bottom.\nIf you want to contribute, please check out <a target="_blank" href="https://github.com/yazi-rs/yazi-rs.github.io/issues/70">the Tracker issue</a>.',isCloseable:!0},colorMode:{defaultMode:"light",disableSwitch:!1,respectPrefersColorScheme:!1},docs:{versionPersistence:"localStorage",sidebar:{hideable:!1,autoCollapseCategories:!1}},metadata:[],tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3}},markdown:{format:"mdx",mermaid:!1,mdx1Compat:{comments:!0,admonitions:!0,headingIds:!0},anchors:{maintainCase:!1}},baseUrlIssueBanner:!0,future:{experimental_storage:{type:"localStorage",namespace:!1},experimental_router:"browser"},onBrokenAnchors:"warn",onDuplicateRoutes:"warn",staticDirectories:["static"],customFields:{},plugins:[],themes:[],scripts:[],headTags:[],stylesheets:[],clientModules:[],titleDelimiter:"|",noIndex:!1}},7605:(e,t,n)=>{"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r.apply(this,arguments)}n.d(t,{Z:()=>r})},2840:(e,t,n)=>{"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}function a(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,{Z:()=>a})},3727:(e,t,n)=>{"use strict";function r(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}n.d(t,{Z:()=>r})},5341:(e,t,n)=>{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=r(e[t]))&&(a&&(a+=" "),a+=n);else for(t in e)e[t]&&(a&&(a+=" "),a+=t);return a}n.d(t,{Z:()=>a});const a=function(){for(var e,t,n=0,a="";n<arguments.length;)(e=arguments[n++])&&(t=r(e))&&(a&&(a+=" "),a+=t);return a}},2281:(e,t,n)=>{"use strict";n.d(t,{p1:()=>T,y$:()=>ee});var r,a,o,i,l,s,u,c=n(959),d=n(5341),f=Object.create,p=Object.defineProperty,h=Object.defineProperties,g=Object.getOwnPropertyDescriptor,m=Object.getOwnPropertyDescriptors,y=Object.getOwnPropertyNames,b=Object.getOwnPropertySymbols,v=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty,k=Object.prototype.propertyIsEnumerable,x=(e,t,n)=>t in e?p(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,S=(e,t)=>{for(var n in t||(t={}))w.call(t,n)&&x(e,n,t[n]);if(b)for(var n of b(t))k.call(t,n)&&x(e,n,t[n]);return e},E=(e,t)=>h(e,m(t)),_=(e,t)=>{var n={};for(var r in e)w.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&b)for(var r of b(e))t.indexOf(r)<0&&k.call(e,r)&&(n[r]=e[r]);return n},C=(r={"../../node_modules/.pnpm/prismjs@1.29.0_patch_hash=vrxx3pzkik6jpmgpayxfjunetu/node_modules/prismjs/prism.js"(e,t){var n=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function e(t,n){var a,o;switch(n=n||{},r.util.type(t)){case"Object":if(o=r.util.objId(t),n[o])return n[o];for(var i in a={},n[o]=a,t)t.hasOwnProperty(i)&&(a[i]=e(t[i],n));return a;case"Array":return o=r.util.objId(t),n[o]?n[o]:(a=[],n[o]=a,t.forEach((function(t,r){a[r]=e(t,n)})),a);default:return t}},getLanguage:function(t){for(;t;){var n=e.exec(t.className);if(n)return n[1].toLowerCase();t=t.parentElement}return"none"},setLanguage:function(t,n){t.className=t.className.replace(RegExp(e,"gi"),""),t.classList.add("language-"+n)},isActive:function(e,t,n){for(var r="no-"+t;e;){var a=e.classList;if(a.contains(t))return!0;if(a.contains(r))return!1;e=e.parentElement}return!!n}},languages:{plain:n,plaintext:n,text:n,txt:n,extend:function(e,t){var n=r.util.clone(r.languages[e]);for(var a in t)n[a]=t[a];return n},insertBefore:function(e,t,n,a){var o=(a=a||r.languages)[e],i={};for(var l in o)if(o.hasOwnProperty(l)){if(l==t)for(var s in n)n.hasOwnProperty(s)&&(i[s]=n[s]);n.hasOwnProperty(l)||(i[l]=o[l])}var u=a[e];return a[e]=i,r.languages.DFS(r.languages,(function(t,n){n===u&&t!=e&&(this[t]=i)})),i},DFS:function e(t,n,a,o){o=o||{};var i=r.util.objId;for(var l in t)if(t.hasOwnProperty(l)){n.call(t,l,t[l],a||l);var s=t[l],u=r.util.type(s);"Object"!==u||o[i(s)]?"Array"!==u||o[i(s)]||(o[i(s)]=!0,e(s,n,l,o)):(o[i(s)]=!0,e(s,n,null,o))}}},plugins:{},highlight:function(e,t,n){var o={code:e,grammar:t,language:n};if(r.hooks.run("before-tokenize",o),!o.grammar)throw new Error('The language "'+o.language+'" has no grammar.');return o.tokens=r.tokenize(o.code,o.grammar),r.hooks.run("after-tokenize",o),a.stringify(r.util.encode(o.tokens),o.language)},tokenize:function(e,t){var n=t.rest;if(n){for(var r in n)t[r]=n[r];delete t.rest}var a=new l;return s(a,a.head,e),i(e,a,t,a.head,0),function(e){for(var t=[],n=e.head.next;n!==e.tail;)t.push(n.value),n=n.next;return t}(a)},hooks:{all:{},add:function(e,t){var n=r.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=r.hooks.all[e];if(n&&n.length)for(var a,o=0;a=n[o++];)a(t)}},Token:a};function a(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length}function o(e,t,n,r){e.lastIndex=t;var a=e.exec(n);if(a&&r&&a[1]){var o=a[1].length;a.index+=o,a[0]=a[0].slice(o)}return a}function i(e,t,n,l,c,d){for(var f in n)if(n.hasOwnProperty(f)&&n[f]){var p=n[f];p=Array.isArray(p)?p:[p];for(var h=0;h<p.length;++h){if(d&&d.cause==f+","+h)return;var g=p[h],m=g.inside,y=!!g.lookbehind,b=!!g.greedy,v=g.alias;if(b&&!g.pattern.global){var w=g.pattern.toString().match(/[imsuy]*$/)[0];g.pattern=RegExp(g.pattern.source,w+"g")}for(var k=g.pattern||g,x=l.next,S=c;x!==t.tail&&!(d&&S>=d.reach);S+=x.value.length,x=x.next){var E=x.value;if(t.length>e.length)return;if(!(E instanceof a)){var _,C=1;if(b){if(!(_=o(k,S,e,y))||_.index>=e.length)break;var T=_.index,A=_.index+_[0].length,N=S;for(N+=x.value.length;T>=N;)N+=(x=x.next).value.length;if(S=N-=x.value.length,x.value instanceof a)continue;for(var P=x;P!==t.tail&&(N<A||"string"==typeof P.value);P=P.next)C++,N+=P.value.length;C--,E=e.slice(S,N),_.index-=S}else if(!(_=o(k,0,E,y)))continue;T=_.index;var L=_[0],O=E.slice(0,T),R=E.slice(T+L.length),j=S+E.length;d&&j>d.reach&&(d.reach=j);var I=x.prev;if(O&&(I=s(t,I,O),S+=O.length),u(t,I,C),x=s(t,I,new a(f,m?r.tokenize(L,m):L,v,L)),R&&s(t,x,R),C>1){var M={cause:f+","+h,reach:j};i(e,t,n,x.prev,S,M),d&&M.reach>d.reach&&(d.reach=M.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function s(e,t,n){var r=t.next,a={value:n,prev:t,next:r};return t.next=a,r.prev=a,e.length++,a}function u(e,t,n){for(var r=t.next,a=0;a<n&&r!==e.tail;a++)r=r.next;t.next=r,r.prev=t,e.length-=a}return a.stringify=function e(t,n){if("string"==typeof t)return t;if(Array.isArray(t)){var a="";return t.forEach((function(t){a+=e(t,n)})),a}var o={type:t.type,content:e(t.content,n),tag:"span",classes:["token",t.type],attributes:{},language:n},i=t.alias;i&&(Array.isArray(i)?Array.prototype.push.apply(o.classes,i):o.classes.push(i)),r.hooks.run("wrap",o);var l="";for(var s in o.attributes)l+=" "+s+'="'+(o.attributes[s]||"").replace(/"/g,""")+'"';return"<"+o.tag+' class="'+o.classes.join(" ")+'"'+l+">"+o.content+"</"+o.tag+">"},r}();t.exports=n,n.default=n}},function(){return a||(0,r[y(r)[0]])((a={exports:{}}).exports,a),a.exports}),T=((e,t,n)=>(n=null!=e?f(v(e)):{},((e,t,n,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let a of y(t))w.call(e,a)||a===n||p(e,a,{get:()=>t[a],enumerable:!(r=g(t,a))||r.enumerable});return e})(!t&&e&&e.__esModule?n:p(n,"default",{value:e,enumerable:!0}),e)))(C());T.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},T.languages.markup.tag.inside["attr-value"].inside.entity=T.languages.markup.entity,T.languages.markup.doctype.inside["internal-subset"].inside=T.languages.markup,T.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(T.languages.markup.tag,"addInlined",{value:function(e,t){var n;(t=((n=((n={})["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:T.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i,{"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}}))["language-"+t]={pattern:/[\s\S]+/,inside:T.languages[t]},{}))[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:n},T.languages.insertBefore("markup","cdata",t)}}),Object.defineProperty(T.languages.markup.tag,"addAttribute",{value:function(e,t){T.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:T.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),T.languages.html=T.languages.markup,T.languages.mathml=T.languages.markup,T.languages.svg=T.languages.markup,T.languages.xml=T.languages.extend("markup",{}),T.languages.ssml=T.languages.xml,T.languages.atom=T.languages.xml,T.languages.rss=T.languages.xml,o=T,i={pattern:/\\[\\(){}[\]^$+*?|.]/,alias:"escape"},s="(?:[^\\\\-]|"+(l=/\\(?:x[\da-fA-F]{2}|u[\da-fA-F]{4}|u\{[\da-fA-F]+\}|0[0-7]{0,2}|[123][0-7]{2}|c[a-zA-Z]|.)/).source+")",s=RegExp(s+"-"+s),u={pattern:/(<|')[^<>']+(?=[>']$)/,lookbehind:!0,alias:"variable"},o.languages.regex={"char-class":{pattern:/((?:^|[^\\])(?:\\\\)*)\[(?:[^\\\]]|\\[\s\S])*\]/,lookbehind:!0,inside:{"char-class-negation":{pattern:/(^\[)\^/,lookbehind:!0,alias:"operator"},"char-class-punctuation":{pattern:/^\[|\]$/,alias:"punctuation"},range:{pattern:s,inside:{escape:l,"range-punctuation":{pattern:/-/,alias:"operator"}}},"special-escape":i,"char-set":{pattern:/\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},escape:l}},"special-escape":i,"char-set":{pattern:/\.|\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},backreference:[{pattern:/\\(?![123][0-7]{2})[1-9]/,alias:"keyword"},{pattern:/\\k<[^<>']+>/,alias:"keyword",inside:{"group-name":u}}],anchor:{pattern:/[$^]|\\[ABbGZz]/,alias:"function"},escape:l,group:[{pattern:/\((?:\?(?:<[^<>']+>|'[^<>']+'|[>:]|<?[=!]|[idmnsuxU]+(?:-[idmnsuxU]+)?:?))?/,alias:"punctuation",inside:{"group-name":u}},{pattern:/\)/,alias:"punctuation"}],quantifier:{pattern:/(?:[+*?]|\{\d+(?:,\d*)?\})[?+]?/,alias:"number"},alternation:{pattern:/\|/,alias:"keyword"}},T.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},T.languages.javascript=T.languages.extend("clike",{"class-name":[T.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),T.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,T.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:T.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:T.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:T.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:T.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:T.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),T.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:T.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),T.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),T.languages.markup&&(T.languages.markup.tag.addInlined("script","javascript"),T.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),T.languages.js=T.languages.javascript,T.languages.actionscript=T.languages.extend("javascript",{keyword:/\b(?:as|break|case|catch|class|const|default|delete|do|dynamic|each|else|extends|final|finally|for|function|get|if|implements|import|in|include|instanceof|interface|internal|is|namespace|native|new|null|override|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|use|var|void|while|with)\b/,operator:/\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<<?|>>?>?|[!=]=?)=?|[~?@]/}),T.languages.actionscript["class-name"].alias="function",delete T.languages.actionscript.parameter,delete T.languages.actionscript["literal-property"],T.languages.markup&&T.languages.insertBefore("actionscript","string",{xml:{pattern:/(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,lookbehind:!0,inside:T.languages.markup}}),function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(T),function(e){var t=e.languages.javadoclike={parameter:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*@(?:arg|arguments|param)\s+)\w+/m,lookbehind:!0},keyword:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*|\{)@[a-z][a-zA-Z-]+\b/m,lookbehind:!0},punctuation:/[{}]/};Object.defineProperty(t,"addSupport",{value:function(t,n){(t="string"==typeof t?[t]:t).forEach((function(t){var r=function(e){e.inside||(e.inside={}),e.inside.rest=n},a="doc-comment";if(o=e.languages[t]){var o,i=o[a];if((i=i||(o=e.languages.insertBefore(t,"comment",{"doc-comment":{pattern:/(^|[^\\])\/\*\*[^/][\s\S]*?(?:\*\/|$)/,lookbehind:!0,alias:"comment"}}))[a])instanceof RegExp&&(i=o[a]={pattern:i}),Array.isArray(i))for(var l=0,s=i.length;l<s;l++)i[l]instanceof RegExp&&(i[l]={pattern:i[l]}),r(i[l]);else r(i)}}))}}),t.addSupport(["java","javascript","php"],t)}(T),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;(t=(e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+t.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css,e.languages.markup))&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(T),function(e){var t=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,n=(t=(e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+t.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[t,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}}),{pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0}),{pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0});e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|RebeccaPurple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,number:n})}(T),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-]<PLAIN>)(?:[ \t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<<prop>>[ \t]+)?)(?:<<value>>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<value>>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<<prop>>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<<prop>>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<<prop>>[ \t]+)?)<<key>>(?=\s*:\s)/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<key>>/g,(function(){return"(?:"+a+"|"+o+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(T),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(/<inner>/g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source,i=(e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\b|\*\*(?:(?!\*)<inner>|\*(?:(?!\*)<inner>)+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\b|\*(?:(?!\*)<inner>|\*\*(?:(?!\*)<inner>)+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~)<inner>)+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\])<inner>)+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\])<inner>)+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n<r;n++){var a,o=t[n];"code"!==o.type?e(o.content):(a=o.content[1],o=o.content[3],a&&o&&"code-language"===a.type&&"code-block"===o.type&&"string"==typeof a.content&&(a=a.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp"),a="language-"+(a=(/[a-z][\w-]*/i.exec(a)||[""])[0].toLowerCase()),o.alias?"string"==typeof o.alias?o.alias=[o.alias,a]:o.alias.push(a):o.alias=[a]))}}(e.tokens)})),e.hooks.add("wrap",(function(t){if("code-block"===t.type){for(var n="",r=0,a=t.classes.length;r<a;r++){var o=t.classes[r];if(o=/language-(.+)/.exec(o)){n=o[1];break}}var u,c=e.languages[n];c?t.content=e.highlight(t.content.replace(i,"").replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,(function(e,t){var n;return"#"===(t=t.toLowerCase())[0]?(n="x"===t[1]?parseInt(t.slice(2),16):Number(t.slice(1)),s(n)):l[t]||e})),c,n):n&&"none"!==n&&e.plugins.autoloader&&(u="md-"+(new Date).valueOf()+"-"+Math.floor(1e16*Math.random()),t.attributes.id=u,e.plugins.autoloader.loadLanguages(n,(function(){var t=document.getElementById(u);t&&(t.innerHTML=e.highlight(t.textContent,e.languages[n],n))})))}})),RegExp(e.languages.markup.tag.pattern.source,"gi")),l={amp:"&",lt:"<",gt:">",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(T),T.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:T.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},T.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n<t.length;){var r=t[n++];if("keyword"===r.type&&"mutation"===r.content){var a=[];if(d(["definition-mutation","punctuation"])&&"("===c(1).content){n+=2;var o=f(/^\($/,/^\)$/);if(-1===o)continue;for(;n<o;n++){var i=c(0);"variable"===i.type&&(p(i,"variable-input"),a.push(i.content))}n=o+1}if(d(["punctuation","property-query"])&&"{"===c(0).content&&(n++,p(c(0),"property-mutation"),0<a.length)){var l=f(/^\{$/,/^\}$/);if(-1!==l)for(var s=n;s<l;s++){var u=t[s];"variable"===u.type&&0<=a.indexOf(u.content)&&p(u,"variable-input")}}}}function c(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n<e.length;n++){var r=c(n+t);if(!r||r.type!==e[n])return}return 1}function f(e,r){for(var a=1,o=n;o<t.length;o++){var i=t[o],l=i.content;if("punctuation"===i.type&&"string"==typeof l)if(e.test(l))a++;else if(r.test(l)&&0==--a)return o}return-1}function p(e,t){var n=e.alias;n?Array.isArray(n)||(e.alias=n=[n]):e.alias=n=[],n.push(t)}})),T.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,a=r.inside["interpolation-punctuation"],o=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function l(t,n,r){return t={code:t,grammar:n,language:r},e.hooks.run("before-tokenize",t),t.tokens=e.tokenize(t.code,t.grammar),e.hooks.run("after-tokenize",t),t.tokens}function s(t,n,i){var s=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),u=0,c={},d=(s=l(s.map((function(e){if("string"==typeof e)return e;var n,r;for(e=e.content;-1!==t.indexOf((r=u++,n="___"+i.toUpperCase()+"_"+r+"___")););return c[n]=e,n})).join(""),n,i),Object.keys(c));return u=0,function t(n){for(var o=0;o<n.length;o++){if(u>=d.length)return;var i,s,f,p,h,g,m,y=n[o];"string"==typeof y||"string"==typeof y.content?(i=d[u],-1!==(m=(g="string"==typeof y?y:y.content).indexOf(i))&&(++u,s=g.substring(0,m),h=c[i],f=void 0,(p={})["interpolation-punctuation"]=a,3===(p=e.tokenize(h,p)).length&&((f=[1,1]).push.apply(f,l(p[1],e.languages.javascript,"javascript")),p.splice.apply(p,f)),f=new e.Token("interpolation",p,r.alias,h),p=g.substring(m+i.length),h=[],s&&h.push(s),h.push(f),p&&(t(g=[p]),h.push.apply(h,g)),"string"==typeof y?(n.splice.apply(n,[o,1].concat(h)),o+=h.length-1):y.content=h)):(m=y.content,Array.isArray(m)?t(m):t([m]))}}(s),new e.Token(i,s,"language-"+i,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var u={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function c(e){return"string"==typeof e?e:Array.isArray(e)?e.map(c).join(""):c(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in u&&function t(n){for(var r=0,a=n.length;r<a;r++){var o,i,l,u=n[r];"string"!=typeof u&&(o=u.content,Array.isArray(o)?"template-string"===u.type?(u=o[1],3===o.length&&"string"!=typeof u&&"embedded-code"===u.type&&(i=c(u),u=u.alias,u=Array.isArray(u)?u[0]:u,l=e.languages[u])&&(o[1]=s(i,l,u))):t(o):"string"!=typeof o&&t([o]))}}(t.tokens)}))}(T),function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(T),function(e){var t=e.languages.javascript,n=/\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/.source,r="(@(?:arg|argument|param|property)\\s+(?:"+n+"\\s+)?)";e.languages.jsdoc=e.languages.extend("javadoclike",{parameter:{pattern:RegExp(r+/(?:(?!\s)[$\w\xA0-\uFFFF.])+(?=\s|$)/.source),lookbehind:!0,inside:{punctuation:/\./}}}),e.languages.insertBefore("jsdoc","keyword",{"optional-parameter":{pattern:RegExp(r+/\[(?:(?!\s)[$\w\xA0-\uFFFF.])+(?:=[^[\]]+)?\](?=\s|$)/.source),lookbehind:!0,inside:{parameter:{pattern:/(^\[)[$\w\xA0-\uFFFF\.]+/,lookbehind:!0,inside:{punctuation:/\./}},code:{pattern:/(=)[\s\S]*(?=\]$)/,lookbehind:!0,inside:t,alias:"language-javascript"},punctuation:/[=[\]]/}},"class-name":[{pattern:RegExp(/(@(?:augments|class|extends|interface|memberof!?|template|this|typedef)\s+(?:<TYPE>\s+)?)[A-Z]\w*(?:\.[A-Z]\w*)*/.source.replace(/<TYPE>/g,(function(){return n}))),lookbehind:!0,inside:{punctuation:/\./}},{pattern:RegExp("(@[a-z]+\\s+)"+n),lookbehind:!0,inside:{string:t.string,number:t.number,boolean:t.boolean,keyword:e.languages.typescript.keyword,operator:/=>|\.\.\.|[&|?:*]/,punctuation:/[.,;=<>{}()[\]]/}}],example:{pattern:/(@example\s+(?!\s))(?:[^@\s]|\s+(?!\s))+?(?=\s*(?:\*\s*)?(?:@\w|\*\/))/,lookbehind:!0,inside:{code:{pattern:/^([\t ]*(?:\*\s*)?)\S.*$/m,lookbehind:!0,inside:t,alias:"language-javascript"}}}}),e.languages.javadoclike.addSupport("javascript",e.languages.jsdoc)}(T),function(e){e.languages.flow=e.languages.extend("javascript",{}),e.languages.insertBefore("flow","keyword",{type:[{pattern:/\b(?:[Bb]oolean|Function|[Nn]umber|[Ss]tring|[Ss]ymbol|any|mixed|null|void)\b/,alias:"class-name"}]}),e.languages.flow["function-variable"].pattern=/(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=\s*(?:function\b|(?:\([^()]*\)(?:\s*:\s*\w+)?|(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/i,delete e.languages.flow.parameter,e.languages.insertBefore("flow","operator",{"flow-punctuation":{pattern:/\{\||\|\}/,alias:"punctuation"}}),Array.isArray(e.languages.flow.keyword)||(e.languages.flow.keyword=[e.languages.flow.keyword]),e.languages.flow.keyword.unshift({pattern:/(^|[^$]\b)(?:Class|declare|opaque|type)\b(?!\$)/,lookbehind:!0},{pattern:/(^|[^$]\B)\$(?:Diff|Enum|Exact|Keys|ObjMap|PropertyType|Record|Shape|Subtype|Supertype|await)\b(?!\$)/,lookbehind:!0})}(T),T.languages.n4js=T.languages.extend("javascript",{keyword:/\b(?:Array|any|boolean|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|module|new|null|number|package|private|protected|public|return|set|static|string|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/}),T.languages.insertBefore("n4js","constant",{annotation:{pattern:/@+\w+/,alias:"operator"}}),T.languages.n4jsd=T.languages.n4js,function(e){function t(e,t){return RegExp(e.replace(/<ID>/g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:<ID>(?:\s*,\s*(?:\*\s*as\s+<ID>|\{[^{}]*\}))?|\*\s*as\s+<ID>|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+<ID>)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?<ID>/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r<n.length;r++){var a=n[r],o=e.languages.javascript[a];a=(o="RegExp"===e.util.type(o)?e.languages.javascript[a]={pattern:o}:o).inside||{};(o.inside=a)["maybe-class-name"]=/^[A-Z][\s\S]*/}}(T),function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,r=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,a=/(?:\{<S>*\.{3}(?:[^{}]|<BRACES>)*\})/.source;function o(e,t){return e=e.replace(/<S>/g,(function(){return n})).replace(/<BRACES>/g,(function(){return r})).replace(/<SPREAD>/g,(function(){return a})),RegExp(e,t)}function i(t){for(var n=[],r=0;r<t.length;r++){var a=t[r],o=!1;"string"!=typeof a&&("tag"===a.type&&a.content[0]&&"tag"===a.content[0].type?"</"===a.content[0].content[0].content?0<n.length&&n[n.length-1].tagName===l(a.content[0].content[1])&&n.pop():"/>"!==a.content[a.content.length-1].content&&n.push({tagName:l(a.content[0].content[1]),openedBraces:0}):0<n.length&&"punctuation"===a.type&&"{"===a.content?n[n.length-1].openedBraces++:0<n.length&&0<n[n.length-1].openedBraces&&"punctuation"===a.type&&"}"===a.content?n[n.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&0<n.length&&0===n[n.length-1].openedBraces&&(o=l(a),r<t.length-1&&("string"==typeof t[r+1]||"plain-text"===t[r+1].type)&&(o+=l(t[r+1]),t.splice(r+1,1)),0<r&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(o=l(t[r-1])+o,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",o,null,o)),a.content&&"string"!=typeof a.content&&i(a.content)}}a=o(a).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=o(/<\/?(?:[\w.:-]+(?:<S>+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|<BRACES>))?|<SPREAD>))*<S>*\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:o(/<SPREAD>/.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=<BRACES>/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var l=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(l).join(""):""};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||i(e.tokens)}))}(T),function(e){var t=e.util.clone(e.languages.typescript);(t=(e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"],e.languages.tsx.tag)).pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+t.pattern.source+")",t.pattern.flags),t.lookbehind=!0}(T),T.languages.swift={comment:{pattern:/(^|[^\\:])(?:\/\/.*|\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\/)/,lookbehind:!0,greedy:!0},"string-literal":[{pattern:RegExp(/(^|[^"#])/.source+"(?:"+/"(?:\\(?:\((?:[^()]|\([^()]*\))*\)|\r\n|[^(])|[^\\\r\n"])*"/.source+"|"+/"""(?:\\(?:\((?:[^()]|\([^()]*\))*\)|[^(])|[^\\"]|"(?!""))*"""/.source+")"+/(?!["#])/.source),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\\($/,alias:"punctuation"},punctuation:/\\(?=[\r\n])/,string:/[\s\S]+/}},{pattern:RegExp(/(^|[^"#])(#+)/.source+"(?:"+/"(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|\r\n|[^#])|[^\\\r\n])*?"/.source+"|"+/"""(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|[^#])|[^\\])*?"""/.source+")\\2"),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\#+\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\#+\($/,alias:"punctuation"},string:/[\s\S]+/}}],directive:{pattern:RegExp(/#/.source+"(?:"+/(?:elseif|if)\b/.source+"(?:[ \t]*"+/(?:![ \t]*)?(?:\b\w+\b(?:[ \t]*\((?:[^()]|\([^()]*\))*\))?|\((?:[^()]|\([^()]*\))*\))(?:[ \t]*(?:&&|\|\|))?/.source+")+|"+/(?:else|endif)\b/.source+")"),alias:"property",inside:{"directive-name":/^#\w+/,boolean:/\b(?:false|true)\b/,number:/\b\d+(?:\.\d+)*\b/,operator:/!|&&|\|\||[<>]=?/,punctuation:/[(),]/}},literal:{pattern:/#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\b/,alias:"constant"},"other-directive":{pattern:/#\w+\b/,alias:"property"},attribute:{pattern:/@\w+/,alias:"atrule"},"function-definition":{pattern:/(\bfunc\s+)\w+/,lookbehind:!0,alias:"function"},label:{pattern:/\b(break|continue)\s+\w+|\b[a-zA-Z_]\w*(?=\s*:\s*(?:for|repeat|while)\b)/,lookbehind:!0,alias:"important"},keyword:/\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|isolated|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\b/,boolean:/\b(?:false|true)\b/,nil:{pattern:/\bnil\b/,alias:"constant"},"short-argument":/\$\d+\b/,omit:{pattern:/\b_\b/,alias:"keyword"},number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,"class-name":/\b[A-Z](?:[A-Z_\d]*[a-z]\w*)?\b/,function:/\b[a-z_]\w*(?=\s*\()/i,constant:/\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,operator:/[-+*/%=!<>&|^~?]+|\.[.\-+*/%=!<>&|^~?]+/,punctuation:/[{}[\]();,.:\\]/},T.languages.swift["string-literal"].forEach((function(e){e.inside.interpolation.inside=T.languages.swift})),function(e){e.languages.kotlin=e.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,lookbehind:!0},function:[{pattern:/(?:`[^\r\n`]+`|\b\w+)(?=\s*\()/,greedy:!0},{pattern:/(\.)(?:`[^\r\n`]+`|\w+)(?=\s*\{)/,lookbehind:!0,greedy:!0}],number:/\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete e.languages.kotlin["class-name"];var t={"interpolation-punctuation":{pattern:/^\$\{?|\}$/,alias:"punctuation"},expression:{pattern:/[\s\S]+/,inside:e.languages.kotlin}};e.languages.insertBefore("kotlin","string",{"string-literal":[{pattern:/"""(?:[^$]|\$(?:(?!\{)|\{[^{}]*\}))*?"""/,alias:"multiline",inside:{interpolation:{pattern:/\$(?:[a-z_]\w*|\{[^{}]*\})/i,inside:t},string:/[\s\S]+/}},{pattern:/"(?:[^"\\\r\n$]|\\.|\$(?:(?!\{)|\{[^{}]*\}))*"/,alias:"singleline",inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:[a-z_]\w*|\{[^{}]*\})/i,lookbehind:!0,inside:t},string:/[\s\S]+/}}],char:{pattern:/'(?:[^'\\\r\n]|\\(?:.|u[a-fA-F0-9]{0,4}))'/,greedy:!0}}),delete e.languages.kotlin.string,e.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),e.languages.insertBefore("kotlin","function",{label:{pattern:/\b\w+@|@\w+\b/,alias:"symbol"}}),e.languages.kt=e.languages.kotlin,e.languages.kts=e.languages.kotlin}(T),T.languages.c=T.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),T.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),T.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},T.languages.c.string],char:T.languages.c.char,comment:T.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:T.languages.c}}}}),T.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete T.languages.c.boolean,T.languages.objectivec=T.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete T.languages.objectivec["class-name"],T.languages.objc=T.languages.objectivec,T.languages.reason=T.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),T.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete T.languages.reason.function,function(e){for(var t=/\/\*(?:[^*/]|\*(?!\/)|\/(?!\*)|<self>)*\*\//.source,n=0;n<2;n++)t=t.replace(/<self>/g,(function(){return t}));t=t.replace(/<self>/g,(function(){return/[^\s\S]/.source})),e.languages.rust={comment:[{pattern:RegExp(/(^|[^\\])/.source+t),lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/b?"(?:\\[\s\S]|[^\\"])*"|b?r(#*)"(?:[^"]|"(?!\1))*"\1/,greedy:!0},char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u\{(?:[\da-fA-F]_*){1,6}\}|.)|[^\\\r\n\t'])'/,greedy:!0},attribute:{pattern:/#!?\[(?:[^\[\]"]|"(?:\\[\s\S]|[^\\"])*")*\]/,greedy:!0,alias:"attr-name",inside:{string:null}},"closure-params":{pattern:/([=(,:]\s*|\bmove\s*)\|[^|]*\||\|[^|]*\|(?=\s*(?:\{|->))/,lookbehind:!0,greedy:!0,inside:{"closure-punctuation":{pattern:/^\||\|$/,alias:"punctuation"},rest:null}},"lifetime-annotation":{pattern:/'\w+/,alias:"symbol"},"fragment-specifier":{pattern:/(\$\w+:)[a-z]+/,lookbehind:!0,alias:"punctuation"},variable:/\$\w+/,"function-definition":{pattern:/(\bfn\s+)\w+/,lookbehind:!0,alias:"function"},"type-definition":{pattern:/(\b(?:enum|struct|trait|type|union)\s+)\w+/,lookbehind:!0,alias:"class-name"},"module-declaration":[{pattern:/(\b(?:crate|mod)\s+)[a-z][a-z_\d]*/,lookbehind:!0,alias:"namespace"},{pattern:/(\b(?:crate|self|super)\s*)::\s*[a-z][a-z_\d]*\b(?:\s*::(?:\s*[a-z][a-z_\d]*\s*::)*)?/,lookbehind:!0,alias:"namespace",inside:{punctuation:/::/}}],keyword:[/\b(?:Self|abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,/\b(?:bool|char|f(?:32|64)|[ui](?:8|16|32|64|128|size)|str)\b/],function:/\b[a-z_]\w*(?=\s*(?:::\s*<|\())/,macro:{pattern:/\b\w+!/,alias:"property"},constant:/\b[A-Z_][A-Z_\d]+\b/,"class-name":/\b[A-Z]\w*\b/,namespace:{pattern:/(?:\b[a-z][a-z_\d]*\s*::\s*)*\b[a-z][a-z_\d]*\s*::(?!\s*<)/,inside:{punctuation:/::/}},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:f32|f64|[iu](?:8|16|32|64|size)?))?\b/,boolean:/\b(?:false|true)\b/,punctuation:/->|\.\.=|\.{1,3}|::|[{}[\];(),:]/,operator:/[-+*\/%!^]=?|=[=>]?|&[&=]?|\|[|=]?|<<?=?|>>?=?|[@?]/},e.languages.rust["closure-params"].inside.rest=e.languages.rust,e.languages.rust.attribute.inside.string=e.languages.rust.string}(T),T.languages.go=T.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),T.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete T.languages.go["class-name"],function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!<keyword>)\w+(?:\s*\.\s*\w+)*\b/.source.replace(/<keyword>/g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!<keyword>)\w+/.source.replace(/<keyword>/g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/<mod-name>(?:\s*:\s*<mod-name>)?|:\s*<mod-name>/.source.replace(/<mod-name>/g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(T),T.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},T.languages.python["string-interpolation"].inside.interpolation.inside.rest=T.languages.python,T.languages.py=T.languages.python;((e,t)=>{for(var n in t)p(e,n,{get:t[n],enumerable:!0})})({},{dracula:()=>A,duotoneDark:()=>N,duotoneLight:()=>P,github:()=>L,jettwaveDark:()=>H,jettwaveLight:()=>W,nightOwl:()=>O,nightOwlLight:()=>R,oceanicNext:()=>M,okaidia:()=>D,oneDark:()=>V,oneLight:()=>q,palenight:()=>F,shadesOfPurple:()=>z,synthwave84:()=>B,ultramin:()=>$,vsDark:()=>U,vsLight:()=>Z});var A={plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},N={plain:{backgroundColor:"#2a2734",color:"#9a86fd"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#6c6783"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#e09142"}},{types:["property","function"],style:{color:"#9a86fd"}},{types:["tag-id","selector","atrule-id"],style:{color:"#eeebff"}},{types:["attr-name"],style:{color:"#c4b9fe"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule","placeholder","variable"],style:{color:"#ffcc99"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#c4b9fe"}}]},P={plain:{backgroundColor:"#faf8f5",color:"#728fcb"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#b6ad9a"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#063289"}},{types:["property","function"],style:{color:"#b29762"}},{types:["tag-id","selector","atrule-id"],style:{color:"#2d2006"}},{types:["attr-name"],style:{color:"#896724"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule"],style:{color:"#728fcb"}},{types:["placeholder","variable"],style:{color:"#93abdc"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#896724"}}]},L={plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},O={plain:{color:"#d6deeb",backgroundColor:"#011627"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)",fontStyle:"italic"}},{types:["inserted","attr-name"],style:{color:"rgb(173, 219, 103)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(99, 119, 119)",fontStyle:"italic"}},{types:["string","url"],style:{color:"rgb(173, 219, 103)"}},{types:["variable"],style:{color:"rgb(214, 222, 235)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation"],style:{color:"rgb(199, 146, 234)"}},{types:["selector","doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["class-name"],style:{color:"rgb(255, 203, 139)"}},{types:["tag","operator","keyword"],style:{color:"rgb(127, 219, 202)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["property"],style:{color:"rgb(128, 203, 196)"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}}]},R={plain:{color:"#403f53",backgroundColor:"#FBFBFB"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)",fontStyle:"italic"}},{types:["inserted","attr-name"],style:{color:"rgb(72, 118, 214)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(152, 159, 177)",fontStyle:"italic"}},{types:["string","builtin","char","constant","url"],style:{color:"rgb(72, 118, 214)"}},{types:["variable"],style:{color:"rgb(201, 103, 101)"}},{types:["number"],style:{color:"rgb(170, 9, 130)"}},{types:["punctuation"],style:{color:"rgb(153, 76, 195)"}},{types:["function","selector","doctype"],style:{color:"rgb(153, 76, 195)",fontStyle:"italic"}},{types:["class-name"],style:{color:"rgb(17, 17, 17)"}},{types:["tag"],style:{color:"rgb(153, 76, 195)"}},{types:["operator","property","keyword","namespace"],style:{color:"rgb(12, 150, 155)"}},{types:["boolean"],style:{color:"rgb(188, 84, 84)"}}]},j="#c5a5c5",I="#8dc891",M={plain:{backgroundColor:"#282c34",color:"#ffffff"},styles:[{types:["attr-name"],style:{color:j}},{types:["attr-value"],style:{color:I}},{types:["comment","block-comment","prolog","doctype","cdata","shebang"],style:{color:"#999999"}},{types:["property","number","function-name","constant","symbol","deleted"],style:{color:"#5a9bcf"}},{types:["boolean"],style:{color:"#ff8b50"}},{types:["tag"],style:{color:"#fc929e"}},{types:["string"],style:{color:I}},{types:["punctuation"],style:{color:I}},{types:["selector","char","builtin","inserted"],style:{color:"#D8DEE9"}},{types:["function"],style:{color:"#79b6f2"}},{types:["operator","entity","url","variable"],style:{color:"#d7deea"}},{types:["keyword"],style:{color:j}},{types:["atrule","class-name"],style:{color:"#FAC863"}},{types:["important"],style:{fontWeight:"400"}},{types:["bold"],style:{fontWeight:"bold"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}}]},D={plain:{color:"#f8f8f2",backgroundColor:"#272822"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"#f92672",fontStyle:"italic"}},{types:["inserted"],style:{color:"rgb(173, 219, 103)",fontStyle:"italic"}},{types:["comment"],style:{color:"#8292a2",fontStyle:"italic"}},{types:["string","url"],style:{color:"#a6e22e"}},{types:["variable"],style:{color:"#f8f8f2"}},{types:["number"],style:{color:"#ae81ff"}},{types:["builtin","char","constant","function","class-name"],style:{color:"#e6db74"}},{types:["punctuation"],style:{color:"#f8f8f2"}},{types:["selector","doctype"],style:{color:"#a6e22e",fontStyle:"italic"}},{types:["tag","operator","keyword"],style:{color:"#66d9ef"}},{types:["boolean"],style:{color:"#ae81ff"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)",opacity:.7}},{types:["tag","property"],style:{color:"#f92672"}},{types:["attr-name"],style:{color:"#a6e22e !important"}},{types:["doctype"],style:{color:"#8292a2"}},{types:["rule"],style:{color:"#e6db74"}}]},F={plain:{color:"#bfc7d5",backgroundColor:"#292d3e"},styles:[{types:["comment"],style:{color:"rgb(105, 112, 152)",fontStyle:"italic"}},{types:["string","inserted"],style:{color:"rgb(195, 232, 141)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation","selector"],style:{color:"rgb(199, 146, 234)"}},{types:["variable"],style:{color:"rgb(191, 199, 213)"}},{types:["class-name","attr-name"],style:{color:"rgb(255, 203, 107)"}},{types:["tag","deleted"],style:{color:"rgb(255, 85, 114)"}},{types:["operator"],style:{color:"rgb(137, 221, 255)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["keyword"],style:{fontStyle:"italic"}},{types:["doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}},{types:["url"],style:{color:"rgb(221, 221, 221)"}}]},z={plain:{color:"#9EFEFF",backgroundColor:"#2D2A55"},styles:[{types:["changed"],style:{color:"rgb(255, 238, 128)"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)"}},{types:["inserted"],style:{color:"rgb(173, 219, 103)"}},{types:["comment"],style:{color:"rgb(179, 98, 255)",fontStyle:"italic"}},{types:["punctuation"],style:{color:"rgb(255, 255, 255)"}},{types:["constant"],style:{color:"rgb(255, 98, 140)"}},{types:["string","url"],style:{color:"rgb(165, 255, 144)"}},{types:["variable"],style:{color:"rgb(255, 238, 128)"}},{types:["number","boolean"],style:{color:"rgb(255, 98, 140)"}},{types:["attr-name"],style:{color:"rgb(255, 180, 84)"}},{types:["keyword","operator","property","namespace","tag","selector","doctype"],style:{color:"rgb(255, 157, 0)"}},{types:["builtin","char","constant","function","class-name"],style:{color:"rgb(250, 208, 0)"}}]},B={plain:{backgroundColor:"linear-gradient(to bottom, #2a2139 75%, #34294f)",backgroundImage:"#34294f",color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"},styles:[{types:["comment","block-comment","prolog","doctype","cdata"],style:{color:"#495495",fontStyle:"italic"}},{types:["punctuation"],style:{color:"#ccc"}},{types:["tag","attr-name","namespace","number","unit","hexcode","deleted"],style:{color:"#e2777a"}},{types:["property","selector"],style:{color:"#72f1b8",textShadow:"0 0 2px #100c0f, 0 0 10px #257c5575, 0 0 35px #21272475"}},{types:["function-name"],style:{color:"#6196cc"}},{types:["boolean","selector-id","function"],style:{color:"#fdfdfd",textShadow:"0 0 2px #001716, 0 0 3px #03edf975, 0 0 5px #03edf975, 0 0 8px #03edf975"}},{types:["class-name","maybe-class-name","builtin"],style:{color:"#fff5f6",textShadow:"0 0 2px #000, 0 0 10px #fc1f2c75, 0 0 5px #fc1f2c75, 0 0 25px #fc1f2c75"}},{types:["constant","symbol"],style:{color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"}},{types:["important","atrule","keyword","selector-class"],style:{color:"#f4eee4",textShadow:"0 0 2px #393a33, 0 0 8px #f39f0575, 0 0 2px #f39f0575"}},{types:["string","char","attr-value","regex","variable"],style:{color:"#f87c32"}},{types:["parameter"],style:{fontStyle:"italic"}},{types:["entity","url"],style:{color:"#67cdcc"}},{types:["operator"],style:{color:"ffffffee"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["entity"],style:{cursor:"help"}},{types:["inserted"],style:{color:"green"}}]},$={plain:{color:"#282a2e",backgroundColor:"#ffffff"},styles:[{types:["comment"],style:{color:"rgb(197, 200, 198)"}},{types:["string","number","builtin","variable"],style:{color:"rgb(150, 152, 150)"}},{types:["class-name","function","tag","attr-name"],style:{color:"rgb(40, 42, 46)"}}]},U={plain:{color:"#9CDCFE",backgroundColor:"#1E1E1E"},styles:[{types:["prolog"],style:{color:"rgb(0, 0, 128)"}},{types:["comment"],style:{color:"rgb(106, 153, 85)"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"rgb(86, 156, 214)"}},{types:["number","inserted"],style:{color:"rgb(181, 206, 168)"}},{types:["constant"],style:{color:"rgb(100, 102, 149)"}},{types:["attr-name","variable"],style:{color:"rgb(156, 220, 254)"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"rgb(206, 145, 120)"}},{types:["selector"],style:{color:"rgb(215, 186, 125)"}},{types:["tag"],style:{color:"rgb(78, 201, 176)"}},{types:["tag"],languages:["markup"],style:{color:"rgb(86, 156, 214)"}},{types:["punctuation","operator"],style:{color:"rgb(212, 212, 212)"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"rgb(220, 220, 170)"}},{types:["class-name"],style:{color:"rgb(78, 201, 176)"}},{types:["char"],style:{color:"rgb(209, 105, 105)"}}]},Z={plain:{color:"#000000",backgroundColor:"#ffffff"},styles:[{types:["comment"],style:{color:"rgb(0, 128, 0)"}},{types:["builtin"],style:{color:"rgb(0, 112, 193)"}},{types:["number","variable","inserted"],style:{color:"rgb(9, 134, 88)"}},{types:["operator"],style:{color:"rgb(0, 0, 0)"}},{types:["constant","char"],style:{color:"rgb(129, 31, 63)"}},{types:["tag"],style:{color:"rgb(128, 0, 0)"}},{types:["attr-name"],style:{color:"rgb(255, 0, 0)"}},{types:["deleted","string"],style:{color:"rgb(163, 21, 21)"}},{types:["changed","punctuation"],style:{color:"rgb(4, 81, 165)"}},{types:["function","keyword"],style:{color:"rgb(0, 0, 255)"}},{types:["class-name"],style:{color:"rgb(38, 127, 153)"}}]},H={plain:{color:"#f8fafc",backgroundColor:"#011627"},styles:[{types:["prolog"],style:{color:"#000080"}},{types:["comment"],style:{color:"#6A9955"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"#569CD6"}},{types:["number","inserted"],style:{color:"#B5CEA8"}},{types:["constant"],style:{color:"#f8fafc"}},{types:["attr-name","variable"],style:{color:"#9CDCFE"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"#cbd5e1"}},{types:["selector"],style:{color:"#D7BA7D"}},{types:["tag"],style:{color:"#0ea5e9"}},{types:["tag"],languages:["markup"],style:{color:"#0ea5e9"}},{types:["punctuation","operator"],style:{color:"#D4D4D4"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"#7dd3fc"}},{types:["class-name"],style:{color:"#0ea5e9"}},{types:["char"],style:{color:"#D16969"}}]},W={plain:{color:"#0f172a",backgroundColor:"#f1f5f9"},styles:[{types:["prolog"],style:{color:"#000080"}},{types:["comment"],style:{color:"#6A9955"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"#0c4a6e"}},{types:["number","inserted"],style:{color:"#B5CEA8"}},{types:["constant"],style:{color:"#0f172a"}},{types:["attr-name","variable"],style:{color:"#0c4a6e"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"#64748b"}},{types:["selector"],style:{color:"#D7BA7D"}},{types:["tag"],style:{color:"#0ea5e9"}},{types:["tag"],languages:["markup"],style:{color:"#0ea5e9"}},{types:["punctuation","operator"],style:{color:"#475569"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"#0e7490"}},{types:["class-name"],style:{color:"#0ea5e9"}},{types:["char"],style:{color:"#D16969"}}]},V={plain:{backgroundColor:"hsl(220, 13%, 18%)",color:"hsl(220, 14%, 71%)",textShadow:"0 1px rgba(0, 0, 0, 0.3)"},styles:[{types:["comment","prolog","cdata"],style:{color:"hsl(220, 10%, 40%)"}},{types:["doctype","punctuation","entity"],style:{color:"hsl(220, 14%, 71%)"}},{types:["attr-name","class-name","maybe-class-name","boolean","constant","number","atrule"],style:{color:"hsl(29, 54%, 61%)"}},{types:["keyword"],style:{color:"hsl(286, 60%, 67%)"}},{types:["property","tag","symbol","deleted","important"],style:{color:"hsl(355, 65%, 65%)"}},{types:["selector","string","char","builtin","inserted","regex","attr-value"],style:{color:"hsl(95, 38%, 62%)"}},{types:["variable","operator","function"],style:{color:"hsl(207, 82%, 66%)"}},{types:["url"],style:{color:"hsl(187, 47%, 55%)"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"hsl(220, 14%, 71%)"}}]},q={plain:{backgroundColor:"hsl(230, 1%, 98%)",color:"hsl(230, 8%, 24%)"},styles:[{types:["comment","prolog","cdata"],style:{color:"hsl(230, 4%, 64%)"}},{types:["doctype","punctuation","entity"],style:{color:"hsl(230, 8%, 24%)"}},{types:["attr-name","class-name","boolean","constant","number","atrule"],style:{color:"hsl(35, 99%, 36%)"}},{types:["keyword"],style:{color:"hsl(301, 63%, 40%)"}},{types:["property","tag","symbol","deleted","important"],style:{color:"hsl(5, 74%, 59%)"}},{types:["selector","string","char","builtin","inserted","regex","attr-value","punctuation"],style:{color:"hsl(119, 34%, 47%)"}},{types:["variable","operator","function"],style:{color:"hsl(221, 87%, 60%)"}},{types:["url"],style:{color:"hsl(198, 99%, 37%)"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"hsl(230, 8%, 24%)"}}]},G=(e,t)=>{const{plain:n}=e,r=e.styles.reduce(((e,n)=>{const{languages:r,style:a}=n;return r&&!r.includes(t)||n.types.forEach((t=>{const n=S(S({},e[t]),a);e[t]=n})),e}),{});return r.root=n,r.plain=E(S({},n),{backgroundColor:void 0}),r},Y=/\r\n|\r|\n/,K=e=>{0===e.length?e.push({types:["plain"],content:"\n",empty:!0}):1===e.length&&""===e[0].content&&(e[0].content="\n",e[0].empty=!0)},Q=(e,t)=>{const n=e.length;return n>0&&e[n-1]===t?e:e.concat(t)},X=e=>{const t=[[]],n=[e],r=[0],a=[e.length];let o=0,i=0,l=[];const s=[l];for(;i>-1;){for(;(o=r[i]++)<a[i];){let e,u=t[i];const c=n[i][o];if("string"==typeof c?(u=i>0?u:["plain"],e=c):(u=Q(u,c.type),c.alias&&(u=Q(u,c.alias)),e=c.content),"string"!=typeof e){i++,t.push(u),n.push(e),r.push(0),a.push(e.length);continue}const d=e.split(Y),f=d.length;l.push({types:u,content:d[0]});for(let t=1;t<f;t++)K(l),s.push(l=[]),l.push({types:u,content:d[t]})}i--,t.pop(),n.pop(),r.pop(),a.pop()}return K(l),s},J=({children:e,language:t,code:n,theme:r,prism:a})=>{const o=t.toLowerCase(),i=((e,t)=>{const[n,r]=(0,c.useState)(G(t,e)),a=(0,c.useRef)(),o=(0,c.useRef)();return(0,c.useEffect)((()=>{t===a.current&&e===o.current||(a.current=t,o.current=e,r(G(t,e)))}),[e,t]),n})(o,r),l=(e=>(0,c.useCallback)((t=>{var n=t,{className:r,style:a,line:o}=n,i=_(n,["className","style","line"]);const l=E(S({},i),{className:(0,d.Z)("token-line",r)});return"object"==typeof e&&"plain"in e&&(l.style=e.plain),"object"==typeof a&&(l.style=S(S({},l.style||{}),a)),l}),[e]))(i),s=(e=>{const t=(0,c.useCallback)((({types:t,empty:n})=>{if(null!=e)return 1===t.length&&"plain"===t[0]?null!=n?{display:"inline-block"}:void 0:1===t.length&&null!=n?e[t[0]]:Object.assign(null!=n?{display:"inline-block"}:{},...t.map((t=>e[t])))}),[e]);return(0,c.useCallback)((e=>{var n=e,{token:r,className:a,style:o}=n,i=_(n,["token","className","style"]);const l=E(S({},i),{className:(0,d.Z)("token",...r.types,a),children:r.content,style:t(r)});return null!=o&&(l.style=S(S({},l.style||{}),o)),l}),[t])})(i),u=(({prism:e,code:t,grammar:n,language:r})=>{const a=(0,c.useRef)(e);return(0,c.useMemo)((()=>{if(null==n)return X([t]);const e={code:t,grammar:n,language:r,tokens:[]};return a.current.hooks.run("before-tokenize",e),e.tokens=a.current.tokenize(t,n),a.current.hooks.run("after-tokenize",e),X(e.tokens)}),[t,n,r])})({prism:a,language:o,code:n,grammar:a.languages[o]});return e({tokens:u,className:`prism-code language-${o}`,style:null!=i?i.root:{},getLineProps:l,getTokenProps:s})},ee=e=>(0,c.createElement)(J,E(S({},e),{prism:e.prism||T,theme:e.theme||U,code:e.code,language:e.language}))},8624:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=!0,a="Invariant failed";function o(e,t){if(!e){if(r)throw new Error(a);var n="function"==typeof t?t():t,o=n?"".concat(a,": ").concat(n):a;throw new Error(o)}}},7529:e=>{"use strict";e.exports={}},6887:e=>{"use strict";e.exports=JSON.parse('{"/blog-9ad":{"__comp":"a6aa9e1f","__context":{"plugin":"36994c47"},"sidebar":"814f3328","items":[{"content":"f117dc86"}],"__props":"c15d9823"},"/blog/archive-182":{"__comp":"9e4087bc","__context":{"plugin":"36994c47"},"__props":"f81c1134"},"/blog/why-is-yazi-fast-ebb":{"__comp":"ccc49370","__context":{"data":{"blogMetadata":"acecf23e"},"plugin":"36994c47"},"sidebar":"814f3328","content":"3b25d5a1"},"/features/-259":{"__comp":"d7fbbe43","__context":{"plugin":"a7456010"},"config":"5e9f5e1a"},"/search-5de":{"__comp":"1a4e3797","__context":{"plugin":"c141421f"}},"/docs-d16":{"__comp":"5e95c892","__context":{"plugin":"aba21aa0"}},"/docs-5e9":{"__comp":"a7bd4aaa","__props":"0058b4c6"},"/docs-8dc":{"__comp":"a94703ab"},"/docs/configuration/keymap-ab2":{"__comp":"17896441","content":"9e2c8087"},"/docs/configuration/overview-724":{"__comp":"17896441","content":"0f425520"},"/docs/configuration/theme-5c5":{"__comp":"17896441","content":"468e7028"},"/docs/configuration/yazi-f6c":{"__comp":"17896441","content":"f18375c2"},"/docs/dds-89e":{"__comp":"17896441","content":"3ec017a6"},"/docs/faq-ec8":{"__comp":"17896441","content":"0480b142"},"/docs/flavors/overview-0b2":{"__comp":"17896441","content":"248731ca"},"/docs/image-preview-d2c":{"__comp":"17896441","content":"ee3da606"},"/docs/installation-034":{"__comp":"17896441","content":"3b8c55ea"},"/docs/plugins/config-613":{"__comp":"17896441","content":"c798e513"},"/docs/plugins/layout-070":{"__comp":"17896441","content":"115d3643"},"/docs/plugins/overview-1ca":{"__comp":"17896441","content":"017b72a7"},"/docs/plugins/types-de9":{"__comp":"17896441","content":"340345ee"},"/docs/plugins/utils-4a3":{"__comp":"17896441","content":"b789b11d"},"/docs/quick-start-b98":{"__comp":"17896441","content":"72e14192"},"/docs/resources-a32":{"__comp":"17896441","content":"d92a3c43"},"/docs/tips-a3e":{"__comp":"17896441","content":"c8b3d7d6"},"/-e5f":{"__comp":"1df93b7f","__context":{"plugin":"a7456010"},"config":"5e9f5e1a"}}')}},e=>{e.O(0,[532],(()=>{return t=9910,e(e.s=t);var t}));e.O()}]); \ No newline at end of file diff --git a/assets/js/main.3de6501c.js.LICENSE.txt b/assets/js/main.3de6501c.js.LICENSE.txt new file mode 100644 index 000000000..91dc89499 --- /dev/null +++ b/assets/js/main.3de6501c.js.LICENSE.txt @@ -0,0 +1,64 @@ +/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress + * @license MIT */ + +/*! Bundled license information: + +prismjs/prism.js: + (** + * Prism: Lightweight, robust, elegant syntax highlighting + * + * @license MIT <https://opensource.org/licenses/MIT> + * @author Lea Verou <https://lea.verou.me> + * @namespace + * @public + *) +*/ + +/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** @license React v16.13.1 + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/assets/js/runtime~main.8ea8957c.js b/assets/js/runtime~main.8ea8957c.js new file mode 100644 index 000000000..ffc1b2ad5 --- /dev/null +++ b/assets/js/runtime~main.8ea8957c.js @@ -0,0 +1 @@ +(()=>{"use strict";var e,a,r,t,c={},d={};function o(e){var a=d[e];if(void 0!==a)return a.exports;var r=d[e]={exports:{}};return c[e].call(r.exports,r,r.exports,o),r.exports}o.m=c,e=[],o.O=(a,r,t,c)=>{if(!r){var d=1/0;for(i=0;i<e.length;i++){r=e[i][0],t=e[i][1],c=e[i][2];for(var n=!0,f=0;f<r.length;f++)(!1&c||d>=c)&&Object.keys(o.O).every((e=>o.O[e](r[f])))?r.splice(f--,1):(n=!1,c<d&&(d=c));if(n){e.splice(i--,1);var b=t();void 0!==b&&(a=b)}}return a}c=c||0;for(var i=e.length;i>0&&e[i-1][2]>c;i--)e[i]=e[i-1];e[i]=[r,t,c]},o.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return o.d(a,{a:a}),a},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var c=Object.create(null);o.r(c);var d={};a=a||[null,r({}),r([]),r(r)];for(var n=2&t&&e;"object"==typeof n&&!~a.indexOf(n);n=r(n))Object.getOwnPropertyNames(n).forEach((a=>d[a]=()=>e[a]));return d.default=()=>e,o.d(c,d),c},o.d=(e,a)=>{for(var r in a)o.o(a,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:a[r]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((a,r)=>(o.f[r](e,a),a)),[])),o.u=e=>"assets/js/"+({4:"c141421f",31:"f81c1134",40:"3ec017a6",88:"0058b4c6",89:"a6aa9e1f",103:"ccc49370",131:"f18375c2",175:"248731ca",197:"c798e513",208:"36994c47",213:"017b72a7",217:"3b8c55ea",237:"1df93b7f",239:"72e14192",240:"0f425520",269:"d7fbbe43",307:"c8b3d7d6",368:"a94703ab",393:"acecf23e",402:"340345ee",418:"115d3643",464:"ee3da606",518:"a7bd4aaa",535:"814f3328",608:"9e4087bc",629:"aba21aa0",642:"c15d9823",661:"5e95c892",722:"f117dc86",798:"d92a3c43",826:"3b25d5a1",836:"0480b142",857:"9e2c8087",871:"468e7028",882:"b789b11d",918:"17896441",920:"1a4e3797",980:"a7456010"}[e]||e)+"."+{4:"17a1cee8",31:"31f9eb0d",40:"7d33f4af",60:"51657cda",86:"92515d92",88:"d9b5b6f7",89:"1de78407",103:"15c758ef",131:"72830105",153:"aa6c0280",175:"29d8f52c",197:"b5153429",208:"88b4b68e",213:"4aeb2942",217:"fbd0558a",237:"7e2a202c",239:"e2d8a26e",240:"c85b7cfa",269:"09cb9b7c",307:"1a3e1320",368:"d656c6c4",393:"50d67dad",402:"49d6b340",418:"4afc0214",464:"10d1ef68",518:"96c8d565",535:"fa917596",608:"02fcc1d0",629:"0081ea18",642:"1ddfb9a4",661:"65b48196",703:"5777b14e",719:"508146df",722:"36123578",798:"f35be344",812:"f555afda",826:"f3928c24",836:"8e06eea5",857:"2908c274",871:"c891cef3",882:"f059625e",918:"1da012cb",920:"3741dc58",980:"46336641"}[e]+".js",o.miniCssF=e=>{},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},o.l=(e,a,r,c)=>{if(t[e])t[e].push(a);else{var d,n;if(void 0!==r)for(var f=document.getElementsByTagName("script"),b=0;b<f.length;b++){var i=f[b];if(i.getAttribute("src")==e){d=i;break}}d||(n=!0,(d=document.createElement("script")).charset="utf-8",d.timeout=120,o.nc&&d.setAttribute("nonce",o.nc),d.src=e),t[e]=[a];var u=(a,r)=>{d.onerror=d.onload=null,clearTimeout(l);var c=t[e];if(delete t[e],d.parentNode&&d.parentNode.removeChild(d),c&&c.forEach((e=>e(r))),a)return a(r)},l=setTimeout(u.bind(null,void 0,{type:"timeout",target:d}),12e4);d.onerror=u.bind(null,d.onerror),d.onload=u.bind(null,d.onload),n&&document.head.appendChild(d)}},o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.p="/",o.gca=function(e){return e={17896441:"918",c141421f:"4",f81c1134:"31","3ec017a6":"40","0058b4c6":"88",a6aa9e1f:"89",ccc49370:"103",f18375c2:"131","248731ca":"175",c798e513:"197","36994c47":"208","017b72a7":"213","3b8c55ea":"217","1df93b7f":"237","72e14192":"239","0f425520":"240",d7fbbe43:"269",c8b3d7d6:"307",a94703ab:"368",acecf23e:"393","340345ee":"402","115d3643":"418",ee3da606:"464",a7bd4aaa:"518","814f3328":"535","9e4087bc":"608",aba21aa0:"629",c15d9823:"642","5e95c892":"661",f117dc86:"722",d92a3c43:"798","3b25d5a1":"826","0480b142":"836","9e2c8087":"857","468e7028":"871",b789b11d:"882","1a4e3797":"920",a7456010:"980"}[e]||e,o.p+o.u(e)},(()=>{var e={303:0,532:0};o.f.j=(a,r)=>{var t=o.o(e,a)?e[a]:void 0;if(0!==t)if(t)r.push(t[2]);else if(/^(303|532)$/.test(a))e[a]=0;else{var c=new Promise(((r,c)=>t=e[a]=[r,c]));r.push(t[2]=c);var d=o.p+o.u(a),n=new Error;o.l(d,(r=>{if(o.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var c=r&&("load"===r.type?"missing":r.type),d=r&&r.target&&r.target.src;n.message="Loading chunk "+a+" failed.\n("+c+": "+d+")",n.name="ChunkLoadError",n.type=c,n.request=d,t[1](n)}}),"chunk-"+a,a)}},o.O.j=a=>0===e[a];var a=(a,r)=>{var t,c,d=r[0],n=r[1],f=r[2],b=0;if(d.some((a=>0!==e[a]))){for(t in n)o.o(n,t)&&(o.m[t]=n[t]);if(f)var i=f(o)}for(a&&a(r);b<d.length;b++)c=d[b],o.o(e,c)&&e[c]&&e[c][0](),e[c]=0;return o.O(i)},r=self.webpackChunk=self.webpackChunk||[];r.forEach(a.bind(null,0)),r.push=a.bind(null,r.push.bind(r))})()})(); \ No newline at end of file diff --git a/blog/archive/index.html b/blog/archive/index.html new file mode 100644 index 000000000..a85e8c855 --- /dev/null +++ b/blog/archive/index.html @@ -0,0 +1,19 @@ +<!doctype html> +<html lang="en" dir="ltr" class="plugin-blog plugin-id-default" data-has-hydrated="false"> +<head> +<meta charset="UTF-8"> +<meta name="generator" content="Docusaurus v3.4.0"> +<title data-rh="true">Archive | Yazi + + + + + + + + + +
+ + \ No newline at end of file diff --git a/blog/atom.xml b/blog/atom.xml new file mode 100644 index 000000000..68d8651ac --- /dev/null +++ b/blog/atom.xml @@ -0,0 +1,84 @@ + + + https://yazi-rs.github.io/blog + Yazi Blog + 2023-10-29T00:00:00.000Z + https://github.com/jpmonette/feed + + Yazi Blog + https://yazi-rs.github.io/img/logo.png + + <![CDATA[Why is Yazi fast?]]> + https://yazi-rs.github.io/blog/why-is-yazi-fast + + 2023-10-29T00:00:00.000Z + + This article assumes that you have already used Yazi and are familiar with most of its features.

+

Yazi has undergone significant optimizations to enhance user experience. It is designed entirely as an async program, handling all time-consuming tasks (I/O and CPU) as async tasks in a non-blocking, event-driven manner.

+

Tokio

+

Internally, Yazi uses Tokio as its async runtime: hold on! Tokio's async may not be "truly async" as you might perceive it!

+

Uh, okay. From an application-layer perspective, it indeed is async; however, from a system-level view, there are possibly better solutions.

+

But! This is not the current performance bottleneck for Yazi. Considering Yazi is a TUI app, unlike CLI programs like ls and eza that need to output all files immediately, Yazi has more optimization opportunities at the application-layer:

+
    +
  • For large directories (e.g., 100,000 files), Yazi uses chunked loading, which is unmatched by ls and eza since they must load everything at once.
  • +
  • Yazi also preloads directory file lists in the background, an optimization that ls and eza do not possess.
  • +
+

I must express my gratitude to Tokio for providing an excellent and convenient way to realize these application-layer optimizations.

+

I believe that the benefits brought by these application-level optimizations are more noticeable compared to switching to solutions like io_uring. But I'm open to this and welcome any constructive PR.

+

Here is a relevant discussion on Reddit: https://www.reddit.com/r/rust/comments/16fxr58/comment/k066gmh/

+

Pre-Loading

+

Preloaders are part of Yazi's concurrent plugin system, and the entire pre-loading process is asynchronous and spans multiple threads. This means that preloaders can handle not only expensive IO tasks but also CPU-bound tasks! Here are some built-in preloaders in Yazi:

+
    +
  • Mimetype: The baseline. Yazi uses the file's mime-type as a reference for tasks such as opening, previewing, and style rendering, and internally utilizes file(1) to obtain the file's mime-type. For better performance, Yazi computes them for files of an entire page, rather than for each file individually, and the entire process is chunked to minimize response latency.
  • +
  • Image: To accelerate image previews, Yazi uses a 2-pass process for image files. The first pass is preprocessing, which downscales the image based on user-set max_width/max_height and generates a compressed lossy image as a cache file, significantly reducing file size. The second pass occurs when the user actually switches to the file and downscales it again to fit the terminal size.
  • +
  • Video: To speed up video previews, Yazi pre-converts them into images and goes through the first pass of image processing. When the user needs to display the video, it goes the same second pass.
  • +
  • PDF: Similar to video.
  • +
  • Directory size: Yazi lazily calculates the directory size only when the user sets sorting by file size, as it's a time-consuming operation.
  • +
+

Note: Except for size, all of these are paged, meaning that when you are on the first page, only the first few files will be pre-loaded.

+

For example, if your directory has 1000 files, your terminal height is 10, and you are on the second page, only files 11 to 20 will be processed. This greatly saves resources.

+

Discardable Tasks

+

Every preview task is discardable. When you navigate between files quickly and the previous file's triggered preview task is still not finished, it will be discarded directly, initiating a new task. This promotes resource utilization:

+
    +
  • For I/O tasks like loading directory lists, Tokio's abort is used;
  • +
  • For CPU tasks like code highlighting, an Atomic is used to store a ticket, and it checks if the value changes on each line code highlight. If it changes, indicates that the current context has changed, and the entire highlighting task is discarded.
  • +
  • For I/O and CPU tasks like previewer/preloader plugins, with Lua, Yazi can check whether these tasks are canceled when a specific number of CPU instructions. If canceled, it interrupts the execution of the Lua script immediately, avoiding wasting more I/O and CPU resources.
  • +
+

Code Highlighting

+

Yazi has built-in code highlighting and keeps it to a minimum for all text files: if your terminal height is 10, only the first 10 lines of the file are read and highlighted.

+

Other file managers that rely on external programs like bat need to wait for bat to finish highlighting the entire file before displaying only the first 10 lines.

+

In cases like JSON that require external program jq, Yazi kills jq directly after reading the first 10 lines to avoid unnecessary resource consumption.

+

Since code highlighting is a CPU-bound task, it is distributed among multiple blocking threads, managed through Tokio's spawn_blocking, and is also discardable.

+

Image Preview

+

Yazi not only has built-in code highlighting but also includes image decoding and downscaling - there is likely nothing faster than having it directly built-in. It is also distributed among multiple threads and is discardable.

+

Besides being fast, Yazi's built-in Kitty graphics protocol, Inline images protocol, and Sixel graphics format allow Yazi to finely control when to display or hide images.

+

This ensures that in Yazi, there won't be issues, like images stacking on top of each other, or image escape code breaking the entire screen, when navigating through images quickly, as stdout is locked while outputting these escape codes. This locking happens after all image data is prepared, so it has no impact on performance.

+

Yazi even supports partially erasing content in preview images, which is useful for pop-up components (Input, Select). The image won't overlap the input, and when the pop-up disappears, Yazi redraws the image to complete the erased portion automatically.

+

Async Task Scheduling

+

In Yazi, tasks are prioritized based on their severity automatically. Yazi categorizes tasks into two types:

+
    +
  • Macro tasks: Large and heavy tasks, such as copying large files, typically taking a long time to complete.
  • +
  • Micro tasks: Small and urgent tasks, such as fetching file mime-type, pre-loading images, calculating directory size, and so on.
  • +
+

This is similar to having big and small cores in a CPU; when the big cores are idle, they help with the micro tasks. Yazi defaults to starting 5 micro workers and 10 macro workers, and these numbers can be configured by the user!

+

In addition, Yazi introduces a priority scheduling mechanism. Each task has 3 priority levels: low, normal, and high. High-priority tasks can preempt low-priority tasks, applying to both micro and macro tasks. This increases task concurrency, slowing down HOL blocking caused by queuing execution of sudden requests.

+

For complex tasks like file copying, a combination of micro and macro approaches is employed. Micro is used to gather a list of all files to be copied recursively, allowing users to see the number of tasks and their sizes in advance. Macro, on the other hand, handles the actual copying process.

+

The advantage of task scheduling extends beyond providing ample concurrency for I/O and CPU resources; it also indirectly mitigates the depletion of system resources (such as file handles and CPU) due to sudden task surges.

+

Other optimizations

+

The above optimizations are the most noticeable to users, but behind the scenes, Yazi has also done many other optimizations. Include but are not limited to:

+
    +
  • The re-implemented highly optimized natural sorting algorithm is ~6 times faster than the natord that eza uses in case-insensitive sorting.
  • +
  • Yazi caches the directory state that has already been read, avoiding any unnecessary IO operations.
  • +
  • When a file in a directory changes, it only updates the changed files rather than re-reading the entire directory list.
  • +
  • Merges multiple renders triggered by multiple commands into a single render, avoiding unnecessary CPU consumption.
  • +
  • Frequent updates to components, such as progress bars, are rendered independently, which is no cost compared to a complete render.
  • +
  • The entire plugin system is designed with an asynchronous-first philosophy to avoid blocking the main thread with time-consuming tasks.
  • +
+

TODO

+

I'll find time to continue writing.

]]>
+ + 三咲雅 · Misaki Masa + https://github.com/sxyazi + +
+
\ No newline at end of file diff --git a/blog/index.html b/blog/index.html new file mode 100644 index 000000000..215547b5e --- /dev/null +++ b/blog/index.html @@ -0,0 +1,81 @@ + + + + + +Blog | Yazi + + + + + + + + + +

Why is Yazi fast?

· 7 min read

This article assumes that you have already used Yazi and are familiar with most of its features.

+

Yazi has undergone significant optimizations to enhance user experience. It is designed entirely as an async program, handling all time-consuming tasks (I/O and CPU) as async tasks in a non-blocking, event-driven manner.

+

Tokio

+

Internally, Yazi uses Tokio as its async runtime: hold on! Tokio's async may not be "truly async" as you might perceive it!

+

Uh, okay. From an application-layer perspective, it indeed is async; however, from a system-level view, there are possibly better solutions.

+

But! This is not the current performance bottleneck for Yazi. Considering Yazi is a TUI app, unlike CLI programs like ls and eza that need to output all files immediately, Yazi has more optimization opportunities at the application-layer:

+
    +
  • For large directories (e.g., 100,000 files), Yazi uses chunked loading, which is unmatched by ls and eza since they must load everything at once.
  • +
  • Yazi also preloads directory file lists in the background, an optimization that ls and eza do not possess.
  • +
+

I must express my gratitude to Tokio for providing an excellent and convenient way to realize these application-layer optimizations.

+

I believe that the benefits brought by these application-level optimizations are more noticeable compared to switching to solutions like io_uring. But I'm open to this and welcome any constructive PR.

+

Here is a relevant discussion on Reddit: https://www.reddit.com/r/rust/comments/16fxr58/comment/k066gmh/

+

Pre-Loading

+

Preloaders are part of Yazi's concurrent plugin system, and the entire pre-loading process is asynchronous and spans multiple threads. This means that preloaders can handle not only expensive IO tasks but also CPU-bound tasks! Here are some built-in preloaders in Yazi:

+
    +
  • Mimetype: The baseline. Yazi uses the file's mime-type as a reference for tasks such as opening, previewing, and style rendering, and internally utilizes file(1) to obtain the file's mime-type. For better performance, Yazi computes them for files of an entire page, rather than for each file individually, and the entire process is chunked to minimize response latency.
  • +
  • Image: To accelerate image previews, Yazi uses a 2-pass process for image files. The first pass is preprocessing, which downscales the image based on user-set max_width/max_height and generates a compressed lossy image as a cache file, significantly reducing file size. The second pass occurs when the user actually switches to the file and downscales it again to fit the terminal size.
  • +
  • Video: To speed up video previews, Yazi pre-converts them into images and goes through the first pass of image processing. When the user needs to display the video, it goes the same second pass.
  • +
  • PDF: Similar to video.
  • +
  • Directory size: Yazi lazily calculates the directory size only when the user sets sorting by file size, as it's a time-consuming operation.
  • +
+

Note: Except for size, all of these are paged, meaning that when you are on the first page, only the first few files will be pre-loaded.

+

For example, if your directory has 1000 files, your terminal height is 10, and you are on the second page, only files 11 to 20 will be processed. This greatly saves resources.

+

Discardable Tasks

+

Every preview task is discardable. When you navigate between files quickly and the previous file's triggered preview task is still not finished, it will be discarded directly, initiating a new task. This promotes resource utilization:

+
    +
  • For I/O tasks like loading directory lists, Tokio's abort is used;
  • +
  • For CPU tasks like code highlighting, an Atomic is used to store a ticket, and it checks if the value changes on each line code highlight. If it changes, indicates that the current context has changed, and the entire highlighting task is discarded.
  • +
  • For I/O and CPU tasks like previewer/preloader plugins, with Lua, Yazi can check whether these tasks are canceled when a specific number of CPU instructions. If canceled, it interrupts the execution of the Lua script immediately, avoiding wasting more I/O and CPU resources.
  • +
+

Code Highlighting

+

Yazi has built-in code highlighting and keeps it to a minimum for all text files: if your terminal height is 10, only the first 10 lines of the file are read and highlighted.

+

Other file managers that rely on external programs like bat need to wait for bat to finish highlighting the entire file before displaying only the first 10 lines.

+

In cases like JSON that require external program jq, Yazi kills jq directly after reading the first 10 lines to avoid unnecessary resource consumption.

+

Since code highlighting is a CPU-bound task, it is distributed among multiple blocking threads, managed through Tokio's spawn_blocking, and is also discardable.

+

Image Preview

+

Yazi not only has built-in code highlighting but also includes image decoding and downscaling - there is likely nothing faster than having it directly built-in. It is also distributed among multiple threads and is discardable.

+

Besides being fast, Yazi's built-in Kitty graphics protocol, Inline images protocol, and Sixel graphics format allow Yazi to finely control when to display or hide images.

+

This ensures that in Yazi, there won't be issues, like images stacking on top of each other, or image escape code breaking the entire screen, when navigating through images quickly, as stdout is locked while outputting these escape codes. This locking happens after all image data is prepared, so it has no impact on performance.

+

Yazi even supports partially erasing content in preview images, which is useful for pop-up components (Input, Select). The image won't overlap the input, and when the pop-up disappears, Yazi redraws the image to complete the erased portion automatically.

+

Async Task Scheduling

+

In Yazi, tasks are prioritized based on their severity automatically. Yazi categorizes tasks into two types:

+
    +
  • Macro tasks: Large and heavy tasks, such as copying large files, typically taking a long time to complete.
  • +
  • Micro tasks: Small and urgent tasks, such as fetching file mime-type, pre-loading images, calculating directory size, and so on.
  • +
+

This is similar to having big and small cores in a CPU; when the big cores are idle, they help with the micro tasks. Yazi defaults to starting 5 micro workers and 10 macro workers, and these numbers can be configured by the user!

+

In addition, Yazi introduces a priority scheduling mechanism. Each task has 3 priority levels: low, normal, and high. High-priority tasks can preempt low-priority tasks, applying to both micro and macro tasks. This increases task concurrency, slowing down HOL blocking caused by queuing execution of sudden requests.

+

For complex tasks like file copying, a combination of micro and macro approaches is employed. Micro is used to gather a list of all files to be copied recursively, allowing users to see the number of tasks and their sizes in advance. Macro, on the other hand, handles the actual copying process.

+

The advantage of task scheduling extends beyond providing ample concurrency for I/O and CPU resources; it also indirectly mitigates the depletion of system resources (such as file handles and CPU) due to sudden task surges.

+

Other optimizations

+

The above optimizations are the most noticeable to users, but behind the scenes, Yazi has also done many other optimizations. Include but are not limited to:

+
    +
  • The re-implemented highly optimized natural sorting algorithm is ~6 times faster than the natord that eza uses in case-insensitive sorting.
  • +
  • Yazi caches the directory state that has already been read, avoiding any unnecessary IO operations.
  • +
  • When a file in a directory changes, it only updates the changed files rather than re-reading the entire directory list.
  • +
  • Merges multiple renders triggered by multiple commands into a single render, avoiding unnecessary CPU consumption.
  • +
  • Frequent updates to components, such as progress bars, are rendered independently, which is no cost compared to a complete render.
  • +
  • The entire plugin system is designed with an asynchronous-first philosophy to avoid blocking the main thread with time-consuming tasks.
  • +
+

TODO

+

I'll find time to continue writing.

+ + \ No newline at end of file diff --git a/blog/rss.xml b/blog/rss.xml new file mode 100644 index 000000000..8e1ef8bb8 --- /dev/null +++ b/blog/rss.xml @@ -0,0 +1,82 @@ + + + + Yazi Blog + https://yazi-rs.github.io/blog + Yazi Blog + Sun, 29 Oct 2023 00:00:00 GMT + https://validator.w3.org/feed/docs/rss2.html + https://github.com/jpmonette/feed + en + + <![CDATA[Why is Yazi fast?]]> + https://yazi-rs.github.io/blog/why-is-yazi-fast + https://yazi-rs.github.io/blog/why-is-yazi-fast + Sun, 29 Oct 2023 00:00:00 GMT + + This article assumes that you have already used Yazi and are familiar with most of its features.

+

Yazi has undergone significant optimizations to enhance user experience. It is designed entirely as an async program, handling all time-consuming tasks (I/O and CPU) as async tasks in a non-blocking, event-driven manner.

+

Tokio

+

Internally, Yazi uses Tokio as its async runtime: hold on! Tokio's async may not be "truly async" as you might perceive it!

+

Uh, okay. From an application-layer perspective, it indeed is async; however, from a system-level view, there are possibly better solutions.

+

But! This is not the current performance bottleneck for Yazi. Considering Yazi is a TUI app, unlike CLI programs like ls and eza that need to output all files immediately, Yazi has more optimization opportunities at the application-layer:

+
    +
  • For large directories (e.g., 100,000 files), Yazi uses chunked loading, which is unmatched by ls and eza since they must load everything at once.
  • +
  • Yazi also preloads directory file lists in the background, an optimization that ls and eza do not possess.
  • +
+

I must express my gratitude to Tokio for providing an excellent and convenient way to realize these application-layer optimizations.

+

I believe that the benefits brought by these application-level optimizations are more noticeable compared to switching to solutions like io_uring. But I'm open to this and welcome any constructive PR.

+

Here is a relevant discussion on Reddit: https://www.reddit.com/r/rust/comments/16fxr58/comment/k066gmh/

+

Pre-Loading

+

Preloaders are part of Yazi's concurrent plugin system, and the entire pre-loading process is asynchronous and spans multiple threads. This means that preloaders can handle not only expensive IO tasks but also CPU-bound tasks! Here are some built-in preloaders in Yazi:

+
    +
  • Mimetype: The baseline. Yazi uses the file's mime-type as a reference for tasks such as opening, previewing, and style rendering, and internally utilizes file(1) to obtain the file's mime-type. For better performance, Yazi computes them for files of an entire page, rather than for each file individually, and the entire process is chunked to minimize response latency.
  • +
  • Image: To accelerate image previews, Yazi uses a 2-pass process for image files. The first pass is preprocessing, which downscales the image based on user-set max_width/max_height and generates a compressed lossy image as a cache file, significantly reducing file size. The second pass occurs when the user actually switches to the file and downscales it again to fit the terminal size.
  • +
  • Video: To speed up video previews, Yazi pre-converts them into images and goes through the first pass of image processing. When the user needs to display the video, it goes the same second pass.
  • +
  • PDF: Similar to video.
  • +
  • Directory size: Yazi lazily calculates the directory size only when the user sets sorting by file size, as it's a time-consuming operation.
  • +
+

Note: Except for size, all of these are paged, meaning that when you are on the first page, only the first few files will be pre-loaded.

+

For example, if your directory has 1000 files, your terminal height is 10, and you are on the second page, only files 11 to 20 will be processed. This greatly saves resources.

+

Discardable Tasks

+

Every preview task is discardable. When you navigate between files quickly and the previous file's triggered preview task is still not finished, it will be discarded directly, initiating a new task. This promotes resource utilization:

+
    +
  • For I/O tasks like loading directory lists, Tokio's abort is used;
  • +
  • For CPU tasks like code highlighting, an Atomic is used to store a ticket, and it checks if the value changes on each line code highlight. If it changes, indicates that the current context has changed, and the entire highlighting task is discarded.
  • +
  • For I/O and CPU tasks like previewer/preloader plugins, with Lua, Yazi can check whether these tasks are canceled when a specific number of CPU instructions. If canceled, it interrupts the execution of the Lua script immediately, avoiding wasting more I/O and CPU resources.
  • +
+

Code Highlighting

+

Yazi has built-in code highlighting and keeps it to a minimum for all text files: if your terminal height is 10, only the first 10 lines of the file are read and highlighted.

+

Other file managers that rely on external programs like bat need to wait for bat to finish highlighting the entire file before displaying only the first 10 lines.

+

In cases like JSON that require external program jq, Yazi kills jq directly after reading the first 10 lines to avoid unnecessary resource consumption.

+

Since code highlighting is a CPU-bound task, it is distributed among multiple blocking threads, managed through Tokio's spawn_blocking, and is also discardable.

+

Image Preview

+

Yazi not only has built-in code highlighting but also includes image decoding and downscaling - there is likely nothing faster than having it directly built-in. It is also distributed among multiple threads and is discardable.

+

Besides being fast, Yazi's built-in Kitty graphics protocol, Inline images protocol, and Sixel graphics format allow Yazi to finely control when to display or hide images.

+

This ensures that in Yazi, there won't be issues, like images stacking on top of each other, or image escape code breaking the entire screen, when navigating through images quickly, as stdout is locked while outputting these escape codes. This locking happens after all image data is prepared, so it has no impact on performance.

+

Yazi even supports partially erasing content in preview images, which is useful for pop-up components (Input, Select). The image won't overlap the input, and when the pop-up disappears, Yazi redraws the image to complete the erased portion automatically.

+

Async Task Scheduling

+

In Yazi, tasks are prioritized based on their severity automatically. Yazi categorizes tasks into two types:

+
    +
  • Macro tasks: Large and heavy tasks, such as copying large files, typically taking a long time to complete.
  • +
  • Micro tasks: Small and urgent tasks, such as fetching file mime-type, pre-loading images, calculating directory size, and so on.
  • +
+

This is similar to having big and small cores in a CPU; when the big cores are idle, they help with the micro tasks. Yazi defaults to starting 5 micro workers and 10 macro workers, and these numbers can be configured by the user!

+

In addition, Yazi introduces a priority scheduling mechanism. Each task has 3 priority levels: low, normal, and high. High-priority tasks can preempt low-priority tasks, applying to both micro and macro tasks. This increases task concurrency, slowing down HOL blocking caused by queuing execution of sudden requests.

+

For complex tasks like file copying, a combination of micro and macro approaches is employed. Micro is used to gather a list of all files to be copied recursively, allowing users to see the number of tasks and their sizes in advance. Macro, on the other hand, handles the actual copying process.

+

The advantage of task scheduling extends beyond providing ample concurrency for I/O and CPU resources; it also indirectly mitigates the depletion of system resources (such as file handles and CPU) due to sudden task surges.

+

Other optimizations

+

The above optimizations are the most noticeable to users, but behind the scenes, Yazi has also done many other optimizations. Include but are not limited to:

+
    +
  • The re-implemented highly optimized natural sorting algorithm is ~6 times faster than the natord that eza uses in case-insensitive sorting.
  • +
  • Yazi caches the directory state that has already been read, avoiding any unnecessary IO operations.
  • +
  • When a file in a directory changes, it only updates the changed files rather than re-reading the entire directory list.
  • +
  • Merges multiple renders triggered by multiple commands into a single render, avoiding unnecessary CPU consumption.
  • +
  • Frequent updates to components, such as progress bars, are rendered independently, which is no cost compared to a complete render.
  • +
  • The entire plugin system is designed with an asynchronous-first philosophy to avoid blocking the main thread with time-consuming tasks.
  • +
+

TODO

+

I'll find time to continue writing.

]]>
+
+
+
\ No newline at end of file diff --git a/blog/why-is-yazi-fast/index.html b/blog/why-is-yazi-fast/index.html new file mode 100644 index 000000000..d78bef8dd --- /dev/null +++ b/blog/why-is-yazi-fast/index.html @@ -0,0 +1,81 @@ + + + + + +Why is Yazi fast? | Yazi + + + + + + + + + +

Why is Yazi fast?

· 7 min read

This article assumes that you have already used Yazi and are familiar with most of its features.

+

Yazi has undergone significant optimizations to enhance user experience. It is designed entirely as an async program, handling all time-consuming tasks (I/O and CPU) as async tasks in a non-blocking, event-driven manner.

+

Tokio

+

Internally, Yazi uses Tokio as its async runtime: hold on! Tokio's async may not be "truly async" as you might perceive it!

+

Uh, okay. From an application-layer perspective, it indeed is async; however, from a system-level view, there are possibly better solutions.

+

But! This is not the current performance bottleneck for Yazi. Considering Yazi is a TUI app, unlike CLI programs like ls and eza that need to output all files immediately, Yazi has more optimization opportunities at the application-layer:

+
    +
  • For large directories (e.g., 100,000 files), Yazi uses chunked loading, which is unmatched by ls and eza since they must load everything at once.
  • +
  • Yazi also preloads directory file lists in the background, an optimization that ls and eza do not possess.
  • +
+

I must express my gratitude to Tokio for providing an excellent and convenient way to realize these application-layer optimizations.

+

I believe that the benefits brought by these application-level optimizations are more noticeable compared to switching to solutions like io_uring. But I'm open to this and welcome any constructive PR.

+

Here is a relevant discussion on Reddit: https://www.reddit.com/r/rust/comments/16fxr58/comment/k066gmh/

+

Pre-Loading

+

Preloaders are part of Yazi's concurrent plugin system, and the entire pre-loading process is asynchronous and spans multiple threads. This means that preloaders can handle not only expensive IO tasks but also CPU-bound tasks! Here are some built-in preloaders in Yazi:

+
    +
  • Mimetype: The baseline. Yazi uses the file's mime-type as a reference for tasks such as opening, previewing, and style rendering, and internally utilizes file(1) to obtain the file's mime-type. For better performance, Yazi computes them for files of an entire page, rather than for each file individually, and the entire process is chunked to minimize response latency.
  • +
  • Image: To accelerate image previews, Yazi uses a 2-pass process for image files. The first pass is preprocessing, which downscales the image based on user-set max_width/max_height and generates a compressed lossy image as a cache file, significantly reducing file size. The second pass occurs when the user actually switches to the file and downscales it again to fit the terminal size.
  • +
  • Video: To speed up video previews, Yazi pre-converts them into images and goes through the first pass of image processing. When the user needs to display the video, it goes the same second pass.
  • +
  • PDF: Similar to video.
  • +
  • Directory size: Yazi lazily calculates the directory size only when the user sets sorting by file size, as it's a time-consuming operation.
  • +
+

Note: Except for size, all of these are paged, meaning that when you are on the first page, only the first few files will be pre-loaded.

+

For example, if your directory has 1000 files, your terminal height is 10, and you are on the second page, only files 11 to 20 will be processed. This greatly saves resources.

+

Discardable Tasks

+

Every preview task is discardable. When you navigate between files quickly and the previous file's triggered preview task is still not finished, it will be discarded directly, initiating a new task. This promotes resource utilization:

+
    +
  • For I/O tasks like loading directory lists, Tokio's abort is used;
  • +
  • For CPU tasks like code highlighting, an Atomic is used to store a ticket, and it checks if the value changes on each line code highlight. If it changes, indicates that the current context has changed, and the entire highlighting task is discarded.
  • +
  • For I/O and CPU tasks like previewer/preloader plugins, with Lua, Yazi can check whether these tasks are canceled when a specific number of CPU instructions. If canceled, it interrupts the execution of the Lua script immediately, avoiding wasting more I/O and CPU resources.
  • +
+

Code Highlighting

+

Yazi has built-in code highlighting and keeps it to a minimum for all text files: if your terminal height is 10, only the first 10 lines of the file are read and highlighted.

+

Other file managers that rely on external programs like bat need to wait for bat to finish highlighting the entire file before displaying only the first 10 lines.

+

In cases like JSON that require external program jq, Yazi kills jq directly after reading the first 10 lines to avoid unnecessary resource consumption.

+

Since code highlighting is a CPU-bound task, it is distributed among multiple blocking threads, managed through Tokio's spawn_blocking, and is also discardable.

+

Image Preview

+

Yazi not only has built-in code highlighting but also includes image decoding and downscaling - there is likely nothing faster than having it directly built-in. It is also distributed among multiple threads and is discardable.

+

Besides being fast, Yazi's built-in Kitty graphics protocol, Inline images protocol, and Sixel graphics format allow Yazi to finely control when to display or hide images.

+

This ensures that in Yazi, there won't be issues, like images stacking on top of each other, or image escape code breaking the entire screen, when navigating through images quickly, as stdout is locked while outputting these escape codes. This locking happens after all image data is prepared, so it has no impact on performance.

+

Yazi even supports partially erasing content in preview images, which is useful for pop-up components (Input, Select). The image won't overlap the input, and when the pop-up disappears, Yazi redraws the image to complete the erased portion automatically.

+

Async Task Scheduling

+

In Yazi, tasks are prioritized based on their severity automatically. Yazi categorizes tasks into two types:

+
    +
  • Macro tasks: Large and heavy tasks, such as copying large files, typically taking a long time to complete.
  • +
  • Micro tasks: Small and urgent tasks, such as fetching file mime-type, pre-loading images, calculating directory size, and so on.
  • +
+

This is similar to having big and small cores in a CPU; when the big cores are idle, they help with the micro tasks. Yazi defaults to starting 5 micro workers and 10 macro workers, and these numbers can be configured by the user!

+

In addition, Yazi introduces a priority scheduling mechanism. Each task has 3 priority levels: low, normal, and high. High-priority tasks can preempt low-priority tasks, applying to both micro and macro tasks. This increases task concurrency, slowing down HOL blocking caused by queuing execution of sudden requests.

+

For complex tasks like file copying, a combination of micro and macro approaches is employed. Micro is used to gather a list of all files to be copied recursively, allowing users to see the number of tasks and their sizes in advance. Macro, on the other hand, handles the actual copying process.

+

The advantage of task scheduling extends beyond providing ample concurrency for I/O and CPU resources; it also indirectly mitigates the depletion of system resources (such as file handles and CPU) due to sudden task surges.

+

Other optimizations

+

The above optimizations are the most noticeable to users, but behind the scenes, Yazi has also done many other optimizations. Include but are not limited to:

+
    +
  • The re-implemented highly optimized natural sorting algorithm is ~6 times faster than the natord that eza uses in case-insensitive sorting.
  • +
  • Yazi caches the directory state that has already been read, avoiding any unnecessary IO operations.
  • +
  • When a file in a directory changes, it only updates the changed files rather than re-reading the entire directory list.
  • +
  • Merges multiple renders triggered by multiple commands into a single render, avoiding unnecessary CPU consumption.
  • +
  • Frequent updates to components, such as progress bars, are rendered independently, which is no cost compared to a complete render.
  • +
  • The entire plugin system is designed with an asynchronous-first philosophy to avoid blocking the main thread with time-consuming tasks.
  • +
+

TODO

+

I'll find time to continue writing.

+ + \ No newline at end of file diff --git a/docs/configuration/keymap/index.html b/docs/configuration/keymap/index.html new file mode 100644 index 000000000..a6a1c2b81 --- /dev/null +++ b/docs/configuration/keymap/index.html @@ -0,0 +1,273 @@ + + + + + +keymap.toml | Yazi + + + + + + + + + +

keymap.toml

+
note

If you haven't created and used your own configuration file yet, please see Configuration.

+

You can change Yazi's keybindings in your keymap.toml file, which consists of the following 6 layers:

+
    +
  • [manager] - File list.
  • +
  • [tasks] - Task manager.
  • +
  • [select] - Select component. e.g. "open with" for files.
  • +
  • [input] - Input component. e.g. create, rename, etc.
  • +
  • [completion] - Completion component. e.g. "cd" path completion.
  • +
  • [help] - Help menu.
  • +
+

In each layer, there are two attributes: prepend_keymap and append_keymap. +Prepend inserts before the default keybindings, while append inserts after them.

+

Since Yazi selects the first matching key to run, prepend always has a higher priority than default, and append always has a lower priority than default:

+
[manager]
prepend_keymap = [
{ on = [ "<C-a>" ], run = 'my-fev-command1', desc = "Just for test!" },
]
append_keymap = [
{ on = [ "<C-b>" ], run = 'my-fev-command2', desc = "Just for test!" },
]
+

Or in another different style:

+
[[manager.prepend_keymap]]
on = [ "<C-a>" ]
run = 'my-fev-command1'
desc = "Just for test!"

[[manager.prepend_keymap]]
on = [ "<C-b>" ]
run = 'my-fev-command2'

[[manager.append_keymap]]
on = [ "<C-c>" ]
run = 'my-fev-command3'
+

But keep in mind that you can only choose one of them, and it cannot be a combination of the two, as TOML language does not allow this:

+
[manager]
prepend_keymap = [
{ on = [ "<C-a>" ], run = 'my-fev-command1', desc = "Just for test!" },
]

[[manager.prepend_keymap]]
on = [ "<C-b>" ]
run = 'my-fev-command2'
desc = "Just for test!"
+

When you don't need any default and want to fully customize your keybindings, use keymap, for example:

+
[manager]
keymap = [
# This will override all default keybindings, and just keep the two below.
{ on = [ "<C-a>" ], run = 'my-fev-command1', desc = "Just for test!" },
{ on = [ "<C-b>" ], run = 'my-fev-command2', desc = "Just for test!" },
]
+

[manager]

+

escape

+

Cancel find, exit visual mode, clear selected, cancel filter, or cancel search.

+
Argument/OptionDescription
--allDo all of the below.
--findCancel find.
--visualExit visual mode.
--selectClear selected.
--filterCancel filter.
--searchCancel search.
+

Automatically determine the operation by default, and it will only execute the selected operation after specifying the option; multiple options can be stacked.

+

quit

+

Exit the process.

+
Argument/OptionDescription
--no-cwd-fileDon't write the current directory to the cwd-file.
+

close

+

Close the current tab; if it's the last tab, exit the process instead.

+

arrow

+
Argument/OptionDescription
[n] / [n%]Move the cursor up or down by n or n% lines. Use negative values to move up and positive values to move down.
+

leave

+

Go back to the parent directory of the hovered file, or the parent of the current working directory if no file is hovered on.

+

enter

+

Enter the child directory.

+

back

+

Go back to the previous directory.

+

forward

+

Go forward to the next directory.

+

seek

+

Scroll the contents in the preview panel.

+
Argument/OptionDescription
[n]Use negative values to seek up and positive values to seek down.
+

Note that the default scroll keys are Alt + j and Alt + k, make sure your terminal supports Alt key combinations, or you can change them in your keymap.toml.

+

cd

+

Change the current directory.

+
Argument/OptionDescription
[path]The path to change to.
--interactiveUse an interactive UI to input the path.
+

reveal

+

Change the current directory to the parent of specified file, and hover on it.

+
Argument/OptionDescription
[path]The path to reveal.
+

select

+
Argument/OptionDescription
--state=trueSelect the current file.
--state=falseDeselect the current file.
--state=noneDefault, toggle the selection state of the current file.
+

select_all

+

Select all files in the current working directory.

+
Argument/OptionDescription
--state=trueSelect all files
--state=falseDeselect all files
--state=noneDefault, toggle the selection state of all files
+

Note that --state=false will deselect all files in the current working directory.

+

If you have selected files across directories and want to deselect all of them, use escape --select instead.

+

visual_mode

+

Enter visual mode (selection mode).

+
Argument/OptionDescription
--unsetEnter visual mode (unset mode).
+

open

+

Open the selected files using the rules in [open].

+
Argument/OptionDescription
--interactiveOpen the hovered/selected file(s) with an interactive UI to choose the opening method.
--hoveredAlways open the hovered file regardless of the selection state.
+

yank

+

Yank the selected files.

+
Argument/OptionDescription
--cutCut the selected files.
+

unyank

+

Cancel the yank status of files.

+

paste

+

Paste the yanked files.

+
Argument/OptionDescription
--forceOverwrite the destination file if it exists.
--followCopy the file pointed to by a symbolic link, rather than the link itself. Only can be used during copying.
+ +

Create a symbolic link to the yanked files. (This is a privileged action in Windows and must be run as an administrator.)

+
Argument/OptionDescription
--relativeUse a relative path for the symbolic link.
--forceOverwrite the destination file if it exists.
+

remove

+

Move the files to the trash/recycle bin on macOS/Windows. For Linux, it will follow The FreeDesktop.org Trash specification.

+

In the Android platform, you can only use it with the --permanently option, since there lacks the concept of a trash bin.

+
Argument/OptionDescription
--forceDon't show the confirmation dialog, and trash/delete files directly.
--permanentlyPermanently delete the files.
--hoveredAlways remove the hovered file regardless of the selection state.
+

create

+

Create a file or directory. Ends with / (Unix) or \ (Windows) for directories.

+
Argument/OptionDescription
--forceOverwrite the destination file directly if it exists, without showing the confirmation dialog.
+

rename

+

Rename a file or directory, or bulk rename if multiple files are selected ($EDITOR is used to edit the filenames by default).

+
    +
  • --hovered: Always rename the hovered file regardless of the selection state.
  • +
  • --force: Overwrite the destination file directly if it exists, without showing the confirmation dialog.
  • +
  • --empty: Empty a part of the filename. +
      +
    • "stem": Empty the stem. e.g. "foo.jpg" -> ".jpg".
    • +
    • "ext": Empty the extension. e.g. "foo.jpg" -> "foo.".
    • +
    • "dot_ext": Empty the dot and extension. e.g. "foo.jpg" -> "foo".
    • +
    • "all": Empty the whole filename. e.g. "foo.jpg" -> "".
    • +
    +
  • +
  • --cursor: Specify the cursor position of the renaming input box. +
      +
    • "end": The end of the filename.
    • +
    • "start": The start of the filename.
    • +
    • "before_ext": Before the extension of the filename.
    • +
    +
  • +
+

You can also use --cursor with --empty, for example, rename --empty=stem --cursor=start will empty the file's stem, and move the cursor to the start.

+

Which causes the input box content for the filename foo.jpg to be |.jpg, where "|" represents the cursor position.

+

copy

+

Copy the path of files or directories that are selected or hovered on.

+
Argument/OptionDescription
pathCopy the absolute path.
dirnameCopy the path of the parent directory.
filenameCopy the name of the file.
name_without_extCopy the name of the file without the extension.
+

shell

+

Run a shell command.

+
Argument/OptionDescription
[run]Optional, command template to be run.
--confirmWhen the template is provided, run it directly, no input UI was shown.
--blockOpen in a blocking manner. After setting this, Yazi will hide into a secondary screen and display the program on the main screen until it exits. During this time, it can receive I/O signals, which is useful for interactive programs.
--orphanKeep the process running even if Yazi has exited, once specified, the process will be detached from the task scheduling system.
+

You can use the following shell variables in [run]:

+
    +
  • $n (Unix) / %n (Windows): The N-th selected file, starting from 1. e.g. $2 represents the second selected file.
  • +
  • $@ (Unix) / %* (Windows): All selected files, i.e. $1, $2, ..., $n.
  • +
  • $0 (Unix) / %0 (Windows): The hovered file.
  • +
+

hidden

+

Set the visibility of hidden files.

+
Argument/OptionDescription
showShow hidden files.
hideHide hidden files.
toggleDefault, toggle the hidden state.
+

linemode

+

Set the line mode.

+
Argument/OptionDescription
noneNo line mode.
sizeDisplay the size in bytes of the file. Since file sizes are only evaluated when sorting by size, it only works after sort_by = "size" set, and this behavior might change in the future.
permissionsDisplay the permissions of the file.
mtimeDisplay the last modified time of the file.
+

In addition, you can also specify any 1 to 20 characters, and extend it within a UI plugin. +Which means you can implement your own linemode through the plugin by simply overriding the Folder:linemode method.

+

search

+
Argument/OptionDescription
fdSearch files by name using fd.
rgSearch files by content using ripgrep.
noneDefault, cancel the ongoing search.
+

You can search with an empty keyword ("") via fd to achieve flat view.

+
Demonstrate flat view
+

find

+
Argument/OptionDescription
[query]Optional, the query to find for. If not provided, an interactive UI will be used to input with.
--previousFind for the previous occurrence.
--smartUse smart-case when finding, i.e. case-sensitive if the query contains uppercase characters, otherwise case-insensitive.
--insensitiveUse case-insensitive find.
+

find_arrow

+

Move the cursor to the next or previous occurrence.

+
Argument/OptionDescription
--previousMove to the previous occurrence.
+

filter

+
Argument/OptionDescription
[query]Optional, the query to filter for. If not provided, an interactive UI will be used to input with.
--smartUse smart-case when filtering, i.e. case-sensitive if the query contains uppercase characters, otherwise case-insensitive.
--insensitiveUse case-insensitive filter.
+

sort

+
    +
  • [by]: Optional, if not provided, the sort method will be kept unchanged. +
      +
    • "none": Don't sort.
    • +
    • "modified": Sort by last modified time.
    • +
    • "created": Sort by creation time. (Due to a Rust bug, this is not available at the moment, see sxyazi/yazi#356 and rust-lang/rust#108277)
    • +
    • "extension": Sort by file extension.
    • +
    • "alphabetical": Sort alphabetically, e.g. 1.md < 10.md < 2.md
    • +
    • "natural": Sort naturally, e.g. 1.md < 2.md < 10.md
    • +
    • "size": Sort by file size.
    • +
    +
  • +
  • --reverse: Display files in reverse order. --reverse or --reverse=yes to reverse, --reverse=no to cancel.
  • +
  • --dir-first: Display directories first. --dir-first or --dir-first=yes to enable, --dir-first=no to cancel.
  • +
  • --translit: Transliterate filenames for sorting, see sort_translit for details. --translit or --translit=yes to enable, --translit=no to cancel.
  • +
+

tab_create

+
Argument/OptionDescription
[path]Optional, create a new tab using the specified path.
--currentOptional, create a new tab using the current path.
+

If neither [path] nor --current is specified, will use the startup directory to create the tab.

+

tab_close

+
Argument/OptionDescription
[n]Close the tab at position n, starting from 0.
+

tab_switch

+
Argument/OptionDescription
[n]Switch to the tab at position n, starting from 0.
--relativeSwitch to the tab at a position relative to the current tab. The value of n can be negative when using this parameter.
+

tab_swap

+
Argument/OptionDescription
[n]Swap the current tab with the tab at position n, where negative values move the tab forward, and positive values move it backward.
+

tasks_show

+

Show the task manager.

+

help

+

Open the help menu.

+

plugin

+

See Functional plugin.

+

[tasks]

+

close

+

Hide the task manager.

+

arrow

+
Argument/OptionDescription
-1Move the cursor up 1 line.
1Move the cursor down 1 line.
+

inspect

+

Inspect the task (press q to exit the inspect view).

+

cancel

+

Cancel the task.

+

help

+

Open the help menu.

+

plugin

+

See Functional plugin.

+

[select]

+

close

+

Cancel selection.

+
Argument/OptionDescription
--submitSubmit the selection.
+

arrow

+
Argument/OptionDescription
[n]Move the cursor up or down n lines. Negative value for up, positive value for down.
+

help

+

Open the help menu.

+

plugin

+

See Functional plugin.

+

[input]

+

close

+

Cancel input.

+
Argument/OptionDescription
--submitSubmit the input.
+

escape

+

Go back the normal mode, or cancel input.

+

move

+

Move the cursor left or right.

+
Argument/OptionDescription
[n]Move the cursor n characters left or right. Negative value for left, positive value for right.
--in-operatingMove the cursor only if its currently waiting for an operation.
+

backward

+

Move back to the start of the current or previous word.

+

forward

+

Move forward to the start of the next word.

+
Argument/OptionDescription
--end-of-wordMove forward to the end of the current or next word.
+

insert

+

Enter insert mode. This command is only available in normal mode.

+
Argument/OptionDescription
--appendInsert after the cursor.
+

visual

+

Enter visual mode. This command is only available in normal mode.

+

delete

+

Delete the selected characters. This command is only available in normal mode.

+
Argument/OptionDescription
--cutCut the selected characters into clipboard, instead of only deleting them.
--insertDelete and enter insert mode.
+

yank

+

Copy the selected characters. This command is only available in normal mode.

+

paste

+

Paste the copied characters after the cursor. This command is only available in normal mode.

+
Argument/OptionDescription
--beforePaste the copied characters before the cursor.
+

undo

+

Undo the last operation. This command is only available in normal mode.

+

redo

+

Redo the last operation. This command is only available in normal mode.

+

help

+

Open the help menu. This command is only available in normal mode.

+

backspace

+

Delete the character before the cursor. This command is only available in insert mode.

+
Argument/OptionDescription
--underDelete the character under the cursor.
+

kill

+

Kill the specified range of characters. This command is only available in insert mode.

+
Argument/OptionDescription
bolKill backwards to the BOL.
eolKill forwards to the EOL.
backwardKill backwards to the start of the current word.
forwardKill forwards to the end of the current word.
+

plugin

+

See Functional plugin. This command is only available in insert mode.

+

[completion]

+

close

+

Hide the completion menu.

+
Argument/OptionDescription
--submitSubmit the completion.
+

close_input

+

Close the input box. Arguments are the same as [input] close.

+

arrow

+
Argument/OptionDescription
[n]Move the cursor up or down n lines. Negative value for up, positive value for down.
+

help

+

Open the help menu.

+

plugin

+

See Functional plugin.

+

[help]

+

close

+

Hide the help menu.

+

escape

+

Clear the filter, or hide the help menu.

+

arrow

+
Argument/OptionDescription
[n]Move the cursor up or down n lines. Negative value for up, positive value for down.
+

filter

+

Apply a filter for the help items.

+

plugin

+

See Functional plugin.

+ + \ No newline at end of file diff --git a/docs/configuration/overview/index.html b/docs/configuration/overview/index.html new file mode 100644 index 000000000..f3e69a0f9 --- /dev/null +++ b/docs/configuration/overview/index.html @@ -0,0 +1,48 @@ + + + + + +Configuration | Yazi + + + + + + + + + +

Configuration

+

There are three configuration files for Yazi:

+ +

You can find the default configuration files on the latest tag https://github.com/sxyazi/yazi/tree/latest/yazi-config/preset.

+

To override any of the defaults, begin by creating the corresponding file (from the directory linked above) to:

+
    +
  • ~/.config/yazi/ on Unix-like systems.
  • +
  • C:\Users\USERNAME\AppData\Roaming\yazi\config\ on Windows.
  • +
+

For example, to change the visible status of hidden files, start by creating a yazi.toml file to:

+
    +
  • ~/.config/yazi/yazi.toml on Unix-like systems.
  • +
  • C:\Users\USERNAME\AppData\Roaming\yazi\config\yazi.toml on Windows.
  • +
+

Then copy the required part into it, here is show_hidden:

+
# yazi.toml
[manager]
show_hidden = true
+

Configuration mixing

+

The options from your configuration file will be used to override the default. However, for key bindings, if you don't want to override the default directly:

+
# keymap.toml
[manager]
keymap = [
# ...
]
+

And instead want to customize your keys upon the default, you can use prepend_* or append_* directories to prepend or append them to the default (See keymap.toml for details):

+
# keymap.toml
[manager]
prepend_keymap = [
# ...
]
append_keymap = [
# ...
]
+

They are also available for open, icon, previewer, and preloader rules.

+

Custom config directory

+

You can change the Yazi configuration directory by exporting the YAZI_CONFIG_HOME environment variable. For example:

+
env "YAZI_CONFIG_HOME=~/.config/yazi-alt" yazi
+

will start Yazi with ~/.config/yazi-alt as the configuration directory, and can have its own yazi.toml, keymap.toml, init.lua, etc. files within it.

+ + \ No newline at end of file diff --git a/docs/configuration/theme/index.html b/docs/configuration/theme/index.html new file mode 100644 index 000000000..1861f3eeb --- /dev/null +++ b/docs/configuration/theme/index.html @@ -0,0 +1,201 @@ + + + + + +theme.toml | Yazi + + + + + + + + + +

theme.toml

+
tip

If you're looking for ready-made themes and don't want to create one yourself, check out the yazi-rs/flavors repository.

+

Types

+

Color

+

A color. It can be in Hex format with RGB values, such as #484D66. Or can be one of the following 17 values:

+
    +
  • reset
  • +
  • black
  • +
  • white
  • +
  • red
  • +
  • lightred
  • +
  • green
  • +
  • lightgreen
  • +
  • yellow
  • +
  • lightyellow
  • +
  • blue
  • +
  • lightblue
  • +
  • magenta
  • +
  • lightmagenta
  • +
  • cyan
  • +
  • lightcyan
  • +
  • gray
  • +
  • darkgray
  • +
+

Style

+

Appears in a format similar to { fg = "#e4e4e4", bg = "black", ... }, and supports the following properties:

+
    +
  • fg (Color): Foreground color
  • +
  • bg (Color): Background color
  • +
  • bold (Boolean): Bold
  • +
  • dim (Boolean): Dim (not supported by all terminals)
  • +
  • italic (Boolean): Italic
  • +
  • underline (Boolean): Underline
  • +
  • blink (Boolean): Blink
  • +
  • blink_rapid (Boolean): Rapid blink
  • +
  • reversed (Boolean): Reversed foreground and background colors
  • +
  • hidden (Boolean): Hidden
  • +
  • crossed (Boolean): Crossed out
  • +
+

[flavor]

+ +

[manager]

+
    +
  • cwd (Style): CWD text style.
  • +
+

Hovered:

+
    +
  • hovered (Style): Hovered file style.
  • +
  • preview_hovered (Style): Hovered file style, in the preview pane.
  • +
+

Find: The find feature

+
    +
  • find_keyword (Style): Style of the highlighted portion in the filename.
  • +
  • find_position (Style): Style of current file location in all found files to the right of the filename.
  • +
+

Marker: Color block on the left side separator line in the filename.

+
    +
  • marker_selected (Style): Selected file marker style.
  • +
  • marker_copied (Style): Copied file marker style.
  • +
  • marker_cut (Style): Cut file marker style.
  • +
+

Tab: Tab bar

+
    +
  • tab_active (Style): Active tab style.
  • +
  • tab_inactive (Style): Inactive tab style.
  • +
  • tab_width (Number): Tab maximum width. When set to a value greater than 2, the remaining space will be filled with the tab name, which is current directory name.
  • +
+

Border:

+
    +
  • border_symbol (String): Border symbol. e.g. "│".
  • +
  • border_style (Style): Border style.
  • +
+

Highlighting: The built-in syntax highlighting feature

+
    +
  • +

    syntect_theme (String): For example, "~/Downloads/Dracula.tmTheme". Only available in the user's theme.toml and cannot be used in flavor.toml.

    +

    Yazi's builtin code highlighting themes, which are paths to .tmTheme files. You can find them on GitHub using "tmTheme" as a keyword

    +
  • +
+

[status]

+
    +
  • separator_open (String): Opening separator symbol. e.g. "[".
  • +
  • separator_close (String): Closing separator symbol. e.g. "]".
  • +
  • separator_style (Style): Separator style.
  • +
+

Mode

+
    +
  • mode_normal (Style): Normal mode style.
  • +
  • mode_select (Style): Select mode style.
  • +
  • mode_unset (Style): Unset mode style.
  • +
+

Progress

+
    +
  • progress_label (Style): Progress label style.
  • +
  • progress_normal (Style): Style of the progress bar when it is not in an error state.
  • +
  • progress_error (Style): Style of the progress bar when an error occurs.
  • +
+

Permissions

+
    +
  • permissions_t (Style): File type.
  • +
  • permissions_r (Style): Read permission.
  • +
  • permissions_w (Style): Write permission.
  • +
  • permissions_x (Style): Execute permission.
  • +
  • permissions_s (Style): - separator.
  • +
+

[select]

+
    +
  • border (Style): Border style.
  • +
  • active (Style): Selected item style.
  • +
  • inactive (Style): Unselected item style.
  • +
+

[input]

+
    +
  • border (Style): Border style.
  • +
  • title (Style): Title style.
  • +
  • value (Style): Value style.
  • +
  • selected (Style): Selected value style.
  • +
+

[completion]

+
    +
  • border (Style): Border style.
  • +
  • active (Style): Selected item style.
  • +
  • inactive (Style): Unselected item style.
  • +
+

Icons

+
    +
  • icon_file (String): File icon.
  • +
  • icon_folder (String): Folder icon.
  • +
  • icon_command (String): Command icon.
  • +
+

[tasks]

+
    +
  • border (Style): Border style.
  • +
  • title (Style): Title style.
  • +
  • hovered (Style): Hovered item style.
  • +
+

[which]

+
    +
  • cols (Number): Number of columns. The value can be 1, 2, 3.
  • +
  • mask (Style): Mask style.
  • +
  • cand (Style): Candidate key style.
  • +
  • rest (Style): Rest key style.
  • +
  • desc (Style): Description style.
  • +
  • separator (String): Separator symbol. e.g. " -> ".
  • +
  • separator_style (Style): Separator style.
  • +
+

[help]

+
    +
  • on (Style): Key column style.
  • +
  • run (Style): Command column style.
  • +
  • desc (Style): Description column style.
  • +
  • hovered (Style): Hovered item style.
  • +
  • footer (Style): Footer style.
  • +
+

[filetype]

+

Set file list item display styles for specific file types, supporting matching by name and mime-type:

+
[filetype]
rules = [
# Images
{ mime = "image/*", fg = "yellow" },

# Videos
{ mime = "video/*", fg = "magenta" },
{ mime = "audio/*", fg = "magenta" },

# Empty files
{ mime = "inode/x-empty", fg = "cyan" },

# Orphan symbolic links
{ name = "*", is = "orphan", fg = "red" },

# ...

# Fallback
# { name = "*", fg = "white" },
{ name = "*/", fg = "blue" }
]
+

Each rule supports complete Style properties. There are two special rule:

+
    +
  • name = "*" matches all files.
  • +
  • name = "*/" matches all directories.
  • +
+

You can restrict the specific type of files through is, noting that it must be used with either name or mime. It accepts the following values:

+
    +
  • block: Block device
  • +
  • char: Char device
  • +
  • exec: Executable
  • +
  • fifo: FIFO
  • +
  • link: Symbolic link
  • +
  • orphan: Orphan symbolic link
  • +
  • sock: Socket
  • +
  • sticky: File with sticky bit set
  • +
+

[icon]

+

Display icon based on the first matched rule.

+

You can prepend or append rules to the default through prepend_rules and append_rules, see Configuration mixing for details.

+
[icon]
prepend_rules = [
{ name = "*.rs" , text = "" },
{ name = "Desktop/", text = "" },
# ...

# Icon with a color
{ name = "*.lua", text = "", fg = "#51a0cf" },

# You can also use `is` rule, just like `[filetype]` section
# Orphan symbolic links
{ name = "*", is = "orphan", text = "" },
]

append_rules = [
# My fallback icons
{ name = "*" , text = "" },
{ name = "*/", text = "" },
]
+

Or, use rules to rewrite the entire default rules:

+
[icon]
rules = [
# ...Some rules
]
+

End with / for directories, so wildcard rule (* or */) can be used for fallback matching all files or directories.

+

If your append_rules contains wildcard rules, they will always take precedence over the default wildcard rules as the fallback.

+ + \ No newline at end of file diff --git a/docs/configuration/yazi/index.html b/docs/configuration/yazi/index.html new file mode 100644 index 000000000..209cc8951 --- /dev/null +++ b/docs/configuration/yazi/index.html @@ -0,0 +1,313 @@ + + + + + +yazi.toml | Yazi + + + + + + + + + +

yazi.toml

+
note

If you haven't created and used your own configuration file yet, please see Configuration.

+

[manager]

+

ratio

+

Manager layout by ratio, 3-element array.

+
    +
  • [1, 4, 3]: 1/8 width for parent, 4/8 width for current, 3/8 width for preview
  • +
+

sort_by

+

File sorting method.

+
    +
  • "none": Don't sort.
  • +
  • "modified": Sort by last modified time.
  • +
  • "created": Sort by creation time. (Due to a Rust bug, this is not available at the moment, see sxyazi/yazi#356 and rust-lang/rust#108277)
  • +
  • "extension": Sort by file extension.
  • +
  • "alphabetical": Sort alphabetically, e.g. 1.md < 10.md < 2.md
  • +
  • "natural": Sort naturally, e.g. 1.md < 2.md < 10.md
  • +
  • "size": Sort by file size.
  • +
+

sort_sensitive

+

Sort case-sensitively.

+
    +
  • true: Case-sensitive
  • +
  • false: Case-insensitive
  • +
+

sort_reverse

+

Display files in reverse order.

+
    +
  • true: Reverse order
  • +
  • false: Normal order
  • +
+

sort_dir_first

+

Display directories first.

+
    +
  • true: Directories first
  • +
  • false: Respects sort_by and sort_reverse only
  • +
+

sort_translit

+

Transliterate filenames for sorting (i.e. replaces  as A, Æ as AE, etc.), only available if sort_by = "natural".

+

This is useful for files that contain Hungarian characters. (Currently requires nightly builds.)

+
    +
  • true: Enabled
  • +
  • false: Disabled
  • +
+

linemode

+

Line mode: display information associated with the file on the right side of the file list row.

+
    +
  • "none": No line mode.
  • +
  • "size": Display the size in bytes of the file. Since file sizes are only evaluated when sorting by size, it only works after sort_by = "size" set, and this behavior might change in the future.
  • +
  • "permissions": Display the permissions of the file.
  • +
  • "mtime": Display the last modified time of the file.
  • +
+

In addition, you can also specify any 1 to 20 characters, and extend it within a UI plugin. +Which means you can implement your own linemode through the plugin by simply overriding the Folder:linemode method.

+

show_hidden

+

Show hidden files.

+
    +
  • true: Show
  • +
  • false: Do not show
  • +
+ +

Show the path of the symlink file point to, after the filename.

+
    +
  • true: Show
  • +
  • false: Do not show
  • +
+

scrolloff

+

The number of files to keep above and below the cursor when moving through the file list.

+

If the value is larger than half the screen height (e.g. 200), the cursor will be centered.

+

mouse_events

+

Array of strings, the types of mouse events can be received by the plugin system, available values:

+
    +
  • "click": Mouse click
  • +
  • "scroll": Mouse vertical scroll
  • +
  • "touch": Mouse horizontal scroll
  • +
  • "move": Mouse move
  • +
  • "drag": Mouse drag (Some terminals do not support this)
  • +
+

Currently needs the nightly version of Yazi.

+

[preview]

+

tab_size

+

Tab width.

+

max_width

+

Maximum preview width for images. Do a yazi --clear-cache to take effect after changing this.

+

This value is also used for preloading images; the larger it is, the larger the image cache generated, which consumes more CPU.

+

max_height

+

Maximum preview height for images. Do a yazi --clear-cache to take effect after changing this.

+

This value is also used for preloading images; the larger it is, the larger the image cache generated, which consumes more CPU.

+

cache_dir

+

The system cache directory is used by default, and the cached files will go away on a reboot automatically.

+

If you want to make it more persistent, you can specify the cache directory manually as an absolute path.

+

image_filter

+

The filter used on image downscaling, available values:

+
    +
  • "nearest" - Nearest Neighbor
  • +
  • "triangle" - Linear Triangle
  • +
  • "catmull-rom" - Catmull-Rom
  • +
  • "lanczos3" - Lanczos with window 3
  • +
+

They are arranged in order from fast to slow, and from poor to good quality - Lanczos3 provides the highest quality but is also the slowest.

+

See the example and benchmark here: https://docs.rs/image/0.24.8/image/imageops/enum.FilterType.html#examples

+

image_quality

+

Quality on pre-caching images, range 50-90.

+

The larger value, the better image quality, but slower with more CPU consumption, and generates larger cache files that occupy more storage space.

+

sixel_fraction

+

Sixel is a very old image format that only supports 256 colors. For better image preview, Yazi trains a neural network for each image to find the most representative colors.

+

This value determines the number of samples used during the training, range 10-20. A smaller value produces better results but is also slower.

+

ueberzug_scale / ueberzug_offset

+
    +
  • ueberzug_scale (Float): Ueberzug image scaling ratio, scale>1 for enlargement, scale<1 for reduction. For example, 0.5 indicates a reduction to half.
  • +
  • ueberzug_offset ([x, y, width, height]): Ueberzug image offset, in cell units. For example, [0.5, 0.5, -0.5, -0.5] indicates that the image is offset by half a cell in both directions, and the width and height are reduced by half a cell.
  • +
+

This is useful for solving a bug of Überzug++ image size calculation.

+

If your monitor has a 2.0 scale factor, and is running on Wayland under Hyprland, you may need to set ueberzug_scale: 0.5, and adjust the value of ueberzug_offset according to your case, to offset this issue.

+

[opener]

+

Configure available openers that can be used in [open], for example:

+
[opener]
edit = [
{ run = 'nvim "$@"', block = true },
]
play = [
{ run = 'mpv "$@"', orphan = true, for = "unix" },
]
open = [
{ run = 'xdg-open "$@"', desc = "Open" },
]
# ...
+

Available options are as follows:

+
    +
  • run: The command to open the selected files, with the following variables available: +
      +
    • $n (Unix) / %n (Windows): The N-th selected file, starting from 1. e.g. $2 represents the second selected file.
    • +
    • $@ (Unix) / %* (Windows): All selected files, i.e. $1, $2, ..., $n.
    • +
    • $0 (Unix) / %0 (Windows): The hovered file.
    • +
    +
  • +
  • block: Open in a blocking manner. After setting this, Yazi will hide into a secondary screen and display the program on the main screen until it exits. During this time, it can receive I/O signals, which is useful for interactive programs.
  • +
  • orphan: Keep the process running even if Yazi has exited, once specified, the process will be detached from the task scheduling system.
  • +
  • desc: Description of the opener, display in interactive components, such as "Open with" and help menu.
  • +
  • for: The opener is only available on this system; if not specified, it's available on all systems. Available values: +
      +
    • unix: Linux and macOS
    • +
    • windows: Windows
    • +
    • linux: Linux
    • +
    • macos: macOS
    • +
    +
  • +
+

[open]

+

Set rules for opening specific files. You can prepend or append rules to the default through prepend_rules and append_rules (See Configuration mixing for details):

+
[open]
prepend_rules = [
{ name = "*.json", use = "edit" },

# Multiple openers for a single rule
{ name = "*.html", use = [ "open", "edit" ] },
]
append_rules = [
{ name = "*", use = "my-fallback" },
]
+

If your append_rules contains wildcard rules, they will always take precedence over the default wildcard rules as the fallback (Currently requires nightly builds).

+

Or, use rules to rewrite the entire default rules:

+
[open]
rules = [
{ mime = "text/*", use = "edit" },
{ mime = "video/*", use = "play" },

# { mime = "application/json", use = "edit" },
{ name = "*.json", use = "edit" },

# Multiple openers for a single rule
{ name = "*.html", use = [ "open", "edit" ] },
]
+

Available rule options are as follows:

+
    +
  • name: Glob expression for matching the file name. Case insensitive by default, add \s to the beginning to make it sensitive.
  • +
  • mime: Glob expression for matching the mime-type. Case insensitive by default, add \s to the beginning to make it sensitive.
  • +
  • use: Opener name corresponding to the names in the [opener] section.
  • +
+

With that:

+
    +
  • If you're using the default mime-type preloader, it retrieves the mime-type of a file through file -bL --mime-type /path/to/file command.
  • +
  • If use is an array containing multiple openers, all commands in these openers will be merged. open will run the first of these commands; open --interactive will list all of these commands in the "open with" menu.
  • +
+

[tasks]

+

micro_workers

+

Maximum number of concurrent micro-tasks.

+

macro_workers

+

Maximum number of concurrent macro-tasks.

+

bizarre_retry

+

Maximum number of retries when a bizarre failure occurs.

+

suppress_preload

+

Exclude the preload tasks created by the system from the task list, do not report their progress, and do not consider them on app exit confirming.

+

image_alloc

+

Maximum memory allocation limit in bytes for decoding a single image, 0 for unlimited.

+

image_bound

+

An array of [width, height], maximum image size (in pixels) for decoding a single image, and 0 for unlimited.

+

[plugin]

+

previewers

+

You can prepend or append new preview rules to the default previewers under [plugin] by prepend_previewers and append_previewers, see Configuration mixing for details. +Here are the available options for a single rule:

+
    +
  • name (String): Glob expression for matching the file name. Case insensitive by default, add \s to the beginning to make it sensitive.
  • +
  • mime (String): Glob expression for matching the mime-type. Case insensitive by default, add \s to the beginning to make it sensitive.
  • +
  • run (String): The name of the Lua plugin to be ran.
  • +
  • sync (Boolean): Whether to run in the sync context, default is false.
  • +
+
[plugin]
prepend_previewers = [
# HEIC previewer
{ mime = "image/heic", run = "heic" },
]

append_previewers = [
# My fallback previewer
{ name = "*" , run = "binary" },
]
+

If your append_previewers contains wildcard name rules ("*" or "*/"), they will always take precedence over the default wildcard rules as the fallback.

+

Yazi comes with the these previewer plugins:

+
    +
  • folder: bridge between the Yazi file system and the preview
  • +
  • code: bridge between built-in code highlighting and the preview, providing async concurrent rendering
  • +
  • json: bridge between jq and the preview, providing async concurrent rendering
  • +
  • noop: no operation
  • +
  • image: presentation layer of built-in image preview, offering mixed preview capabilities
  • +
  • video: bridge between ffmpegthumbnailer and the preview, offering mixed preview capabilities
  • +
  • pdf: bridge between pdftoppm and the preview, offering mixed preview capabilities
  • +
  • archive: bridge between unar and the preview, offering mixed preview and concurrent rendering capabilities
  • +
+

If you want to create your own previewer, see Previewer API.

+

preloaders

+

You can prepend or append new preview rules to the default preloaders under [plugin] by prepend_preloaders and append_preloaders, see Configuration mixing for details. +Here are the available options for a single rule:

+
    +
  • name (String): Glob expression for matching the file name. Case insensitive by default, add \s to the beginning to make it sensitive.
  • +
  • mime (String): Glob expression for matching the mime-type. Case insensitive by default, add \s to the beginning to make it sensitive.
  • +
  • cond (String): Conditional expression – Only rules that meet this condition and satisfy either the name or mime will be applied. For example, A & B means A and B, and A | !B means A or not B. Here are the available factors: +
      +
    • mime: This file has a mime-type.
    • +
    +
  • +
  • run (String): The name of the Lua plugin to be ran.
  • +
  • multi (Boolean): Whether to preload multiple files at once.
  • +
  • prio (String): Preload priority, low, normal or high. The default is normal if not specified.
  • +
+
[plugin]
prepend_preloaders = [
# HEIC preloader
{ mime = "image/heic", run = "heic" },
]
+

Yazi comes with the these preloader plugins:

+
    +
  • mime: preloads mime-type of files in chunks
  • +
  • noop: no operation
  • +
  • image: preloads and caches images
  • +
  • video: preloads and caches videos
  • +
  • pdf: preloads and caches PDFs.
  • +
+

If you want to create your own preloader, see Preloader API.

+

[input]

+

You can customize the title and position of each input. As for position, it consists of two parts: Origin and Offset.

+

The origin is the top-left corner of the input, and the offset is the increment from this origin. Together, they determine the area of the input on the screen.

+

Origin

+

For the origin, the following values are available:

+
    +
  • top-left
  • +
  • top-center
  • +
  • top-right
  • +
  • bottom-left
  • +
  • bottom-center
  • +
  • bottom-right
  • +
  • center
  • +
  • hovered (the cursor position of hovered file)
  • +
+

Offset

+

As for the offset, it's a 4-element tuple: (x, y, width, height).

+

Placeholder

+

Some inputs have special placeholders that will be replaced with actual content on display:

+
    +
  • +

    trash_title: String

    +
      +
    • {n}: Number of files to be trashed
    • +
    • {s}: "s" if n > 1, otherwise ""
    • +
    +
  • +
  • +

    delete_title: String

    +
      +
    • {n}: Number of files to be deleted
    • +
    • {s}: "s" if n > 1, otherwise ""
    • +
    +
  • +
  • +

    find_title: [String, String]

    +

    It's a tuple of 2-element: first for "Find next", second for "Find previous".

    +
  • +
  • +

    search_title: String

    +
      +
    • {n}: Name of the current search engine
    • +
    +
  • +
  • +

    shell_title: [String, String]

    +

    It's a tuple of 2-element: first for "Non-blocking shell", second for "Blocking shell".

    +
  • +
  • +

    quit_title: String

    +
      +
    • {n}: Number of tasks are running
    • +
    • {s}: "s" if n > 1, otherwise ""
    • +
    +
  • +
+

[select]

+

As same as the [input] section.

+

[which]

+

sort_by

+

Candidate sorting method.

+
    +
  • "none": Don't sort.
  • +
  • "key": Sort by key.
  • +
  • "desc: Sort by description.
  • +
+

sort_sensitive

+

Sort case-sensitively.

+
    +
  • true: Case-sensitive
  • +
  • false: Case-insensitive
  • +
+

sort_reverse

+

Display candidates in reverse order.

+
    +
  • true: Reverse order
  • +
  • false: Normal order
  • +
+ + \ No newline at end of file diff --git a/docs/dds/index.html b/docs/dds/index.html new file mode 100644 index 000000000..f861ed143 --- /dev/null +++ b/docs/dds/index.html @@ -0,0 +1,140 @@ + + + + + +DDS | Yazi + + + + + + + + + +

DDS

+
warning

This is a new feature that will be released in Yazi 0.2.5 and currently requires the latest code.

Document is still being written...

+

DDS (Data Distribution Service) is designed to achieve communication and state synchronization between multiple Yazi instances, as well as state persistence. It is built on a client-server architecture but does not require running additional server processes.

+

It deeply integrates with a publish-subscribe model based on the Lua API.

+

Concept

+
    +
  • Local: the current instance, that is, the current Yazi process.
  • +
  • Remote: instances other than the current instance.
  • +
+

Usage

+

The DDS has three usage:

+ +

Command-line tool

+

You can send a message to the remote instance(s) using ya pub, with the two required receiver and kind arguments consistent with ps.pub_to():

+
ya pub <receiver> <kind> --str "string body"
ya pub <receiver> <kind> --json '{"key": "json body"}'

# If you're in a Yazi subshell,
# you can obtain the ID of the current instance through `$YAZI_ID`.
ya pub "$YAZI_ID" dds-cd --str "/root"
+

You can also send a static message to all remote instances using ya pub-static, with its severity and kind arguments consistent with ps.pub_static():

+
ya pub-static <severity> <kind> --str "string body"
ya pub-static <severity> <kind> --json '{"key": "json body"}'
+

For greater convenience in integrating within the command-line environment, they support two body formats:

+
    +
  • String: a straightforward format, suitable for most scenarios, without the need for additional tools for encoding
  • +
  • JSON: for advanced needs, support for types and more complex data can be represented through the JSON format
  • +
+

Note that ya is a standalone CLI program introduced since Yazi 0.2.5, it might conflict with the shell wrapper you setup before, see Introduce a standalone CLI program for details.

+

Real-time stdout reporting

+

You can specify the --local-events and --remote-events options when starting Yazi:

+
# Local events
yazi --local-events=kind1,kind2
# Remote events
yazi --remote-events=kind1,kind2
# Both local and remote events
yazi --local-events=kind1,kind2 --remote-events=kind1,kind2
+

When an event of the specified kind is received, it will be output to stdout:

+
hover,0,200,{"tab":0,"url":"/root/Downloads"}
cd,0,100,{"tab":0,"url":"/root/Downloads"}
+

One payload per line, each payload contains the following fields separated by commas:

+
FieldDescription
kindThe kind of this message
receiverThe remote instance ID that receives this message; if it's 0, broadcasts to all remote instances
sender / severityThe sender of this message if greater than 65535; otherwise, the severity of this static message
bodyThe body of this message, which is a JSON string
+

This provides the ability to report Yazi's internal events in real-time, which is useful for external tool integration (such as Neovim), as they will be able to subscribe to the events triggered by the user behavior.

+

Builtin kinds

+

cd - change directory

+

sub() callback body:

+
{
tab = 0
}
+

sub_remote() callback body:

+
{
tab = 0,
url = Url("/root/Downloads")
}
+

--local-events stdout payload:

+
cd,1711957542289249,1711957542289249,{"tab":0,"url":"/root/Downloads"}
+

--remote-events stdout payload:

+
cd,0,100,{"tab":0,"url":"/root/Downloads"}
+

hover - hover on a file

+

sub() callback body:

+
{
tab = 0
}
+

sub_remote() callback body:

+
{
tab = 0,
url = Url("/root/foo.txt")
}
+

--local-events stdout payload:

+
hover,1711957283332834,1711957283332834,{"tab":0,"url":"/root/foo.txt"}
+

--remote-events stdout payload:

+
hover,0,200,{"tab":0,"url":"/root/foo.txt"}
+

rename - rename a file

+

sub() / sub_remote() callback body:

+
{
tab = 0,
from = Url("/root/foo.txt"),
to = Url("/root/bar.txt"),
}
+

--local-events stdout payload:

+
rename,1711957878076791,1711957878076791,{"tab":0,"from":"/root/foo.txt","to":"/root/bar.txt"}
+

--remote-events stdout payload:

+
rename,0,1711957878076791,{"tab":0,"from":"/root/foo.txt","to":"/root/bar.txt"}
+

bulk - bulk rename files

+
note

This kind currently requires the nightly version of Yazi.

+

sub() / sub_remote() callback body:

+
-- Since `Iterator` implementing `__pairs()`,
-- you can iterate over all URL pairs using `pairs(body)`
Iterator {
__len = function(self)
-- Returns the number of files changed
end,
__pairs = function(self)
-- Returns (Url("/path/from.txt"), Url("/path/to.txt"))
end
}
+

--local-events stdout payload:

+
bulk,1711957542289249,1711957542289249,{"changes":{"/path/from.txt":"/path/to.txt"}}
+

--remote-events stdout payload:

+
bulk,0,1711957542289249,{"changes":{"/path/from.txt":"/path/to.txt"}}
+

yank - yank files

+

sub() callback body:

+
{}
+

sub_remote() callback body:

+
-- Since `Iterator` implementing `__index()`, you can access the yanked URLs by index,
-- such as `body[1]`, or iterate over all URLs using `ipairs(body)`
Iterator {
cut = false,
__len = function(self)
-- Returns the number of URLs yanked
end,
__index = function(self, idx)
-- Returns the URL at the given index
end
}
+

--local-events stdout payload:

+
yank,1711960311454247,1711960311454247,{"cut":false,"urls":["/root/foo.txt","/root/bar.txt"]}
+

--remote-events stdout payload:

+
yank,0,300,{"cut":false,"urls":["/root/foo.txt","/root/bar.txt"]}
+

move - move files

+

sub() callback body:

+
{
items = {
{ from = Url("/root/foo.txt"), to = Url("/root/bar.txt") },
-- ...
}
}
+

sub_remote() callback body:

+
{
items = {
{ from = Url("/root/foo.txt"), to = Url("/root/bar.txt") },
-- ...
}
}
+

--local-events stdout payload:

+
move,1711957542289249,1711957542289249,{"items":[{"from":"/root/foo.txt","to":"/root/bar.txt"}]}
+

--remote-events stdout payload:

+
move,0,1711957542289249,{"items":[{"from":"/root/foo.txt","to":"/root/bar.txt"}]}
+

trash - trash files

+

sub() callback body:

+
{
urls = {
Url("/root/foo.txt"),
-- ...
}
}
+

sub_remote() callback body:

+
{
urls = {
Url("/root/foo.txt"),
-- ...
}
}
+

--local-events stdout payload:

+
trash,1711957542289249,1711957542289249,{"urls":["/root/foo.txt"]}
+

--remote-events stdout payload:

+
trash,0,1711957542289249,{"urls":["/root/foo.txt"]}
+

delete - delete files

+

sub() callback body:

+
{
urls = {
Url("/root/foo.txt"),
-- ...
}
}
+

sub_remote() callback body:

+
{
urls = {
Url("/root/foo.txt"),
-- ...
}
}
+

--local-events stdout payload:

+
delete,1711957542289249,1711957542289249,{"urls":["/root/foo.txt"]}
+

--remote-events stdout payload:

+
delete,0,1711957542289249,{"urls":["/root/foo.txt"]}
+

hi - client handshake

+

System reserves kind.

+

hey - server handshake

+

System reserves kind.

+

bye

+

System reserves kind.

+

Builtin plugins

+

dds.lua

+

This plugin provides the dds-cd event kind, which accepts a string URL and changes the CWD to that URL when it is received.

+

This is useful for synchronizing the CWD of the current Yazi instance when exiting from a subshell:

+
# Change Yazi's CWD to PWD on subshell exit
if [[ -n "$YAZI_ID" ]]; then
function _yazi_cd() {
ya pub "$YAZI_ID" dds-cd --str "$PWD"
}
add-zsh-hook zshexit _yazi_cd
fi
+

Source code: https://github.com/sxyazi/yazi/blob/main/yazi-plugin/preset/plugins/dds.lua

+

session.lua

+

This plugin provides cross-instance yank ability, which means you can yank files in one instance, and then paste them in another instance.

+

To enable it, add these lines to your init.lua:

+
require("session"):setup {
sync_yanked = true,
}
+

Source code: https://github.com/sxyazi/yazi/blob/main/yazi-plugin/preset/plugins/session.lua

+ + \ No newline at end of file diff --git a/docs/faq/index.html b/docs/faq/index.html new file mode 100644 index 000000000..7515203a3 --- /dev/null +++ b/docs/faq/index.html @@ -0,0 +1,56 @@ + + + + + +Frequently Asked Questions | Yazi + + + + + + + + + +

Frequently Asked Questions

+

Why is Yazi fast?

+

See Why is Yazi fast?.

+

Why can't I edit text files?

+

Yazi defaults to using $EDITOR as the text editor for Linux/macOS. +If you are unable to edit files, please check your Bash/Zsh/Fish configuration file for settings like export EDITOR=vim. You can also change Yazi's text opener from $EDITOR to vim/nvim/nano.

+

For Windows, there is no concept of $EDITOR, so users need to modify the text opener as needed.

+

Why can't I open/edit/preview files on Windows?

+

Please make sure you have set the YAZI_FILE_ONE environment variable as per the Windows Requirements.

+

Why is my text color not distinct?

+

Yazi's default theme uses base16 colors to match the user's terminal theme as closely as possible.

+

Unfortunately, this cannot cater to all users, and even the colors needed by the same user in light/dark mode can vary, not to mention that some terminals have poor default color schemes, like this #149 (comment).

+

So, please use a Yazi flavor that matches your terminal theme. Of course, if you find a color that better covers most terminals, feel free to create a PR!

+

Why can't "Open" and "Enter" be a single command?

+

The decision to separate enter and open commands was intentional.

+

Yazi will be adding the ability to treat an archive as a directory in the future, allowing direct operations on the files inside.

+

An archive is a file, so it's "openable", but it's also "enterable" as a directory; so the user can choose the action they want to do.

+

This is true for a actual directory as well - a directory can be entered (in Yazi), or opened (in programs like VSCode or desktop file managers).

+

If you truly don't need to distinguish between them, use this smart-enter tip.

+

Why do my icons shrink in kitty, and enlarge when scrolling?

+

TL;DR: Use a flavor for Yazi, https://github.com/yazi-rs/flavors

+

This might be a bug in kitty (or feature? I don't know). In kitty, you have to add a style to file list items (like foreground color) to make the icons match the text size. However, Yazi's default theme can't add that color, because it can't predict whether the user's terminal has a white background with black text, or a black background with white text.

+

So it inherits the default terminal font color. This causes the icon size issue, and I've only found this problem in kitty - other terminals don't have it. Therefore, please use a Yazi flavor for the kitty terminal.

+

Why is "orphan" set to false by default?

+

orphan=true is an emergency exit; once specified, your task will not be managed by Yazi.

+

For instance, if you realize that you've used unzip on the wrong files, and you need to cancel it, with orphan=false, you can easily do that by pressing x in Yazi's task manager. +However, with orphan=true, you can only return to the shell to terminate it.

+

On the other hand, tasks with orphan=false are scheduled through the Yazi task system. It can limit the number of concurrent tasks (configurable by the user), to prevent system resource depletion, such as when you're extracting 100 files.

+

I don't like nerd‐fonts!

+

Yazi has nerd-fonts enabled by default, it looks really cool!

+

If you don't want to use it and want things to be calm, sure, you can modify these icons as much as you want in theme.toml:

+
[status]
separator_open = ""
separator_close = ""

[icon]
rules = []
+

The above code changed all icons to "", and the whole world went quiet, nice!

+

Why doesn't the XXX feature exist?

+

Yazi is a new project, with less than 3 months (as of Sep 20, 2023) since its first commit, and some features are still heavily being developed.

+

If you find that the XXX feature is missing, please check if it has already been mentioned in the Feature Requests and search for related issues. If not, you can create a new request.

+

Our time slices are limited, and they are allocated to what we consider critical issues, such as bug fixes and making Yazi stable, which includes addressing proposals that could potentially lead to broken changes in the future.

+

Most maintainers have their full-time jobs, so please understand if your request isn't implemented promptly. Of course, we welcome any constructive PR to help expedite the implementation of your desired feature!

+ + \ No newline at end of file diff --git a/docs/flavors/overview/index.html b/docs/flavors/overview/index.html new file mode 100644 index 000000000..3bfe1da83 --- /dev/null +++ b/docs/flavors/overview/index.html @@ -0,0 +1,44 @@ + + + + + +Flavors (BETA) | Yazi + + + + + + + + + +

Flavors (BETA)

+

The "flavor" is a pre-made Yazi theme, while what we typically refer to as a "theme" is the user's own theme, i.e. ~/.config/yazi/theme.toml file.

+

The purpose of separating them is to allow users to customize their preferences more conveniently on top of an existing flavor, without having to modify those flavor files. +This makes it easier to update, as there won't be conflicts when pulling from Git.

+

Behind the scenes, Yazi merges the user's theme.toml with the flavor's flavor.toml automatically, and the user's always takes precedence over the flavor.

+

Directory structure

+

These flavors are placed in the flavors subdirectory of the Yazi configuration directory, so either:

+
    +
  • ~/.config/yazi/flavors/ on Unix-like systems.
  • +
  • C:\Users\USERNAME\AppData\Roaming\yazi\config\flavors\ on Windows.
  • +
+
~/.config/yazi/
├── flavors/
│   ├── foo.yazi/
│   └── bar.yazi/
└── theme.toml
+

Each flavor is a directory with a kebab-case name, ending in .yazi, and containing at least the following files:

+
~/.config/yazi/flavors/bar.yazi/
├── flavor.toml
├── tmtheme.xml
├── README.md
├── preview.png
├── LICENSE
└── LICENSE-tmtheme
+

Where:

+
    +
  • flavor.toml is this flavor's configuration file, in the format consistent with the user's theme.toml.
  • +
  • tmtheme.xml is a tmTheme file that matches the colors of this flavor for code highlighting.
  • +
  • README.md and preview.png are the description and the preview image of this flavor, respectively.
  • +
  • LICENSE and LICENSE-tmtheme are the licenses for the flavor and the tmtheme.xml file, respectively.
  • +
+

Usage

+

For example, if you want to use the bar.yazi flavor, add these lines to your theme.toml:

+
[flavor]
use = "bar"
+

Cooking a flavor

+

Please use our flavor-template repository as a starting point to create your own flavor.

+ + \ No newline at end of file diff --git a/docs/image-preview/index.html b/docs/image-preview/index.html new file mode 100644 index 000000000..0b2afd91d --- /dev/null +++ b/docs/image-preview/index.html @@ -0,0 +1,77 @@ + + + + + +Image Preview | Yazi + + + + + + + + + +

Image Preview

+

Yazi has done a lot of work to adapt to different terminals and multiplexers, trying their best to make it out-of-the-box for users.

+

This is by no means a simple task, to reduce maintenance costs, we only guarantee it is available in the latest version of terminals and multiplexers (tmux, Zellij):

+
PlatformProtocolSupport
kittyKitty unicode placeholders✅ Built-in
KonsoleKitty old protocol✅ Built-in
iTerm2Inline images protocol✅ Built-in
WezTermInline images protocol✅ Built-in
Mintty (Git Bash)Inline images protocol✅ Built-in
footSixel graphics format✅ Built-in
GhosttyKitty old protocol✅ Built-in
Black BoxSixel graphics format✅ Built-in
VSCodeInline images protocol✅ Built-in
TabbyInline images protocol✅ Built-in
HyperInline images protocol✅ Built-in
X11 / WaylandWindow system protocol☑️ Überzug++ required
FallbackChafa☑️ Überzug++ required
+

Yazi automatically selects the appropriate preview method for you, based on the priority from top to bottom. +That's relying on the $TERM, $TERM_PROGRAM, and $XDG_SESSION_TYPE variables, make sure you don't overwrite them by mistake!

+

For instance, if your terminal is Alacritty, which doesn't support displaying images itself, but you are running on an X11/Wayland environment, +it will automatically use the "Window system protocol" to display images - this requires you to have Überzug++ installed.

+

tmux users

+

To enable Yazi's image preview to work correctly in tmux, add the following 3 options to your tmux.conf:

+
set -g allow-passthrough on

set -ga update-environment TERM
set -ga update-environment TERM_PROGRAM
+

Then restart tmux (important):

+
tmux kill-server && tmux || tmux
+

Now you should be able to enjoy with the image preview.

+

Zellij users

+

Zellij currently only supports the Sixel graphics format, so you will need a terminal that also supports Sixel.

+

Note that, the image rendering in Zellij has some performance issues, causing noticeable lagginess when quickly switching between images, +and sometimes even image tearing.

+

These issues won't be improved until Zellij enhances it's Sixel implementation or provides a passthrough mode, if the image is a stronger need to you, consider running Yazi outside of Zellij or using Überzug++.

+

Windows users

+

Currently, only the following two terminals support displaying images on Windows:

+
    +
  • WezTerm
  • +
  • Mintty (Git Bash, which comes with Git for Windows)
  • +
+

Windows with WSL users

+

Limited by ConPTY, the Windows edition has had to implement many workarounds, which are not perfect.

+

However, if you run Yazi in WSL, you can experience perfect image previews using wezterm ssh.
+WezTerm is an excellent terminal that can bypass the limitations of ConPTY through its SSH feature, and it's currently the only terminal that allows this approach.

+

You need to install sshd in WSL and start it:

+
sudo apt install openssh-server
sudo service ssh restart
+

Then, on the host machine, connect to WSL over SSH:

+
wezterm ssh 127.0.0.1
+

That's it! you can now get Yazi's image preview working properly.

+

Neovim users

+

The builtin terminal emulator (:term) in Neovim doesn't support any graphic protocols, so Yazi will try to fallback to X11/Wayland/Chafa in sequence.

+

Note that Überzug++ might display images in the wrong position; in that case, please adjust it manually using ueberzug_offset.

+

Why can't I preview images via Überzug++?

+

This may be a problem with Überzug++ itself. Please build Yazi in debug mode as per this but cargo build without --release flag - you can run yazi --debug to verify it, and you will see the output includes Debug : true.

+

And hover on some images, then find the last Überzug++ command in your ~/.local/state/yazi/yazi.log sorted by time. It is usually at the very end of the file and looks like:

+
ueberzugpp command: {"action":"add","identifier":"yazi","x":96,"y":1,"max_width":400,"max_height":150,"path":"/root/test.jpg"}
+

Finally, run ueberzugpp layer directly in the terminal without and outside Yazi, and paste the command:

+
{"action":"add","identifier":"yazi","x":96,"y":1,"max_width":400,"max_height":150,"path":"/root/test.jpg"}
+

into it, press Enter, and to see if any image is shown, without exiting the Überzug++.

+

If the image shows properly when using Überzug++ independently, but not when used with Yazi, please create a bug report with:

+
    +
  • The contents of ~/.local/state/yazi/yazi.log
  • +
  • The contents of /tmp/ueberzugpp-$USER.log
  • +
  • A GIF demonstration of the above steps
  • +
+

Why won't my images adapt to terminal size?

+

The size of the image depends on two factors:

+
    +
  1. The max_width and max_height config options, which need to be adjusted by the user as needed.
  2. +
  3. The pixel size of the terminal.
  4. +
+

Yazi will use the smaller of these two factors as the image preview size.

+

However, some terminals (such as VSCode, Tabby, and all Windows terminals) don't implement the ioctl system call, before Add CSI 14 t sequence support is merged, it's not possible to obtain the actual pixel width and height of the terminal.

+

Hence, only max_width and max_height will be used in this case.

+ + \ No newline at end of file diff --git a/docs/installation/index.html b/docs/installation/index.html new file mode 100644 index 000000000..b32138752 --- /dev/null +++ b/docs/installation/index.html @@ -0,0 +1,112 @@ + + + + + +Installation | Yazi + + + + + + + + + +

Installation

+

To use Yazi, you must have the following prerequisites installed:

+
    +
  • file (for file type detection)
  • +
+

Yazi can be optionally extended with other command line tools to enable additional features.

+ +

If the functions are not working properly, please try upgrading them to the latest version.

+

Packaging status

+

Most packages on this page are maintained by the community, and they may not always be the latest. Please check their versions before installation:

+

Packaging status

+

Arch Linux

+
sudo pacman -S yazi ffmpegthumbnailer unarchiver jq poppler fd ripgrep fzf zoxide
+

If you want to use the latest Git version, you can install it from AUR or Arch Linux CN:

+
paru -S yazi-git ffmpegthumbnailer unarchiver jq poppler fd ripgrep fzf zoxide
+

Nix

+

A Nix package for Yazi is available.

+
# NixOS:
nix-env -iA nixos.yazi

# Not NixOS:
nix-env -iA nixpkgs.yazi
+

Or add the following to your configuration:

+
# configuration.nix
environment.systemPackages = with pkgs; [
yazi
];
+

You can also manage Yazi's configuration using home-manager.

+

Nix flakes

+

The upstream repository provides a flake so that Nix users can easily keep up with the bleeding edge. A basic flake.nix setup to get you started:

+
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11";

home-manager = {
url = "github:nix-community/home-manager/release-23.11";
inputs.nixpkgs.follows = "nixpkgs";
};

yazi.url = "github:sxyazi/yazi";
};

outputs = { nixpkgs, home-manager, yazi, ... }: {
# To install Yazi system-wide:
nixosConfigurations = {
nixos = nixpkgs.lib.nixosSystem {
modules = [
({ pkgs, ... }: {
environment.systemPackages = [ yazi.packages.${pkgs.system}.default ];
})
];
};
};

# To install it for a specific user:
homeConfigurations = {
"alice@nixos" = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.x86_64-linux;
modules = [
({ pkgs, ... }: {
home.packages = [ yazi.packages.${pkgs.system}.default ];
})
];
};
};
};
}
+

If you want to override the package inside nixpkgs with the one from the flake, you can use overlays:

+
nixpkgs.overlays = [ yazi.overlays.default ];
+

A module is also available for both NixOS and home-manager:

+
programs.yazi = {
enable = true;
package = yazi.packages.${pkgs.system}.default; # if you use overlays, you can omit this
};
+

Cache

+

Pre-built artifacts are served at https://yazi.cachix.org, so that Nix users don't have to build Yazi on their machine. +You can make use of it by adding the following options to nix.settings, either in your NixOS or home-manager configuration:

+
extra-substituters = [ "https://yazi.cachix.org" ];
extra-trusted-public-keys = [ "yazi.cachix.org-1:Dcdz63NZKfvUCbDGngQDAZq6kOroIrFoyO064uvLh8k=" ];
+

Note that the cache will only be applied after you rebuild your Nix config. If you want to ensure that the cache gets applied right away, add the options above to your flake's nixConfig attribute.

+

If you're having any problems, refer to this entry from Cachix's FAQ.

+

Homebrew

+

First, make sure that Homebrew is fully up-to-date with brew update.

+

Then you can install Yazi (and the optional dependencies):

+
brew install yazi ffmpegthumbnailer unar jq poppler fd ripgrep fzf zoxide font-symbols-only-nerd-font
+

If you prefer to use the most recent code, use the --HEAD flag when installing Yazi.

+
brew install yazi --HEAD
+

MacPorts

+
sudo port install yazi ffmpegthumbnailer unar jq poppler fd ripgrep fzf zoxide
+

NetBSD

+
pkgin install yazi
+

Windows

+

Windows has been supported since Yazi v0.1.4, but it's still in the early stage, so please file an issue if you encounter any bugs.

+

Requirements

+

Yazi relies on file(1) to detect the mime-type of the file, and the easiest and most reliable way to get it on Windows is to install Git for Windows and use the file.exe that comes with it.

+
    +
  1. Install Git for Windows by running the official installer, or through your package manager of choice.
  2. +
  3. To allow Yazi to find it, add <Git_Installed_Directory>\usr\bin\file.exe to your YAZI_FILE_ONE environment variable, which differs depending on how you installed Git: +
      +
    • If you installed Git with the installer, it would be C:\Program Files\Git\usr\bin\file.exe.
    • +
    • If you installed Git with Scoop, it would be C:\Users\<Username>\scoop\apps\git\current\usr\bin\file.exe.
    • +
    +
  4. +
  5. Restart your terminal.
  6. +
+

This is the ONLY way we recommend. We do not recommend install file via Scoop or Chocolatey, since they cannot handle Unicode filenames (such as oliver-sjöström.jpg) properly and lack some required parameters.

+

Installation

+

You can download the latest official binaries from GitHub Releases, or install Yazi with Scoop:

+
scoop install yazi
# Install the optional dependencies (recommended):
scoop install unar jq poppler fd ripgrep fzf zoxide
+

AOSC OS

+
sudo oma install yazi
+

Official binaries

+

You can download the latest official binaries from GitHub Releases: https://github.com/sxyazi/yazi/releases

+

On this page, we offer GNU/Musl builds to meet the needs of different users; we also provide a Snapcraft package, which Ubuntu/Debian users can use.

+

Cargo

+

Setup the latest stable Rust toolchain:

+
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup update
+

Now you can install Yazi from crates.io:

+
cargo install --locked yazi-fm yazi-cli
+

Or install the latest git version:

+
cargo install --locked --git https://github.com/sxyazi/yazi.git yazi-fm yazi-cli
+

If it fails to build, please check if make and gcc is installed on your system.

+

Build from source

+

Setup the latest stable Rust toolchain:

+
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup update
+

Clone the repository and build Yazi:

+
git clone https://github.com/sxyazi/yazi.git
cd yazi
cargo build --release
+

Then, you can run:

+
./target/release/yazi
+

If it fails to build, please check if make and gcc is installed on your system.

+ + \ No newline at end of file diff --git a/docs/plugins/config/index.html b/docs/plugins/config/index.html new file mode 100644 index 000000000..3b0c4a38b --- /dev/null +++ b/docs/plugins/config/index.html @@ -0,0 +1,26 @@ + + + + + +Config | Yazi + + + + + + + + + +
+ + \ No newline at end of file diff --git a/docs/plugins/layout/index.html b/docs/plugins/layout/index.html new file mode 100644 index 000000000..b2f5a53eb --- /dev/null +++ b/docs/plugins/layout/index.html @@ -0,0 +1,228 @@ + + + + + +Layout | Yazi + + + + + + + + + +

Layout

+

Paragraph, List, Bar, Border, and Gauge are renderable widgets; others need to be placed within any of them.

+

Bar

+

Create a bar:

+
ui.Bar(rect, direction)
+

The first attribute is a Rect, representing the position of this bar. +The second denotes the direction of the bar and accepts the following constants:

+
    +
  • ui.Bar.NONE
  • +
  • ui.Bar.TOP
  • +
  • ui.Bar.RIGHT
  • +
  • ui.Bar.BOTTOM
  • +
  • ui.Bar.LEFT
  • +
  • ui.Bar.ALL
  • +
+

Methods (all methods return self):

+
    +
  • symbol(symbol) - accepts a string, specifying the symbol for the bar
  • +
  • style(style) - accepts a Style, specifying the style of the bar
  • +
+

Border

+

Create a border:

+
ui.Border(rect, position)
+

The first attribute is a Rect, representing the position of this border. +The second denotes the position of the border and accepts the following constants:

+
    +
  • ui.Border.NONE
  • +
  • ui.Border.TOP
  • +
  • ui.Border.RIGHT
  • +
  • ui.Border.BOTTOM
  • +
  • ui.Border.LEFT
  • +
  • ui.Border.ALL
  • +
+

You can also use ui.Border:type(type) to specify different types for the border. It accepts the following type constants:

+
    +
  • ui.Border.PLAIN
  • +
  • ui.Border.ROUNDED
  • +
  • ui.Border.DOUBLE
  • +
  • ui.Border.THICK
  • +
  • ui.Border.QUADRANT_INSIDE
  • +
  • ui.Border.QUADRANT_OUTSIDE
  • +
+

Methods (all methods return self):

+
    +
  • style(style) - accepts a Style, specifying the style of the border
  • +
+

Clear

+

Clear the content of a specific area. Place it followed by the component that you want to clear:

+
local components = {
ui.Paragraph(rect, {}),
-- ...

ui.Clear(rect),
}
+

Constraint

+

Constraints are used to define the size of a layout.

+

They can be used to define a fixed size, a percentage of the available space, a ratio of the available space, or a minimum or maximum size:

+
ui.Constraint.Percentage(50) -- Apply a percentage to a given amount
ui.Constraint.Ratio(1, 3) -- Apply a ratio
ui.Constraint.Length(10) -- Apply no more than the given amount (currently roughly equal to `ui.Constraint.Max`)
ui.Constraint.Max(5) -- Apply at most the given amount
ui.Constraint.Min(3) -- Apply at least the given amount
+

Gauge

+

Create a gauge:

+
ui.Gauge(rect)
+

Methods (all methods return self):

+
    +
  • percent(percent) - Set the percentage of the gauge
  • +
  • ratio(ratio) - Set the ratio of the gauge
  • +
  • label(label) - Set the label of the gauge
  • +
  • style(style) - Set the style of everything except the bar itself, which accepts a Style
  • +
  • gauge_style(style) - Set the style of the bar, which accepts a Style
  • +
+

Layout

+

Create a layout:

+
local areas = ui.Layout()
:direction(ui.Layout.HORIZONTAL)
:constraints({ ui.Constraint.Percentage(50), ui.Constraint.Percentage(50) })
:split(area)

local left = areas[1] -- The first rect
local right = areas[2] -- The second rect
+

Methods (all methods return self):

+
    +
  • direction(direction) - Set the direction of the layout, which accepts the following constants: +
      +
    • ui.Layout.HORIZONTAL
    • +
    • ui.Layout.VERTICAL
    • +
    +
  • +
  • margin(margin) - Set the margin of the layout, which accepts an positive integer.
  • +
  • margin_h(margin) - Set the horizontal margin of the layout, which accepts an positive integer.
  • +
  • margin_v(margin) - Set the vertical margin of the layout, which accepts an positive integer.
  • +
  • constraints({ constraint, ... }) - Set the constraints of the layout, which accepts a list of Constraint.
  • +
  • split(rect) - Accepts a Rect and split it into multiple Rect according to the constraints.
  • +
+

Line

+

Create a line, which accepts a string, or a list of Span and Line:

+
ui.Line("string")
ui.Line { span, line, span, ... }
+

Methods (all methods return self):

+
    +
  • width() - Get the width of the line, which returns an integer.
  • +
  • style(style) - Set the style of the line, which accepts a Style.
  • +
  • align(alignment) - Set the alignment of the line. It accepts the following constants: +
      +
    • ui.Line.LEFT
    • +
    • ui.Line.CENTER
    • +
    • ui.Line.RIGHT
    • +
    +
  • +
+

List

+

Create a list:

+
ui.List(rect, items)
+

The first attribute is a Rect, representing the position of this list. +The second denotes the items of the list and accepts a list of ListItem.

+

ListItem

+

Create a list item:

+
ui.ListItem(line)
ui.ListItem(span)
ui.ListItem("string")
+

Methods (all methods return self):

+
    +
  • style(style) - Set the style of the list item, which accepts a Style
  • +
+

Padding

+

All parameters for padding are integers:

+
ui.Padding(left, right, top, bottom)
+

If you want to specify only one of them, you can:

+
    +
  • ui.Padding.left(left) equal to ui.Padding(left, 0, 0, 0)
  • +
  • ui.Padding.right(right) equal to ui.Padding(0, right, 0, 0)
  • +
  • ui.Padding.top(top) equal to ui.Padding(0, 0, top, 0)
  • +
  • ui.Padding.bottom(bottom) equal to ui.Padding(0, 0, 0, bottom)
  • +
+

Or specify a particular direction for them:

+
    +
  • ui.Padding.x(x) equal to ui.Padding(x, x, 0, 0)
  • +
  • ui.Padding.y(y) equal to ui.Padding(0, 0, y, y)
  • +
  • ui.Padding.xy(x, y) equal to ui.Padding(x, x, y, y)
  • +
+

Properties:

+
    +
  • left - left padding
  • +
  • right - right padding
  • +
  • top - top padding
  • +
  • bottom - bottom padding
  • +
+

Paragraph

+

Create a paragraph:

+
ui.Paragraph(rect, { line, line, ... })
+

The first attribute is a Rect, representing the position of this paragraph. +The second denotes the lines of the paragraph and accepts a list of Line.

+

You can also use ui.Paragraph.parse(string) to parse an ANSI escape sequence string into a paragraph.

+

Methods (all methods return self):

+
    +
  • style(style) - Set the style of the paragraph, which accepts a Style
  • +
  • wrap(wrap) - Set the wrap of the paragraph, which accepts the following constants: +
      +
    • ui.Paragraph.WRAP_NO - No wrap
    • +
    • ui.Paragraph.WRAP - Wrap at the end of the line
    • +
    • ui.Paragraph.WRAP_TRIM - Wrap at the end of the line, and trim the leading whitespace
    • +
    +
  • +
  • align(alignment) - Set the alignment of the paragraph. It accepts the following constants: +
      +
    • ui.Paragraph.LEFT
    • +
    • ui.Paragraph.CENTER
    • +
    • ui.Paragraph.RIGHT
    • +
    +
  • +
+

Rect

+

A Rect is represented an area within the terminal by four attributes:

+
ui.Rect {
x = 10, -- x position
y = 10, -- y position
w = 20, -- width
h = 30, -- height
}

ui.Rect.default -- Equal to `ui.Rect { x = 0, y = 0, w = 0, h = 0 }`
+

You can obtain a pre-computed Rect through Yazi's layout system.

+

Note that if you intend to create it yourself, ensure these values are calculated accurately; otherwise, it may cause Yazi to crash!

+

Properties:

+
    +
  • x - x position
  • +
  • y - y position
  • +
  • w - width
  • +
  • h - height
  • +
  • left - left position
  • +
  • right - right position
  • +
  • top - top position
  • +
  • bottom - bottom position
  • +
+

Methods (all methods return self):

+
    +
  • padding(padding) - Set padding. It accepts a Padding
  • +
+

Span

+

Create a span:

+
ui.Span("string")
+

Methods (all methods return self):

+
    +
  • fg(color) - Set the foreground color of the span, which accepts a Color
  • +
  • bg(color) - Set the background color of the span, which accepts a Color
  • +
  • bold() - Set the span to bold
  • +
  • dim() - Set the span to dim
  • +
  • italic() - Set the span to italic
  • +
  • underline() - Set the span to underline
  • +
  • blink() - Set the span to blink
  • +
  • blink_rapid() - Set the span to blink rapidly
  • +
  • hidden() - Set the span to hidden
  • +
  • crossed() - Set the span to crossed
  • +
  • reset() - Reset the style of the span
  • +
  • style(style) - Set the style of the span, which accepts a Style
  • +
+

Style

+

Create a style:

+
ui.Style()
+

Methods (all methods return self):

+
    +
  • fg(string) - Set the foreground color of the style, which accepts a Color
  • +
  • bg(string) - Set the background color of the style, which accepts a Color
  • +
  • bold() - Set the style to bold
  • +
  • dim() - Set the style to dim
  • +
  • italic() - Set the style to italic
  • +
  • underline() - Set the style to underline
  • +
  • blink() - Set the style to blink
  • +
  • blink_rapid() - Set the style to blink rapidly
  • +
  • hidden() - Set the style to hidden
  • +
  • crossed() - Set the style to crossed
  • +
  • reset() - Reset the style
  • +
+ + \ No newline at end of file diff --git a/docs/plugins/overview/index.html b/docs/plugins/overview/index.html new file mode 100644 index 000000000..1ac81e93d --- /dev/null +++ b/docs/plugins/overview/index.html @@ -0,0 +1,116 @@ + + + + + +Plugins (BETA) | Yazi + + + + + + + + + +

Plugins (BETA)

+

You can extend Yazi's functionality through Lua plugins, which need to be placed in the plugins subdirectory of Yazi's configuration directory, so either:

+
    +
  • ~/.config/yazi/plugins/ on Unix-like systems.
  • +
  • C:\Users\USERNAME\AppData\Roaming\yazi\config\plugins\ on Windows.
  • +
+
~/.config/yazi/
├── init.lua
├── plugins/
│   ├── foo.yazi/
│   └── bar.yazi/
└── yazi.toml
+

Each plugin is a directory with a kebab-case name, ending in .yazi, and containing at least the following files:

+
~/.config/yazi/plugins/bar.yazi/
├── init.lua
├── README.md
└── LICENSE
+

Where:

+
    +
  • init.lua is the entry point of this plugin.
  • +
  • README.md is the documentation of this plugin.
  • +
  • LICENSE is the license file for this plugin.
  • +
+

Usage

+

A plugin has two usages:

+ +

Functional plugin

+

You can bind a plugin command to a specific key in your keymap.toml with:

+
Argument/OptionDescription
[name]The name of the plugin to run.
--syncRun the plugin in a sync context.
--args=[args]Shell-style arguments passed to the plugin.
+

For example, plugin test --sync --args='hello world' will run the test plugin with the arguments hello and world in a sync context.

+

To receive the arguments in the plugin, use args:

+
-- ~/.config/yazi/plugins/test.yazi/init.lua
return {
entry = function(self, args)
ya.err(args[1]) -- "hello"
ya.err(args[2]) -- "world"
end,
}
+

Sync vs Async

+

The plugin system is designed with an async-first philosophy. Therefore, unless specifically specified, such as the --sync for the plugin command, all plugins run in an async context.

+

There is one exception - all init.lua are synchronous, which includes:

+
    +
  • The init.lua for Yazi itself, i.e. ~/.config/yazi/init.lua.
  • +
  • The init.lua for each plugin, e.g. ~/.config/yazi/plugins/bar.yazi/init.lua.
  • +
+

This is because init.lua is commonly used to initialize plugin configurations, and this process is synchronous:

+
-- ~/.config/yazi/init.lua
require("bar"):setup {
key1 = "value1",
key2 = "value2",
-- ...
}
+
-- ~/.config/yazi/plugins/bar.yazi/init.lua
return {
setup = function(state, opts)
-- Save the user configuration to the plugin's state
state.key1 = opts.key1
state.key2 = opts.key2
end,
}
+

Sync context

+

The sync context accompanies the entire app lifecycle, which is active during UI rendering (UI plugins), and on executing sync functional plugins (plugin command with --sync).

+

For better performance, the sync context is created only at the app's start and remains singular throughout. Thus, plugins running within this context share states, +prompting plugin developers to use plugin-specific state persistence for their plugins to prevent global space contamination:

+
-- ~/.config/yazi/test.yazi/init.lua
return {
entry = function(state)
state.i = state.i or 0
ya.err("i = " .. state.i)

state.i = state.i + 1
end,
}
+

Yazi initializes the state for each sync plugin before running, and it exists independently for them throughout the entire lifecycle. +Do the plugin --sync test three times, and you will see the log output:

+
i = 0
i = 1
i = 2
+

Async context

+

When a plugin is executed asynchronously, an isolated async context is created for it automatically.

+

In this context, you can use all the async functions supported by Yazi, and it operates concurrently with the main thread, ensuring that the main thread is not blocked.

+

You can also obtain a small amount of app data from the sync context by calling a "sync function":

+
-- ~/.config/yazi/plugins/my-async-plugin.yazi/init.lua
local set_state = ya.sync(function(state, a)
-- You can get/set the state of the plugin through `state` parameter
-- in the `sync()` block
state.a = a
end)

local get_state = ya.sync(function(state, b)
-- You can access all app data through the `cx`,
-- within the `sync()` block, in an async plugin
local h = cx.active.current.hovered
return h and state.a .. tostring(h.url) or b
end)

return {
entry = function()
set_state("this is a")
local h = get_state("this is b")
-- Do some time-consuming work, such as reading file, network request, etc.
-- It will execute concurrently with the main thread
end,
}
+

Note that ya.sync() call must be at the top level:

+
-- Wrong !!!
local get_state
if some_condition then
get_state = ya.sync(function(state)
-- ...
end)
end
+

Interface

+

Previewer

+

A previewer needs to return a table that implements the peek and seek functions. Both functions take a table parameter self and do not return any values:

+
return {
peek = function(self) return end,
seek = function(self) return end,
}
+

When the user presses j or k to switch between hovering files, peek is called, with:

+
KeyDescription
fileThe File to be previewed.
skipThe number of units to skip. The units largely depend on your previewer, such as lines for code and percentages for videos.
areaThe Rect of the available preview area.
windowThe Rect of the entire terminal window.
+

When the user presses Alt-j or Alt-k to scroll the preview of this file, seek is called, with:

+
KeyDescription
fileThe File being scrolled.
areaThe Rect of the available preview area.
+

The task of peek is to draw in the preview area based on the values of file and skip. This process is asynchronous.

+

The task of seek is to change the value of skip based on user behavior and trigger peek again. It is synchronous, meaning you can access app data through cx.

+

Here are some preset previewers and preloaders you can refer to: Yazi Preset Plugins

+

Preloader

+

You need to return a table that implements the preload function, it receives a self parameter, which is a table with the same fields as peek():

+
return {
preload = function(self)
return 1
end,
}
+

And has the following return values:

+
BinaryDecimal
0 00Failure, don't continue
0 11Success, don't continue
1 02Failure, continue
1 13Success, continue
+

When "continue" is set, the preloader can reload the files that have already been loaded at the next time point, such as when the user scrolls, leading to a page switch. This is usually done for the either:

+
    +
  • Retrying in case of file loading failure
  • +
  • Refreshing the file status upon successful loading
  • +
+

Yazi will automatically invoke the preload concurrently for each file that matches the preload rules on the page.

+

When the user specifies multi = true for it, the plugin allows preloading multiple files at once. In this case, self.file will be replaced by self.files.

+

Typically, a preloader only needs to implement one of them - either single or multiple. This depends on the specific task and the magnitude of the workload. +If it truly requires loading multiple files at once, the user needs to be prompted to enable the multi option for it.

+

Sendable value

+

Yazi's plugin can run concurrently on multiple threads. For better performance, only the following types of combinations can be used for inter-thread data exchange:

+
    +
  • Nil
  • +
  • Boolean
  • +
  • Number
  • +
  • String
  • +
  • Url
  • +
  • Table and nested tables, with the above types as values
  • +
+

Debugging

+

Please ensure that your ~/.config/yazi/init.lua includes valid Lua code with the correct syntax, otherwise will result in Yazi being unable to parse and execute your init.lua to initialize.

+

We recommend installing a Lua plugin in your editor for syntax checking to avoid any syntax errors. +For example, install the Lua plugin for VSCode, and for Neovim, use nvim-lspconfig to configure your Lua LSP.

+

If you have no experience with Lua, you can quickly get started through https://learnxinyminutes.com/docs/lua/

+

Logging

+

If you want to debug some runtime data, use ya.dbg() and ya.err() to print what you want to debug to either:

+
    +
  • ~/.local/state/yazi/yazi.log on Unix-like systems.
  • +
  • C:\Users\USERNAME\AppData\Roaming\yazi\state\yazi.log on Windows.
  • +
+ + \ No newline at end of file diff --git a/docs/plugins/types/index.html b/docs/plugins/types/index.html new file mode 100644 index 000000000..30775a34f --- /dev/null +++ b/docs/plugins/types/index.html @@ -0,0 +1,208 @@ + + + + + +Types | Yazi + + + + + + + + + +

Types

+

Shared

+

Cha

+

Cha means one file's characteristics with the following properties:

+
    +
  • is_dir - Whether this file is a directory
  • +
  • is_hidden - Whether this file is hidden (starts with a dot)
  • +
  • is_link - Whether this file is a symlink
  • +
  • is_orphan - Whether this file is a bad symlink, which points to a non-existent file
  • +
  • is_block_device - Whether this file is a block device
  • +
  • is_char_device - Whether this file is a character device
  • +
  • is_fifo - Whether this file is a fifo
  • +
  • is_socket - Whether this file is a socket
  • +
  • is_exec - Whether this file is executable
  • +
  • is_sticky - Whether this file has the sticky bit set
  • +
  • length - The length of this file, returns an integer representing the size in bytes. Note that it can't reflect the size of a directory, use size() instead
  • +
  • created - The created time of this file in Unix timestamp, or nil if it doesn't have a valid time
  • +
  • modified - The modified time of this file in Unix timestamp, or nil if it doesn't have a valid time
  • +
  • accessed - The accessed time of this file in Unix timestamp, or nil if it doesn't have a valid time
  • +
  • permissions - Unix permissions of this file in string, e.g. drwxr-xr-x. For Windows, it's always nil
  • +
+

And the Unix only properties:

+
    +
  • uid - The user id of this file
  • +
  • gid - The group id of this file
  • +
+

File

+

Properties:

+
    +
  • url - The Url of this file
  • +
  • cha - The Cha of this file
  • +
  • link_to - The Url of this file pointing to, if it's a symlink; otherwise, nil
  • +
  • name - The name of this file
  • +
+

Icon

+

Properties:

+
    +
  • text - The text of this icon
  • +
  • style - The Style of this icon
  • +
+

Range

+

TODO

+

Url

+

Create a Url:

+
-- regular file
local url = Url("/root/Downloads/logo.png")

-- `bgm.mp3` from the archive `ost.zip`
local url = Url("archive:///root/ost.zip#bgm.mp3")
+

Properties:

+
    +
  • frag - The fragment string of this url. Let's say the url archive:///root/my-archive.zip#1.jpg, the fragment 1.jpg
  • +
  • is_regular - Whether the file represented by this url is a regular file
  • +
  • is_search - Whether the file represented by this url from the search result
  • +
  • is_archive - Whether the file represented by this url from an archive
  • +
+

Methods:

+
    +
  • name() - The file name of this url
  • +
  • stem() - The file name without the extension of this url
  • +
  • join(url) - Join this url with another url
  • +
  • parent() - The url of the parent directory
  • +
+

Meta methods:

+
    +
  • __eq(another_url)
  • +
  • __tostring()
  • +
  • __concat(string)
  • +
+

Window

+

Properties:

+
    +
  • rows - The number of rows of this window
  • +
  • cols - The number of columns of this window
  • +
  • width - The width of this window in pixels
  • +
  • height - The height of this window in pixels
  • +
+

App data

+

You can access all app data through the cx within Sync context:

+ +

tab::Mode

+

Visual mode status.

+

Properties:

+
    +
  • is_select - Whether the mode is select
  • +
  • is_unset - Whether the mode is unset
  • +
  • is_visual - Whether the mode is select or unset
  • +
+

Meta methods:

+
    +
  • __tostring()
  • +
+

tab::Config

+

Properties:

+
    +
  • sort_by
  • +
  • sort_sensitive
  • +
  • sort_reverse
  • +
  • sort_dir_first
  • +
  • sort_translit
  • +
  • linemode
  • +
  • show_hidden
  • +
+

These properties are consistent with those in yazi.toml, and will not be detailed here.

+

tab::Selected

+

Meta methods:

+
    +
  • __len()
  • +
  • __pairs() - Iterate over the selected Urls.
  • +
+

tab::Preview

+

Properties:

+
    +
  • skip - The number of units to skip. The units largely depend on your previewer, such as lines for code and percentages for videos.
  • +
  • folder - The folder::Folder being previewed, or nil if this preview is not for folders
  • +
+

folder::Folder

+

Properties:

+
    +
  • cwd - The current working directory of this folder, which is a Url
  • +
  • offset - The offset of this folder, which is an integer
  • +
  • cursor - The cursor position of this folder, which is an integer
  • +
  • window - A table of File in the visible area of this folder
  • +
  • files - The folder::Files of this folder
  • +
  • hovered - The hovered File of this folder, or nil if there is no hovered file
  • +
+

folder::Files

+

Meta methods:

+
    +
  • __len()
  • +
  • __pairs() - Iterate over the Files.
  • +
+

folder::File

+

Based on File, with the following additional methods:

+
    +
  • size() - The size of this file, returns an integer representing the size in bytes, or nil if its a directory and it has not been evaluated
  • +
  • mime() - The mime-type of this file, which is a string, or nil if it's a directory or hasn't been lazily calculated at all
  • +
  • prefix() - The prefix of this file relative to CWD, which used in the flat view during search. For instance, if CWD is /foo, and the file is /foo/bar/baz, then the prefix is bar/
  • +
  • icon() - The Icon of this file, [icon] rules are applied; if no rule matches, returns nil
  • +
  • style() - The Style of this file, [filetype] rules are applied; if no rule matches, returns nil
  • +
  • is_hovered() - Whether this file is hovered
  • +
  • is_yanked() - Whether this file is yanked
  • +
  • is_selected() - Whether this file is selected
  • +
  • found() - When users find a file using the find command, the status of the file - returns nil if it doesn't match the user's find keyword; otherwise, returns {idx, all}, where idx is the position of matched file, and all represents the number of all matched files.
  • +
  • highlights() - TODO
  • +
+

manager::Tabs

+

Properties:

+
    +
  • idx - The index of the active tab
  • +
+

Meta methods:

+
    +
  • __len()
  • +
  • __index(idx)
  • +
+

tab::Tab

+

Properties:

+
    +
  • mode - The tab::Mode of this tab.
  • +
  • conf - The tab::Config of this tab.
  • +
  • current - The current folder within this tab, which is a folder::Folder.
  • +
  • parent - The parent folder within this tab, which is a folder::Folder if current has a parent; otherwise, nil.
  • +
  • selected - The selected files within this tab, which is a tab::Selected.
  • +
  • preview - The tab::Preview within this tab.
  • +
+

Methods:

+
    +
  • name() - The name of this tab
  • +
+

tasks::Tasks

+

Properties:

+
    +
  • +

    progress - The progress of all tasks, which is a table:

    +
    {
    -- Number of tasks
    total = 0,
    succ = 0,
    fail = 0,

    -- Workload of tasks
    found = 0,
    processed = 0,
    }
    +
  • +
+

manager::Yanked

+
for idx, url in pairs(cx.yanked) do
-- ...
end
+

Meta methods:

+
    +
  • __len()
  • +
  • __pairs() - Iterate over the yanked Urls.
  • +
+

Properties:

+
    +
  • is_cut - Whether the yanked urls are cut.
  • +
+ + \ No newline at end of file diff --git a/docs/plugins/utils/index.html b/docs/plugins/utils/index.html new file mode 100644 index 000000000..81cdad329 --- /dev/null +++ b/docs/plugins/utils/index.html @@ -0,0 +1,474 @@ + + + + + +Utils | Yazi + + + + + + + + + +

Utils

+

ya

+

hide()

+

Hide Yazi to the secondary screen by returning to the terminal, completely controlled by the requested plugin.

+
local permit = ya.hide()
+

This method returns a permit for this resource. When it's necessary to restore the TUI display, call its drop() method:

+
permit:drop()
+

Note that since there's always only one available terminal control resource, ya.hide() cannot be called again before the previous permit is dropped, otherwise an error will be thrown, effectively avoiding deadlocks.

+

This function is only available in the async context.

+

file_cache(opts)

+

Calculate the cached Url corresponding to the given file:

+
    +
  • +

    opts - Required, the options of the cache, which is a table:

    +
      +
    • file - The File to be cached
    • +
    • skip - The number of units to skip. It's units largely depend on your previewer, such as lines for code, and percentages for videos
    • +
    +
  • +
+

If the file is not allowed to be cached, such as it's ignored in the user config, or the file itself is a cache, returns nil.

+

manager_emit(cmd, args)

+

Send a command to the [manager] without waiting for the executor to execute:

+
    +
  • cmd - Required, the command name, which is a string
  • +
  • args - Required, the arguments of the command, which is a table with a number or string key and sendable values
  • +
+
ya.manager_emit("my-cmd", { "hello", 123, foo = true, bar_baz = "world" })

-- Equivalent to:
-- my-cmd "hello" "123" --foo --bar-baz="world"
+

image_show(url, rect)

+

Display the given image within the specified area, and the image will downscale to fit that area automatically:

+
    +
  • url - Required, the Url of the image
  • +
  • rect - Required, the Rect of the area
  • +
+

This function is only available in the async context.

+

image_precache(src, dist)

+

Pre-cache the image to a specified url based on user-configured max_width and max_height:

+
    +
  • src - Required, the source Url of the image
  • +
  • dist - Required, the destination Url of the image
  • +
+

This function is only available in the async context.

+

which(opts)

+

Prompt users with a set of available keys:

+
    +
  • opts: Required, the options of the prompt, which is a table: +
      +
    • cands: Required, the key candidates, which is a table of tables that contains the following fields: +
        +
      • on: Required, the key to be prompted, which is a string or a table of strings if multiple keys
      • +
      • desc: Optional, the description of the key, which is a string
      • +
      +
    • +
    • silent: Optional, whether to show the UI of key indicator, which is a boolean
    • +
    +
  • +
+
local cand = ya.which {
cands = {
{ on = "a" },
{ on = "b", desc = "optional description" },
{ on = "<C-c>", desc = "key combination" },
{ on = { "d", "e" }, desc = "multiple keys" },
},
-- silent = true, -- If you don't want to show the UI of key indicator
}
+

When the user clicks a valid candidate, ya.which returns the 1-based index of that cand; +otherwise, it returns nil, indicating that the user has canceled the key operation.

+

This function is only available in the async context.

+

input(opts)

+

Request user input:

+
    +
  • opts: Required, the options of the input, which is a table: +
      +
    • title: Required, the title of the input, which is a string.
    • +
    • value: Optional, the default value of the input, which is a string.
    • +
    • position: Required, the position of the input, which is a table: +
        +
      • 1: Required, the origin position of the input, which is a string accepts "top-left", "top-center", "top-right", "bottom-left", "bottom-center", "bottom-right", "center", and "hovered".
      • +
      • x: Optional, the X offset from the origin position, which is an positive or negative integer.
      • +
      • y: Optional, the Y offset from the origin position, which is an positive or negative integer.
      • +
      • w: Required, the width of the input, which is an positive integer.
      • +
      • h: Optional, the height of the input, which is an positive integer.
      • +
      +
    • +
    • realtime: Optional, whether to report user input in real time, which is a boolean.
    • +
    • debounce: Optional, the number of seconds to wait for the user to stop typing, which is a positive float. Can only be used when realtime = true. (Currently needs the nightly version of Yazi)
    • +
    +
  • +
+
local value, event = ya.input {
title = "Archive name:",
position = { "top-center", y = 3, w = 40 },
}
+

Returns (value, event):

+
    +
  • value - The user input value carried by this event, which is a string if the event is non-zero; otherwise, nil.
  • +
  • event - The event type, which is an integer: +
      +
    • 0: Unknown error.
    • +
    • 1: The user has confirmed the input.
    • +
    • 2: The user has canceled the input.
    • +
    • 3: The user has changed the input (only if realtime is true).
    • +
    +
  • +
+

When realtime = true specified, ya.input() returns a receiver, which has a recv() method that can be called multiple times to receive events.

+
local input = ya.input {
title = "Input in realtime:",
position = { "center", w = 50 },
realtime = true,
}

while true do
local value, event = input:recv()
if not value then
break
end

ya.err(value)
end
+

This function is only available in the async context.

+

notify(opts)

+

Send a foreground notification to the user:

+
    +
  • opts: Required, the options of the notification, which is a table: +
      +
    • title: Required, the title of the notification, which is a string.
    • +
    • content: Required, the content of the notification, which is a string.
    • +
    • timeout: Required, the timeout of the notification, which is an non-negative float in seconds.
    • +
    • level: Optional, the level of the notification, which is a string accepts "info", "warn", and "error". Default is "info".
    • +
    +
  • +
+
ya.notify {
title = "Hello, World!",
content = "This is a notification from Lua!",
timeout = 6.5,
-- level = "info",
}
+

dbg(msg, ...)

+

Append messages to the log file at the debug level:

+
    +
  • msg - Required, the message to be logged.
  • +
+
ya.dbg("Hello", "World!")                       -- Multiple arguments are supported
ya.dbg({ foo = "bar", baz = 123, qux = true }) -- Any type of data is supported
+

Note that if you use a release build of Yazi, the log level is "error" instead of "debug", so you'll need to use ya.err.

+

err(msg, ...)

+

Append messages to the log file at the error level:

+
    +
  • msg - Required, the message to be logged.
  • +
+
ya.err("Hello", "World!")                       -- Multiple arguments are supported
ya.err({ foo = "bar", baz = 123, qux = true }) -- Any type of data is supported
+

sync(fn)

+

See Async context.

+

preview_code(opts)

+

Preview the file as code into the specified area:

+
    +
  • opts - Required, the options of the preview, which is a table: +
      +
    • file - The previewed File
    • +
    • area - The area of the preview, which is a Rect
    • +
    • skip - The number of units to skip. It's units largely depend on your previewer, such as lines for code, and percentages for videos
    • +
    • window - The Window of the preview
    • +
    +
  • +
+

Returns (ok, upper_bound):

+
    +
  • ok - Whether the preview is successful, which is a boolean.
  • +
  • upper_bound - If the preview fails (ok = false) and it's because exceeds the maximum upper bound, return this bound; otherwise, nil.
  • +
+

This function is only available in the async context.

+

preview_archive(opts)

+

Preview the file as an archive into the specified area:

+
    +
  • opts - Required, the options of the preview. It's the same as preview_code()
  • +
+

Returns (ok, upper_bound):

+
    +
  • ok - Whether the preview is successful, which is a boolean.
  • +
  • upper_bound - If the preview fails (ok = false) and it's because exceeds the maximum upper bound, return this bound; otherwise, nil.
  • +
+

This function is only available in the async context.

+

preview_widgets(opts, widgets)

+
    +
  • opts - Required, the options of the preview, which is a table: +
      +
    • file - The previewed File
    • +
    • skip - The number of units to skip. It's units largely depend on your previewer, such as lines for code, and percentages for videos
    • +
    • window - The Window of the preview
    • +
    +
  • +
  • widgets - List of renderable widgets, such as { ui.Paragraph {...}, ui.List {...}, ... }
  • +
+

This function is only available in the async context.

+

target_family()

+

Returns the target family of the current platform, "windows", "unix", or "wasm".

+

quote(str)

+

Quote characters that may have special meaning in a shell:

+
    +
  • str: Required, the string to be quoted, which is a string
  • +
+
local handle = io.popen("ls " .. ya.quote(filename))
+

truncate(text, opts)

+

Truncate the text to the specified length and return it:

+
    +
  • text - Required, the text to be truncated, which is a string.
  • +
  • opts - Required, the options of the truncation, which is a table: +
      +
    • max - Required, the maximum length of the text, which is an integer.
    • +
    • rtl - Optional, whether the text is right-to-left, which is a boolean.
    • +
    +
  • +
+

time()

+

Returns the current timestamp, which is a float, the integer part represents the seconds, and the decimal part represents the milliseconds.

+

sleep(secs)

+

Waits until secs has elapsed:

+
    +
  • secs: Required, the number of seconds to sleep, which is a positive float
  • +
+
ya.sleep(0.5)  -- Sleep for 500 milliseconds
+

This function is only available in the async context.

+

uid()

+

Only available on Unix-like systems. Returns the user id of the current user, which is an integer.

+

gid()

+

Only available on Unix-like systems. Returns the group id of the current user, which is an integer.

+

user_name(uid)

+

Get the name of the user:

+
    +
  • uid - Optional, the user id of the user, which is an integer. If not set, it will use the current user's id.
  • +
+

Returns the name of the current user, which is a string if successful; otherwise, nil.

+

This function is only available on Unix-like systems.

+

group_name(gid)

+

Get the name of the user group:

+
    +
  • gid - Optional, the group id of the user, which is an integer. If not set, it will use the current user's group id.
  • +
+

Returns the name of the current group, which is a string if successful; otherwise, nil.

+

This function is only available on Unix-like systems.

+

host_name()

+

Only available on Unix-like systems. Returns the hostname of the current machine, which is a string if successful; otherwise, nil.

+

ps

+

Yazi's DDS (Data Distribution Service) uses a Lua-based publish-subscribe model as its carrier. That is, you can achieve cross-instance communication and state persistence through the ps API. See DDS for details.

+

The following functions can only be used within a sync context.

+

pub(kind, value)

+
ps.pub("greeting", "Hello, World!")
+

Publish a message to the current instance, and all plugins subscribed through sub() for this kind will receive it, achieving internal communication within the instance:

+
    +
  • kind - Required, the kind of the message, which is a string of alphanumeric with dashes, and cannot be built-in kinds.
  • +
  • value - Required, the value of the message, which is a sendable value
  • +
+

Since the kind is used globally, to add the plugin name as the prefix is a best practice. For example, the combination of the plugin my-plugin and the kind event1 would be my-plugin-event1.

+

pub_to(receiver, kind, value)

+
ps.pub_to(1711957283332834, "greeting", "Hello, World!")
+

Publish a message to a specific instance with receiver as the ID:

+
    +
  • If the receiver is the current instance (local), and is subscribed to this kind through sub(), it will receive this message.
  • +
  • If the receiver is not the current instance (remote), and is subscribed to this kind through sub_remote(), it will receive this message.
  • +
+

With:

+
    +
  • receiver - Required, ID of the remote instance, which is a integer; if it's 0 then broadcasting to all remote instances
  • +
  • kind - The same as pub()
  • +
  • value - The same as pub()
  • +
+

pub_static(severity, kind, value)

+
-- Broadcast and store a static message
ps.pub_static(10, "greeting", "Hello, World!")
-- Broadcast and remove a static message
ps.pub_static(10, "greeting", nil)
+

Broadcast a static message to all remote instances subscribed to this kind through sub_remote():

+
    +
  • severity - Required, the severity of the message, which is an integer with a range of 0 to 65535
  • +
  • kind - The same as pub()
  • +
  • value - The same as pub(). If the value is nil, the static message will be unpersisted.
  • +
+

The message will be stored as static data to achieve state persistence, and when a new instance is created, it will receive all static messages broadcasted by sub_remote() before in descending order of severity to restore its state from the data.

+

If you simply want to broadcast a message to all remote instances, without the need for the message to be persisted, use ps.pub_to() with receiver 0 instead.

+

sub(kind, callback)

+
ps.sub("cd", function(body)
ya.err("New cwd", cx.active.current.cwd)
end)
+

Subscribe to local messages of kind and call the callback handler for it:

+
    +
  • kind - Required, the kind of the message, which is a string
  • +
  • callback - Required, the callback function, with a single parameter body containing the content of the message
  • +
+

which runs in a sync context, so you can access app data via cx for the content of interest.

+

Note: No time-consuming operations should be done in the callback, and the same kind from the same plugin can only be subscribed once, re-subscribing (sub()) before unsubscribing (unsub()) will throw an error.

+

sub_remote(kind, callback)

+

Similar to sub(), but it subscribes to remote messages of this kind instead of local.

+

unsub(kind)

+
ps.unsub("my-message")
+

Unsubscribe from local messages of this kind:

+
    +
  • kind - Required, the kind of the message, which is a string
  • +
+

unsub_remote(kind)

+
ps.unsub_remote("my-message")
+

Unsubscribe from remote messages of this kind:

+
    +
  • kind - Required, the kind of the message, which is a string
  • +
+

fs

+

The following functions can only be used within an async context.

+

write(url, data)

+
local ok, err = fs.write(url, "hello world")
+

Write data to the specified file:

+
    +
  • url - Required, the Url of the file
  • +
  • data - Required, the data to be written, which is a string
  • +
+

Returns (ok, err):

+
    +
  • ok - Whether the operation is successful, which is a boolean
  • +
  • err - The error code if the operation is failed, which is an integer if any
  • +
+

cha(url)

+
local cha, err = fs.cha(url)
+

Get the Cha of the specified file, which is faster than cha_follow() since it never follows the symbolic link:

+
    +
  • url - Required, the Url of the file
  • +
+

Returns (cha, err):

+
    +
  • cha - The Cha of the file if successful; otherwise, nil
  • +
  • err - The error code if the operation is failed, which is an integer if any
  • +
+

cha_follow(url)

+
local cha, err = fs.cha_follow(url)
+

Get the Cha of the specified file, and follow the symbolic link:

+
    +
  • url - Required, the Url of the file
  • +
+

Returns (cha, err):

+
    +
  • cha - The Cha of the file if successful; otherwise, nil
  • +
  • err - The error code if the operation is failed, which is an integer if any
  • +
+

Command

+

You can invoke external programs through:

+
local child, err = Command("ls")
:args({ "-a", "-l" })
:stdout(Command.PIPED)
:spawn()
+

Compared to Lua's os.execute, it provides many comprehensive and convenient methods, and the entire process is async.

+

It takes better advantage of the benefits of concurrent scheduling. However, it can only be used in async contexts, such as preloaders, previewers, and async functional plugins.

+

arg(arg)

+
local cmd = Command("ls"):arg("-a"):arg("-l")
+

Append an argument to the command:

+
    +
  • arg - Required, the argument to be appended, which is a string
  • +
+

Returns self.

+

args(args)

+
local cmd = Command("ls"):args({ "-a", "-l" }):args({ "-h" })
+

Append multiple arguments to the command:

+
    +
  • args - Required, the arguments to be appended, which is a table of strings
  • +
+

Returns self.

+

cwd(dir)

+
local cmd = Command("ls"):cwd("/root")
+

Set the current working directory of the command:

+
    +
  • dir - Required, the directory of the command, which is a string
  • +
+

Returns self.

+

env(key, value)

+
local cmd = Command("ls"):env("PATH", "/bin"):env("HOME", "/home")
+

Append an environment variable to the command:

+
    +
  • key - Required, the key of the environment variable, which is a string
  • +
  • value - Required, the value of the environment variable, which is a string
  • +
+

Returns self.

+

stdin(cfg)

+
local cmd = Command("ls"):stdin(Command.PIPED)
+

Set the stdin of the command:

+
    +
  • cfg - Required, the configuration of the stdin, accepts the following values: +
      +
    • Command.PIPED - Pipe the stdin
    • +
    • Command.NULL - Discard the stdin
    • +
    • Command.INHERIT - Inherit the stdin
    • +
    +
  • +
+

If not set, the stdin will be null. Returns self.

+

stdout(cfg)

+
local cmd = Command("ls"):stdout(Command.PIPED)
+

Set the stdout of the command:

+
    +
  • cfg - Required, the configuration of the stdout, accepts the following values: +
      +
    • Command.PIPED - Pipe the stdout
    • +
    • Command.NULL - Discard the stdout
    • +
    • Command.INHERIT - Inherit the stdout
    • +
    +
  • +
+

If not set, the stdout will be null. Returns self.

+

stderr(cfg)

+
local cmd = Command("ls"):stderr(Command.PIPED)
+

Set the stderr of the command:

+
    +
  • cfg - Required, the configuration of the stderr, accepts the following values: +
      +
    • Command.PIPED - Pipe the stderr
    • +
    • Command.NULL - Discard the stderr
    • +
    • Command.INHERIT - Inherit the stderr
    • +
    +
  • +
+

If not set, the stderr will be null. Returns self.

+

spawn()

+
local child, err = Command("ls"):spawn()
+

Spawn the command, returns (child, err):

+
    +
  • child - The Child of the command if successful; otherwise, nil
  • +
  • err - The error code if the operation is failed, which is an integer if any
  • +
+

output()

+
local output, err = Command("ls"):output()
+

Spawn the command and wait for it to finish, returns (output, err):

+
    +
  • output - The Output of the command if successful; otherwise, nil
  • +
  • err - The error code if the operation is failed, which is an integer if any
  • +
+

Child

+

This object is created by Command:spawn() and represents a running child process.

+

You can access the runtime data of this process through its proprietary methods.

+

read(len)

+
local data, event = child:read(1024)
+

Let's say "available data source" refers to stdout or stderr that has been set with Command.PIPED, or them both.

+

read() reads data from the available data source alternately, and the event indicates the source of the data:

+
    +
  • The data comes from stdout if event is 0
  • +
  • The data comes from stderr if event is 1
  • +
  • There's no data to read from both stdout and stderr, if event is 2
  • +
+

read_line()

+
local line, event = child:read_line()
+

Similar to read(), but it reads data line by line.

+

read_line_with(opts)

+
local line, event = child:wait_line_with { timeout = 500 }
+

Similar to read_line(), but it accepts a table of options:

+
    +
  • timeout - Required, timeout in milliseconds, which is an integer
  • +
+

And includes the following additional events:

+
    +
  • Timeout if event is 3
  • +
+

wait()

+
local status, err = child:wait()
+

Wait for the child process to finish, returns (status, err):

+
    +
  • status - The Status of the child process if successful; otherwise, nil
  • +
  • err - The error code if the operation is failed, which is an integer if any
  • +
+

wait_with_output()

+
local output, err = child:wait_with_output()
+

Wait for the child process to finish and get the output, returns (output, err):

+
    +
  • output - The Output of the child process if successful; otherwise, nil
  • +
  • err - The error code if the operation is failed, which is an integer if any
  • +
+

start_kill()

+
local ok, err = child:start_kill()
+

Send a SIGTERM signal to the child process, returns (ok, err):

+
    +
  • ok - Whether the operation is successful, which is a boolean
  • +
  • err - The error code if the operation is failed, which is an integer if any
  • +
+

Output

+

Properties:

+
    +
  • status: The Status of the child process
  • +
  • stdout: The stdout of the child process, which is a string
  • +
  • stderr: The stderr of the child process, which is a string
  • +
+

Status

+

This object represents the exit status of a child process, and it is created by wait(), or output().

+

success()

+
local ok = status:success()
+

Returns whether the child process exited successfully, which is a boolean.

+

code()

+
local code = status:code()
+

Returns the exit code of the child process, which is an integer if any.

+ + \ No newline at end of file diff --git a/docs/quick-start/index.html b/docs/quick-start/index.html new file mode 100644 index 000000000..e0391b367 --- /dev/null +++ b/docs/quick-start/index.html @@ -0,0 +1,56 @@ + + + + + +Quick Start | Yazi + + + + + + + + + +

Quick Start

+

Once you've installed Yazi, start the program with:

+
yazi
+

Press q to quit and ~ to open the help menu.

+

Shell wrapper

+

We suggest using this yy shell wrapper that provides the ability to change the current working directory when exiting Yazi.

+
function yy() {
local tmp="$(mktemp -t "yazi-cwd.XXXXXX")"
yazi "$@" --cwd-file="$tmp"
if cwd="$(cat -- "$tmp")" && [ -n "$cwd" ] && [ "$cwd" != "$PWD" ]; then
cd -- "$cwd"
fi
rm -f -- "$tmp"
}
+

To use it, copy the function into the configuration file of your respective shell. Then use yy instead of yazi to start.

+

Keybindings

+
tip

For all keybindings, see the default keymap.toml file.

+ +

To navigate between files and directories you can use the arrow keys , , and +or Vim-like keys such as h, j, k, l:

+
Key bindingAlternate keyAction
kMove the cursor up
jMove the cursor down
lEnter hovered directory
hLeave the current directory and into its parent
+

Further navigation commands can be found in the table below.

+
Key bindingAction
KMove the cursor up 5 lines
JMove the cursor down 5 lines
ggMove cursor to the top
GMove cursor to the bottom
+

Selection

+

To select files and directories, the following commands are available.

+
Key bindingAction
SpaceToggle selection of hovered file/directory
vEnter visual mode (selection mode)
VEnter visual mode (unset mode)
Ctrl + aSelect all files
Ctrl + rInverse selection of all files
EscCancel selection
+

File/directory operations

+

To interact with selected files/directories use any of the commands below.

+
Key bindingAction
oOpen the selected files
OOpen the selected files interactively
EnterOpen the selected files
Ctrl + EnterOpen the selected files interactively (some terminals don't support it yet)
yYank the selected files (copy)
xYank the selected files (cut)
pPaste the yanked files
PPaste the yanked files (overwrite if the destination exists)
Y or XCancel the yank state (unyank)
-Create a symbolic link to the yanked files (absolute path)
_Create a symbolic link to the yanked files (relative path)
dMove the files to the trash
DPermanently delete the files
aCreate a file or directory (ends with "/" for directories)
rRename a file or directory
;Run a shell command
:Run a shell command (block the UI until the command finishes)
.Toggle the visibility of hidden files
Ctrl + sCancel the ongoing search
zJump to a directory using zoxide
ZJump to a directory, or reveal a file using fzf
+

Copying paths

+

To copy paths, use any of the following commands below.

+

Observation: cd indicates pressing the c key followed by pressing the d key.

+
Key bindingAction
ccCopy absolute path
cdCopy the path of the parent directory
cfCopy the name of the file
cnCopy the name of the file without the extension
+

Filtering files/directories

+
Key bindingAction
fFilter the files/directories in CWD
+

Finding files/directories

+
Key bindingAction
/Forward find file/directory in CWD
?Backward find file/directory in CWD
nJump to next occurrence
NJump to previous occurrence
+

Searching files/directories

+
Key bindingAction
sSearch files by name using fd
SSearch files by content using ripgrep
+

Sorting

+

To sort files/directories use the following commands.

+

Observation: ,a indicates pressing the , key followed by pressing the a key.

+
Key bindingAction
,mSort by modified time
,MSort by modified time (reverse)
,cSort by creation time
,CSort by creation time (reverse)
,eSort by file extension
,ESort by file extension (reverse)
,aSort alphabetically
,ASort alphabetically (reverse)
,nSort naturally
,NSort naturally (reverse)
,sSort by size
,SSort by size (reverse)
+

Flavors

+

Pick a color scheme you like from our flavors repository, or cooking a flavor!

+ + \ No newline at end of file diff --git a/docs/resources/index.html b/docs/resources/index.html new file mode 100644 index 000000000..0568955fd --- /dev/null +++ b/docs/resources/index.html @@ -0,0 +1,122 @@ + + + + + +Resources | Yazi + + + + + + + + + +

Resources

+
warning

The plugin system is still in the early stage, and most of the plugins below only guarantee compatibility with the latest code of Yazi!

Please make sure that both your Yazi and plugins are on the HEAD to ensure proper functionality!

+

🖼️ Previewers

+

Markdown:

+ +

CSV:

+ +

Binary:

+ +

Audio:

+ +

Archives:

+
    +
  • ouch.yazi - An archive previewer plugin for Yazi, using ouch.
  • +
+

BitTorrent:

+ +

🧩 Functional plugins

+

Jumping:

+
    +
  • relative-motions.yazi - A Yazi plugin based about vim motions.
  • +
  • keyjump.yazi - A Yazi plugin that jumps to a file by typing a hint character, much like hop.nvim.
  • +
  • searchjump.yazi - Yazi plugin that navigates your file with search labels, consistent with flash.nvim.
  • +
  • jump-to-char.yazi - Vim-like f<char>, jump to the next file whose name starts with <char>.
  • +
+

Searching:

+
    +
  • fg.yazi - A Yazi plugin that supports file searching with an fzf preview.
  • +
+

Bookmarks:

+
    +
  • bookmarks.yazi - A Yazi plugin that adds the basic functionality of Vi-like marks.
  • +
  • bookmarks-persistence.yazi - A Yazi plugin that supports persistent bookmark management.No bookmarks are lost after you close yazi.
  • +
  • yamb.yazi - Yet another bookmarks plugins. It supports persistence, jumping by a key, jumping by fzf.
  • +
+

File actions:

+
    +
  • chmod.yazi - Execute chmod on the selected files to change their mode.
  • +
  • diff.yazi - Diff the selected file with the hovered file, create a living patch, and copy it to the clipboard.
  • +
+

filter enhancements:

+
    +
  • smart-filter.yazi - Makes filters smarter: continuous filtering, automatically enter unique directory, open file on submitting.
  • +
+

enter enhancements:

+
    +
  • bypass.yazi - Yazi plugin for skipping directories with only a single sub-directory.
  • +
  • fast-enter.yazi - Auto-decompress archives and enter them, or enter the deepest directory until it's not the only subdirectory.
  • +
+

UI enhancements:

+ +

🚀 Preloaders

+

Images:

+ +

🔍Fetchers

+
    +
  • mime.yazi - Replace the builtin mime plugin to speed up the identification of large files by using file extensions instead of file content to obtain the mime-types.
  • +
+

📝 (Neo)vim plugins

+

Neovim:

+
    +
  • tfm.nvim - Neovim plugin for terminal file manager integration.
  • +
  • DreamMaoMao/yazi.nvim - A Neovim Plugin for yazi terminal file browser.
  • +
  • mikavilpas/yazi.nvim - A fork of DreamMaoMao/yazi.nvim with a bunch of additional features.
  • +
  • fm-nvim - Neovim plugin that lets you use your favorite terminal file managers.
  • +
+

Vim:

+ +

🐚 Shell plugins

+
    +
  • yazi-prompt.sh - Display an indicator in your prompt when running inside a yazi subshell.
  • +
+

🛠️ Utilities

+
    +
  • icons-brew.yazi - Make a hot theme.toml for your Yazi icons with your favorite color palette.
  • +
+

💖 Add yours

+

We are so happy to add your plugin to this page!

+

If your plugin meets the following requirements, please click "Edit this page" below to add it:

+
    +
  • Functional - we will install and test it, since we want all links included on this page to be valid. If it's available only on a specific platform, a note should be added in the README.
  • +
  • Follow conventions - it should be a directory/repository ending with .yazi, and include the files listed in the plugin documentation.
  • +
+

If it's a Neovim or Shell plugin, appending .nvim or .sh to the name to make it distinguishable is a best practice, but it's not required.

+ + \ No newline at end of file diff --git a/docs/tips/index.html b/docs/tips/index.html new file mode 100644 index 000000000..cbdd106bb --- /dev/null +++ b/docs/tips/index.html @@ -0,0 +1,97 @@ + + + + + +Tips | Yazi + + + + + + + + + +

Tips

+

These tips require prior knowledge of the Yazi configuration file.

+

If you are using Yazi for the first time, please read our configuration and plugins documentation first.

+

Full border

+ +

Moved to https://github.com/yazi-rs/plugins/tree/main/full-border.yazi

+

Dropping to the shell

+

Add this keybinding to your keymap.toml:

+
[[manager.prepend_keymap]]
on = [ "<C-s>" ]
run = 'shell "$SHELL" --block --confirm'
desc = "Open shell here"
+

Close input by once Esc press

+

You can change the Esc of input component from the default escape to close command, in your keymap.toml:

+
[[input.prepend_keymap]]
on = [ "<Esc>" ]
run = "close"
desc = "Cancel input"
+

to exiting input directly, without entering Vi mode, making it behave like a regular input box.

+

Smart enter: enter for directory, open for file

+

Save these lines as ~/.config/yazi/plugins/smart-enter.yazi/init.lua:

+
return {
entry = function()
local h = cx.active.current.hovered
ya.manager_emit(h and h.cha.is_dir and "enter" or "open", { hovered = true })
end,
}
+

Then bind it for l key, in your keymap.toml:

+
[[manager.prepend_keymap]]
on = [ "l" ]
run = "plugin --sync smart-enter"
desc = "Enter the child directory, or open the file"
+

Smart paste: paste files without entering the directory

+

Save these lines as ~/.config/yazi/plugins/smart-paste.yazi/init.lua:

+
return {
entry = function()
local h = cx.active.current.hovered
if h and h.cha.is_dir then
ya.manager_emit("enter", {})
ya.manager_emit("paste", {})
ya.manager_emit("leave", {})
else
ya.manager_emit("paste", {})
end
end,
}
+

Then bind it for p key, in your keymap.toml:

+
[[manager.prepend_keymap]]
on = [ "p" ]
run = "plugin --sync smart-paste"
desc = "Paste into the hovered directory or CWD"
+
Demonstrate smart paste
+

Drag and drop via dragon

+

Original post: https://github.com/sxyazi/yazi/discussions/327

+
[[manager.prepend_keymap]]
on = [ "<C-n>" ]
run = '''
shell 'dragon -x -i -T "$1"' --confirm
'''
+

Copy selected files to the system clipboard while yanking

+

Yazi allows multiple commands to be bound to a single key, so you can set y to not only do the yank but also run a shell script:

+
[[manager.prepend_keymap]]
on = [ "y" ]
run = [ "yank", '''
shell --confirm 'echo "$@" | xclip -i -selection clipboard -t text/uri-list'
''' ]
+

The above is available on X11, there is also a Wayland version (Thanks @hurutparittya for sharing this in Yazi's discord server):

+
[[manager.prepend_keymap]]
on = [ "y" ]
run = [ "yank", '''
shell --confirm 'for path in "$@"; do echo "file://$path"; done | wl-copy -t text/uri-list'
''' ]
+

Maximize preview pane

+

Moved to https://github.com/yazi-rs/plugins/tree/main/max-preview.yazi

+

Hide preview pane

+

Moved to https://github.com/yazi-rs/plugins/tree/main/hide-preview.yazi

+ +

Save these lines as ~/.config/yazi/plugins/arrow.yazi/init.lua:

+
return {
entry = function(_, args)
local current = cx.active.current
local new = (current.cursor + args[1]) % #current.files
ya.manager_emit("arrow", { new - current.cursor })
end,
}
+

Then bind it for k and j key, in your keymap.toml:

+
[[manager.prepend_keymap]]
on = [ "k" ]
run = "plugin --sync arrow --args=-1"

[[manager.prepend_keymap]]
on = [ "j" ]
run = "plugin --sync arrow --args=1"
+

Navigation in the parent directory without leaving the CWD

+

Save these lines as ~/.config/yazi/plugins/parent-arrow.yazi/init.lua:

+
local function entry(_, args)
local parent = cx.active.parent
if not parent then return end

local target = parent.files[parent.cursor + 1 + args[1]]
if target and target.cha.is_dir then
ya.manager_emit("cd", { target.url })
end
end

return { entry = entry }
+

Then bind it for K and J key, in your keymap.toml:

+
[[manager.prepend_keymap]]
on = [ "K" ]
run = "plugin --sync parent-arrow --args=-1"

[[manager.prepend_keymap]]
on = [ "J" ]
run = "plugin --sync parent-arrow --args=1"
+

No status bar

+ +

Add these lines to your ~/.config/yazi/init.lua:

+
function Status:render() return {} end

local old_manager_render = Manager.render
function Manager:render(area)
return old_manager_render(self, ui.Rect { x = area.x, y = area.y, w = area.w, h = area.h + 1 })
end
+ + +

Copy the Status:name() method only to your ~/.config/yazi/init.lua, and apply the following patch:

+
@@ -42,7 +42,11 @@ function Status:name()
return ui.Span("")
end

- return ui.Span(" " .. h.name)
+ local linked = ""
+ if h.link_to ~= nil then
+ linked = " -> " .. tostring(h.link_to)
+ end
+ return ui.Span(" " .. h.name .. linked)
end
+

Show user/group of files in status bar

+ +

Copy the Status:render() method only to your ~/.config/yazi/init.lua, and apply the following patch:

+
@@ -1,8 +1,22 @@
+function Status:owner()
+ local h = cx.active.current.hovered
+ if h == nil or ya.target_family() ~= "unix" then
+ return ui.Line {}
+ end
+
+ return ui.Line {
+ ui.Span(ya.user_name(h.cha.uid) or tostring(h.cha.uid)):fg("magenta"),
+ ui.Span(":"),
+ ui.Span(ya.group_name(h.cha.gid) or tostring(h.cha.gid)):fg("magenta"),
+ ui.Span(" "),
+ }
+end
+
function Status:render(area)
self.area = area

local left = ui.Line { self:mode(), self:size(), self:name() }
- local right = ui.Line { self:permissions(), self:percentage(), self:position() }
+ local right = ui.Line { self:owner(), self:permissions(), self:percentage(), self:position() }
return {
ui.Paragraph(area, { left }),
+

Show username and hostname in header

+ +

Copy the Header:render() method only to your ~/.config/yazi/init.lua, and apply the following patch:

+
@@ -76,11 +76,18 @@
:split(area)
end

+function Header:host()
+ if ya.target_family() ~= "unix" then
+ return ui.Line {}
+ end
+ return ui.Span(ya.user_name() .. "@" .. ya.host_name() .. ":"):fg("blue")
+end
+
function Header:render(area)
self.area = area

local right = ui.Line { self:count(), self:tabs() }
- local left = ui.Line { self:cwd(math.max(0, area.w - right:width())) }
+ local left = ui.Line { self:host(), self:cwd(math.max(0, area.w - right:width())) }
return {
ui.Paragraph(area, { left }),
ui.Paragraph(area, { right }):align(ui.Paragraph.RIGHT),
+

File tree picker in Helix with Zellij

+

Yazi can be used as a file picker to browse and open file(s) in your current Helix instance (running in a Zellij session).

+

Add a keymap to your Helix config, for example Ctrl + y:

+
# ~/.config/helix/config.toml
[keys.normal]
C-y = ":sh zellij run -f -x 10% -y 10% --width 80% --height 80% -- bash ~/.config/helix/yazi-picker.sh"
+

Then save the following script as ~/.config/helix/yazi-picker.sh:

+
#!/usr/bin/env bash

paths=$(yazi --chooser-file=/dev/stdout | while read -r; do printf "%q " "$REPLY"; done)

if [[ -n "$paths" ]]; then
zellij action toggle-floating-panes
zellij action write 27 # send <Escape> key
zellij action write-chars ":open $paths"
zellij action write 13 # send <Enter> key
zellij action toggle-floating-panes
fi

zellij action close-pane
+

Note: this uses a floating window, but you should also be able to open a new pane to the side, or in place. Review the Zellij documentation for more info.

+

Original post: https://github.com/zellij-org/zellij/issues/3018#issuecomment-2086166900, credits to @rockboynton and @postsolar for sharing and polishing it!

+
Demonstrate Helix+Zellij+Yazi workflow
+

Make Yazi even faster than fast

+

While Yazi is already fast, there is still plenty of room for optimization for specific users or under certain conditions:

+
    +
  • For users who don't need image previews at all, disabling the default image previewer and preloader will make Yazi faster by reducing the I/O read file and CPU decode image consumption.
  • +
  • For users managing network files, it's recommended to disable all previewers and preloaders since previewing and preloading these files means they need to be downloaded locally.
  • +
  • For low-spec devices like Raspberry Pi, reducing the concurrency will make Yazi faster since the default configuration is optimized for PCs, and high concurrency on these low-spec devices may have the opposite effect.
  • +
  • For users who don't need accurate mime-type, mime.yazi may be useful, as it simply returns mime-type based on file extensions, while Yazi defaults to obtaining mime-type based on file content for accuracy. Mime-type is used for matching opening, previewing, rendering rules. Encourage users to choose the appropriate mime plugin based on their needs, which is why we decided to open it up to plugin developers.
  • +
+ + \ No newline at end of file diff --git a/features/index.html b/features/index.html new file mode 100644 index 000000000..10e98730d --- /dev/null +++ b/features/index.html @@ -0,0 +1,19 @@ + + + + + +Features | Yazi + + + + + + + + + +

Features

List of features shipped with Yazi.

Suggest a feature!
  • Scrollable Preview

    Preview various types of files, and scroll the content of file while previewing.

  • Visual Mode & Bulk Rename

    Bulk select files in visual mode, and rename them.

  • Vim-like Input & Select Component

    Quickly edit filename in the Input, and choose how to open it in the Select.

  • Multi-Tab & fzf, zoxide

    Collaborate across multiple tabs, and use fzf, zoxide for quick jumps.

  • Multi-Select & Task Management

    Select multiple files individually, perform copy, cut, etc. Which are scheduled by the task system, providing real-time progress reports and task cancellation.

  • Incremental Find

    Find files incrementally in real-time, with the current position and number of all matches displayed.

  • Search

    Search by name using fd, by content using rg, and perform arbitrary operations on the results.

+ + \ No newline at end of file diff --git a/img/async.svg b/img/async.svg new file mode 100644 index 000000000..7e08ff480 --- /dev/null +++ b/img/async.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/code.svg b/img/code.svg new file mode 100644 index 000000000..e21f25cc7 --- /dev/null +++ b/img/code.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/full-border.png b/img/full-border.png new file mode 100644 index 000000000..7a834ace0 Binary files /dev/null and b/img/full-border.png differ diff --git a/img/hostname-in-header.png b/img/hostname-in-header.png new file mode 100644 index 000000000..70a03eee4 Binary files /dev/null and b/img/hostname-in-header.png differ diff --git a/img/image.svg b/img/image.svg new file mode 100644 index 000000000..e0e59d4ab --- /dev/null +++ b/img/image.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/logo.png b/img/logo.png new file mode 100644 index 000000000..c2aafddf0 Binary files /dev/null and b/img/logo.png differ diff --git a/img/no-status-bar.jpg b/img/no-status-bar.jpg new file mode 100644 index 000000000..6f6af3b23 Binary files /dev/null and b/img/no-status-bar.jpg differ diff --git a/img/owner.png b/img/owner.png new file mode 100644 index 000000000..71af8b546 Binary files /dev/null and b/img/owner.png differ diff --git a/img/symlink-in-status.png b/img/symlink-in-status.png new file mode 100644 index 000000000..87f1aab04 Binary files /dev/null and b/img/symlink-in-status.png differ diff --git a/img/task.svg b/img/task.svg new file mode 100644 index 000000000..dea9613f5 --- /dev/null +++ b/img/task.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 000000000..60f537d16 --- /dev/null +++ b/index.html @@ -0,0 +1,19 @@ + + + + + +Yazi + + + + + + + + + +

Yazi

⚡️ Blazing fast terminal file manager written in Rust, based on async I/O.

Full Asynchronous Support

All I/O operations are asynchronous, CPU tasks are spread across multiple threads, making the most of available resources.

Powerful Async Task Scheduling and Management

Provides real-time progress updates, task cancellation, and internal task priority assignment.

Built-in Support for Multiple Image Protocols

Also integrated with Überzug++, covering almost all terminals.

Built-in Code Highlighting and Image Encoding

Combined with the pre-caching mechanism, greatly accelerates image and normal file loading.

+ + \ No newline at end of file diff --git a/opensearch.xml b/opensearch.xml new file mode 100644 index 000000000..264bfa0bc --- /dev/null +++ b/opensearch.xml @@ -0,0 +1,11 @@ + + + Yazi + Search Yazi + UTF-8 + https://yazi-rs.github.io/img/logo.png + + + https://yazi-rs.github.io/ + \ No newline at end of file diff --git a/search/index.html b/search/index.html new file mode 100644 index 000000000..915c671df --- /dev/null +++ b/search/index.html @@ -0,0 +1,19 @@ + + + + + +Search the documentation | Yazi + + + + + + + + + +

Search the documentation

+ + \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 000000000..715eeb831 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1 @@ +https://yazi-rs.github.io/blogweekly0.5https://yazi-rs.github.io/blog/archiveweekly0.5https://yazi-rs.github.io/blog/why-is-yazi-fastweekly0.5https://yazi-rs.github.io/features/weekly0.5https://yazi-rs.github.io/searchweekly0.5https://yazi-rs.github.io/docs/configuration/keymapweekly0.5https://yazi-rs.github.io/docs/configuration/overviewweekly0.5https://yazi-rs.github.io/docs/configuration/themeweekly0.5https://yazi-rs.github.io/docs/configuration/yaziweekly0.5https://yazi-rs.github.io/docs/ddsweekly0.5https://yazi-rs.github.io/docs/faqweekly0.5https://yazi-rs.github.io/docs/flavors/overviewweekly0.5https://yazi-rs.github.io/docs/image-previewweekly0.5https://yazi-rs.github.io/docs/installationweekly0.5https://yazi-rs.github.io/docs/plugins/configweekly0.5https://yazi-rs.github.io/docs/plugins/layoutweekly0.5https://yazi-rs.github.io/docs/plugins/overviewweekly0.5https://yazi-rs.github.io/docs/plugins/typesweekly0.5https://yazi-rs.github.io/docs/plugins/utilsweekly0.5https://yazi-rs.github.io/docs/quick-startweekly0.5https://yazi-rs.github.io/docs/resourcesweekly0.5https://yazi-rs.github.io/docs/tipsweekly0.5https://yazi-rs.github.io/weekly0.5 \ No newline at end of file diff --git a/videos/incremental-find.mp4 b/videos/incremental-find.mp4 new file mode 100644 index 000000000..4fc77d5a2 Binary files /dev/null and b/videos/incremental-find.mp4 differ diff --git a/videos/input_select.mp4 b/videos/input_select.mp4 new file mode 100644 index 000000000..2b15b6b4a Binary files /dev/null and b/videos/input_select.mp4 differ diff --git a/videos/multi-select_task-management.mp4 b/videos/multi-select_task-management.mp4 new file mode 100644 index 000000000..5588b530c Binary files /dev/null and b/videos/multi-select_task-management.mp4 differ diff --git a/videos/multi-tab_zoxide.mp4 b/videos/multi-tab_zoxide.mp4 new file mode 100644 index 000000000..da54590ec Binary files /dev/null and b/videos/multi-tab_zoxide.mp4 differ diff --git a/videos/scrollable-preview.mp4 b/videos/scrollable-preview.mp4 new file mode 100644 index 000000000..aa42f5f4f Binary files /dev/null and b/videos/scrollable-preview.mp4 differ diff --git a/videos/search.mp4 b/videos/search.mp4 new file mode 100644 index 000000000..315a9f2f1 Binary files /dev/null and b/videos/search.mp4 differ diff --git a/videos/visual-mode_bulk-rename.mp4 b/videos/visual-mode_bulk-rename.mp4 new file mode 100644 index 000000000..532216b77 Binary files /dev/null and b/videos/visual-mode_bulk-rename.mp4 differ