diff --git a/404.html b/404.html index 517883d4..1b311912 100644 --- a/404.html +++ b/404.html @@ -6,14 +6,14 @@ Page Not Found | DASH Docs - - - + + +
-
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.

- - +
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.bac332d6.css b/assets/css/styles.fcbec080.css similarity index 60% rename from assets/css/styles.bac332d6.css rename to assets/css/styles.fcbec080.css index 68000661..fd9eb340 100644 --- a/assets/css/styles.bac332d6.css +++ b/assets/css/styles.fcbec080.css @@ -1 +1 @@ -@import url(https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;1,300;1,400;1,700&display=swap);.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))}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,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)}.markdown li,body{word-wrap:break-word}.toggleButton_gllP,html{-webkit-tap-highlight-color:transparent}.clean-list,.containsTaskList_mC6p,.details_lb9f>summary,.dropdown__menu,.menu__list{list-style:none}: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:#3a88fe;--ifm-color-primary-dark:#1b75fe;--ifm-color-primary-darker:#0b6cfe;--ifm-color-primary-darkest:#0157d9;--ifm-color-primary-light:#599bfe;--ifm-color-primary-lighter:#69a4fe;--ifm-color-primary-lightest:#97c0fe;--docusaurus-announcement-bar-height:auto;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300);--docusaurus-collapse-button-bg:#0000;--docusaurus-collapse-button-bg-hover:#0000001a;--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px}.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}*{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;text-size-adjust:100%;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);text-rendering:optimizelegibility}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)}.list_eTzJ article:last-child,.margin-bottom--none,.margin-vert--none,.markdown>:last-child,.theme-doc-breadcrumbs{margin-bottom:0!important}.margin-top--none,.margin-vert--none{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_NnFM,.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{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 ul,ul ol,ul ul{margin:0}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_EoeP .wordWrapButtonIcon_Bwma{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_tbUL,.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{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;-webkit-user-select:none;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_Tfdd: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;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_c0TR article>:first-child,.docItemContainer_c0TR header+*,.footer__item{margin-top:0}.admonitionContent_S0QG>:last-child,.cardContainer_fWXF :last-child,.collapsibleContent_i85q>:last-child,.footer__items{margin-bottom:0}.codeBlockStandalone_MEMb,[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{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{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_lb9f[data-collapsed=false].isBrowser_bmU9>summary:before,.details_lb9f[open]:not(.isBrowser_bmU9)>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{height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;content:"";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}.navbar__items--center .navbar__brand,body{margin:0}.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_xLdY,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;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__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{-webkit-appearance:none;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{text-decoration:none}.pagination-nav{grid-gap:var(--ifm-spacing-horizontal);display:grid;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}.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_mC6p>li)>.containsTaskList_mC6p{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}#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:#74a7fe;--ifm-color-primary-dark:#4f90fe;--ifm-color-primary-darker:#3d84fe;--ifm-color-primary-darkest:#0661fd;--ifm-color-primary-light:#99befe;--ifm-color-primary-lighter:#abcafe;--ifm-color-primary-lightest:#e2edff}body{font-family:Roboto,sans-serif!important}.header-github-link:hover{opacity:.6}.button{border-radius:4px!important}[data-theme=dark] .header-github-link:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23fff' d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E") no-repeat}.header-github-link:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E") no-repeat;content:"";display:flex;height:24px;width:24px}.img-dropshadow{filter:drop-shadow(0 0 10px rgba(0,0,0,.08))}.pro-label{background-color:rgba(241,25,25,.034);border:1px solid rgba(250,4,4,.233);border-radius:10px;box-shadow:0 4px 20px 0 #fa04040d;max-width:600px;padding:20px}.docitem-content,.menu__link{padding-left:1rem}[data-theme=dark] .pro-label{background-color:rgba(241,25,25,.151);border:1px solid rgba(250,4,4,.233);box-shadow:0 4px 20px 0 rgba(250,4,4,.137)}.menu__link{padding-bottom:.75rem;padding-top:.75rem}.navbar{box-shadow:0 18px 20px -20px #0000001a;height:80px}.navbar__brand{margin-bottom:-.55rem;margin-left:.75rem}.navbar__logo{height:auto;max-height:100%!important}.navbar__items{gap:.75rem}.mdx-heading{border-bottom:1px solid #0000001a;margin-bottom:1.55rem;margin-top:.55rem}.mdx-heading h1{font-size:2.55rem;margin-bottom:.55rem!important}.breadcrumb-row{align-items:center;display:flex;flex-direction:row;justify-content:space-between;margin-bottom:1rem}.card-preview{border-radius:.55rem}.rounded{border-radius:1rem!important}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}#__docusaurus-base-url-issue-banner-container,.themedImage_ToTc,[data-theme=dark] .lightToggleIcon_pyhR,[data-theme=light] .darkToggleIcon_wfgR,html[data-announcement-bar-initially-dismissed=true] .announcementBar_mb4j{display:none}.skipToContent_fXgn{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_fXgn:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_CVFx{line-height:0;padding:0}.content_knG7{font-size:85%;padding:5px 0;text-align:center}.content_knG7 a{color:inherit;text-decoration:underline}.announcementBar_mb4j{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_vyr4{flex:0 0 10px}.announcementBarClose_gvF7{align-self:stretch;flex:0 0 30px}.toggle_vylO{height:2rem;width:2rem}.toggleButton_gllP{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_gllP:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_aARS{cursor:not-allowed}.darkNavbarColorModeToggle_X3D1:hover{background:var(--ifm-color-gray-800)}[data-theme=dark] .themedImage--dark_i4oU,[data-theme=light] .themedImage--light_HNdA,html:not([data-theme]) .themedComponent--light_NU7w{display:initial}.iconExternalLink_nPIU{margin-left:.3rem}.iconLanguage_nlXk{margin-right:5px;vertical-align:text-bottom}.navbarHideable_jvwV{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_nLSi{transform:translate3d(0,calc(-100% - 2px),0)}.footerLogoLink_BH7S{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.footerLogoLink_BH7S:hover,.hash-link:focus,:hover>.hash-link{opacity:1}.errorBoundaryError_a6uf{color:red;white-space:pre-wrap}.buttonGroup__atx button,.codeBlockContainer_Ckt0{background:var(--prism-background-color);color:var(--prism-color)}.mainWrapper_z2l0{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.cardContainer_fWXF{--ifm-link-color:var(--ifm-color-emphasis-800);--ifm-link-hover-color:var(--ifm-color-emphasis-700);--ifm-link-hover-decoration:none;border:1px solid var(--ifm-color-emphasis-200);box-shadow:0 1.5px 3px 0 #00000026;transition:all var(--ifm-transition-fast) ease;transition-property:border,box-shadow}.cardContainer_fWXF:hover{border-color:var(--ifm-color-primary);box-shadow:0 3px 6px 0 #0003}.cardTitle_rnsV{font-size:1.2rem}.cardDescription_PWke{font-size:.8rem}.breadcrumbHomeIcon_YNFT{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_Z_bl{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}.anchorWithStickyNavbar_LWe7{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_WYt5{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;user-select:none}.hash-link:before{content:"#"}.title_kItE{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-leading)*1.25)}.codeBlockContainer_Ckt0{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlockContent_biex{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_Ktv7{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_bY9V{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockTitle_Ktv7+.codeBlockContent_biex .codeBlock_bY9V{border-top-left-radius:0;border-top-right-radius:0}.codeBlockLines_e6Vv{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_o6Pm{display:table;padding:var(--ifm-pre-padding) 0}.buttonGroup__atx{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup__atx 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__atx button:focus-visible,.buttonGroup__atx button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup__atx 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_lJS_{counter-increment:a;display:table-row}.codeLineNumber_Tfdd{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_Tfdd:before{content:counter(a);opacity:.4}.codeLineContent_feaV{padding-right:var(--ifm-pre-padding)}.theme-code-block:hover .copyButtonCopied_obH4{opacity:1!important}.copyButtonIcons_eSgA{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_y97N,.copyButtonSuccessIcon_LjdS{fill:currentColor;height:inherit;left:0;opacity:inherit;position:absolute;top:0;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_LjdS{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_obH4 .copyButtonIcon_y97N{opacity:0;transform:scale(.33)}.copyButtonCopied_obH4 .copyButtonSuccessIcon_LjdS{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.wordWrapButtonIcon_Bwma{height:1.2rem;width:1.2rem}.details_lb9f{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_lb9f>summary{cursor:pointer;padding-left:1rem;position:relative}.details_lb9f>summary::-webkit-details-marker{display:none}.details_lb9f>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_i85q{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.details_b_Ee{--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)}.img_ev3q{height:auto}.admonition_LlT9{margin-bottom:1em}.admonitionHeading_tbUL{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.3rem}.admonitionHeading_tbUL code{text-transform:none}.admonitionIcon_kALy{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_kALy svg{fill:var(--ifm-alert-foreground-color);display:inline-block;height:1.6em;width:1.6em}.iconEdit_Z9Sw{margin-right:.3em;vertical-align:sub}.tag_zVej{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_zVej:hover{--docusaurus-tag-list-border:var(--ifm-link-color);text-decoration:none}.tagRegular_sFm0{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_h2kH{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_h2kH:after,.tagWithCount_h2kH:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_h2kH:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_h2kH:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_h2kH 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}.tags_jXut{display:inline}.tag_QGVx{display:inline-block;margin:0 .4rem .5rem 0}.lastUpdated_vwxv{font-size:smaller;font-style:italic;margin-top:.2rem}.tableOfContents_bqdL{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.tocCollapsibleButton_TO0P{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_TO0P: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_MG3E:after,.tocCollapsibleExpanded_sAul{transform:none}.tocCollapsible_ETCw{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_vkbj>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_vkbj ul li{margin:.4rem .8rem}.tocCollapsibleContent_vkbj a{display:block}.backToTopButton_sjWU{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_sjWU: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_xfvO{opacity:1;transform:scale(1);visibility:visible}[data-theme=dark]:root{--docusaurus-collapse-button-bg:#ffffff0d;--docusaurus-collapse-button-bg-hover:#ffffff1a}.collapseSidebarButton_PEFL{display:none;margin:0}.docSidebarContainer_b6E3,.sidebarLogo_isFc{display:none}.docMainContainer_gTbr,.docPage__5DB{display:flex;width:100%}.docPage__5DB{flex:1 0}.docsWrapper_BCFX{display:flex;flex:1 0 auto}@media (min-width:997px){.collapseSidebarButton_PEFL,.expandButton_m80_{background-color:var(--docusaurus-collapse-button-bg)}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_gvF7,.announcementBarPlaceholder_vyr4{flex-basis:50px}.searchBox_ZlJk{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.docItemCol_z5aJ,.generatedIndexPage_vN6x{max-width:75%!important}.list_eTzJ article:nth-last-child(-n+2){margin-bottom:0!important}.lastUpdated_vwxv{text-align:right}.tocMobile_ITEo{display:none}.collapseSidebarButton_PEFL{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_kv0_{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_BlDH,[dir=rtl] .collapseSidebarButtonIcon_kv0_{transform:rotate(0)}.collapseSidebarButton_PEFL:focus,.collapseSidebarButton_PEFL:hover,.expandButton_m80_:focus,.expandButton_m80_:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.menuHtmlItem_PEWV{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_SIkG{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_SIkG{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_GW3s{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_njMd{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_wUlq{padding-top:0}.sidebarHidden_VK0M{opacity:0;visibility:hidden}.sidebarLogo_isFc{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_isFc img{height:2rem;margin-right:.5rem}.expandButton_m80_{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_BlDH{transform:rotate(180deg)}.docSidebarContainer_b6E3{border-right:1px solid var(--ifm-toc-border-color);-webkit-clip-path:inset(0);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_b3ry{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_Xe31{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_gTbr{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_Uz_u{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_czyv{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!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_x44X,.footer__link-separator,.navbar__item,.tableOfContents_bqdL{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}.searchBox_ZlJk{position:absolute;right:var(--ifm-navbar-padding-horizontal)}.docItemContainer_F8PC{padding:0 .3rem}}@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}}@media (hover:hover){.backToTopButton_sjWU: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 print{.announcementBar_mb4j,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_ITEo{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_e6Vv{white-space:pre-wrap}} \ No newline at end of file +@import url(https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;1,300;1,400;1,700&display=swap);.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))}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,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)}.markdown li,body{word-wrap:break-word}.clean-list,.containsTaskList_mC6p,.details_lb9f>summary,.dropdown__menu,.menu__list{list-style:none}.toggleButton_gllP,html{-webkit-tap-highlight-color:transparent}: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:#3a88fe;--ifm-color-primary-dark:#1b75fe;--ifm-color-primary-darker:#0b6cfe;--ifm-color-primary-darkest:#0157d9;--ifm-color-primary-light:#599bfe;--ifm-color-primary-lighter:#69a4fe;--ifm-color-primary-lightest:#97c0fe;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300);--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}.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}*{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;text-size-adjust:100%;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);text-rendering:optimizelegibility}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)}.list_eTzJ article:last-child,.margin-bottom--none,.margin-vert--none,.markdown>:last-child,.theme-doc-breadcrumbs{margin-bottom:0!important}.margin-top--none,.margin-vert--none{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_NnFM,.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{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 ul,ul ol,ul ul{margin:0}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_EoeP .wordWrapButtonIcon_Bwma{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_tbUL,.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{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;-webkit-user-select:none;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_Tfdd: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;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_c0TR article>:first-child,.docItemContainer_c0TR header+*,.footer__item{margin-top:0}.admonitionContent_S0QG>:last-child,.cardContainer_fWXF :last-child,.collapsibleContent_i85q>:last-child,.footer__items{margin-bottom:0}.codeBlockStandalone_MEMb,[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{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{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_lb9f[data-collapsed=false].isBrowser_bmU9>summary:before,.details_lb9f[open]:not(.isBrowser_bmU9)>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}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;top:0;left:0;visibility:hidden}.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{height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;content:"";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}.navbar__items--center .navbar__brand,body{margin:0}.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__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_xLdY,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;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__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{-webkit-appearance:none;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);position:fixed;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;position:fixed;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{text-decoration:none}.pagination-nav{grid-gap:var(--ifm-spacing-horizontal);display:grid;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}.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_mC6p>li)>.containsTaskList_mC6p{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}#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:#74a7fe;--ifm-color-primary-dark:#4f90fe;--ifm-color-primary-darker:#3d84fe;--ifm-color-primary-darkest:#0661fd;--ifm-color-primary-light:#99befe;--ifm-color-primary-lighter:#abcafe;--ifm-color-primary-lightest:#e2edff}body{font-family:Roboto,sans-serif!important}.header-github-link:hover{opacity:.6}.button{border-radius:4px!important}[data-theme=dark] .header-github-link:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23fff' d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E") no-repeat}.header-github-link:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E") no-repeat;content:"";display:flex;height:24px;width:24px}.img-dropshadow{filter:drop-shadow(0 0 10px rgba(0,0,0,.08))}.pro-label{background-color:rgba(241,25,25,.034);border:1px solid rgba(250,4,4,.233);border-radius:10px;box-shadow:0 4px 20px 0 #fa04040d;max-width:600px;padding:20px}.buttonGroup__atx button,.codeBlockContainer_Ckt0{background:var(--prism-background-color);color:var(--prism-color)}.docitem-content,.menu__link{padding-left:1rem}[data-theme=dark] .pro-label{background-color:rgba(241,25,25,.151);border:1px solid rgba(250,4,4,.233);box-shadow:0 4px 20px 0 rgba(250,4,4,.137)}.menu__link{padding-bottom:.75rem;padding-top:.75rem}.navbar{box-shadow:0 18px 20px -20px #0000001a;height:80px}.navbar__brand{margin-bottom:-.55rem;margin-left:.75rem}.navbar__logo{height:auto;max-height:100%!important}.navbar__items{gap:.75rem}.mdx-heading{border-bottom:1px solid #0000001a;margin-bottom:1.55rem;margin-top:.55rem}.mdx-heading h1{font-size:2.55rem;margin-bottom:.55rem!important}.breadcrumb-row{align-items:center;display:flex;flex-direction:row;justify-content:space-between;margin-bottom:1rem}.card-preview{border-radius:.55rem}.rounded{border-radius:1rem!important}.cardContainer_fWXF{--ifm-link-color:var(--ifm-color-emphasis-800);--ifm-link-hover-color:var(--ifm-color-emphasis-700);--ifm-link-hover-decoration:none;border:1px solid var(--ifm-color-emphasis-200);box-shadow:0 1.5px 3px 0 #00000026;transition:all var(--ifm-transition-fast) ease;transition-property:border,box-shadow}.cardContainer_fWXF:hover{border-color:var(--ifm-color-primary);box-shadow:0 3px 6px 0 #0003}.cardTitle_rnsV{font-size:1.2rem}.cardDescription_PWke{font-size:.8rem}.breadcrumbHomeIcon_YNFT{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_Z_bl{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}.anchorWithStickyNavbar_LWe7{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_WYt5{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;user-select:none}.hash-link:before{content:"#"}.footerLogoLink_BH7S:hover,.hash-link:focus,:hover>.hash-link{opacity:1}.title_kItE{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-leading)*1.25)}.codeBlockContainer_Ckt0{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlockContent_biex{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_Ktv7{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_bY9V{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockTitle_Ktv7+.codeBlockContent_biex .codeBlock_bY9V{border-top-left-radius:0;border-top-right-radius:0}.codeBlockLines_e6Vv{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_o6Pm{display:table;padding:var(--ifm-pre-padding) 0}.buttonGroup__atx{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup__atx 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__atx button:focus-visible,.buttonGroup__atx button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup__atx 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_lJS_{counter-increment:a;display:table-row}.codeLineNumber_Tfdd{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_Tfdd:before{content:counter(a);opacity:.4}.codeLineContent_feaV{padding-right:var(--ifm-pre-padding)}.theme-code-block:hover .copyButtonCopied_obH4{opacity:1!important}.copyButtonIcons_eSgA{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_y97N,.copyButtonSuccessIcon_LjdS{fill:currentColor;height:inherit;left:0;opacity:inherit;position:absolute;top:0;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_LjdS{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_obH4 .copyButtonIcon_y97N{opacity:0;transform:scale(.33)}.copyButtonCopied_obH4 .copyButtonSuccessIcon_LjdS{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.wordWrapButtonIcon_Bwma{height:1.2rem;width:1.2rem}.details_lb9f{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_lb9f>summary{cursor:pointer;padding-left:1rem;position:relative}.details_lb9f>summary::-webkit-details-marker{display:none}.details_lb9f>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_i85q{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.details_b_Ee{--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)}.img_ev3q{height:auto}.admonition_LlT9{margin-bottom:1em}.admonitionHeading_tbUL{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.3rem}.admonitionHeading_tbUL code{text-transform:none}.admonitionIcon_kALy{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_kALy svg{fill:var(--ifm-alert-foreground-color);display:inline-block;height:1.6em;width:1.6em}.iconEdit_Z9Sw{margin-right:.3em;vertical-align:sub}.tag_zVej{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_zVej:hover{--docusaurus-tag-list-border:var(--ifm-link-color);text-decoration:none}.tagRegular_sFm0{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_h2kH{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_h2kH:after,.tagWithCount_h2kH:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_h2kH:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_h2kH:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_h2kH 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}.tags_jXut{display:inline}.tag_QGVx{display:inline-block;margin:0 .4rem .5rem 0}.lastUpdated_vwxv{font-size:smaller;font-style:italic;margin-top:.2rem}.tableOfContents_bqdL{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.tocCollapsibleButton_TO0P{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_TO0P: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_MG3E:after,.tocCollapsibleExpanded_sAul{transform:none}.tocCollapsible_ETCw{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_vkbj>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_vkbj ul li{margin:.4rem .8rem}.tocCollapsibleContent_vkbj a{display:block}.skipToContent_fXgn{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_fXgn:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_CVFx{line-height:0;padding:0}.content_knG7{font-size:85%;padding:5px 0;text-align:center}.content_knG7 a{color:inherit;text-decoration:underline}.announcementBar_mb4j{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)}#__docusaurus-base-url-issue-banner-container,.docSidebarContainer_b6E3,.sidebarLogo_isFc,.themedImage_ToTc,[data-theme=dark] .lightToggleIcon_pyhR,[data-theme=light] .darkToggleIcon_wfgR,html[data-announcement-bar-initially-dismissed=true] .announcementBar_mb4j{display:none}.announcementBarPlaceholder_vyr4{flex:0 0 10px}.announcementBarClose_gvF7{align-self:stretch;flex:0 0 30px}.toggle_vylO{height:2rem;width:2rem}.toggleButton_gllP{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_gllP:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_aARS{cursor:not-allowed}.darkNavbarColorModeToggle_X3D1:hover{background:var(--ifm-color-gray-800)}[data-theme=dark] .themedImage--dark_i4oU,[data-theme=light] .themedImage--light_HNdA,html:not([data-theme]) .themedComponent--light_NU7w{display:initial}.iconExternalLink_nPIU{margin-left:.3rem}.iconLanguage_nlXk{margin-right:5px;vertical-align:text-bottom}.navbarHideable_jvwV{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_nLSi{transform:translate3d(0,calc(-100% - 2px),0)}.footerLogoLink_BH7S{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}.errorBoundaryError_a6uf{color:red;white-space:pre-wrap}.mainWrapper_z2l0{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.backToTopButton_sjWU{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_sjWU: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_xfvO{opacity:1;transform:scale(1);visibility:visible}[data-theme=dark]:root{--docusaurus-collapse-button-bg:#ffffff0d;--docusaurus-collapse-button-bg-hover:#ffffff1a}.collapseSidebarButton_PEFL{display:none;margin:0}.docMainContainer_gTbr,.docPage__5DB{display:flex;width:100%}.docPage__5DB{flex:1 0}.docsWrapper_BCFX{display:flex;flex:1 0 auto}@media (min-width:997px){.collapseSidebarButton_PEFL,.expandButton_m80_{background-color:var(--docusaurus-collapse-button-bg)}.docItemCol_z5aJ,.generatedIndexPage_vN6x{max-width:75%!important}.list_eTzJ article:nth-last-child(-n+2){margin-bottom:0!important}.lastUpdated_vwxv{text-align:right}.tocMobile_ITEo{display:none}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_gvF7,.announcementBarPlaceholder_vyr4{flex-basis:50px}.searchBox_ZlJk{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.collapseSidebarButton_PEFL{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_kv0_{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_BlDH,[dir=rtl] .collapseSidebarButtonIcon_kv0_{transform:rotate(0)}.collapseSidebarButton_PEFL:focus,.collapseSidebarButton_PEFL:hover,.expandButton_m80_:focus,.expandButton_m80_:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.menuHtmlItem_PEWV{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_SIkG{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_SIkG{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_GW3s{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_njMd{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_wUlq{padding-top:0}.sidebarHidden_VK0M{opacity:0;visibility:hidden}.sidebarLogo_isFc{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_isFc img{height:2rem;margin-right:.5rem}.expandButton_m80_{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_BlDH{transform:rotate(180deg)}.docSidebarContainer_b6E3{border-right:1px solid var(--ifm-toc-border-color);-webkit-clip-path:inset(0);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_b3ry{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_Xe31{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_gTbr{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_Uz_u{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_czyv{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!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_x44X,.footer__link-separator,.navbar__item,.tableOfContents_bqdL{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}.docItemContainer_F8PC{padding:0 .3rem}.searchBox_ZlJk{position:absolute;right:var(--ifm-navbar-padding-horizontal)}}@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}}@media (hover:hover){.backToTopButton_sjWU: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 print{.announcementBar_mb4j,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_ITEo{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_e6Vv{white-space:pre-wrap}} \ No newline at end of file diff --git a/assets/js/01c2b708.1b504707.js b/assets/js/01c2b708.0c35789d.js similarity index 89% rename from assets/js/01c2b708.1b504707.js rename to assets/js/01c2b708.0c35789d.js index 1b7ae0cc..1b38bf25 100644 --- a/assets/js/01c2b708.1b504707.js +++ b/assets/js/01c2b708.0c35789d.js @@ -1 +1 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[8089],{2845:a=>{a.exports=JSON.parse('{"title":"Charts","description":"Charts let you display historical records and arrays in a easy-to-undestand manner. Charts in ESP-DASH are extremely useful when it comes to display data over span of time. The following charts are included in the library:","slug":"/category/charts","permalink":"/v3.x.x/category/charts","navigation":{"previous":{"title":"Joystick (Pro)","permalink":"/v3.x.x/cards/joystick"},"next":{"title":"Bar","permalink":"/v3.x.x/charts/bar"}}}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[8696],{4688:a=>{a.exports=JSON.parse('{"title":"Charts","description":"Charts let you display historical records and arrays in a easy-to-undestand manner. Charts in ESP-DASH are extremely useful when it comes to display data over span of time. The following charts are included in the library:","slug":"/category/charts","permalink":"/v3.x.x/category/charts","navigation":{"previous":{"title":"Joystick (Pro)","permalink":"/v3.x.x/cards/joystick"},"next":{"title":"Bar","permalink":"/v3.x.x/charts/bar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/021dfd6a.0111ee66.js b/assets/js/021dfd6a.0111ee66.js deleted file mode 100644 index d2f5f808..00000000 --- a/assets/js/021dfd6a.0111ee66.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[2639],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>v});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var o=a.createContext({}),c=function(e){var t=a.useContext(o),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=c(e.components);return a.createElement(o.Provider,{value:t},e.children)},d="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,l=e.originalType,o=e.parentName,u=p(e,["components","mdxType","originalType","parentName"]),d=c(r),m=n,v=d["".concat(o,".").concat(m)]||d[m]||s[m]||l;return r?a.createElement(v,i(i({ref:t},u),{},{components:r})):a.createElement(v,i({ref:t},u))}));function v(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=r.length,i=new Array(l);i[0]=m;var p={};for(var o in t)hasOwnProperty.call(t,o)&&(p[o]=t[o]);p.originalType=e,p[d]="string"==typeof e?e:n,i[1]=p;for(var c=2;c{r.r(t),r.d(t,{assets:()=>o,contentTitle:()=>i,default:()=>s,frontMatter:()=>l,metadata:()=>p,toc:()=>c});var a=r(7462),n=(r(7294),r(3905));const l={title:"Temperature Card",sidebar_label:"Temperature",sidebar_position:2},i=void 0,p={unversionedId:"cards/temperature",id:"version-v4.x.x/cards/temperature",title:"Temperature Card",description:"Preview:",source:"@site/versioned_docs/version-v4.x.x/cards/temperature.md",sourceDirName:"cards",slug:"/cards/temperature",permalink:"/cards/temperature",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:2,frontMatter:{title:"Temperature Card",sidebar_label:"Temperature",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Generic",permalink:"/cards/generic"},next:{title:"Humidity",permalink:"/cards/humidity"}},o={},c=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],u={toc:c},d="wrapper";function s(e){let{components:t,...r}=e;return(0,n.kt)(d,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/temperature-card.png",width:"280px",alt:"Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"This card adds a distinctive temperature icon, and just like generic card you can add a symbol which will be appended to your data."),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"TEMPERATURE_CARD")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"String"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Temperature Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )\n*/\nCard card1(&dashboard, TEMPERATURE_CARD, "Temperature1", "\xb0C");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(float value);\n")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")),(0,n.kt)("p",null,"Or you can also update the symbol along with the value like this:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'card1.update(value, "\xb0F");\n')),(0,n.kt)("br",null),(0,n.kt)("br",null))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/021dfd6a.ac85af1b.js b/assets/js/021dfd6a.ac85af1b.js new file mode 100644 index 00000000..e289ebf4 --- /dev/null +++ b/assets/js/021dfd6a.ac85af1b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[7452],{5788:(e,r,t)=>{t.d(r,{Iu:()=>u,yg:()=>g});var a=t(1504);function n(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function l(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);r&&(a=a.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,a)}return t}function i(e){for(var r=1;r=0||(n[t]=e[t]);return n}(e,r);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}var o=a.createContext({}),c=function(e){var r=a.useContext(o),t=r;return e&&(t="function"==typeof e?e(r):i(i({},r),e)),t},u=function(e){var r=c(e.components);return a.createElement(o.Provider,{value:r},e.children)},d="mdxType",s={inlineCode:"code",wrapper:function(e){var r=e.children;return a.createElement(a.Fragment,{},r)}},y=a.forwardRef((function(e,r){var t=e.components,n=e.mdxType,l=e.originalType,o=e.parentName,u=p(e,["components","mdxType","originalType","parentName"]),d=c(t),y=n,g=d["".concat(o,".").concat(y)]||d[y]||s[y]||l;return t?a.createElement(g,i(i({ref:r},u),{},{components:t})):a.createElement(g,i({ref:r},u))}));function g(e,r){var t=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var l=t.length,i=new Array(l);i[0]=y;var p={};for(var o in r)hasOwnProperty.call(r,o)&&(p[o]=r[o]);p.originalType=e,p[d]="string"==typeof e?e:n,i[1]=p;for(var c=2;c{t.r(r),t.d(r,{assets:()=>o,contentTitle:()=>i,default:()=>s,frontMatter:()=>l,metadata:()=>p,toc:()=>c});var a=t(5072),n=(t(1504),t(5788));const l={title:"Temperature Card",sidebar_label:"Temperature",sidebar_position:2},i=void 0,p={unversionedId:"cards/temperature",id:"version-v4.x.x/cards/temperature",title:"Temperature Card",description:"Preview:",source:"@site/versioned_docs/version-v4.x.x/cards/temperature.md",sourceDirName:"cards",slug:"/cards/temperature",permalink:"/cards/temperature",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:2,frontMatter:{title:"Temperature Card",sidebar_label:"Temperature",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Generic",permalink:"/cards/generic"},next:{title:"Humidity",permalink:"/cards/humidity"}},o={},c=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],u={toc:c},d="wrapper";function s(e){let{components:r,...t}=e;return(0,n.yg)(d,(0,a.c)({},u,t,{components:r,mdxType:"MDXLayout"}),(0,n.yg)("h4",{id:"preview"},"Preview:"),(0,n.yg)("img",{className:"card-preview",src:"/img/v4/temperature-card.png",width:"280px",alt:"Preview"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("p",null,"This card adds a distinctive temperature icon, and just like generic card you can add a symbol which will be appended to your data."),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"type"},"Type:"),(0,n.yg)("p",null,(0,n.yg)("inlineCode",{parentName:"p"},"TEMPERATURE_CARD")),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"int")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"float")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"String"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"initializer"},"Initializer:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Temperature Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )\n*/\nCard card1(&dashboard, TEMPERATURE_CARD, "Temperature1", "\xb0C");\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"updaters"},"Updaters:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(float value);\n")),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")),(0,n.yg)("p",null,"Or you can also update the symbol along with the value like this:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'card1.update(value, "\xb0F");\n')),(0,n.yg)("br",null),(0,n.yg)("br",null))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0487f087.864c3bcb.js b/assets/js/0487f087.bd0d0d33.js similarity index 56% rename from assets/js/0487f087.864c3bcb.js rename to assets/js/0487f087.bd0d0d33.js index f7f67ae3..d5b0b791 100644 --- a/assets/js/0487f087.864c3bcb.js +++ b/assets/js/0487f087.bd0d0d33.js @@ -1 +1 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[5258],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>v});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function s(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),o=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},d=function(e){var t=o(e.components);return r.createElement(u.Provider,{value:t},e.children)},p="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,s=e.originalType,u=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),p=o(a),m=n,v=p["".concat(u,".").concat(m)]||p[m]||c[m]||s;return a?r.createElement(v,i(i({ref:t},d),{},{components:a})):r.createElement(v,i({ref:t},d))}));function v(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var s=a.length,i=new Array(s);i[0]=m;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[p]="string"==typeof e?e:n,i[1]=l;for(var o=2;o{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>c,frontMatter:()=>s,metadata:()=>l,toc:()=>o});var r=a(7462),n=(a(7294),a(3905));const s={title:"Status Card",sidebar_label:"Status",sidebar_position:5},i=void 0,l={unversionedId:"cards/status",id:"cards/status",title:"Status Card",description:"Preview:",source:"@site/docs/cards/status.md",sourceDirName:"cards",slug:"/cards/status",permalink:"/next/cards/status",draft:!1,tags:[],version:"current",sidebarPosition:5,frontMatter:{title:"Status Card",sidebar_label:"Status",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Push Button (Pro)",permalink:"/next/cards/push-button"},next:{title:"Slider",permalink:"/next/cards/slider"}},u={},o=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Valid Statuses:",id:"valid-statuses",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],d={toc:o},p="wrapper";function c(e){let{components:t,...a}=e;return(0,n.kt)(p,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/status-card-idle.png",width:"280px",alt:"Preview"}),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/status-card-warning.png",width:"280px",alt:"Preview"}),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/status-card-success.png",width:"280px",alt:"Preview"}),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/status-card-danger.png",width:"280px",alt:"Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"As it's name suggests, status card is used to display some kind of status on your dashboard. It can show 4 different kinds of status along with a short message."),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"STATUS_CARD")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"String"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-statuses"},"Valid Statuses:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},'"success"')," - Green"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},'"danger"')," - Red"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},'"warning"')," - Yellow"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},'"idle"')," - Grey")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Status Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* status (optional) )\n*/\nCard card1(&dashboard, STATUS_CARD, "Test Status", "success");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("p",null,"Status card updater allows you to set a message:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'card1.update("message");\n')),(0,n.kt)("p",null,"Or, message + status at the same time:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'card1.update("Message", "success");\n')))}c.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[9540],{5788:(e,t,a)=>{a.d(t,{Iu:()=>d,yg:()=>y});var r=a(1504);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function s(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),o=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},d=function(e){var t=o(e.components);return r.createElement(u.Provider,{value:t},e.children)},p="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},g=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,s=e.originalType,u=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),p=o(a),g=n,y=p["".concat(u,".").concat(g)]||p[g]||c[g]||s;return a?r.createElement(y,i(i({ref:t},d),{},{components:a})):r.createElement(y,i({ref:t},d))}));function y(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var s=a.length,i=new Array(s);i[0]=g;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[p]="string"==typeof e?e:n,i[1]=l;for(var o=2;o{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>c,frontMatter:()=>s,metadata:()=>l,toc:()=>o});var r=a(5072),n=(a(1504),a(5788));const s={title:"Status Card",sidebar_label:"Status",sidebar_position:5},i=void 0,l={unversionedId:"cards/status",id:"cards/status",title:"Status Card",description:"Preview:",source:"@site/docs/cards/status.md",sourceDirName:"cards",slug:"/cards/status",permalink:"/next/cards/status",draft:!1,tags:[],version:"current",sidebarPosition:5,frontMatter:{title:"Status Card",sidebar_label:"Status",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Push Button (Pro)",permalink:"/next/cards/push-button"},next:{title:"Slider",permalink:"/next/cards/slider"}},u={},o=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Valid Statuses:",id:"valid-statuses",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],d={toc:o},p="wrapper";function c(e){let{components:t,...a}=e;return(0,n.yg)(p,(0,r.c)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,n.yg)("h4",{id:"preview"},"Preview:"),(0,n.yg)("img",{className:"card-preview",src:"/img/v4/status-card-idle.png",width:"280px",alt:"Preview"}),(0,n.yg)("img",{className:"card-preview",src:"/img/v4/status-card-warning.png",width:"280px",alt:"Preview"}),(0,n.yg)("img",{className:"card-preview",src:"/img/v4/status-card-success.png",width:"280px",alt:"Preview"}),(0,n.yg)("img",{className:"card-preview",src:"/img/v4/status-card-danger.png",width:"280px",alt:"Preview"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("p",null,"As it's name suggests, status card is used to display some kind of status on your dashboard. It can show 4 different kinds of status along with a short message."),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"type"},"Type:"),(0,n.yg)("p",null,(0,n.yg)("inlineCode",{parentName:"p"},"STATUS_CARD")),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"String"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-statuses"},"Valid Statuses:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},'"success"')," - Green"),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},'"danger"')," - Red"),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},'"warning"')," - Yellow"),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},'"idle"')," - Grey")),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"initializer"},"Initializer:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Status Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* status (optional) )\n*/\nCard card1(&dashboard, STATUS_CARD, "Test Status", "success");\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"updaters"},"Updaters:"),(0,n.yg)("p",null,"Status card updater allows you to set a message:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'card1.update("message");\n')),(0,n.yg)("p",null,"Or, message + status at the same time:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'card1.update("Message", "success");\n')))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0b5c9aa2.f129896c.js b/assets/js/0b5c9aa2.4328a032.js similarity index 74% rename from assets/js/0b5c9aa2.f129896c.js rename to assets/js/0b5c9aa2.4328a032.js index adee908a..09e92cb6 100644 --- a/assets/js/0b5c9aa2.f129896c.js +++ b/assets/js/0b5c9aa2.4328a032.js @@ -1 +1 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[6693],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>d});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(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 i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var u=n.createContext({}),c=function(e){var t=n.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=c(e.components);return n.createElement(u.Provider,{value:t},e.children)},l="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,u=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),l=c(r),m=o,d=l["".concat(u,".").concat(m)]||l[m]||f[m]||a;return r?n.createElement(d,i(i({ref:t},p),{},{components:r})):n.createElement(d,i({ref:t},p))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=m;var s={};for(var u in t)hasOwnProperty.call(t,u)&&(s[u]=t[u]);s.originalType=e,s[l]="string"==typeof e?e:o,i[1]=s;for(var c=2;c{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>f,frontMatter:()=>a,metadata:()=>s,toc:()=>c});var n=r(7462),o=(r(7294),r(3905));const a={title:"Custom URI",sidebar_label:"Custom URI",sidebar_position:0},i=void 0,s={unversionedId:"features/custom-uri",id:"features/custom-uri",title:"Custom URI",description:"If you want to serve ESPDash at a path other than 'root' (ie. http:///) then you can use the constructor to supply the path of your choice.",source:"@site/docs/features/custom-uri.md",sourceDirName:"features",slug:"/features/custom-uri",permalink:"/next/features/custom-uri",draft:!1,tags:[],version:"current",sidebarPosition:0,frontMatter:{title:"Custom URI",sidebar_label:"Custom URI",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Pie (Pro)",permalink:"/next/charts/pie"},next:{title:"User Authentication",permalink:"/next/features/authentication"}},u={},c=[{value:"Example:",id:"example",level:4}],p={toc:c},l="wrapper";function f(e){let{components:t,...r}=e;return(0,o.kt)(l,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"If you want to serve ESPDash at a path other than 'root' (ie. ",(0,o.kt)("inlineCode",{parentName:"p"},"http:///"),") then you can use the constructor to supply the path of your choice."),(0,o.kt)("h4",{id:"example"},"Example:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cpp"},'ESPDash dashboard(&server, "/dash");\n')),(0,o.kt)("p",null,"This will result in ESPDash being served at ",(0,o.kt)("inlineCode",{parentName:"p"},"http:///dash"),"."))}f.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[1152],{5788:(e,t,r)=>{r.d(t,{Iu:()=>p,yg:()=>y});var n=r(1504);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(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 i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var u=n.createContext({}),c=function(e){var t=n.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=c(e.components);return n.createElement(u.Provider,{value:t},e.children)},l="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,u=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),l=c(r),m=o,y=l["".concat(u,".").concat(m)]||l[m]||f[m]||a;return r?n.createElement(y,i(i({ref:t},p),{},{components:r})):n.createElement(y,i({ref:t},p))}));function y(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=m;var s={};for(var u in t)hasOwnProperty.call(t,u)&&(s[u]=t[u]);s.originalType=e,s[l]="string"==typeof e?e:o,i[1]=s;for(var c=2;c{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>f,frontMatter:()=>a,metadata:()=>s,toc:()=>c});var n=r(5072),o=(r(1504),r(5788));const a={title:"Custom URI",sidebar_label:"Custom URI",sidebar_position:0},i=void 0,s={unversionedId:"features/custom-uri",id:"features/custom-uri",title:"Custom URI",description:"If you want to serve ESPDash at a path other than 'root' (ie. http:///) then you can use the constructor to supply the path of your choice.",source:"@site/docs/features/custom-uri.md",sourceDirName:"features",slug:"/features/custom-uri",permalink:"/next/features/custom-uri",draft:!1,tags:[],version:"current",sidebarPosition:0,frontMatter:{title:"Custom URI",sidebar_label:"Custom URI",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Pie (Pro)",permalink:"/next/charts/pie"},next:{title:"User Authentication",permalink:"/next/features/authentication"}},u={},c=[{value:"Example:",id:"example",level:4}],p={toc:c},l="wrapper";function f(e){let{components:t,...r}=e;return(0,o.yg)(l,(0,n.c)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,o.yg)("p",null,"If you want to serve ESPDash at a path other than 'root' (ie. ",(0,o.yg)("inlineCode",{parentName:"p"},"http:///"),") then you can use the constructor to supply the path of your choice."),(0,o.yg)("h4",{id:"example"},"Example:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-cpp"},'ESPDash dashboard(&server, "/dash");\n')),(0,o.yg)("p",null,"This will result in ESPDash being served at ",(0,o.yg)("inlineCode",{parentName:"p"},"http:///dash"),"."))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0e384e19.92fa8ef0.js b/assets/js/0e384e19.68a10671.js similarity index 58% rename from assets/js/0e384e19.92fa8ef0.js rename to assets/js/0e384e19.68a10671.js index fe7555fc..e2d71bb8 100644 --- a/assets/js/0e384e19.92fa8ef0.js +++ b/assets/js/0e384e19.68a10671.js @@ -1 +1 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[9671],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>f});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(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 i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var s=n.createContext({}),c=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=c(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=c(r),m=o,f=p["".concat(s,".").concat(m)]||p[m]||d[m]||a;return r?n.createElement(f,i(i({ref:t},u),{},{components:r})):n.createElement(f,i({ref:t},u))}));function f(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:o,i[1]=l;for(var c=2;c{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>l,toc:()=>c});var n=r(7462),o=(r(7294),r(3905));const a={title:"Intro",hide_title:!0,sidebar_label:"Introduction",sidebar_position:1,slug:"/"},i=void 0,l={unversionedId:"intro",id:"intro",title:"Intro",description:" ",source:"@site/docs/intro.md",sourceDirName:".",slug:"/",permalink:"/next/",draft:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Intro",hide_title:!0,sidebar_label:"Introduction",sidebar_position:1,slug:"/"},sidebar:"tutorialSidebar",next:{title:"Concept",permalink:"/next/concept"}},s={},c=[{value:"Preview:",id:"preview",level:4}],u={toc:c},p="wrapper";function d(e){let{components:t,...r}=e;return(0,o.kt)(p,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("br",null),(0,o.kt)("img",{src:"/img/dash-splash.png",width:"300px"}),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("img",{src:"https://img.shields.io/github/last-commit/ayushsharma82/ESP-DASH?style=for-the-badge"}),"\xa0 \xa0",(0,o.kt)("img",{src:"https://img.shields.io/github/actions/workflow/status/ayushsharma82/ESP-DASH/ci.yml?branch=master&style=for-the-badge"}),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("p",null,"So as many would ask, what is ESP-DASH? In simple words - It's a ",(0,o.kt)("b",null,"UI library")," for ESP32 & ESP8266 microcontrollers that let you generate a fully capable dashboard. It can moulded in any way possible to suit your application needs."),(0,o.kt)("p",null,"Here are a few things by which you benefit by using ESP-DASH in your project:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\ud83d\udd25 Automatic webpage generation."),(0,o.kt)("li",{parentName:"ul"},"\u23f1\ufe0f Realtime updates to all connected clients."),(0,o.kt)("li",{parentName:"ul"},"\ud83c\udfb7 No need to learn HTML/CSS/JS. ESP-DASH provides you with a C++ interface."),(0,o.kt)("li",{parentName:"ul"},"\ud83d\udeeb Ready to use components for your data."),(0,o.kt)("li",{parentName:"ul"},"\ud83c\udfc0 It's dynamic! Add or remove components anytime from the webpage."),(0,o.kt)("li",{parentName:"ul"},"\ud83d\udcc8 Inbuilt charts support.")),(0,o.kt)("br",null),(0,o.kt)("i",null,'Note: This documentation serves both the versions of ESP-DASH ( Lite - Open Source and Pro ). Therefore, if you notice "(Pro)" mentioned on any of the features in the documentation, that means it is only available in ',(0,o.kt)("a",{href:"https://espdash.pro"},"ESP-DASH Pro"),"."),(0,o.kt)("h4",{id:"preview"},"Preview:"),(0,o.kt)("img",{src:"/img/v4/preview.png",className:"img-dropshadow",width:"800"}))}d.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[6328],{5788:(e,t,r)=>{r.d(t,{Iu:()=>u,yg:()=>m});var n=r(1504);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(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 i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var s=n.createContext({}),c=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=c(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",y={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=c(r),d=o,m=p["".concat(s,".").concat(d)]||p[d]||y[d]||a;return r?n.createElement(m,i(i({ref:t},u),{},{components:r})):n.createElement(m,i({ref:t},u))}));function m(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:o,i[1]=l;for(var c=2;c{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>y,frontMatter:()=>a,metadata:()=>l,toc:()=>c});var n=r(5072),o=(r(1504),r(5788));const a={title:"Intro",hide_title:!0,sidebar_label:"Introduction",sidebar_position:1,slug:"/"},i=void 0,l={unversionedId:"intro",id:"intro",title:"Intro",description:" ",source:"@site/docs/intro.md",sourceDirName:".",slug:"/",permalink:"/next/",draft:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Intro",hide_title:!0,sidebar_label:"Introduction",sidebar_position:1,slug:"/"},sidebar:"tutorialSidebar",next:{title:"Concept",permalink:"/next/concept"}},s={},c=[{value:"Preview:",id:"preview",level:4}],u={toc:c},p="wrapper";function y(e){let{components:t,...r}=e;return(0,o.yg)(p,(0,n.c)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,o.yg)("br",null),(0,o.yg)("img",{src:"/img/dash-splash.png",width:"300px"}),(0,o.yg)("br",null),(0,o.yg)("br",null),(0,o.yg)("img",{src:"https://img.shields.io/github/last-commit/ayushsharma82/ESP-DASH?style=for-the-badge"}),"\xa0 \xa0",(0,o.yg)("img",{src:"https://img.shields.io/github/actions/workflow/status/ayushsharma82/ESP-DASH/ci.yml?branch=master&style=for-the-badge"}),(0,o.yg)("br",null),(0,o.yg)("br",null),(0,o.yg)("br",null),(0,o.yg)("p",null,"So as many would ask, what is ESP-DASH? In simple words - It's a ",(0,o.yg)("b",null,"UI library")," for ESP32 & ESP8266 microcontrollers that let you generate a fully capable dashboard. It can moulded in any way possible to suit your application needs."),(0,o.yg)("p",null,"Here are a few things by which you benefit by using ESP-DASH in your project:"),(0,o.yg)("ul",null,(0,o.yg)("li",{parentName:"ul"},"\ud83d\udd25 Automatic webpage generation."),(0,o.yg)("li",{parentName:"ul"},"\u23f1\ufe0f Realtime updates to all connected clients."),(0,o.yg)("li",{parentName:"ul"},"\ud83c\udfb7 No need to learn HTML/CSS/JS. ESP-DASH provides you with a C++ interface."),(0,o.yg)("li",{parentName:"ul"},"\ud83d\udeeb Ready to use components for your data."),(0,o.yg)("li",{parentName:"ul"},"\ud83c\udfc0 It's dynamic! Add or remove components anytime from the webpage."),(0,o.yg)("li",{parentName:"ul"},"\ud83d\udcc8 Inbuilt charts support.")),(0,o.yg)("br",null),(0,o.yg)("i",null,'Note: This documentation serves both the versions of ESP-DASH ( Lite - Open Source and Pro ). Therefore, if you notice "(Pro)" mentioned on any of the features in the documentation, that means it is only available in ',(0,o.yg)("a",{href:"https://espdash.pro"},"ESP-DASH Pro"),"."),(0,o.yg)("h4",{id:"preview"},"Preview:"),(0,o.yg)("img",{src:"/img/v4/preview.png",className:"img-dropshadow",width:"800"}))}y.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0f34283b.68625eb8.js b/assets/js/0f34283b.68625eb8.js new file mode 100644 index 00000000..c4fc8495 --- /dev/null +++ b/assets/js/0f34283b.68625eb8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[768],{5788:(e,r,t)=>{t.d(r,{Iu:()=>u,yg:()=>g});var a=t(1504);function n(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function i(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);r&&(a=a.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,a)}return t}function l(e){for(var r=1;r=0||(n[t]=e[t]);return n}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}var p=a.createContext({}),d=function(e){var r=a.useContext(p),t=r;return e&&(t="function"==typeof e?e(r):l(l({},r),e)),t},u=function(e){var r=d(e.components);return a.createElement(p.Provider,{value:r},e.children)},c="mdxType",s={inlineCode:"code",wrapper:function(e){var r=e.children;return a.createElement(a.Fragment,{},r)}},y=a.forwardRef((function(e,r){var t=e.components,n=e.mdxType,i=e.originalType,p=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),c=d(t),y=n,g=c["".concat(p,".").concat(y)]||c[y]||s[y]||i;return t?a.createElement(g,l(l({ref:r},u),{},{components:t})):a.createElement(g,l({ref:r},u))}));function g(e,r){var t=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var i=t.length,l=new Array(i);l[0]=y;var o={};for(var p in r)hasOwnProperty.call(r,p)&&(o[p]=r[p]);o.originalType=e,o[c]="string"==typeof e?e:n,l[1]=o;for(var d=2;d{t.r(r),t.d(r,{assets:()=>p,contentTitle:()=>l,default:()=>s,frontMatter:()=>i,metadata:()=>o,toc:()=>d});var a=t(5072),n=(t(1504),t(5788));const i={title:"Humidity Card",sidebar_label:"Humidity",sidebar_position:3},l=void 0,o={unversionedId:"cards/humidity",id:"version-v3.x.x/cards/humidity",title:"Humidity Card",description:"Preview:",source:"@site/versioned_docs/version-v3.x.x/cards/humidity.md",sourceDirName:"cards",slug:"/cards/humidity",permalink:"/v3.x.x/cards/humidity",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:3,frontMatter:{title:"Humidity Card",sidebar_label:"Humidity",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Temperature",permalink:"/v3.x.x/cards/temperature"},next:{title:"Air (Pro)",permalink:"/v3.x.x/cards/air"}},p={},d=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],u={toc:d},c="wrapper";function s(e){let{components:r,...t}=e;return(0,n.yg)(c,(0,a.c)({},u,t,{components:r,mdxType:"MDXLayout"}),(0,n.yg)("h4",{id:"preview"},"Preview:"),(0,n.yg)("img",{src:"/img//humidity-card.png",width:"280px",alt:"Preview"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("p",null,"This card adds a distinctive humidity icon, and just like generic card you can add a symbol which will be appended to your data."),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"type"},"Type:"),(0,n.yg)("p",null,(0,n.yg)("inlineCode",{parentName:"p"},"HUMIDITY_CARD")),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"int")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"float")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"String"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"initializer"},"Initializer:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Humidity Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )\n*/\nCard card1(&dashboard, HUMIDITY_CARD, "Humidity1", "%");\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"updaters"},"Updaters:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(float value);\n")),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")),(0,n.yg)("p",null,"Or you can also update the symbol along with the value like this:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'card1.update(value, "RH");\n')),(0,n.yg)("br",null),(0,n.yg)("br",null))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0f34283b.eedc5bb0.js b/assets/js/0f34283b.eedc5bb0.js deleted file mode 100644 index 1df32008..00000000 --- a/assets/js/0f34283b.eedc5bb0.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[174],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>y});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=a.createContext({}),d=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},u=function(e){var t=d(e.components);return a.createElement(p.Provider,{value:t},e.children)},c="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,p=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),c=d(r),m=n,y=c["".concat(p,".").concat(m)]||c[m]||s[m]||i;return r?a.createElement(y,l(l({ref:t},u),{},{components:r})):a.createElement(y,l({ref:t},u))}));function y(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,l=new Array(i);l[0]=m;var o={};for(var p in t)hasOwnProperty.call(t,p)&&(o[p]=t[p]);o.originalType=e,o[c]="string"==typeof e?e:n,l[1]=o;for(var d=2;d{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>s,frontMatter:()=>i,metadata:()=>o,toc:()=>d});var a=r(7462),n=(r(7294),r(3905));const i={title:"Humidity Card",sidebar_label:"Humidity",sidebar_position:3},l=void 0,o={unversionedId:"cards/humidity",id:"version-v3.x.x/cards/humidity",title:"Humidity Card",description:"Preview:",source:"@site/versioned_docs/version-v3.x.x/cards/humidity.md",sourceDirName:"cards",slug:"/cards/humidity",permalink:"/v3.x.x/cards/humidity",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:3,frontMatter:{title:"Humidity Card",sidebar_label:"Humidity",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Temperature",permalink:"/v3.x.x/cards/temperature"},next:{title:"Air (Pro)",permalink:"/v3.x.x/cards/air"}},p={},d=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],u={toc:d},c="wrapper";function s(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{src:"/img//humidity-card.png",width:"280px",alt:"Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"This card adds a distinctive humidity icon, and just like generic card you can add a symbol which will be appended to your data."),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"HUMIDITY_CARD")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"String"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Humidity Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )\n*/\nCard card1(&dashboard, HUMIDITY_CARD, "Humidity1", "%");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(float value);\n")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")),(0,n.kt)("p",null,"Or you can also update the symbol along with the value like this:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'card1.update(value, "RH");\n')),(0,n.kt)("br",null),(0,n.kt)("br",null))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/10703425.6a5eae4c.js b/assets/js/10703425.f4b4b58c.js similarity index 69% rename from assets/js/10703425.6a5eae4c.js rename to assets/js/10703425.f4b4b58c.js index 9f452126..66b1a8ca 100644 --- a/assets/js/10703425.6a5eae4c.js +++ b/assets/js/10703425.f4b4b58c.js @@ -1 +1 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[6972],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>m});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(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 i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var s=n.createContext({}),c=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=c(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=c(r),d=o,m=p["".concat(s,".").concat(d)]||p[d]||f[d]||a;return r?n.createElement(m,i(i({ref:t},u),{},{components:r})):n.createElement(m,i({ref:t},u))}));function m(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:o,i[1]=l;for(var c=2;c{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>f,frontMatter:()=>a,metadata:()=>l,toc:()=>c});var n=r(7462),o=(r(7294),r(3905));const a={title:"Custom Title",sidebar_label:"Custom Title (Pro)",sidebar_position:3},i=void 0,l={unversionedId:"features/title",id:"version-v4.x.x/features/title",title:"Custom Title",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v4.x.x/features/title.md",sourceDirName:"features",slug:"/features/title",permalink:"/features/title",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:3,frontMatter:{title:"Custom Title",sidebar_label:"Custom Title (Pro)",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Toggle Animation (Pro)",permalink:"/features/chartanimations"},next:{title:"Custom Logo (Pro)",permalink:"/features/custom-logo"}},s={},c=[{value:"Example:",id:"example",level:4}],u={toc:c},p="wrapper";function f(e){let{components:t,...r}=e;return(0,o.kt)(p,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("div",{className:"pro-label"},(0,o.kt)("i",null,(0,o.kt)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,o.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,o.kt)("br",null),(0,o.kt)("img",{src:"/img/v4/custom-title.png",width:"500px",alt:"Energy Card Preview"}),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("a",{href:"https://espdash.pro/",target:"_blank"},"ESP-DASH ",(0,o.kt)("span",{style:{color:"rgb(245, 75, 66)"}},"Pro"))," provides you with a ",(0,o.kt)("code",null,"setTitle")," function in the main ESPDash class. You can use this function to change the default title of your dashboard.",(0,o.kt)("h4",{id:"example"},"Example:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cpp"},'dashboard.setTitle("New Dashboard XYZ");\n')))}f.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[4424],{5788:(e,t,r)=>{r.d(t,{Iu:()=>u,yg:()=>d});var n=r(1504);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(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 i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var s=n.createContext({}),c=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=c(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},y=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=c(r),y=o,d=p["".concat(s,".").concat(y)]||p[y]||f[y]||a;return r?n.createElement(d,i(i({ref:t},u),{},{components:r})):n.createElement(d,i({ref:t},u))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=y;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:o,i[1]=l;for(var c=2;c{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>f,frontMatter:()=>a,metadata:()=>l,toc:()=>c});var n=r(5072),o=(r(1504),r(5788));const a={title:"Custom Title",sidebar_label:"Custom Title (Pro)",sidebar_position:3},i=void 0,l={unversionedId:"features/title",id:"version-v4.x.x/features/title",title:"Custom Title",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v4.x.x/features/title.md",sourceDirName:"features",slug:"/features/title",permalink:"/features/title",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:3,frontMatter:{title:"Custom Title",sidebar_label:"Custom Title (Pro)",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Toggle Animation (Pro)",permalink:"/features/chartanimations"},next:{title:"Custom Logo (Pro)",permalink:"/features/custom-logo"}},s={},c=[{value:"Example:",id:"example",level:4}],u={toc:c},p="wrapper";function f(e){let{components:t,...r}=e;return(0,o.yg)(p,(0,n.c)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,o.yg)("div",{className:"pro-label"},(0,o.yg)("i",null,(0,o.yg)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,o.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,o.yg)("br",null),(0,o.yg)("img",{src:"/img/v4/custom-title.png",width:"500px",alt:"Energy Card Preview"}),(0,o.yg)("br",null),(0,o.yg)("br",null),(0,o.yg)("a",{href:"https://espdash.pro/",target:"_blank"},"ESP-DASH ",(0,o.yg)("span",{style:{color:"rgb(245, 75, 66)"}},"Pro"))," provides you with a ",(0,o.yg)("code",null,"setTitle")," function in the main ESPDash class. You can use this function to change the default title of your dashboard.",(0,o.yg)("h4",{id:"example"},"Example:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-cpp"},'dashboard.setTitle("New Dashboard XYZ");\n')))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/14eb3368.509876c1.js b/assets/js/14eb3368.509876c1.js new file mode 100644 index 00000000..b92ce970 --- /dev/null +++ b/assets/js/14eb3368.509876c1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[9576],{4556:(e,t,a)=>{a.d(t,{c:()=>E});var n=a(5072),r=a(1504),i=a(4971),c=a(5864),l=a(9940),s=a(3376),o=a(6016),m=a(4357),d=a(964);function u(e){return r.createElement("svg",(0,n.c)({viewBox:"0 0 24 24"},e),r.createElement("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 h={breadcrumbHomeIcon:"breadcrumbHomeIcon_YNFT"};function b(){const e=(0,d.c)("/");return r.createElement("li",{className:"breadcrumbs__item"},r.createElement(o.c,{"aria-label":(0,m.G)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e},r.createElement(u,{className:h.breadcrumbHomeIcon})))}const v={breadcrumbsContainer:"breadcrumbsContainer_Z_bl"};function p(e){let{children:t,href:a,isLast:n}=e;const i="breadcrumbs__link";return n?r.createElement("span",{className:i,itemProp:"name"},t):a?r.createElement(o.c,{className:i,href:a,itemProp:"item"},r.createElement("span",{itemProp:"name"},t)):r.createElement("span",{className:i},t)}function g(e){let{children:t,active:a,index:c,addMicrodata:l}=e;return r.createElement("li",(0,n.c)({},l&&{itemScope:!0,itemProp:"itemListElement",itemType:"https://schema.org/ListItem"},{className:(0,i.c)("breadcrumbs__item",{"breadcrumbs__item--active":a})}),t,r.createElement("meta",{itemProp:"position",content:String(c+1)}))}function E(){const e=(0,l.js)(),t=(0,s.Y5)();return e?r.createElement("nav",{className:(0,i.c)(c.W.docs.docBreadcrumbs,v.breadcrumbsContainer),"aria-label":(0,m.G)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"})},r.createElement("ul",{className:"breadcrumbs",itemScope:!0,itemType:"https://schema.org/BreadcrumbList"},t&&r.createElement(b,null),e.map(((t,a)=>{const n=a===e.length-1;return r.createElement(g,{key:a,active:n,index:a,addMicrodata:!!t.href},r.createElement(p,{href:t.href,isLast:n},t.label))})))):null}},6248:(e,t,a)=>{a.r(t),a.d(t,{default:()=>w});var n=a(1504),r=a(5756),i=a(9940),c=a(964),l=a(4971),s=a(6016),o=a(8136),m=a(4357);const d={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function u(e){let{href:t,children:a}=e;return n.createElement(s.c,{href:t,className:(0,l.c)("card padding--lg",d.cardContainer)},a)}function h(e){let{href:t,icon:a,title:r,description:i}=e;return n.createElement(u,{href:t},n.createElement("h2",{className:(0,l.c)("text--truncate",d.cardTitle),title:r},a," ",r),i&&n.createElement("p",{className:(0,l.c)("text--truncate",d.cardDescription),title:i},i))}function b(e){let{item:t}=e;const a=(0,i.OQ)(t);return a?n.createElement(h,{href:a,icon:"\ud83d\uddc3\ufe0f",title:t.label,description:t.description??(0,m.G)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:t.items.length})}):null}function v(e){let{item:t}=e;const a=(0,o.c)(t.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",r=(0,i._4)(t.docId??void 0);return n.createElement(h,{href:t.href,icon:a,title:t.label,description:t.description??r?.description})}function p(e){let{item:t}=e;switch(t.type){case"link":return n.createElement(v,{item:t});case"category":return n.createElement(b,{item:t});default:throw new Error(`unknown item type ${JSON.stringify(t)}`)}}function g(e){let{className:t}=e;const a=(0,i.wt)();return n.createElement(E,{items:a.items,className:t})}function E(e){const{items:t,className:a}=e;if(!t)return n.createElement(g,e);const r=(0,i.ML)(t);return n.createElement("section",{className:(0,l.c)("row",a)},r.map(((e,t)=>n.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},n.createElement(p,{item:e})))))}var f=a(9236),N=a(2136),_=a(8092),k=a(4556),L=a(6448);const T={generatedIndexPage:"generatedIndexPage_vN6x",list:"list_eTzJ",title:"title_kItE"};function y(e){let{categoryGeneratedIndex:t}=e;return n.createElement(r.U7,{title:t.title,description:t.description,keywords:t.keywords,image:(0,c.c)(t.image)})}function x(e){let{categoryGeneratedIndex:t}=e;const a=(0,i.wt)();return n.createElement("div",{className:T.generatedIndexPage},n.createElement(N.c,null),n.createElement(k.c,null),n.createElement(_.c,null),n.createElement("header",null,n.createElement(L.c,{as:"h1",className:T.title},t.title),t.description&&n.createElement("p",null,t.description)),n.createElement("article",{className:"margin-top--lg"},n.createElement(E,{items:a.items,className:T.list})),n.createElement("footer",{className:"margin-top--lg"},n.createElement(f.c,{previous:t.navigation.previous,next:t.navigation.next})))}function w(e){return n.createElement(n.Fragment,null,n.createElement(y,e),n.createElement(x,e))}},9236:(e,t,a)=>{a.d(t,{c:()=>o});var n=a(5072),r=a(1504),i=a(4357),c=a(4971),l=a(6016);function s(e){const{permalink:t,title:a,subLabel:n,isNext:i}=e;return r.createElement(l.c,{className:(0,c.c)("pagination-nav__link",i?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t},n&&r.createElement("div",{className:"pagination-nav__sublabel"},n),r.createElement("div",{className:"pagination-nav__label"},a))}function o(e){const{previous:t,next:a}=e;return r.createElement("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,i.G)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"})},t&&r.createElement(s,(0,n.c)({},t,{subLabel:r.createElement(i.c,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc"},"Previous")})),a&&r.createElement(s,(0,n.c)({},a,{subLabel:r.createElement(i.c,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc"},"Next"),isNext:!0})))}},8092:(e,t,a)=>{a.d(t,{c:()=>s});var n=a(1504),r=a(4971),i=a(4357),c=a(5864),l=a(9920);function s(e){let{className:t}=e;const a=(0,l.E)();return a.badge?n.createElement("span",{className:(0,r.c)(t,c.W.docs.docVersionBadge,"badge badge--secondary")},n.createElement(i.c,{id:"theme.docs.versionBadge.label",values:{versionLabel:a.label}},"Version: {versionLabel}")):null}},2136:(e,t,a)=>{a.d(t,{c:()=>p});var n=a(1504),r=a(4971),i=a(8264),c=a(6016),l=a(4357),s=a(2840),o=a(5864),m=a(4592),d=a(9920);const u={unreleased:function(e){let{siteTitle:t,versionMetadata:a}=e;return n.createElement(l.c,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:n.createElement("b",null,a.label)}},"This is unreleased documentation for {siteTitle} {versionLabel} version.")},unmaintained:function(e){let{siteTitle:t,versionMetadata:a}=e;return n.createElement(l.c,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:n.createElement("b",null,a.label)}},"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.")}};function h(e){const t=u[e.versionMetadata.banner];return n.createElement(t,e)}function b(e){let{versionLabel:t,to:a,onClick:r}=e;return n.createElement(l.c,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:n.createElement("b",null,n.createElement(c.c,{to:a,onClick:r},n.createElement(l.c,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label"},"latest version")))}},"For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).")}function v(e){let{className:t,versionMetadata:a}=e;const{siteConfig:{title:c}}=(0,i.c)(),{pluginId:l}=(0,s.UF)({failfast:!0}),{savePreferredVersionName:d}=(0,m.iy)(l),{latestDocSuggestion:u,latestVersionSuggestion:v}=(0,s.i8)(l),p=u??(g=v).docs.find((e=>e.id===g.mainDocId));var g;return n.createElement("div",{className:(0,r.c)(t,o.W.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert"},n.createElement("div",null,n.createElement(h,{siteTitle:c,versionMetadata:a})),n.createElement("div",{className:"margin-top--md"},n.createElement(b,{versionLabel:v.label,to:p.path,onClick:()=>d(v.name)})))}function p(e){let{className:t}=e;const a=(0,d.E)();return a.banner?n.createElement(v,{className:t,versionMetadata:a}):null}},6448:(e,t,a)=>{a.d(t,{c:()=>m});var n=a(5072),r=a(1504),i=a(4971),c=a(4357),l=a(1824),s=a(6016);const o={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};function m(e){let{as:t,id:a,...m}=e;const{navbar:{hideOnScroll:d}}=(0,l.y)();if("h1"===t||!a)return r.createElement(t,(0,n.c)({},m,{id:void 0}));const u=(0,c.G)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof m.children?m.children:a});return r.createElement(t,(0,n.c)({},m,{className:(0,i.c)("anchor",d?o.anchorWithHideOnScrollNavbar:o.anchorWithStickyNavbar,m.className),id:a}),m.children,r.createElement(s.c,{className:"hash-link",to:`#${a}`,"aria-label":u,title:u},"\u200b"))}}}]); \ No newline at end of file diff --git a/assets/js/14eb3368.f5806a02.js b/assets/js/14eb3368.f5806a02.js deleted file mode 100644 index 86b4dee2..00000000 --- a/assets/js/14eb3368.f5806a02.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[9817],{1310:(e,t,a)=>{a.d(t,{Z:()=>E});var n=a(7462),r=a(7294),i=a(6010),l=a(5281),s=a(2802),c=a(8596),o=a(9960),m=a(5999),d=a(4996);function u(e){return r.createElement("svg",(0,n.Z)({viewBox:"0 0 24 24"},e),r.createElement("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 h={breadcrumbHomeIcon:"breadcrumbHomeIcon_YNFT"};function b(){const e=(0,d.Z)("/");return r.createElement("li",{className:"breadcrumbs__item"},r.createElement(o.Z,{"aria-label":(0,m.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},r.createElement(u,{className:h.breadcrumbHomeIcon})))}const v={breadcrumbsContainer:"breadcrumbsContainer_Z_bl"};function p(e){let{children:t,href:a,isLast:n}=e;const i="breadcrumbs__link";return n?r.createElement("span",{className:i,itemProp:"name"},t):a?r.createElement(o.Z,{className:i,href:a,itemProp:"item"},r.createElement("span",{itemProp:"name"},t)):r.createElement("span",{className:i},t)}function g(e){let{children:t,active:a,index:l,addMicrodata:s}=e;return r.createElement("li",(0,n.Z)({},s&&{itemScope:!0,itemProp:"itemListElement",itemType:"https://schema.org/ListItem"},{className:(0,i.Z)("breadcrumbs__item",{"breadcrumbs__item--active":a})}),t,r.createElement("meta",{itemProp:"position",content:String(l+1)}))}function E(){const e=(0,s.s1)(),t=(0,c.Ns)();return e?r.createElement("nav",{className:(0,i.Z)(l.k.docs.docBreadcrumbs,v.breadcrumbsContainer),"aria-label":(0,m.I)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"})},r.createElement("ul",{className:"breadcrumbs",itemScope:!0,itemType:"https://schema.org/BreadcrumbList"},t&&r.createElement(b,null),e.map(((t,a)=>{const n=a===e.length-1;return r.createElement(g,{key:a,active:n,index:a,addMicrodata:!!t.href},r.createElement(p,{href:t.href,isLast:n},t.label))})))):null}},4228:(e,t,a)=>{a.r(t),a.d(t,{default:()=>y});var n=a(7294),r=a(1944),i=a(2802),l=a(4996),s=a(6010),c=a(9960),o=a(3919),m=a(5999);const d={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function u(e){let{href:t,children:a}=e;return n.createElement(c.Z,{href:t,className:(0,s.Z)("card padding--lg",d.cardContainer)},a)}function h(e){let{href:t,icon:a,title:r,description:i}=e;return n.createElement(u,{href:t},n.createElement("h2",{className:(0,s.Z)("text--truncate",d.cardTitle),title:r},a," ",r),i&&n.createElement("p",{className:(0,s.Z)("text--truncate",d.cardDescription),title:i},i))}function b(e){let{item:t}=e;const a=(0,i.Wl)(t);return a?n.createElement(h,{href:a,icon:"\ud83d\uddc3\ufe0f",title:t.label,description:t.description??(0,m.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:t.items.length})}):null}function v(e){let{item:t}=e;const a=(0,o.Z)(t.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",r=(0,i.xz)(t.docId??void 0);return n.createElement(h,{href:t.href,icon:a,title:t.label,description:t.description??r?.description})}function p(e){let{item:t}=e;switch(t.type){case"link":return n.createElement(v,{item:t});case"category":return n.createElement(b,{item:t});default:throw new Error(`unknown item type ${JSON.stringify(t)}`)}}function g(e){let{className:t}=e;const a=(0,i.jA)();return n.createElement(E,{items:a.items,className:t})}function E(e){const{items:t,className:a}=e;if(!t)return n.createElement(g,e);const r=(0,i.MN)(t);return n.createElement("section",{className:(0,s.Z)("row",a)},r.map(((e,t)=>n.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},n.createElement(p,{item:e})))))}var f=a(4966),N=a(3120),Z=a(4364),k=a(1310),_=a(2503);const L={generatedIndexPage:"generatedIndexPage_vN6x",list:"list_eTzJ",title:"title_kItE"};function T(e){let{categoryGeneratedIndex:t}=e;return n.createElement(r.d,{title:t.title,description:t.description,keywords:t.keywords,image:(0,l.Z)(t.image)})}function x(e){let{categoryGeneratedIndex:t}=e;const a=(0,i.jA)();return n.createElement("div",{className:L.generatedIndexPage},n.createElement(N.Z,null),n.createElement(k.Z,null),n.createElement(Z.Z,null),n.createElement("header",null,n.createElement(_.Z,{as:"h1",className:L.title},t.title),t.description&&n.createElement("p",null,t.description)),n.createElement("article",{className:"margin-top--lg"},n.createElement(E,{items:a.items,className:L.list})),n.createElement("footer",{className:"margin-top--lg"},n.createElement(f.Z,{previous:t.navigation.previous,next:t.navigation.next})))}function y(e){return n.createElement(n.Fragment,null,n.createElement(T,e),n.createElement(x,e))}},4966:(e,t,a)=>{a.d(t,{Z:()=>o});var n=a(7462),r=a(7294),i=a(5999),l=a(6010),s=a(9960);function c(e){const{permalink:t,title:a,subLabel:n,isNext:i}=e;return r.createElement(s.Z,{className:(0,l.Z)("pagination-nav__link",i?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t},n&&r.createElement("div",{className:"pagination-nav__sublabel"},n),r.createElement("div",{className:"pagination-nav__label"},a))}function o(e){const{previous:t,next:a}=e;return r.createElement("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,i.I)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"})},t&&r.createElement(c,(0,n.Z)({},t,{subLabel:r.createElement(i.Z,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc"},"Previous")})),a&&r.createElement(c,(0,n.Z)({},a,{subLabel:r.createElement(i.Z,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc"},"Next"),isNext:!0})))}},4364:(e,t,a)=>{a.d(t,{Z:()=>c});var n=a(7294),r=a(6010),i=a(5999),l=a(5281),s=a(4477);function c(e){let{className:t}=e;const a=(0,s.E)();return a.badge?n.createElement("span",{className:(0,r.Z)(t,l.k.docs.docVersionBadge,"badge badge--secondary")},n.createElement(i.Z,{id:"theme.docs.versionBadge.label",values:{versionLabel:a.label}},"Version: {versionLabel}")):null}},3120:(e,t,a)=>{a.d(t,{Z:()=>p});var n=a(7294),r=a(6010),i=a(2263),l=a(9960),s=a(5999),c=a(143),o=a(5281),m=a(373),d=a(4477);const u={unreleased:function(e){let{siteTitle:t,versionMetadata:a}=e;return n.createElement(s.Z,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:n.createElement("b",null,a.label)}},"This is unreleased documentation for {siteTitle} {versionLabel} version.")},unmaintained:function(e){let{siteTitle:t,versionMetadata:a}=e;return n.createElement(s.Z,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:n.createElement("b",null,a.label)}},"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.")}};function h(e){const t=u[e.versionMetadata.banner];return n.createElement(t,e)}function b(e){let{versionLabel:t,to:a,onClick:r}=e;return n.createElement(s.Z,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:n.createElement("b",null,n.createElement(l.Z,{to:a,onClick:r},n.createElement(s.Z,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label"},"latest version")))}},"For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).")}function v(e){let{className:t,versionMetadata:a}=e;const{siteConfig:{title:l}}=(0,i.Z)(),{pluginId:s}=(0,c.gA)({failfast:!0}),{savePreferredVersionName:d}=(0,m.J)(s),{latestDocSuggestion:u,latestVersionSuggestion:v}=(0,c.Jo)(s),p=u??(g=v).docs.find((e=>e.id===g.mainDocId));var g;return n.createElement("div",{className:(0,r.Z)(t,o.k.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert"},n.createElement("div",null,n.createElement(h,{siteTitle:l,versionMetadata:a})),n.createElement("div",{className:"margin-top--md"},n.createElement(b,{versionLabel:v.label,to:p.path,onClick:()=>d(v.name)})))}function p(e){let{className:t}=e;const a=(0,d.E)();return a.banner?n.createElement(v,{className:t,versionMetadata:a}):null}},2503:(e,t,a)=>{a.d(t,{Z:()=>m});var n=a(7462),r=a(7294),i=a(6010),l=a(5999),s=a(6668),c=a(9960);const o={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};function m(e){let{as:t,id:a,...m}=e;const{navbar:{hideOnScroll:d}}=(0,s.L)();if("h1"===t||!a)return r.createElement(t,(0,n.Z)({},m,{id:void 0}));const u=(0,l.I)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof m.children?m.children:a});return r.createElement(t,(0,n.Z)({},m,{className:(0,i.Z)("anchor",d?o.anchorWithHideOnScrollNavbar:o.anchorWithStickyNavbar,m.className),id:a}),m.children,r.createElement(c.Z,{className:"hash-link",to:`#${a}`,"aria-label":u,title:u},"\u200b"))}}}]); \ No newline at end of file diff --git a/assets/js/166ccb0c.589122d1.js b/assets/js/166ccb0c.589122d1.js deleted file mode 100644 index 4c85cb2b..00000000 --- a/assets/js/166ccb0c.589122d1.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[2608],{3905:(e,r,t)=>{t.d(r,{Zo:()=>c,kt:()=>y});var a=t(7294);function n(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function i(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);r&&(a=a.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,a)}return t}function l(e){for(var r=1;r=0||(n[t]=e[t]);return n}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}var s=a.createContext({}),p=function(e){var r=a.useContext(s),t=r;return e&&(t="function"==typeof e?e(r):l(l({},r),e)),t},c=function(e){var r=p(e.components);return a.createElement(s.Provider,{value:r},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var r=e.children;return a.createElement(a.Fragment,{},r)}},f=a.forwardRef((function(e,r){var t=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),u=p(t),f=n,y=u["".concat(s,".").concat(f)]||u[f]||d[f]||i;return t?a.createElement(y,l(l({ref:r},c),{},{components:t})):a.createElement(y,l({ref:r},c))}));function y(e,r){var t=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var i=t.length,l=new Array(i);l[0]=f;var o={};for(var s in r)hasOwnProperty.call(r,s)&&(o[s]=r[s]);o.originalType=e,o[u]="string"==typeof e?e:n,l[1]=o;for(var p=2;p{t.r(r),t.d(r,{assets:()=>s,contentTitle:()=>l,default:()=>d,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var a=t(7462),n=(t(7294),t(3905));const i={title:"Bar Chart",sidebar_label:"Bar",sidebar_position:1},l=void 0,o={unversionedId:"charts/bar",id:"charts/bar",title:"Bar Chart",description:"Preview:",source:"@site/docs/charts/bar.md",sourceDirName:"charts",slug:"/charts/bar",permalink:"/next/charts/bar",draft:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Bar Chart",sidebar_label:"Bar",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Week Selector (Pro)",permalink:"/next/cards/week-selector"},next:{title:"Line (Pro)",permalink:"/next/charts/line"}},s={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types for X-Axis:",id:"valid-data-types-for-x-axis",level:4},{value:"Valid Data Types for Y-Axis:",id:"valid-data-types-for-y-axis",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4},{value:"For X-Axis:",id:"for-x-axis",level:5},{value:"For Y-Axis:",id:"for-y-axis",level:5}],c={toc:p},u="wrapper";function d(e){let{components:r,...t}=e;return(0,n.kt)(u,(0,a.Z)({},c,t,{components:r,mdxType:"MDXLayout"}),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/bar-chart.png",width:"500px",alt:"Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"BAR_CHART")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types-for-x-axis"},"Valid Data Types for X-Axis:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"String")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"const char*"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types-for-y-axis"},"Valid Data Types for Y-Axis:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Bar Chart\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name )\n*/\nChart chart1(&dashboard, BAR_CHART, "Chart Name");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("h5",{id:"for-x-axis"},"For X-Axis:"),(0,n.kt)("p",null,"X-Axis updater uses ",(0,n.kt)("inlineCode",{parentName:"p"},"updateX")," function."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/*\n Data for X Axis of our Chart\n This array can be of: `int` / `float` or `String`\n \n Note: this array should be kept in global scope. i.e. it should never be deleted from memory.\n*/\nString XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or\n (float array[], size_t array_size)\n or\n (String array[], size_t array_size)\n or\n (const char* array[], size_t array_size)\n*/\nchart1.updateX(XAxis, 7);\n')),(0,n.kt)("h5",{id:"for-y-axis"},"For Y-Axis:"),(0,n.kt)("p",null,"Y-Axis updater uses ",(0,n.kt)("inlineCode",{parentName:"p"},"updateY")," function."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"/*\n Data for Y Axis of our Chart\n This array can be of: `int` or `float`\n \n Note: this array should be kept in global scope. i.e. it should never be deleted from memory.\n*/\nint YAxis[] = {0, 0, 0, 0, 0, 0, 0};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or \n (float array[], size_t array_size)\n*/\nchart1.updateY(YAxis, 7);\n")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/166ccb0c.a6e66c72.js b/assets/js/166ccb0c.a6e66c72.js new file mode 100644 index 00000000..f381e573 --- /dev/null +++ b/assets/js/166ccb0c.a6e66c72.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[2556],{5788:(e,r,a)=>{a.d(r,{Iu:()=>c,yg:()=>g});var t=a(1504);function n(e,r,a){return r in e?Object.defineProperty(e,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[r]=a,e}function i(e,r){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r&&(t=t.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),a.push.apply(a,t)}return a}function l(e){for(var r=1;r=0||(n[a]=e[a]);return n}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=t.createContext({}),p=function(e){var r=t.useContext(s),a=r;return e&&(a="function"==typeof e?e(r):l(l({},r),e)),a},c=function(e){var r=p(e.components);return t.createElement(s.Provider,{value:r},e.children)},u="mdxType",y={inlineCode:"code",wrapper:function(e){var r=e.children;return t.createElement(t.Fragment,{},r)}},d=t.forwardRef((function(e,r){var a=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),u=p(a),d=n,g=u["".concat(s,".").concat(d)]||u[d]||y[d]||i;return a?t.createElement(g,l(l({ref:r},c),{},{components:a})):t.createElement(g,l({ref:r},c))}));function g(e,r){var a=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var i=a.length,l=new Array(i);l[0]=d;var o={};for(var s in r)hasOwnProperty.call(r,s)&&(o[s]=r[s]);o.originalType=e,o[u]="string"==typeof e?e:n,l[1]=o;for(var p=2;p{a.r(r),a.d(r,{assets:()=>s,contentTitle:()=>l,default:()=>y,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var t=a(5072),n=(a(1504),a(5788));const i={title:"Bar Chart",sidebar_label:"Bar",sidebar_position:1},l=void 0,o={unversionedId:"charts/bar",id:"charts/bar",title:"Bar Chart",description:"Preview:",source:"@site/docs/charts/bar.md",sourceDirName:"charts",slug:"/charts/bar",permalink:"/next/charts/bar",draft:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Bar Chart",sidebar_label:"Bar",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Week Selector (Pro)",permalink:"/next/cards/week-selector"},next:{title:"Line (Pro)",permalink:"/next/charts/line"}},s={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types for X-Axis:",id:"valid-data-types-for-x-axis",level:4},{value:"Valid Data Types for Y-Axis:",id:"valid-data-types-for-y-axis",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4},{value:"For X-Axis:",id:"for-x-axis",level:5},{value:"For Y-Axis:",id:"for-y-axis",level:5}],c={toc:p},u="wrapper";function y(e){let{components:r,...a}=e;return(0,n.yg)(u,(0,t.c)({},c,a,{components:r,mdxType:"MDXLayout"}),(0,n.yg)("h4",{id:"preview"},"Preview:"),(0,n.yg)("img",{className:"card-preview",src:"/img/v4/bar-chart.png",width:"500px",alt:"Preview"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"type"},"Type:"),(0,n.yg)("p",null,(0,n.yg)("inlineCode",{parentName:"p"},"BAR_CHART")),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types-for-x-axis"},"Valid Data Types for X-Axis:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"int")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"float")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"String")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"const char*"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types-for-y-axis"},"Valid Data Types for Y-Axis:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"int")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"float"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"initializer"},"Initializer:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Bar Chart\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name )\n*/\nChart chart1(&dashboard, BAR_CHART, "Chart Name");\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"updaters"},"Updaters:"),(0,n.yg)("h5",{id:"for-x-axis"},"For X-Axis:"),(0,n.yg)("p",null,"X-Axis updater uses ",(0,n.yg)("inlineCode",{parentName:"p"},"updateX")," function."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/*\n Data for X Axis of our Chart\n This array can be of: `int` / `float` or `String`\n \n Note: this array should be kept in global scope. i.e. it should never be deleted from memory.\n*/\nString XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or\n (float array[], size_t array_size)\n or\n (String array[], size_t array_size)\n or\n (const char* array[], size_t array_size)\n*/\nchart1.updateX(XAxis, 7);\n')),(0,n.yg)("h5",{id:"for-y-axis"},"For Y-Axis:"),(0,n.yg)("p",null,"Y-Axis updater uses ",(0,n.yg)("inlineCode",{parentName:"p"},"updateY")," function."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"/*\n Data for Y Axis of our Chart\n This array can be of: `int` or `float`\n \n Note: this array should be kept in global scope. i.e. it should never be deleted from memory.\n*/\nint YAxis[] = {0, 0, 0, 0, 0, 0, 0};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or \n (float array[], size_t array_size)\n*/\nchart1.updateY(YAxis, 7);\n")))}y.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/17896441.dd040b67.js b/assets/js/17896441.dd040b67.js deleted file mode 100644 index 7d470bdf..00000000 --- a/assets/js/17896441.dd040b67.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[7918],{11:(e,t,n)=>{n.d(t,{Z:()=>f});var l=n(1310),c=n(2503),a=n(1506),o=n(7294),r=n(6010),d=n(5281),m=n(5130);function s(e){let{children:t}=e;const n=function(){const{metadata:e,frontMatter:t,contentTitle:n}=(0,m.k)();return t.hide_title||void 0!==n?null:e.title}();return o.createElement("div",{className:(0,r.Z)(d.k.docs.docMarkdown,"markdown")},n&&o.createElement("header",{className:"mdx-heading"},o.createElement(c.Z,{as:"h1"},n)),o.createElement(a.Z,null,t))}var i=n(7887),u=n(2894),E=n(8832),h=n(6781),k=n(4364),v=n(3120),Z=n(7524);const _={docItemContainer:"docItemContainer_c0TR",docItemCol:"docItemCol_z5aJ"};function f(e){let{children:t}=e;const n=function(){const{frontMatter:e,toc:t}=(0,m.k)(),n=(0,Z.i)(),l=e.hide_table_of_contents,c=!l&&t.length>0;return{hidden:l,mobile:c?o.createElement(h.Z,null):void 0,desktop:!c||"desktop"!==n&&"ssr"!==n?void 0:o.createElement(E.Z,null)}}();return o.createElement("div",{className:"row docitem-content"},o.createElement("div",{className:(0,r.Z)("col",!n.hidden&&_.docItemCol)},o.createElement(v.Z,null),o.createElement("div",{className:_.docItemContainer},o.createElement("article",null,o.createElement("div",{className:"breadcrumb-row"},o.createElement("div",null,o.createElement(l.Z,null)),o.createElement("div",null,o.createElement(k.Z,null))),n.mobile,o.createElement(s,null,t),o.createElement(i.Z,null)),o.createElement(u.Z,null))),n.desktop&&o.createElement("div",{className:"col col--3"},n.desktop))}}}]); \ No newline at end of file diff --git a/assets/js/17896441.edfb7bd5.js b/assets/js/17896441.edfb7bd5.js new file mode 100644 index 00000000..cd5a9847 --- /dev/null +++ b/assets/js/17896441.edfb7bd5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[6752],{226:(e,t,c)=>{c.d(t,{c:()=>p});var n=c(4556),l=c(6448),a=c(6992),o=c(1504),r=c(4971),d=c(5864),m=c(1262);function s(e){let{children:t}=e;const c=function(){const{metadata:e,frontMatter:t,contentTitle:c}=(0,m.G)();return t.hide_title||void 0!==c?null:e.title}();return o.createElement("div",{className:(0,r.c)(d.W.docs.docMarkdown,"markdown")},c&&o.createElement("header",{className:"mdx-heading"},o.createElement(l.c,{as:"h1"},c)),o.createElement(a.c,null,t))}var i=c(8748),u=c(4664),E=c(9500),h=c(180),v=c(8092),k=c(2136),_=c(1432);const f={docItemContainer:"docItemContainer_c0TR",docItemCol:"docItemCol_z5aJ"};function p(e){let{children:t}=e;const c=function(){const{frontMatter:e,toc:t}=(0,m.G)(),c=(0,_.U)(),n=e.hide_table_of_contents,l=!n&&t.length>0;return{hidden:n,mobile:l?o.createElement(h.c,null):void 0,desktop:!l||"desktop"!==c&&"ssr"!==c?void 0:o.createElement(E.c,null)}}();return o.createElement("div",{className:"row docitem-content"},o.createElement("div",{className:(0,r.c)("col",!c.hidden&&f.docItemCol)},o.createElement(k.c,null),o.createElement("div",{className:f.docItemContainer},o.createElement("article",null,o.createElement("div",{className:"breadcrumb-row"},o.createElement("div",null,o.createElement(n.c,null)),o.createElement("div",null,o.createElement(v.c,null))),c.mobile,o.createElement(s,null,t),o.createElement(i.c,null)),o.createElement(u.c,null))),c.desktop&&o.createElement("div",{className:"col col--3"},c.desktop))}}}]); \ No newline at end of file diff --git a/assets/js/1be78505.150b6c39.js b/assets/js/1be78505.150b6c39.js new file mode 100644 index 00000000..dffd6d0b --- /dev/null +++ b/assets/js/1be78505.150b6c39.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[9656,9772],{8256:(e,t,n)=>{n.r(t),n.d(t,{default:()=>ge});var a=n(1504),l=n(4971),o=n(5756),c=n(5864),r=n(4456),i=n(9940),s=n(9920),d=n(6192),m=n(9632),u=n(4357),b=n(3943),p=n(7124);const h={backToTopButton:"backToTopButton_sjWU",backToTopButtonShow:"backToTopButtonShow_xfvO"};function E(){const{shown:e,scrollToTop:t}=function(e){let{threshold:t}=e;const[n,l]=(0,a.useState)(!1),o=(0,a.useRef)(!1),{startScroll:c,cancelScroll:r}=(0,b.yI)();return(0,b.SM)(((e,n)=>{let{scrollY:a}=e;const c=n?.scrollY;c&&(o.current?o.current=!1:a>=c?(r(),l(!1)):a{e.location.hash&&(o.current=!0,l(!1))})),{shown:n,scrollToTop:()=>c(0)}}({threshold:300});return a.createElement("button",{"aria-label":(0,u.G)({id:"theme.BackToTopButton.buttonAriaLabel",message:"Scroll back to top",description:"The ARIA label for the back to top button"}),className:(0,l.c)("clean-btn",c.W.common.backToTopButton,h.backToTopButton,e&&h.backToTopButtonShow),type:"button",onClick:t})}var f=n(3856),g=n(5592),_=n(1432),v=n(1824),C=n(8164),k=n(5072);function S(e){return a.createElement("svg",(0,k.c)({width:"20",height:"20","aria-hidden":"true"},e),a.createElement("g",{fill:"#7a7a7a"},a.createElement("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"}),a.createElement("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 I={collapseSidebarButton:"collapseSidebarButton_PEFL",collapseSidebarButtonIcon:"collapseSidebarButtonIcon_kv0_"};function N(e){let{onClick:t}=e;return a.createElement("button",{type:"button",title:(0,u.G)({id:"theme.docs.sidebar.collapseButtonTitle",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),"aria-label":(0,u.G)({id:"theme.docs.sidebar.collapseButtonAriaLabel",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),className:(0,l.c)("button button--secondary button--outline",I.collapseSidebarButton),onClick:t},a.createElement(S,{className:I.collapseSidebarButtonIcon}))}var T=n(3868),x=n(1100);const y=Symbol("EmptyContext"),B=a.createContext(y);function w(e){let{children:t}=e;const[n,l]=(0,a.useState)(null),o=(0,a.useMemo)((()=>({expandedItem:n,setExpandedItem:l})),[n]);return a.createElement(B.Provider,{value:o},t)}var W=n(6016),A=n(3664),L=n(8448),M=n(3376);function H(e){let{categoryLabel:t,onClick:n}=e;return a.createElement("button",{"aria-label":(0,u.G)({id:"theme.DocSidebarItem.toggleCollapsedCategoryAriaLabel",message:"Toggle the collapsible sidebar category '{label}'",description:"The ARIA label to toggle the collapsible sidebar category"},{label:t}),type:"button",className:"clean-btn menu__caret",onClick:n})}function P(e){let{item:t,onItemClick:n,activePath:o,level:r,index:s,...d}=e;const{items:m,label:u,collapsible:b,className:p,href:h}=t,{docs:{sidebar:{autoCollapseCategories:E}}}=(0,v.y)(),f=function(e){const t=(0,A.c)();return(0,a.useMemo)((()=>e.href?e.href:!t&&e.collapsible?(0,i.OQ)(e):void 0),[e,t])}(t),g=(0,i.Md)(t,o),_=(0,M.Sc)(h,o),{collapsed:C,setCollapsed:S}=(0,L.a)({initialState:()=>!!b&&(!g&&t.collapsed)}),{expandedItem:I,setExpandedItem:N}=function(){const e=(0,a.useContext)(B);if(e===y)throw new x.AH("DocSidebarItemsExpandedStateProvider");return e}(),T=function(e){void 0===e&&(e=!C),N(e?null:s),S(e)};return function(e){let{isActive:t,collapsed:n,updateCollapsed:l}=e;const o=(0,x.i0)(t);(0,a.useEffect)((()=>{t&&!o&&n&&l(!1)}),[t,o,n,l])}({isActive:g,collapsed:C,updateCollapsed:T}),(0,a.useEffect)((()=>{b&&null!=I&&I!==s&&E&&S(!0)}),[b,I,s,S,E]),a.createElement("li",{className:(0,l.c)(c.W.docs.docSidebarItemCategory,c.W.docs.docSidebarItemCategoryLevel(r),"menu__list-item",{"menu__list-item--collapsed":C},p)},a.createElement("div",{className:(0,l.c)("menu__list-item-collapsible",{"menu__list-item-collapsible--active":_})},a.createElement(W.c,(0,k.c)({className:(0,l.c)("menu__link",{"menu__link--sublist":b,"menu__link--sublist-caret":!h&&b,"menu__link--active":g}),onClick:b?e=>{n?.(t),h?T(!1):(e.preventDefault(),T())}:()=>{n?.(t)},"aria-current":_?"page":void 0,"aria-expanded":b?!C:void 0,href:b?f??"#":f},d),u),h&&b&&a.createElement(H,{categoryLabel:u,onClick:e=>{e.preventDefault(),T()}})),a.createElement(L.U,{lazy:!0,as:"ul",className:"menu__list",collapsed:C},a.createElement(Y,{items:m,tabIndex:C?-1:0,onItemClick:n,activePath:o,level:r+1})))}var F=n(3232),U=n(8136);const G={menuExternalLink:"menuExternalLink_NnFM"};function D(e){let{item:t,onItemClick:n,activePath:o,level:r,index:s,...d}=e;const{href:m,label:u,className:b,autoAddBaseUrl:p}=t,h=(0,i.Md)(t,o),E=(0,U.c)(m);return a.createElement("li",{className:(0,l.c)(c.W.docs.docSidebarItemLink,c.W.docs.docSidebarItemLinkLevel(r),"menu__list-item",b),key:u},a.createElement(W.c,(0,k.c)({className:(0,l.c)("menu__link",!E&&G.menuExternalLink,{"menu__link--active":h}),autoAddBaseUrl:p,"aria-current":h?"page":void 0,to:m},E&&{onClick:n?()=>n(t):void 0},d),u,!E&&a.createElement(F.c,null)))}const R={menuHtmlItem:"menuHtmlItem_PEWV"};function V(e){let{item:t,level:n,index:o}=e;const{value:r,defaultStyle:i,className:s}=t;return a.createElement("li",{className:(0,l.c)(c.W.docs.docSidebarItemLink,c.W.docs.docSidebarItemLinkLevel(n),i&&[R.menuHtmlItem,"menu__list-item"],s),key:o,dangerouslySetInnerHTML:{__html:r}})}function z(e){let{item:t,...n}=e;switch(t.type){case"category":return a.createElement(P,(0,k.c)({item:t},n));case"html":return a.createElement(V,(0,k.c)({item:t},n));default:return a.createElement(D,(0,k.c)({item:t},n))}}function O(e){let{items:t,...n}=e;return a.createElement(w,null,t.map(((e,t)=>a.createElement(z,(0,k.c)({key:t,item:e,index:t},n)))))}const Y=(0,a.memo)(O),j={menu:"menu_SIkG",menuWithAnnouncementBar:"menuWithAnnouncementBar_GW3s"};function q(e){let{path:t,sidebar:n,className:o}=e;const r=function(){const{isActive:e}=(0,T.el)(),[t,n]=(0,a.useState)(e);return(0,b.SM)((t=>{let{scrollY:a}=t;e&&n(0===a)}),[e]),e&&t}();return a.createElement("nav",{"aria-label":(0,u.G)({id:"theme.docs.sidebar.navAriaLabel",message:"Docs sidebar",description:"The ARIA label for the sidebar navigation"}),className:(0,l.c)("menu thin-scrollbar",j.menu,r&&j.menuWithAnnouncementBar,o)},a.createElement("ul",{className:(0,l.c)(c.W.docs.docSidebarMenu,"menu__list")},a.createElement(Y,{items:n,activePath:t,level:1})))}const K="sidebar_njMd",Q="sidebarWithHideableNavbar_wUlq",X="sidebarHidden_VK0M",J="sidebarLogo_isFc";function Z(e){let{path:t,sidebar:n,onCollapse:o,isHidden:c}=e;const{navbar:{hideOnScroll:r},docs:{sidebar:{hideable:i}}}=(0,v.y)();return a.createElement("div",{className:(0,l.c)(K,r&&Q,c&&X)},r&&a.createElement(C.c,{tabIndex:-1,className:J}),a.createElement(q,{path:t,sidebar:n}),i&&a.createElement(N,{onClick:o}))}const $=a.memo(Z);var ee=n(5168),te=n(1336);const ne=e=>{let{sidebar:t,path:n}=e;const o=(0,te.q)();return a.createElement("ul",{className:(0,l.c)(c.W.docs.docSidebarMenu,"menu__list")},a.createElement(Y,{items:t,activePath:n,onItemClick:e=>{"category"===e.type&&e.href&&o.toggle(),"link"===e.type&&o.toggle()},level:1}))};function ae(e){return a.createElement(ee.Mx,{component:ne,props:e})}const le=a.memo(ae);function oe(e){const t=(0,_.U)(),n="desktop"===t||"ssr"===t,l="mobile"===t;return a.createElement(a.Fragment,null,n&&a.createElement($,e),l&&a.createElement(le,e))}const ce={expandButton:"expandButton_m80_",expandButtonIcon:"expandButtonIcon_BlDH"};function re(e){let{toggleSidebar:t}=e;return a.createElement("div",{className:ce.expandButton,title:(0,u.G)({id:"theme.docs.sidebar.expandButtonTitle",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),"aria-label":(0,u.G)({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},a.createElement(S,{className:ce.expandButtonIcon}))}const ie={docSidebarContainer:"docSidebarContainer_b6E3",docSidebarContainerHidden:"docSidebarContainerHidden_b3ry",sidebarViewport:"sidebarViewport_Xe31"};function se(e){let{children:t}=e;const n=(0,d.m)();return a.createElement(a.Fragment,{key:n?.name??"noSidebar"},t)}function de(e){let{sidebar:t,hiddenSidebarContainer:n,setHiddenSidebarContainer:o}=e;const{pathname:r}=(0,g.IT)(),[i,s]=(0,a.useState)(!1),d=(0,a.useCallback)((()=>{i&&s(!1),!i&&(0,f.I)()&&s(!0),o((e=>!e))}),[o,i]);return a.createElement("aside",{className:(0,l.c)(c.W.docs.docSidebarContainer,ie.docSidebarContainer,n&&ie.docSidebarContainerHidden),onTransitionEnd:e=>{e.currentTarget.classList.contains(ie.docSidebarContainer)&&n&&s(!0)}},a.createElement(se,null,a.createElement("div",{className:(0,l.c)(ie.sidebarViewport,i&&ie.sidebarViewportHidden)},a.createElement(oe,{sidebar:t,path:r,onCollapse:d,isHidden:i}),i&&a.createElement(re,{toggleSidebar:d}))))}const me={docMainContainer:"docMainContainer_gTbr",docMainContainerEnhanced:"docMainContainerEnhanced_Uz_u",docItemWrapperEnhanced:"docItemWrapperEnhanced_czyv"};function ue(e){let{hiddenSidebarContainer:t,children:n}=e;const o=(0,d.m)();return a.createElement("main",{className:(0,l.c)(me.docMainContainer,(t||!o)&&me.docMainContainerEnhanced)},a.createElement("div",{className:(0,l.c)("container padding-top--md padding-bottom--lg",me.docItemWrapper,t&&me.docItemWrapperEnhanced)},n))}const be={docPage:"docPage__5DB",docsWrapper:"docsWrapper_BCFX","themedComponent--light":"themedComponent--light_NU7w"};function pe(e){let{children:t}=e;const n=(0,d.m)(),[l,o]=(0,a.useState)(!1);return a.createElement(m.c,{wrapperClassName:be.docsWrapper},a.createElement(E,null),a.createElement("div",{className:be.docPage},n&&a.createElement(de,{sidebar:n.items,hiddenSidebarContainer:l,setHiddenSidebarContainer:o}),a.createElement(ue,{hiddenSidebarContainer:l},t)))}var he=n(9772),Ee=n(8712);function fe(e){const{versionMetadata:t}=e;return a.createElement(a.Fragment,null,a.createElement(Ee.c,{version:t.version,tag:(0,r.SE)(t.pluginId,t.version)}),a.createElement(o.U7,null,t.noIndex&&a.createElement("meta",{name:"robots",content:"noindex, nofollow"})))}function ge(e){const{versionMetadata:t}=e,n=(0,i.sr)(e);if(!n)return a.createElement(he.default,null);const{docElement:r,sidebarName:m,sidebarItems:u}=n;return a.createElement(a.Fragment,null,a.createElement(fe,e),a.createElement(o.cr,{className:(0,l.c)(c.W.wrapper.docsPages,c.W.page.docsDocPage,e.versionMetadata.className)},a.createElement(s.Q,{version:t},a.createElement(d.y,{name:m,items:u},a.createElement(pe,null,r)))))}},9772:(e,t,n)=>{n.r(t),n.d(t,{default:()=>r});var a=n(1504),l=n(4357),o=n(5756),c=n(9632);function r(){return a.createElement(a.Fragment,null,a.createElement(o.U7,{title:(0,l.G)({id:"theme.NotFound.title",message:"Page Not Found"})}),a.createElement(c.c,null,a.createElement("main",{className:"container margin-vert--xl"},a.createElement("div",{className:"row"},a.createElement("div",{className:"col col--6 col--offset-3"},a.createElement("h1",{className:"hero__title"},a.createElement(l.c,{id:"theme.NotFound.title",description:"The title of the 404 page"},"Page Not Found")),a.createElement("p",null,a.createElement(l.c,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page"},"We could not find what you were looking for.")),a.createElement("p",null,a.createElement(l.c,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page"},"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/1be78505.9fdd4461.js b/assets/js/1be78505.9fdd4461.js deleted file mode 100644 index dd3e5b8f..00000000 --- a/assets/js/1be78505.9fdd4461.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[9514,4972],{2528:(e,t,n)=>{n.r(t),n.d(t,{default:()=>fe});var a=n(7294),l=n(6010),o=n(1944),r=n(5281),c=n(3320),i=n(2802),s=n(4477),d=n(1116),m=n(2760),u=n(5999),b=n(2466),p=n(5936);const h={backToTopButton:"backToTopButton_sjWU",backToTopButtonShow:"backToTopButtonShow_xfvO"};function E(){const{shown:e,scrollToTop:t}=function(e){let{threshold:t}=e;const[n,l]=(0,a.useState)(!1),o=(0,a.useRef)(!1),{startScroll:r,cancelScroll:c}=(0,b.Ct)();return(0,b.RF)(((e,n)=>{let{scrollY:a}=e;const r=n?.scrollY;r&&(o.current?o.current=!1:a>=r?(c(),l(!1)):a{e.location.hash&&(o.current=!0,l(!1))})),{shown:n,scrollToTop:()=>r(0)}}({threshold:300});return a.createElement("button",{"aria-label":(0,u.I)({id:"theme.BackToTopButton.buttonAriaLabel",message:"Scroll back to top",description:"The ARIA label for the back to top button"}),className:(0,l.Z)("clean-btn",r.k.common.backToTopButton,h.backToTopButton,e&&h.backToTopButtonShow),type:"button",onClick:t})}var g=n(1442),f=n(6550),_=n(7524),k=n(6668),v=n(1327),C=n(7462);function S(e){return a.createElement("svg",(0,C.Z)({width:"20",height:"20","aria-hidden":"true"},e),a.createElement("g",{fill:"#7a7a7a"},a.createElement("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"}),a.createElement("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 I={collapseSidebarButton:"collapseSidebarButton_PEFL",collapseSidebarButtonIcon:"collapseSidebarButtonIcon_kv0_"};function N(e){let{onClick:t}=e;return a.createElement("button",{type:"button",title:(0,u.I)({id:"theme.docs.sidebar.collapseButtonTitle",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),"aria-label":(0,u.I)({id:"theme.docs.sidebar.collapseButtonAriaLabel",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),className:(0,l.Z)("button button--secondary button--outline",I.collapseSidebarButton),onClick:t},a.createElement(S,{className:I.collapseSidebarButtonIcon}))}var T=n(9689),Z=n(902);const x=Symbol("EmptyContext"),B=a.createContext(x);function y(e){let{children:t}=e;const[n,l]=(0,a.useState)(null),o=(0,a.useMemo)((()=>({expandedItem:n,setExpandedItem:l})),[n]);return a.createElement(B.Provider,{value:o},t)}var w=n(9960),L=n(2389),A=n(6043),F=n(8596);function M(e){let{categoryLabel:t,onClick:n}=e;return a.createElement("button",{"aria-label":(0,u.I)({id:"theme.DocSidebarItem.toggleCollapsedCategoryAriaLabel",message:"Toggle the collapsible sidebar category '{label}'",description:"The ARIA label to toggle the collapsible sidebar category"},{label:t}),type:"button",className:"clean-btn menu__caret",onClick:n})}function H(e){let{item:t,onItemClick:n,activePath:o,level:c,index:s,...d}=e;const{items:m,label:u,collapsible:b,className:p,href:h}=t,{docs:{sidebar:{autoCollapseCategories:E}}}=(0,k.L)(),g=function(e){const t=(0,L.Z)();return(0,a.useMemo)((()=>e.href?e.href:!t&&e.collapsible?(0,i.Wl)(e):void 0),[e,t])}(t),f=(0,i._F)(t,o),_=(0,F.Mg)(h,o),{collapsed:v,setCollapsed:S}=(0,A.u)({initialState:()=>!!b&&(!f&&t.collapsed)}),{expandedItem:I,setExpandedItem:N}=function(){const e=(0,a.useContext)(B);if(e===x)throw new Z.i6("DocSidebarItemsExpandedStateProvider");return e}(),T=function(e){void 0===e&&(e=!v),N(e?null:s),S(e)};return function(e){let{isActive:t,collapsed:n,updateCollapsed:l}=e;const o=(0,Z.D9)(t);(0,a.useEffect)((()=>{t&&!o&&n&&l(!1)}),[t,o,n,l])}({isActive:f,collapsed:v,updateCollapsed:T}),(0,a.useEffect)((()=>{b&&null!=I&&I!==s&&E&&S(!0)}),[b,I,s,S,E]),a.createElement("li",{className:(0,l.Z)(r.k.docs.docSidebarItemCategory,r.k.docs.docSidebarItemCategoryLevel(c),"menu__list-item",{"menu__list-item--collapsed":v},p)},a.createElement("div",{className:(0,l.Z)("menu__list-item-collapsible",{"menu__list-item-collapsible--active":_})},a.createElement(w.Z,(0,C.Z)({className:(0,l.Z)("menu__link",{"menu__link--sublist":b,"menu__link--sublist-caret":!h&&b,"menu__link--active":f}),onClick:b?e=>{n?.(t),h?T(!1):(e.preventDefault(),T())}:()=>{n?.(t)},"aria-current":_?"page":void 0,"aria-expanded":b?!v:void 0,href:b?g??"#":g},d),u),h&&b&&a.createElement(M,{categoryLabel:u,onClick:e=>{e.preventDefault(),T()}})),a.createElement(A.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:v},a.createElement(Y,{items:m,tabIndex:v?-1:0,onItemClick:n,activePath:o,level:c+1})))}var P=n(9471),W=n(3919);const D={menuExternalLink:"menuExternalLink_NnFM"};function R(e){let{item:t,onItemClick:n,activePath:o,level:c,index:s,...d}=e;const{href:m,label:u,className:b,autoAddBaseUrl:p}=t,h=(0,i._F)(t,o),E=(0,W.Z)(m);return a.createElement("li",{className:(0,l.Z)(r.k.docs.docSidebarItemLink,r.k.docs.docSidebarItemLinkLevel(c),"menu__list-item",b),key:u},a.createElement(w.Z,(0,C.Z)({className:(0,l.Z)("menu__link",!E&&D.menuExternalLink,{"menu__link--active":h}),autoAddBaseUrl:p,"aria-current":h?"page":void 0,to:m},E&&{onClick:n?()=>n(t):void 0},d),u,!E&&a.createElement(P.Z,null)))}const V={menuHtmlItem:"menuHtmlItem_PEWV"};function U(e){let{item:t,level:n,index:o}=e;const{value:c,defaultStyle:i,className:s}=t;return a.createElement("li",{className:(0,l.Z)(r.k.docs.docSidebarItemLink,r.k.docs.docSidebarItemLinkLevel(n),i&&[V.menuHtmlItem,"menu__list-item"],s),key:o,dangerouslySetInnerHTML:{__html:c}})}function z(e){let{item:t,...n}=e;switch(t.type){case"category":return a.createElement(H,(0,C.Z)({item:t},n));case"html":return a.createElement(U,(0,C.Z)({item:t},n));default:return a.createElement(R,(0,C.Z)({item:t},n))}}function G(e){let{items:t,...n}=e;return a.createElement(y,null,t.map(((e,t)=>a.createElement(z,(0,C.Z)({key:t,item:e,index:t},n)))))}const Y=(0,a.memo)(G),j={menu:"menu_SIkG",menuWithAnnouncementBar:"menuWithAnnouncementBar_GW3s"};function q(e){let{path:t,sidebar:n,className:o}=e;const c=function(){const{isActive:e}=(0,T.nT)(),[t,n]=(0,a.useState)(e);return(0,b.RF)((t=>{let{scrollY:a}=t;e&&n(0===a)}),[e]),e&&t}();return a.createElement("nav",{"aria-label":(0,u.I)({id:"theme.docs.sidebar.navAriaLabel",message:"Docs sidebar",description:"The ARIA label for the sidebar navigation"}),className:(0,l.Z)("menu thin-scrollbar",j.menu,c&&j.menuWithAnnouncementBar,o)},a.createElement("ul",{className:(0,l.Z)(r.k.docs.docSidebarMenu,"menu__list")},a.createElement(Y,{items:n,activePath:t,level:1})))}const K="sidebar_njMd",O="sidebarWithHideableNavbar_wUlq",X="sidebarHidden_VK0M",J="sidebarLogo_isFc";function Q(e){let{path:t,sidebar:n,onCollapse:o,isHidden:r}=e;const{navbar:{hideOnScroll:c},docs:{sidebar:{hideable:i}}}=(0,k.L)();return a.createElement("div",{className:(0,l.Z)(K,c&&O,r&&X)},c&&a.createElement(v.Z,{tabIndex:-1,className:J}),a.createElement(q,{path:t,sidebar:n}),i&&a.createElement(N,{onClick:o}))}const $=a.memo(Q);var ee=n(3102),te=n(2961);const ne=e=>{let{sidebar:t,path:n}=e;const o=(0,te.e)();return a.createElement("ul",{className:(0,l.Z)(r.k.docs.docSidebarMenu,"menu__list")},a.createElement(Y,{items:t,activePath:n,onItemClick:e=>{"category"===e.type&&e.href&&o.toggle(),"link"===e.type&&o.toggle()},level:1}))};function ae(e){return a.createElement(ee.Zo,{component:ne,props:e})}const le=a.memo(ae);function oe(e){const t=(0,_.i)(),n="desktop"===t||"ssr"===t,l="mobile"===t;return a.createElement(a.Fragment,null,n&&a.createElement($,e),l&&a.createElement(le,e))}const re={expandButton:"expandButton_m80_",expandButtonIcon:"expandButtonIcon_BlDH"};function ce(e){let{toggleSidebar:t}=e;return a.createElement("div",{className:re.expandButton,title:(0,u.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,u.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},a.createElement(S,{className:re.expandButtonIcon}))}const ie={docSidebarContainer:"docSidebarContainer_b6E3",docSidebarContainerHidden:"docSidebarContainerHidden_b3ry",sidebarViewport:"sidebarViewport_Xe31"};function se(e){let{children:t}=e;const n=(0,d.V)();return a.createElement(a.Fragment,{key:n?.name??"noSidebar"},t)}function de(e){let{sidebar:t,hiddenSidebarContainer:n,setHiddenSidebarContainer:o}=e;const{pathname:c}=(0,f.TH)(),[i,s]=(0,a.useState)(!1),d=(0,a.useCallback)((()=>{i&&s(!1),!i&&(0,g.n)()&&s(!0),o((e=>!e))}),[o,i]);return a.createElement("aside",{className:(0,l.Z)(r.k.docs.docSidebarContainer,ie.docSidebarContainer,n&&ie.docSidebarContainerHidden),onTransitionEnd:e=>{e.currentTarget.classList.contains(ie.docSidebarContainer)&&n&&s(!0)}},a.createElement(se,null,a.createElement("div",{className:(0,l.Z)(ie.sidebarViewport,i&&ie.sidebarViewportHidden)},a.createElement(oe,{sidebar:t,path:c,onCollapse:d,isHidden:i}),i&&a.createElement(ce,{toggleSidebar:d}))))}const me={docMainContainer:"docMainContainer_gTbr",docMainContainerEnhanced:"docMainContainerEnhanced_Uz_u",docItemWrapperEnhanced:"docItemWrapperEnhanced_czyv"};function ue(e){let{hiddenSidebarContainer:t,children:n}=e;const o=(0,d.V)();return a.createElement("main",{className:(0,l.Z)(me.docMainContainer,(t||!o)&&me.docMainContainerEnhanced)},a.createElement("div",{className:(0,l.Z)("container padding-top--md padding-bottom--lg",me.docItemWrapper,t&&me.docItemWrapperEnhanced)},n))}const be={docPage:"docPage__5DB",docsWrapper:"docsWrapper_BCFX","themedComponent--light":"themedComponent--light_NU7w"};function pe(e){let{children:t}=e;const n=(0,d.V)(),[l,o]=(0,a.useState)(!1);return a.createElement(m.Z,{wrapperClassName:be.docsWrapper},a.createElement(E,null),a.createElement("div",{className:be.docPage},n&&a.createElement(de,{sidebar:n.items,hiddenSidebarContainer:l,setHiddenSidebarContainer:o}),a.createElement(ue,{hiddenSidebarContainer:l},t)))}var he=n(4972),Ee=n(197);function ge(e){const{versionMetadata:t}=e;return a.createElement(a.Fragment,null,a.createElement(Ee.Z,{version:t.version,tag:(0,c.os)(t.pluginId,t.version)}),a.createElement(o.d,null,t.noIndex&&a.createElement("meta",{name:"robots",content:"noindex, nofollow"})))}function fe(e){const{versionMetadata:t}=e,n=(0,i.hI)(e);if(!n)return a.createElement(he.default,null);const{docElement:c,sidebarName:m,sidebarItems:u}=n;return a.createElement(a.Fragment,null,a.createElement(ge,e),a.createElement(o.FG,{className:(0,l.Z)(r.k.wrapper.docsPages,r.k.page.docsDocPage,e.versionMetadata.className)},a.createElement(s.q,{version:t},a.createElement(d.b,{name:m,items:u},a.createElement(pe,null,c)))))}},4972:(e,t,n)=>{n.r(t),n.d(t,{default:()=>c});var a=n(7294),l=n(5999),o=n(1944),r=n(2760);function c(){return a.createElement(a.Fragment,null,a.createElement(o.d,{title:(0,l.I)({id:"theme.NotFound.title",message:"Page Not Found"})}),a.createElement(r.Z,null,a.createElement("main",{className:"container margin-vert--xl"},a.createElement("div",{className:"row"},a.createElement("div",{className:"col col--6 col--offset-3"},a.createElement("h1",{className:"hero__title"},a.createElement(l.Z,{id:"theme.NotFound.title",description:"The title of the 404 page"},"Page Not Found")),a.createElement("p",null,a.createElement(l.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page"},"We could not find what you were looking for.")),a.createElement("p",null,a.createElement(l.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page"},"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/1c361767.f6969830.js b/assets/js/1c361767.7303ae0f.js similarity index 58% rename from assets/js/1c361767.f6969830.js rename to assets/js/1c361767.7303ae0f.js index e158c20b..82675598 100644 --- a/assets/js/1c361767.f6969830.js +++ b/assets/js/1c361767.7303ae0f.js @@ -1 +1 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[5729],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>v});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var o=a.createContext({}),u=function(e){var t=a.useContext(o),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},d=function(e){var t=u(e.components);return a.createElement(o.Provider,{value:t},e.children)},p="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,s=e.originalType,o=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),p=u(r),m=n,v=p["".concat(o,".").concat(m)]||p[m]||c[m]||s;return r?a.createElement(v,i(i({ref:t},d),{},{components:r})):a.createElement(v,i({ref:t},d))}));function v(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var s=r.length,i=new Array(s);i[0]=m;var l={};for(var o in t)hasOwnProperty.call(t,o)&&(l[o]=t[o]);l.originalType=e,l[p]="string"==typeof e?e:n,i[1]=l;for(var u=2;u{r.r(t),r.d(t,{assets:()=>o,contentTitle:()=>i,default:()=>c,frontMatter:()=>s,metadata:()=>l,toc:()=>u});var a=r(7462),n=(r(7294),r(3905));const s={title:"Status Card",sidebar_label:"Status",sidebar_position:5},i=void 0,l={unversionedId:"cards/status",id:"version-v4.x.x/cards/status",title:"Status Card",description:"Preview:",source:"@site/versioned_docs/version-v4.x.x/cards/status.md",sourceDirName:"cards",slug:"/cards/status",permalink:"/cards/status",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:5,frontMatter:{title:"Status Card",sidebar_label:"Status",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Push Button (Pro)",permalink:"/cards/push-button"},next:{title:"Slider",permalink:"/cards/slider"}},o={},u=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Valid Statuses:",id:"valid-statuses",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],d={toc:u},p="wrapper";function c(e){let{components:t,...r}=e;return(0,n.kt)(p,(0,a.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/status-card-idle.png",width:"280px",alt:"Preview"}),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/status-card-warning.png",width:"280px",alt:"Preview"}),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/status-card-success.png",width:"280px",alt:"Preview"}),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/status-card-danger.png",width:"280px",alt:"Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"As it's name suggests, status card is used to display some kind of status on your dashboard. It can show 4 different kinds of status along with a short message."),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"STATUS_CARD")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"String"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-statuses"},"Valid Statuses:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},'"success"')," - Green"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},'"danger"')," - Red"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},'"warning"')," - Yellow"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},'"idle"')," - Grey")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Status Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* status (optional) )\n*/\nCard card1(&dashboard, STATUS_CARD, "Test Status", "success");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("p",null,"Status card updater allows you to set a message:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'card1.update("message");\n')),(0,n.kt)("p",null,"Or, message + status at the same time:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'card1.update("Message", "success");\n')))}c.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[2036],{5788:(e,t,r)=>{r.d(t,{Iu:()=>d,yg:()=>y});var a=r(1504);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var o=a.createContext({}),u=function(e){var t=a.useContext(o),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},d=function(e){var t=u(e.components);return a.createElement(o.Provider,{value:t},e.children)},p="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},g=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,s=e.originalType,o=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),p=u(r),g=n,y=p["".concat(o,".").concat(g)]||p[g]||c[g]||s;return r?a.createElement(y,i(i({ref:t},d),{},{components:r})):a.createElement(y,i({ref:t},d))}));function y(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var s=r.length,i=new Array(s);i[0]=g;var l={};for(var o in t)hasOwnProperty.call(t,o)&&(l[o]=t[o]);l.originalType=e,l[p]="string"==typeof e?e:n,i[1]=l;for(var u=2;u{r.r(t),r.d(t,{assets:()=>o,contentTitle:()=>i,default:()=>c,frontMatter:()=>s,metadata:()=>l,toc:()=>u});var a=r(5072),n=(r(1504),r(5788));const s={title:"Status Card",sidebar_label:"Status",sidebar_position:5},i=void 0,l={unversionedId:"cards/status",id:"version-v4.x.x/cards/status",title:"Status Card",description:"Preview:",source:"@site/versioned_docs/version-v4.x.x/cards/status.md",sourceDirName:"cards",slug:"/cards/status",permalink:"/cards/status",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:5,frontMatter:{title:"Status Card",sidebar_label:"Status",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Push Button (Pro)",permalink:"/cards/push-button"},next:{title:"Slider",permalink:"/cards/slider"}},o={},u=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Valid Statuses:",id:"valid-statuses",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],d={toc:u},p="wrapper";function c(e){let{components:t,...r}=e;return(0,n.yg)(p,(0,a.c)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,n.yg)("h4",{id:"preview"},"Preview:"),(0,n.yg)("img",{className:"card-preview",src:"/img/v4/status-card-idle.png",width:"280px",alt:"Preview"}),(0,n.yg)("img",{className:"card-preview",src:"/img/v4/status-card-warning.png",width:"280px",alt:"Preview"}),(0,n.yg)("img",{className:"card-preview",src:"/img/v4/status-card-success.png",width:"280px",alt:"Preview"}),(0,n.yg)("img",{className:"card-preview",src:"/img/v4/status-card-danger.png",width:"280px",alt:"Preview"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("p",null,"As it's name suggests, status card is used to display some kind of status on your dashboard. It can show 4 different kinds of status along with a short message."),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"type"},"Type:"),(0,n.yg)("p",null,(0,n.yg)("inlineCode",{parentName:"p"},"STATUS_CARD")),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"String"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-statuses"},"Valid Statuses:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},'"success"')," - Green"),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},'"danger"')," - Red"),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},'"warning"')," - Yellow"),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},'"idle"')," - Grey")),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"initializer"},"Initializer:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Status Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* status (optional) )\n*/\nCard card1(&dashboard, STATUS_CARD, "Test Status", "success");\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"updaters"},"Updaters:"),(0,n.yg)("p",null,"Status card updater allows you to set a message:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'card1.update("message");\n')),(0,n.yg)("p",null,"Or, message + status at the same time:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'card1.update("Message", "success");\n')))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/1d06bd5e.80eb5a56.js b/assets/js/1d06bd5e.80eb5a56.js deleted file mode 100644 index be099486..00000000 --- a/assets/js/1d06bd5e.80eb5a56.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[7457],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>m});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=a.createContext({}),s=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},c=function(e){var t=s(e.components);return a.createElement(p.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},y=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,l=e.originalType,p=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),d=s(r),y=n,m=d["".concat(p,".").concat(y)]||d[y]||u[y]||l;return r?a.createElement(m,i(i({ref:t},c),{},{components:r})):a.createElement(m,i({ref:t},c))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=r.length,i=new Array(l);i[0]=y;var o={};for(var p in t)hasOwnProperty.call(t,p)&&(o[p]=t[p]);o.originalType=e,o[d]="string"==typeof e?e:n,i[1]=o;for(var s=2;s{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>u,frontMatter:()=>l,metadata:()=>o,toc:()=>s});var a=r(7462),n=(r(7294),r(3905));const l={title:"Energy Card",sidebar_label:"Energy (Pro)",sidebar_position:4},i=void 0,o={unversionedId:"cards/energy",id:"cards/energy",title:"Energy Card",description:"This feature is available in DASH Pro only.",source:"@site/docs/cards/energy.md",sourceDirName:"cards",slug:"/cards/energy",permalink:"/next/cards/energy",draft:!1,tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Energy Card",sidebar_label:"Energy (Pro)",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Air (Pro)",permalink:"/next/cards/air"},next:{title:"Progress",permalink:"/next/cards/progress"}},p={},s=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],c={toc:s},d="wrapper";function u(e){let{components:t,...r}=e;return(0,n.kt)(d,(0,a.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("div",{className:"pro-label"},(0,n.kt)("i",null,(0,n.kt)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/energy-card.png",width:"280px",alt:"Energy Card Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"This card adds a distinctive energy/power icon, and just like generic card you can add a symbol which will be appended to your data. This card can be used to show something related to power consumption and usage etc."),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"ENERGY_CARD")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"String"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Energy Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )\n*/\nCard card1(&dashboard, ENERGY_CARD, "Power Consumption", "kWh");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(float value);\n")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")),(0,n.kt)("p",null,"Or you can also update the symbol along with the value like this:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'card1.update(value, "kWh");\n')),(0,n.kt)("br",null),(0,n.kt)("br",null))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/1d06bd5e.8e1bb00c.js b/assets/js/1d06bd5e.8e1bb00c.js new file mode 100644 index 00000000..5095bf22 --- /dev/null +++ b/assets/js/1d06bd5e.8e1bb00c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[8308],{5788:(e,r,a)=>{a.d(r,{Iu:()=>c,yg:()=>g});var n=a(1504);function t(e,r,a){return r in e?Object.defineProperty(e,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[r]=a,e}function l(e,r){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var r=1;r=0||(t[a]=e[a]);return t}(e,r);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(t[a]=e[a])}return t}var p=n.createContext({}),s=function(e){var r=n.useContext(p),a=r;return e&&(a="function"==typeof e?e(r):i(i({},r),e)),a},c=function(e){var r=s(e.components);return n.createElement(p.Provider,{value:r},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var r=e.children;return n.createElement(n.Fragment,{},r)}},y=n.forwardRef((function(e,r){var a=e.components,t=e.mdxType,l=e.originalType,p=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),d=s(a),y=t,g=d["".concat(p,".").concat(y)]||d[y]||u[y]||l;return a?n.createElement(g,i(i({ref:r},c),{},{components:a})):n.createElement(g,i({ref:r},c))}));function g(e,r){var a=arguments,t=r&&r.mdxType;if("string"==typeof e||t){var l=a.length,i=new Array(l);i[0]=y;var o={};for(var p in r)hasOwnProperty.call(r,p)&&(o[p]=r[p]);o.originalType=e,o[d]="string"==typeof e?e:t,i[1]=o;for(var s=2;s{a.r(r),a.d(r,{assets:()=>p,contentTitle:()=>i,default:()=>u,frontMatter:()=>l,metadata:()=>o,toc:()=>s});var n=a(5072),t=(a(1504),a(5788));const l={title:"Energy Card",sidebar_label:"Energy (Pro)",sidebar_position:4},i=void 0,o={unversionedId:"cards/energy",id:"cards/energy",title:"Energy Card",description:"This feature is available in DASH Pro only.",source:"@site/docs/cards/energy.md",sourceDirName:"cards",slug:"/cards/energy",permalink:"/next/cards/energy",draft:!1,tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Energy Card",sidebar_label:"Energy (Pro)",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Air (Pro)",permalink:"/next/cards/air"},next:{title:"Progress",permalink:"/next/cards/progress"}},p={},s=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],c={toc:s},d="wrapper";function u(e){let{components:r,...a}=e;return(0,t.yg)(d,(0,n.c)({},c,a,{components:r,mdxType:"MDXLayout"}),(0,t.yg)("div",{className:"pro-label"},(0,t.yg)("i",null,(0,t.yg)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,t.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,t.yg)("h4",{id:"preview"},"Preview:"),(0,t.yg)("img",{className:"card-preview",src:"/img/v4/energy-card.png",width:"280px",alt:"Energy Card Preview"}),(0,t.yg)("br",null),(0,t.yg)("br",null),(0,t.yg)("p",null,"This card adds a distinctive energy/power icon, and just like generic card you can add a symbol which will be appended to your data. This card can be used to show something related to power consumption and usage etc."),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"type"},"Type:"),(0,t.yg)("p",null,(0,t.yg)("inlineCode",{parentName:"p"},"ENERGY_CARD")),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,t.yg)("ul",null,(0,t.yg)("li",{parentName:"ul"},(0,t.yg)("inlineCode",{parentName:"li"},"int")),(0,t.yg)("li",{parentName:"ul"},(0,t.yg)("inlineCode",{parentName:"li"},"float")),(0,t.yg)("li",{parentName:"ul"},(0,t.yg)("inlineCode",{parentName:"li"},"String"))),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"initializer"},"Initializer:"),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Energy Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )\n*/\nCard card1(&dashboard, ENERGY_CARD, "Power Consumption", "kWh");\n')),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"updaters"},"Updaters:"),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(float value);\n")),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")),(0,t.yg)("p",null,"Or you can also update the symbol along with the value like this:"),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},'card1.update(value, "kWh");\n')),(0,t.yg)("br",null),(0,t.yg)("br",null))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/1d798de6.3c414283.js b/assets/js/1d798de6.d51737b5.js similarity index 66% rename from assets/js/1d798de6.3c414283.js rename to assets/js/1d798de6.d51737b5.js index 651cf357..64338bda 100644 --- a/assets/js/1d798de6.3c414283.js +++ b/assets/js/1d798de6.d51737b5.js @@ -1 +1 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[4147],{3769:s=>{s.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"default"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[4168],{2080:s=>{s.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/1de66f17.20dda3ba.js b/assets/js/1de66f17.20dda3ba.js deleted file mode 100644 index 83c1ba9d..00000000 --- a/assets/js/1de66f17.20dda3ba.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[6633],{3905:(e,r,t)=>{t.d(r,{Zo:()=>c,kt:()=>y});var a=t(7294);function n(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function i(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);r&&(a=a.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,a)}return t}function l(e){for(var r=1;r=0||(n[t]=e[t]);return n}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}var s=a.createContext({}),p=function(e){var r=a.useContext(s),t=r;return e&&(t="function"==typeof e?e(r):l(l({},r),e)),t},c=function(e){var r=p(e.components);return a.createElement(s.Provider,{value:r},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var r=e.children;return a.createElement(a.Fragment,{},r)}},f=a.forwardRef((function(e,r){var t=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),u=p(t),f=n,y=u["".concat(s,".").concat(f)]||u[f]||d[f]||i;return t?a.createElement(y,l(l({ref:r},c),{},{components:t})):a.createElement(y,l({ref:r},c))}));function y(e,r){var t=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var i=t.length,l=new Array(i);l[0]=f;var o={};for(var s in r)hasOwnProperty.call(r,s)&&(o[s]=r[s]);o.originalType=e,o[u]="string"==typeof e?e:n,l[1]=o;for(var p=2;p{t.r(r),t.d(r,{assets:()=>s,contentTitle:()=>l,default:()=>d,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var a=t(7462),n=(t(7294),t(3905));const i={title:"Bar Chart",sidebar_label:"Bar",sidebar_position:1},l=void 0,o={unversionedId:"charts/bar",id:"version-v4.x.x/charts/bar",title:"Bar Chart",description:"Preview:",source:"@site/versioned_docs/version-v4.x.x/charts/bar.md",sourceDirName:"charts",slug:"/charts/bar",permalink:"/charts/bar",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:1,frontMatter:{title:"Bar Chart",sidebar_label:"Bar",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Week Selector (Pro)",permalink:"/cards/week-selector"},next:{title:"Line (Pro)",permalink:"/charts/line"}},s={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types for X-Axis:",id:"valid-data-types-for-x-axis",level:4},{value:"Valid Data Types for Y-Axis:",id:"valid-data-types-for-y-axis",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4},{value:"For X-Axis:",id:"for-x-axis",level:5},{value:"For Y-Axis:",id:"for-y-axis",level:5}],c={toc:p},u="wrapper";function d(e){let{components:r,...t}=e;return(0,n.kt)(u,(0,a.Z)({},c,t,{components:r,mdxType:"MDXLayout"}),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/bar-chart.png",width:"500px",alt:"Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"BAR_CHART")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types-for-x-axis"},"Valid Data Types for X-Axis:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"String")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"const char*"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types-for-y-axis"},"Valid Data Types for Y-Axis:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Bar Chart\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name )\n*/\nChart chart1(&dashboard, BAR_CHART, "Chart Name");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("h5",{id:"for-x-axis"},"For X-Axis:"),(0,n.kt)("p",null,"X-Axis updater uses ",(0,n.kt)("inlineCode",{parentName:"p"},"updateX")," function."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/*\n Data for X Axis of our Chart\n This array can be of: `int` / `float` or `String`\n \n Note: this array should be kept in global scope. i.e. it should never be deleted from memory.\n*/\nString XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or\n (float array[], size_t array_size)\n or\n (String array[], size_t array_size)\n or\n (const char* array[], size_t array_size)\n*/\nchart1.updateX(XAxis, 7);\n')),(0,n.kt)("h5",{id:"for-y-axis"},"For Y-Axis:"),(0,n.kt)("p",null,"Y-Axis updater uses ",(0,n.kt)("inlineCode",{parentName:"p"},"updateY")," function."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"/*\n Data for Y Axis of our Chart\n This array can be of: `int` or `float`\n \n Note: this array should be kept in global scope. i.e. it should never be deleted from memory.\n*/\nint YAxis[] = {0, 0, 0, 0, 0, 0, 0};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or \n (float array[], size_t array_size)\n*/\nchart1.updateY(YAxis, 7);\n")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/1de66f17.881b09d5.js b/assets/js/1de66f17.881b09d5.js new file mode 100644 index 00000000..db2114a7 --- /dev/null +++ b/assets/js/1de66f17.881b09d5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[7552],{5788:(e,r,a)=>{a.d(r,{Iu:()=>c,yg:()=>g});var t=a(1504);function n(e,r,a){return r in e?Object.defineProperty(e,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[r]=a,e}function i(e,r){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r&&(t=t.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),a.push.apply(a,t)}return a}function l(e){for(var r=1;r=0||(n[a]=e[a]);return n}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=t.createContext({}),p=function(e){var r=t.useContext(s),a=r;return e&&(a="function"==typeof e?e(r):l(l({},r),e)),a},c=function(e){var r=p(e.components);return t.createElement(s.Provider,{value:r},e.children)},y="mdxType",u={inlineCode:"code",wrapper:function(e){var r=e.children;return t.createElement(t.Fragment,{},r)}},d=t.forwardRef((function(e,r){var a=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),y=p(a),d=n,g=y["".concat(s,".").concat(d)]||y[d]||u[d]||i;return a?t.createElement(g,l(l({ref:r},c),{},{components:a})):t.createElement(g,l({ref:r},c))}));function g(e,r){var a=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var i=a.length,l=new Array(i);l[0]=d;var o={};for(var s in r)hasOwnProperty.call(r,s)&&(o[s]=r[s]);o.originalType=e,o[y]="string"==typeof e?e:n,l[1]=o;for(var p=2;p{a.r(r),a.d(r,{assets:()=>s,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var t=a(5072),n=(a(1504),a(5788));const i={title:"Bar Chart",sidebar_label:"Bar",sidebar_position:1},l=void 0,o={unversionedId:"charts/bar",id:"version-v4.x.x/charts/bar",title:"Bar Chart",description:"Preview:",source:"@site/versioned_docs/version-v4.x.x/charts/bar.md",sourceDirName:"charts",slug:"/charts/bar",permalink:"/charts/bar",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:1,frontMatter:{title:"Bar Chart",sidebar_label:"Bar",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Week Selector (Pro)",permalink:"/cards/week-selector"},next:{title:"Line (Pro)",permalink:"/charts/line"}},s={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types for X-Axis:",id:"valid-data-types-for-x-axis",level:4},{value:"Valid Data Types for Y-Axis:",id:"valid-data-types-for-y-axis",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4},{value:"For X-Axis:",id:"for-x-axis",level:5},{value:"For Y-Axis:",id:"for-y-axis",level:5}],c={toc:p},y="wrapper";function u(e){let{components:r,...a}=e;return(0,n.yg)(y,(0,t.c)({},c,a,{components:r,mdxType:"MDXLayout"}),(0,n.yg)("h4",{id:"preview"},"Preview:"),(0,n.yg)("img",{className:"card-preview",src:"/img/v4/bar-chart.png",width:"500px",alt:"Preview"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"type"},"Type:"),(0,n.yg)("p",null,(0,n.yg)("inlineCode",{parentName:"p"},"BAR_CHART")),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types-for-x-axis"},"Valid Data Types for X-Axis:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"int")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"float")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"String")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"const char*"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types-for-y-axis"},"Valid Data Types for Y-Axis:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"int")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"float"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"initializer"},"Initializer:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Bar Chart\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name )\n*/\nChart chart1(&dashboard, BAR_CHART, "Chart Name");\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"updaters"},"Updaters:"),(0,n.yg)("h5",{id:"for-x-axis"},"For X-Axis:"),(0,n.yg)("p",null,"X-Axis updater uses ",(0,n.yg)("inlineCode",{parentName:"p"},"updateX")," function."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/*\n Data for X Axis of our Chart\n This array can be of: `int` / `float` or `String`\n \n Note: this array should be kept in global scope. i.e. it should never be deleted from memory.\n*/\nString XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or\n (float array[], size_t array_size)\n or\n (String array[], size_t array_size)\n or\n (const char* array[], size_t array_size)\n*/\nchart1.updateX(XAxis, 7);\n')),(0,n.yg)("h5",{id:"for-y-axis"},"For Y-Axis:"),(0,n.yg)("p",null,"Y-Axis updater uses ",(0,n.yg)("inlineCode",{parentName:"p"},"updateY")," function."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"/*\n Data for Y Axis of our Chart\n This array can be of: `int` or `float`\n \n Note: this array should be kept in global scope. i.e. it should never be deleted from memory.\n*/\nint YAxis[] = {0, 0, 0, 0, 0, 0, 0};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or \n (float array[], size_t array_size)\n*/\nchart1.updateY(YAxis, 7);\n")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/1eaa7d1e.8c8bcafd.js b/assets/js/1eaa7d1e.96e54838.js similarity index 61% rename from assets/js/1eaa7d1e.8c8bcafd.js rename to assets/js/1eaa7d1e.96e54838.js index 12b514d9..1d2f53e8 100644 --- a/assets/js/1eaa7d1e.8c8bcafd.js +++ b/assets/js/1eaa7d1e.96e54838.js @@ -1 +1 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[3178],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>m});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),p=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},c=function(e){var t=p(e.components);return a.createElement(u.Provider,{value:t},e.children)},d="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},b=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,l=e.originalType,u=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),d=p(r),b=n,m=d["".concat(u,".").concat(b)]||d[b]||s[b]||l;return r?a.createElement(m,o(o({ref:t},c),{},{components:r})):a.createElement(m,o({ref:t},c))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=r.length,o=new Array(l);o[0]=b;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[d]="string"==typeof e?e:n,o[1]=i;for(var p=2;p{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>s,frontMatter:()=>l,metadata:()=>i,toc:()=>p});var a=r(7462),n=(r(7294),r(3905));const l={title:"Toggle Button",sidebar_label:"Toggle Button",sidebar_position:5},o=void 0,i={unversionedId:"cards/button",id:"cards/button",title:"Toggle Button",description:"Preview:",source:"@site/docs/cards/button.md",sourceDirName:"cards",slug:"/cards/button",permalink:"/next/cards/button",draft:!1,tags:[],version:"current",sidebarPosition:5,frontMatter:{title:"Toggle Button",sidebar_label:"Toggle Button",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Progress",permalink:"/next/cards/progress"},next:{title:"Push Button (Pro)",permalink:"/next/cards/push-button"}},u={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Callback:",id:"callback",level:4},{value:"Updaters:",id:"updaters",level:4}],c={toc:p},d="wrapper";function s(e){let{components:t,...r}=e;return(0,n.kt)(d,(0,a.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/button-card-false.png",width:"280px",alt:"Button Card Preview"}),"\xa0",(0,n.kt)("img",{className:"card-preview",src:"/img/v4/button-card-true.png",width:"280px",alt:"Button Card Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"Button card adds a interactive toggle button to your dashboard. This provides you with a simple ",(0,n.kt)("inlineCode",{parentName:"p"},"1")," or ",(0,n.kt)("inlineCode",{parentName:"p"},"0")," input from your dashboard."),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"BUTTON_CARD")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Button Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name)\n*/\nCard card1(&dashboard, BUTTON_CARD, "Test Button");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"callback"},"Callback:"),(0,n.kt)("p",null,"Button card requires a callback function which will be executed when we receive a input from our dashboard. In this example, we will use the ",(0,n.kt)("inlineCode",{parentName:"p"},"attachCallback")," function and provide a lambda function with a boolean argument."),(0,n.kt)("p",null,"In the case of button card, the value sent by your dashboard will be opposite of your current value. For Example: If your button is set to ",(0,n.kt)("inlineCode",{parentName:"p"},"0"),", then clicking that button on dashboard will trigger this callback with ",(0,n.kt)("inlineCode",{parentName:"p"},"1"),"."),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Note:")," You need to call the ",(0,n.kt)("inlineCode",{parentName:"p"},"update")," function and ",(0,n.kt)("inlineCode",{parentName:"p"},"sendUpdates")," immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/*\n We provide our attachCallback with a lambda function to handle incomming data\n `value` is the boolean sent from your dashboard\n*/\ncard1.attachCallback([&](int value){\n Serial.println("[Card1] Button Callback Triggered: "+String((value == 1)?"true":"false"));\n card1.update(value);\n dashboard.sendUpdates();\n});\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(1);\n")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(0);\n")),(0,n.kt)("br",null),(0,n.kt)("br",null))}s.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[1704],{5788:(e,t,r)=>{r.d(t,{Iu:()=>c,yg:()=>y});var a=r(1504);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),p=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},c=function(e){var t=p(e.components);return a.createElement(u.Provider,{value:t},e.children)},d="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},g=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,l=e.originalType,u=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),d=p(r),g=n,y=d["".concat(u,".").concat(g)]||d[g]||s[g]||l;return r?a.createElement(y,o(o({ref:t},c),{},{components:r})):a.createElement(y,o({ref:t},c))}));function y(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=r.length,o=new Array(l);o[0]=g;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[d]="string"==typeof e?e:n,o[1]=i;for(var p=2;p{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>s,frontMatter:()=>l,metadata:()=>i,toc:()=>p});var a=r(5072),n=(r(1504),r(5788));const l={title:"Toggle Button",sidebar_label:"Toggle Button",sidebar_position:5},o=void 0,i={unversionedId:"cards/button",id:"cards/button",title:"Toggle Button",description:"Preview:",source:"@site/docs/cards/button.md",sourceDirName:"cards",slug:"/cards/button",permalink:"/next/cards/button",draft:!1,tags:[],version:"current",sidebarPosition:5,frontMatter:{title:"Toggle Button",sidebar_label:"Toggle Button",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Progress",permalink:"/next/cards/progress"},next:{title:"Push Button (Pro)",permalink:"/next/cards/push-button"}},u={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Callback:",id:"callback",level:4},{value:"Updaters:",id:"updaters",level:4}],c={toc:p},d="wrapper";function s(e){let{components:t,...r}=e;return(0,n.yg)(d,(0,a.c)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,n.yg)("h4",{id:"preview"},"Preview:"),(0,n.yg)("img",{className:"card-preview",src:"/img/v4/button-card-false.png",width:"280px",alt:"Button Card Preview"}),"\xa0",(0,n.yg)("img",{className:"card-preview",src:"/img/v4/button-card-true.png",width:"280px",alt:"Button Card Preview"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("p",null,"Button card adds a interactive toggle button to your dashboard. This provides you with a simple ",(0,n.yg)("inlineCode",{parentName:"p"},"1")," or ",(0,n.yg)("inlineCode",{parentName:"p"},"0")," input from your dashboard."),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"type"},"Type:"),(0,n.yg)("p",null,(0,n.yg)("inlineCode",{parentName:"p"},"BUTTON_CARD")),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"int"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"initializer"},"Initializer:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Button Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name)\n*/\nCard card1(&dashboard, BUTTON_CARD, "Test Button");\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"callback"},"Callback:"),(0,n.yg)("p",null,"Button card requires a callback function which will be executed when we receive a input from our dashboard. In this example, we will use the ",(0,n.yg)("inlineCode",{parentName:"p"},"attachCallback")," function and provide a lambda function with a boolean argument."),(0,n.yg)("p",null,"In the case of button card, the value sent by your dashboard will be opposite of your current value. For Example: If your button is set to ",(0,n.yg)("inlineCode",{parentName:"p"},"0"),", then clicking that button on dashboard will trigger this callback with ",(0,n.yg)("inlineCode",{parentName:"p"},"1"),"."),(0,n.yg)("p",null,(0,n.yg)("strong",{parentName:"p"},"Note:")," You need to call the ",(0,n.yg)("inlineCode",{parentName:"p"},"update")," function and ",(0,n.yg)("inlineCode",{parentName:"p"},"sendUpdates")," immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/*\n We provide our attachCallback with a lambda function to handle incomming data\n `value` is the boolean sent from your dashboard\n*/\ncard1.attachCallback([&](int value){\n Serial.println("[Card1] Button Callback Triggered: "+String((value == 1)?"true":"false"));\n card1.update(value);\n dashboard.sendUpdates();\n});\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"updaters"},"Updaters:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(1);\n")),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(0);\n")),(0,n.yg)("br",null),(0,n.yg)("br",null))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/24a4b54e.d5198948.js b/assets/js/24a4b54e.d5198948.js deleted file mode 100644 index 493d5d5f..00000000 --- a/assets/js/24a4b54e.d5198948.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[7511],{3905:(e,t,o)=>{o.d(t,{Zo:()=>c,kt:()=>g});var r=o(7294);function n(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function i(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,r)}return o}function a(e){for(var t=1;t=0||(n[o]=e[o]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var s=r.createContext({}),p=function(e){var t=r.useContext(s),o=t;return e&&(o="function"==typeof e?e(t):a(a({},t),e)),o},c=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var o=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=p(o),d=n,g=u["".concat(s,".").concat(d)]||u[d]||m[d]||i;return o?r.createElement(g,a(a({ref:t},c),{},{components:o})):r.createElement(g,a({ref:t},c))}));function g(e,t){var o=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=o.length,a=new Array(i);a[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:n,a[1]=l;for(var p=2;p{o.r(t),o.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>m,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var r=o(7462),n=(o(7294),o(3905));const i={title:"Custom Logo",sidebar_label:"Custom Logo (Pro)",sidebar_position:4},a=void 0,l={unversionedId:"features/custom-logo",id:"version-v4.x.x/features/custom-logo",title:"Custom Logo",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v4.x.x/features/custom-logo.md",sourceDirName:"features",slug:"/features/custom-logo",permalink:"/features/custom-logo",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:4,frontMatter:{title:"Custom Logo",sidebar_label:"Custom Logo (Pro)",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Custom Title (Pro)",permalink:"/features/title"},next:{title:"Card Indexing (Pro)",permalink:"/features/indexing"}},s={},p=[{value:"Setting Custom Logo",id:"setting-custom-logo",level:3},{value:"What you'll need",id:"what-youll-need",level:4},{value:"Step 1: Procedure to convert logo into byte array",id:"step-1-procedure-to-convert-logo-into-byte-array",level:4},{value:"Step 2: Setting custom logo in sketch",id:"step-2-setting-custom-logo-in-sketch",level:4}],c={toc:p},u="wrapper";function m(e){let{components:t,...o}=e;return(0,n.kt)(u,(0,r.Z)({},c,o,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("div",{className:"pro-label"},(0,n.kt)("i",null,(0,n.kt)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.kt)("br",null),(0,n.kt)("img",{src:"/img/v4/custom-logo-mini.png",width:"305px",alt:"Energy Card Preview"}),"\xa0",(0,n.kt)("img",{src:"/img/v4/custom-logo-large.png",width:"400px",alt:"Energy Card Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,'If you are not familiar with the interface yet, the dashboard has an sidebar which can be expanded and collapsed, in that case the logo switches between "mini" and "large" scale version.'),(0,n.kt)("p",null,"Both these logos can be changed by the user by modifying the ",(0,n.kt)("inlineCode",{parentName:"p"},"logo.h")," & ",(0,n.kt)("inlineCode",{parentName:"p"},"logo.cpp")," file in the library source directory."),(0,n.kt)("h3",{id:"setting-custom-logo"},"Setting Custom Logo"),(0,n.kt)("p",null,"The logo used in DASH is image file converted to byte array. We'll go through the process below:"),(0,n.kt)("h4",{id:"what-youll-need"},"What you'll need"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"You'll need a compatible logo image ",(0,n.kt)("i",null,"( jpeg / png / gif / tif etc. )")," or an SVG file ( recommended due to small file size ). ",(0,n.kt)("i",null,(0,n.kt)("b",null,"Important: Please make sure your image is optimized and small in file size."))),(0,n.kt)("li",{parentName:"ul"},"Know the MIME file type of your image. You can use ",(0,n.kt)("a",{parentName:"li",href:"https://www.htmlstrip.com/mime-file-type-checker"},"HTTPStrip's mime utility"),".")),(0,n.kt)("h4",{id:"step-1-procedure-to-convert-logo-into-byte-array"},"Step 1: Procedure to convert logo into byte array"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Go to ",(0,n.kt)("a",{parentName:"li",href:"https://file2raw.labrat.one/"},"File2Raw Utility")," ( I created this utility a few years back for the purpose of converting files into byte array for C++ applications )."),(0,n.kt)("li",{parentName:"ol"},"Select your logo."),(0,n.kt)("li",{parentName:"ol"},'Select "Gzip Compress" & "Use PROGMEM (Arduino)".'),(0,n.kt)("li",{parentName:"ol"},'Click "Convert".')),(0,n.kt)("h4",{id:"step-2-setting-custom-logo-in-sketch"},"Step 2: Setting custom logo in sketch"),(0,n.kt)("p",null,"Now once your custom logo has been prepared, let's set it in our ESP-DASH Pro library. To do so, the library contains 2 files which contain the variable that govern 'mini' and 'large' logos used by our webpage."),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Go to ",(0,n.kt)("inlineCode",{parentName:"li"},"logo.h")),(0,n.kt)("li",{parentName:"ol"},"Set ",(0,n.kt)("inlineCode",{parentName:"li"},"DASH_MINI_LOGO_MIME")," to your image file type. To find your file's mime type, use this utility: ",(0,n.kt)("a",{parentName:"li",href:"https://www.htmlstrip.com/mime-file-type-checker"},"https://www.htmlstrip.com/mime-file-type-checker")),(0,n.kt)("li",{parentName:"ol"},"Set ",(0,n.kt)("inlineCode",{parentName:"li"},"DASH_MINI_LOGO_WIDTH")," & ",(0,n.kt)("inlineCode",{parentName:"li"},"DASH_MINI_LOGO_HEIGHT")," according to your desired size which will be displayed on the webpage."),(0,n.kt)("li",{parentName:"ol"},"Replace the array length of ",(0,n.kt)("inlineCode",{parentName:"li"},"DASH_MINI_LOGO")," with the newly generated array length."),(0,n.kt)("li",{parentName:"ol"},"Now open ",(0,n.kt)("inlineCode",{parentName:"li"},"logo.cpp")),(0,n.kt)("li",{parentName:"ol"},"Replace the data inside ",(0,n.kt)("inlineCode",{parentName:"li"},"DASH_MINI_LOGO")," with new data generated just before using File2Raw.")),(0,n.kt)("p",null,"Once done, you may repeat the same steps as above for ",(0,n.kt)("inlineCode",{parentName:"p"},"DASH_LARGE_LOGO"),"."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/24a4b54e.e4aff9b7.js b/assets/js/24a4b54e.e4aff9b7.js new file mode 100644 index 00000000..dd0670ff --- /dev/null +++ b/assets/js/24a4b54e.e4aff9b7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[4796],{5788:(e,t,o)=>{o.d(t,{Iu:()=>g,yg:()=>m});var r=o(1504);function n(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function i(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,r)}return o}function a(e){for(var t=1;t=0||(n[o]=e[o]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var s=r.createContext({}),p=function(e){var t=r.useContext(s),o=t;return e&&(o="function"==typeof e?e(t):a(a({},t),e)),o},g=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},y=r.forwardRef((function(e,t){var o=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,g=l(e,["components","mdxType","originalType","parentName"]),c=p(o),y=n,m=c["".concat(s,".").concat(y)]||c[y]||u[y]||i;return o?r.createElement(m,a(a({ref:t},g),{},{components:o})):r.createElement(m,a({ref:t},g))}));function m(e,t){var o=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=o.length,a=new Array(i);a[0]=y;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:n,a[1]=l;for(var p=2;p{o.r(t),o.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>u,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var r=o(5072),n=(o(1504),o(5788));const i={title:"Custom Logo",sidebar_label:"Custom Logo (Pro)",sidebar_position:4},a=void 0,l={unversionedId:"features/custom-logo",id:"version-v4.x.x/features/custom-logo",title:"Custom Logo",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v4.x.x/features/custom-logo.md",sourceDirName:"features",slug:"/features/custom-logo",permalink:"/features/custom-logo",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:4,frontMatter:{title:"Custom Logo",sidebar_label:"Custom Logo (Pro)",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Custom Title (Pro)",permalink:"/features/title"},next:{title:"Card Indexing (Pro)",permalink:"/features/indexing"}},s={},p=[{value:"Setting Custom Logo",id:"setting-custom-logo",level:3},{value:"What you'll need",id:"what-youll-need",level:4},{value:"Step 1: Procedure to convert logo into byte array",id:"step-1-procedure-to-convert-logo-into-byte-array",level:4},{value:"Step 2: Setting custom logo in sketch",id:"step-2-setting-custom-logo-in-sketch",level:4}],g={toc:p},c="wrapper";function u(e){let{components:t,...o}=e;return(0,n.yg)(c,(0,r.c)({},g,o,{components:t,mdxType:"MDXLayout"}),(0,n.yg)("div",{className:"pro-label"},(0,n.yg)("i",null,(0,n.yg)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.yg)("br",null),(0,n.yg)("img",{src:"/img/v4/custom-logo-mini.png",width:"305px",alt:"Energy Card Preview"}),"\xa0",(0,n.yg)("img",{src:"/img/v4/custom-logo-large.png",width:"400px",alt:"Energy Card Preview"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("p",null,'If you are not familiar with the interface yet, the dashboard has an sidebar which can be expanded and collapsed, in that case the logo switches between "mini" and "large" scale version.'),(0,n.yg)("p",null,"Both these logos can be changed by the user by modifying the ",(0,n.yg)("inlineCode",{parentName:"p"},"logo.h")," & ",(0,n.yg)("inlineCode",{parentName:"p"},"logo.cpp")," file in the library source directory."),(0,n.yg)("h3",{id:"setting-custom-logo"},"Setting Custom Logo"),(0,n.yg)("p",null,"The logo used in DASH is image file converted to byte array. We'll go through the process below:"),(0,n.yg)("h4",{id:"what-youll-need"},"What you'll need"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},"You'll need a compatible logo image ",(0,n.yg)("i",null,"( jpeg / png / gif / tif etc. )")," or an SVG file ( recommended due to small file size ). ",(0,n.yg)("i",null,(0,n.yg)("b",null,"Important: Please make sure your image is optimized and small in file size."))),(0,n.yg)("li",{parentName:"ul"},"Know the MIME file type of your image. You can use ",(0,n.yg)("a",{parentName:"li",href:"https://www.htmlstrip.com/mime-file-type-checker"},"HTTPStrip's mime utility"),".")),(0,n.yg)("h4",{id:"step-1-procedure-to-convert-logo-into-byte-array"},"Step 1: Procedure to convert logo into byte array"),(0,n.yg)("ol",null,(0,n.yg)("li",{parentName:"ol"},"Go to ",(0,n.yg)("a",{parentName:"li",href:"https://file2raw.labrat.one/"},"File2Raw Utility")," ( I created this utility a few years back for the purpose of converting files into byte array for C++ applications )."),(0,n.yg)("li",{parentName:"ol"},"Select your logo."),(0,n.yg)("li",{parentName:"ol"},'Select "Gzip Compress" & "Use PROGMEM (Arduino)".'),(0,n.yg)("li",{parentName:"ol"},'Click "Convert".')),(0,n.yg)("h4",{id:"step-2-setting-custom-logo-in-sketch"},"Step 2: Setting custom logo in sketch"),(0,n.yg)("p",null,"Now once your custom logo has been prepared, let's set it in our ESP-DASH Pro library. To do so, the library contains 2 files which contain the variable that govern 'mini' and 'large' logos used by our webpage."),(0,n.yg)("ol",null,(0,n.yg)("li",{parentName:"ol"},"Go to ",(0,n.yg)("inlineCode",{parentName:"li"},"logo.h")),(0,n.yg)("li",{parentName:"ol"},"Set ",(0,n.yg)("inlineCode",{parentName:"li"},"DASH_MINI_LOGO_MIME")," to your image file type. To find your file's mime type, use this utility: ",(0,n.yg)("a",{parentName:"li",href:"https://www.htmlstrip.com/mime-file-type-checker"},"https://www.htmlstrip.com/mime-file-type-checker")),(0,n.yg)("li",{parentName:"ol"},"Set ",(0,n.yg)("inlineCode",{parentName:"li"},"DASH_MINI_LOGO_WIDTH")," & ",(0,n.yg)("inlineCode",{parentName:"li"},"DASH_MINI_LOGO_HEIGHT")," according to your desired size which will be displayed on the webpage."),(0,n.yg)("li",{parentName:"ol"},"Replace the array length of ",(0,n.yg)("inlineCode",{parentName:"li"},"DASH_MINI_LOGO")," with the newly generated array length."),(0,n.yg)("li",{parentName:"ol"},"Now open ",(0,n.yg)("inlineCode",{parentName:"li"},"logo.cpp")),(0,n.yg)("li",{parentName:"ol"},"Replace the data inside ",(0,n.yg)("inlineCode",{parentName:"li"},"DASH_MINI_LOGO")," with new data generated just before using File2Raw.")),(0,n.yg)("p",null,"Once done, you may repeat the same steps as above for ",(0,n.yg)("inlineCode",{parentName:"p"},"DASH_LARGE_LOGO"),"."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/2a51f6ab.44b6cfde.js b/assets/js/2a51f6ab.44b6cfde.js deleted file mode 100644 index 95053a67..00000000 --- a/assets/js/2a51f6ab.44b6cfde.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[4889],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(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 i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var s=n.createContext({}),c=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=c(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=c(r),m=o,d=p["".concat(s,".").concat(m)]||p[m]||f[m]||a;return r?n.createElement(d,i(i({ref:t},u),{},{components:r})):n.createElement(d,i({ref:t},u))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:o,i[1]=l;for(var c=2;c{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>f,frontMatter:()=>a,metadata:()=>l,toc:()=>c});var n=r(7462),o=(r(7294),r(3905));const a={title:"Custom Title",sidebar_label:"Custom Title (Pro)",sidebar_position:3},i=void 0,l={unversionedId:"features/title",id:"features/title",title:"Custom Title",description:"This feature is available in DASH Pro only.",source:"@site/docs/features/title.md",sourceDirName:"features",slug:"/features/title",permalink:"/next/features/title",draft:!1,tags:[],version:"current",sidebarPosition:3,frontMatter:{title:"Custom Title",sidebar_label:"Custom Title (Pro)",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Toggle Animation (Pro)",permalink:"/next/features/chartanimations"},next:{title:"Custom Logo (Pro)",permalink:"/next/features/custom-logo"}},s={},c=[{value:"Example:",id:"example",level:4}],u={toc:c},p="wrapper";function f(e){let{components:t,...r}=e;return(0,o.kt)(p,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("div",{className:"pro-label"},(0,o.kt)("i",null,(0,o.kt)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,o.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,o.kt)("br",null),(0,o.kt)("img",{src:"/img/v4/custom-title.png",width:"500px",alt:"Energy Card Preview"}),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("a",{href:"https://espdash.pro/",target:"_blank"},"ESP-DASH ",(0,o.kt)("span",{style:{color:"rgb(245, 75, 66)"}},"Pro"))," provides you with a ",(0,o.kt)("code",null,"setTitle")," function in the main ESPDash class. You can use this function to change the default title of your dashboard.",(0,o.kt)("h4",{id:"example"},"Example:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cpp"},'dashboard.setTitle("New Dashboard XYZ");\n')))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/2a51f6ab.740b0991.js b/assets/js/2a51f6ab.740b0991.js new file mode 100644 index 00000000..02964a9f --- /dev/null +++ b/assets/js/2a51f6ab.740b0991.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[688],{5788:(e,t,r)=>{r.d(t,{Iu:()=>u,yg:()=>m});var n=r(1504);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(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 i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),c=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=c(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},y=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=c(r),y=a,m=p["".concat(s,".").concat(y)]||p[y]||f[y]||o;return r?n.createElement(m,i(i({ref:t},u),{},{components:r})):n.createElement(m,i({ref:t},u))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=y;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:a,i[1]=l;for(var c=2;c{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>f,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var n=r(5072),a=(r(1504),r(5788));const o={title:"Custom Title",sidebar_label:"Custom Title (Pro)",sidebar_position:3},i=void 0,l={unversionedId:"features/title",id:"features/title",title:"Custom Title",description:"This feature is available in DASH Pro only.",source:"@site/docs/features/title.md",sourceDirName:"features",slug:"/features/title",permalink:"/next/features/title",draft:!1,tags:[],version:"current",sidebarPosition:3,frontMatter:{title:"Custom Title",sidebar_label:"Custom Title (Pro)",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Toggle Animation (Pro)",permalink:"/next/features/chartanimations"},next:{title:"Custom Logo (Pro)",permalink:"/next/features/custom-logo"}},s={},c=[{value:"Example:",id:"example",level:4}],u={toc:c},p="wrapper";function f(e){let{components:t,...r}=e;return(0,a.yg)(p,(0,n.c)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,a.yg)("div",{className:"pro-label"},(0,a.yg)("i",null,(0,a.yg)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,a.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,a.yg)("br",null),(0,a.yg)("img",{src:"/img/v4/custom-title.png",width:"500px",alt:"Energy Card Preview"}),(0,a.yg)("br",null),(0,a.yg)("br",null),(0,a.yg)("a",{href:"https://espdash.pro/",target:"_blank"},"ESP-DASH ",(0,a.yg)("span",{style:{color:"rgb(245, 75, 66)"}},"Pro"))," provides you with a ",(0,a.yg)("code",null,"setTitle")," function in the main ESPDash class. You can use this function to change the default title of your dashboard.",(0,a.yg)("h4",{id:"example"},"Example:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-cpp"},'dashboard.setTitle("New Dashboard XYZ");\n')))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/2bf59882.519fee37.js b/assets/js/2bf59882.acb8dbd8.js similarity index 67% rename from assets/js/2bf59882.519fee37.js rename to assets/js/2bf59882.acb8dbd8.js index 1bed4b14..e4157c43 100644 --- a/assets/js/2bf59882.519fee37.js +++ b/assets/js/2bf59882.acb8dbd8.js @@ -1 +1 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[3117],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>m});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=a.createContext({}),c=function(e){var t=a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=c(e.components);return a.createElement(s.Provider,{value:t},e.children)},h="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),h=c(r),d=n,m=h["".concat(s,".").concat(d)]||h[d]||p[d]||o;return r?a.createElement(m,i(i({ref:t},u),{},{components:r})):a.createElement(m,i({ref:t},u))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,i=new Array(o);i[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[h]="string"==typeof e?e:n,i[1]=l;for(var c=2;c{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>p,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var a=r(7462),n=(r(7294),r(3905));const o={title:"Migration Guide",sidebar_label:"Migration Guide",sidebar_position:12},i=void 0,l={unversionedId:"migrate",id:"migrate",title:"Migration Guide",description:"Note: If you are currently using ESP-DASH V3 or ESP-DASH Pro ( previous releases <= v4.0.8 ), then this article is for you.",source:"@site/docs/migrate.md",sourceDirName:".",slug:"/migrate",permalink:"/next/migrate",draft:!1,tags:[],version:"current",sidebarPosition:12,frontMatter:{title:"Migration Guide",sidebar_label:"Migration Guide",sidebar_position:12},sidebar:"tutorialSidebar",previous:{title:"Brotli Compression (Pro)",permalink:"/next/features/brotli-compression"}},s={},c=[{value:"\u26a0\ufe0f Minor Changes:",id:"\ufe0f-minor-changes",level:2},{value:"\u2692\ufe0f Breaking Changes:",id:"\ufe0f-breaking-changes",level:2},{value:"Button Callback",id:"button-callback",level:3},{value:"Charts",id:"charts",level:3}],u={toc:c},h="wrapper";function p(e){let{components:t,...r}=e;return(0,n.kt)(h,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Note: If you are currently using ESP-DASH V3 or ESP-DASH Pro ( previous releases <= v4.0.8 ), then this article is for you.")),(0,n.kt)("p",null,"This article will cover all the minor and breaking changing which come as part of switching your existing codebase to ESP-DASH V4. DASH V4 was made with backwards compatibility in mind therefore there are not many changes to the existing functionality, which means you can get started using it in a few minutes!:"),(0,n.kt)("h2",{id:"\ufe0f-minor-changes"},"\u26a0\ufe0f Minor Changes:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"The second argument of ESPDash Class constructor now only disables system statistics. ",(0,n.kt)("inlineCode",{parentName:"p"},"ESPDash(AsyncWebServer* server, bool enable_default_stats = true);"),". The statistics tab now gets automatically hidden when there are no custom stats added by user and when default (system) statistics are disabled as well.")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"The ",(0,n.kt)("inlineCode",{parentName:"p"},"sendUpdates(bool force);")," function now has a ",(0,n.kt)("inlineCode",{parentName:"p"},"force")," argument which can be used to force refresh the whole layout on connected dashboards."))),(0,n.kt)("h2",{id:"\ufe0f-breaking-changes"},"\u2692\ufe0f Breaking Changes:"),(0,n.kt)("h3",{id:"button-callback"},"Button Callback"),(0,n.kt)("p",null,"The button callback now gets called with a ",(0,n.kt)("inlineCode",{parentName:"p"},"int")," rather than ",(0,n.kt)("inlineCode",{parentName:"p"},"bool")," which lead to issues. The value returned by callback will be ",(0,n.kt)("inlineCode",{parentName:"p"},"1")," or ",(0,n.kt)("inlineCode",{parentName:"p"},"0"),"."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"// New Button Callback\nbutton.attachCallback([&](int value){\n button.update(value);\n dashboard.sendUpdates();\n});\n")),(0,n.kt)("h3",{id:"charts"},"Charts"),(0,n.kt)("p",null,"There is a major overhaul inside the library for the charts functionality to improve reliability of host microcontroller."),(0,n.kt)("p",null,(0,n.kt)("em",{parentName:"p"},"Previously, ESP-DASH would copy the whole X & Y axis array into SRAM of your ESP8266/ESP32 microcontroller, which was fine for smaller arrays but quickly led to crashes whenever somebody tried to use a large dataset.")),(0,n.kt)("p",null,"With V4, the library only keeps the pointer to the dataset which will be used for the charts. This in return lets you use a large array for charts without memory hogging the microcontroller! :D"),(0,n.kt)("p",null,"As part of this critical fix, now you need to keep the dataset ( X & Y axis ) arrays into the global scope all the time and then provide a reference of these array to the library along with it's size. The only thing which you need to change is that if you were creating a array into heap, ( i.e inside a function ) now you need to shift it into global scope. Carefully study the following reference: ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/ayushsharma82/ESP-DASH/blob/master/examples/Benchmark/Benchmark.ino#L56"},"Benchmark Example")))}p.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[6944],{5788:(e,t,r)=>{r.d(t,{Iu:()=>u,yg:()=>d});var a=r(1504);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=a.createContext({}),c=function(e){var t=a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=c(e.components);return a.createElement(s.Provider,{value:t},e.children)},h="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},y=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),h=c(r),y=n,d=h["".concat(s,".").concat(y)]||h[y]||p[y]||o;return r?a.createElement(d,i(i({ref:t},u),{},{components:r})):a.createElement(d,i({ref:t},u))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,i=new Array(o);i[0]=y;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[h]="string"==typeof e?e:n,i[1]=l;for(var c=2;c{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>p,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var a=r(5072),n=(r(1504),r(5788));const o={title:"Migration Guide",sidebar_label:"Migration Guide",sidebar_position:12},i=void 0,l={unversionedId:"migrate",id:"migrate",title:"Migration Guide",description:"Note: If you are currently using ESP-DASH V3 or ESP-DASH Pro ( previous releases <= v4.0.8 ), then this article is for you.",source:"@site/docs/migrate.md",sourceDirName:".",slug:"/migrate",permalink:"/next/migrate",draft:!1,tags:[],version:"current",sidebarPosition:12,frontMatter:{title:"Migration Guide",sidebar_label:"Migration Guide",sidebar_position:12},sidebar:"tutorialSidebar",previous:{title:"Brotli Compression (Pro)",permalink:"/next/features/brotli-compression"}},s={},c=[{value:"\u26a0\ufe0f Minor Changes:",id:"\ufe0f-minor-changes",level:2},{value:"\u2692\ufe0f Breaking Changes:",id:"\ufe0f-breaking-changes",level:2},{value:"Button Callback",id:"button-callback",level:3},{value:"Charts",id:"charts",level:3}],u={toc:c},h="wrapper";function p(e){let{components:t,...r}=e;return(0,n.yg)(h,(0,a.c)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.yg)("p",null,(0,n.yg)("strong",{parentName:"p"},"Note: If you are currently using ESP-DASH V3 or ESP-DASH Pro ( previous releases <= v4.0.8 ), then this article is for you.")),(0,n.yg)("p",null,"This article will cover all the minor and breaking changing which come as part of switching your existing codebase to ESP-DASH V4. DASH V4 was made with backwards compatibility in mind therefore there are not many changes to the existing functionality, which means you can get started using it in a few minutes!:"),(0,n.yg)("h2",{id:"\ufe0f-minor-changes"},"\u26a0\ufe0f Minor Changes:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("p",{parentName:"li"},"The second argument of ESPDash Class constructor now only disables system statistics. ",(0,n.yg)("inlineCode",{parentName:"p"},"ESPDash(AsyncWebServer* server, bool enable_default_stats = true);"),". The statistics tab now gets automatically hidden when there are no custom stats added by user and when default (system) statistics are disabled as well.")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("p",{parentName:"li"},"The ",(0,n.yg)("inlineCode",{parentName:"p"},"sendUpdates(bool force);")," function now has a ",(0,n.yg)("inlineCode",{parentName:"p"},"force")," argument which can be used to force refresh the whole layout on connected dashboards."))),(0,n.yg)("h2",{id:"\ufe0f-breaking-changes"},"\u2692\ufe0f Breaking Changes:"),(0,n.yg)("h3",{id:"button-callback"},"Button Callback"),(0,n.yg)("p",null,"The button callback now gets called with a ",(0,n.yg)("inlineCode",{parentName:"p"},"int")," rather than ",(0,n.yg)("inlineCode",{parentName:"p"},"bool")," which lead to issues. The value returned by callback will be ",(0,n.yg)("inlineCode",{parentName:"p"},"1")," or ",(0,n.yg)("inlineCode",{parentName:"p"},"0"),"."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"// New Button Callback\nbutton.attachCallback([&](int value){\n button.update(value);\n dashboard.sendUpdates();\n});\n")),(0,n.yg)("h3",{id:"charts"},"Charts"),(0,n.yg)("p",null,"There is a major overhaul inside the library for the charts functionality to improve reliability of host microcontroller."),(0,n.yg)("p",null,(0,n.yg)("em",{parentName:"p"},"Previously, ESP-DASH would copy the whole X & Y axis array into SRAM of your ESP8266/ESP32 microcontroller, which was fine for smaller arrays but quickly led to crashes whenever somebody tried to use a large dataset.")),(0,n.yg)("p",null,"With V4, the library only keeps the pointer to the dataset which will be used for the charts. This in return lets you use a large array for charts without memory hogging the microcontroller! :D"),(0,n.yg)("p",null,"As part of this critical fix, now you need to keep the dataset ( X & Y axis ) arrays into the global scope all the time and then provide a reference of these array to the library along with it's size. The only thing which you need to change is that if you were creating a array into heap, ( i.e inside a function ) now you need to shift it into global scope. Carefully study the following reference: ",(0,n.yg)("a",{parentName:"p",href:"https://github.com/ayushsharma82/ESP-DASH/blob/master/examples/Benchmark/Benchmark.ino#L56"},"Benchmark Example")))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/2c8f7a48.935b3a93.js b/assets/js/2c8f7a48.935b3a93.js deleted file mode 100644 index 445fbb7d..00000000 --- a/assets/js/2c8f7a48.935b3a93.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[3276],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>h});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}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 l(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),u=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},p=function(e){var t=u(e.components);return n.createElement(s.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),c=u(r),m=a,h=c["".concat(s,".").concat(m)]||c[m]||d[m]||i;return r?n.createElement(h,l(l({ref:t},p),{},{components:r})):n.createElement(h,l({ref:t},p))}));function h(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,l=new Array(i);l[0]=m;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[c]="string"==typeof e?e:a,l[1]=o;for(var u=2;u{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>d,frontMatter:()=>i,metadata:()=>o,toc:()=>u});var n=r(7462),a=(r(7294),r(3905));const i={title:"Installation",sidebar_label:"Installation",sidebar_position:3},l=void 0,o={unversionedId:"installation",id:"version-v4.x.x/installation",title:"Installation",description:"ESP-DASH depends on the following open-source libraries/boards. Make sure to install them before you install ESP-DASH.",source:"@site/versioned_docs/version-v4.x.x/installation.md",sourceDirName:".",slug:"/installation",permalink:"/installation",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:3,frontMatter:{title:"Installation",sidebar_label:"Installation",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Concept",permalink:"/concept"},next:{title:"Getting Started",permalink:"/getting-started"}},s={},u=[{value:"For ESP8266:",id:"for-esp8266",level:5},{value:"For ESP32:",id:"for-esp32",level:5},{value:"Installing ESP-DASH",id:"installing-esp-dash",level:3},{value:"1. Directly Through Arduino IDE - Library Manager",id:"1-directly-through-arduino-ide---library-manager",level:4},{value:"2. Manual Install",id:"2-manual-install",level:4},{value:"For Windows:",id:"for-windows",level:5},{value:"For Linux:",id:"for-linux",level:5},{value:"3. Import through Arduino IDE",id:"3-import-through-arduino-ide",level:4}],p={toc:u},c="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(c,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"ESP-DASH depends on the following open-source libraries/boards. Make sure to install them before you install ESP-DASH."),(0,a.kt)("h5",{id:"for-esp8266"},"For ESP8266:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/esp8266/Arduino"},"ESP8266 Arduino Core")," - ",(0,a.kt)("strong",{parentName:"li"},"(latest)")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/me-no-dev/ESPAsyncTCP"},"ESPAsyncTCP")," - ",(0,a.kt)("strong",{parentName:"li"},"v1.2.0")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/me-no-dev/ESPAsyncWebServer"},"ESPAsyncWebServer")," - ",(0,a.kt)("strong",{parentName:"li"},"v1.2.3")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/bblanchon/ArduinoJson"},"ArduinoJson")," - ",(0,a.kt)("strong",{parentName:"li"},"v6.17.0"))),(0,a.kt)("h5",{id:"for-esp32"},"For ESP32:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/espressif/arduino-esp32"},"ESP32 Arduino Core")," - ",(0,a.kt)("strong",{parentName:"li"},"(latest)")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/me-no-dev/AsyncTCP"},"AsyncTCP")," - ",(0,a.kt)("strong",{parentName:"li"},"v1.0.3")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/me-no-dev/ESPAsyncWebServer"},"ESPAsyncWebServer")," - ",(0,a.kt)("strong",{parentName:"li"},"v1.2.3")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/bblanchon/ArduinoJson"},"ArduinoJson")," - ",(0,a.kt)("strong",{parentName:"li"},"v6.17.0"))),(0,a.kt)("br",null),(0,a.kt)("h3",{id:"installing-esp-dash"},"Installing ESP-DASH"),(0,a.kt)("h4",{id:"1-directly-through-arduino-ide---library-manager"},"1. Directly Through Arduino IDE - Library Manager"),(0,a.kt)("p",null,'Go to Sketch > Include Library > Library Manager > Search for "ESP-DASH" > Install'),(0,a.kt)("h4",{id:"2-manual-install"},"2. Manual Install"),(0,a.kt)("h5",{id:"for-windows"},"For Windows:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Download the ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/ayushsharma82/ESP-DASH/archive/master.zip"},"Repository")),(0,a.kt)("li",{parentName:"ul"},"Extract the .zip in ",(0,a.kt)("inlineCode",{parentName:"li"},'Documents > Arduino > Libraries > {Place "ESP-DASH" folder Here}'))),(0,a.kt)("h5",{id:"for-linux"},"For Linux:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Download the ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/ayushsharma82/ESP-DASH/archive/master.zip"},"Repository")," "),(0,a.kt)("li",{parentName:"ul"},"Extract the .zip in ",(0,a.kt)("inlineCode",{parentName:"li"},'Sketchbook > Libraries > {Place "ESP-DASH" folder Here}'))),(0,a.kt)("h4",{id:"3-import-through-arduino-ide"},"3. Import through Arduino IDE"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Download the ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/ayushsharma82/ESP-DASH/archive/master.zip"},"Repository")),(0,a.kt)("li",{parentName:"ul"},"Go to ",(0,a.kt)("inlineCode",{parentName:"li"},"Sketch > Include Library > Add .zip Library > Select the Downloaded .zip File."))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/2c8f7a48.9f3731dc.js b/assets/js/2c8f7a48.9f3731dc.js new file mode 100644 index 00000000..f2359538 --- /dev/null +++ b/assets/js/2c8f7a48.9f3731dc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[2116],{5788:(e,r,t)=>{t.d(r,{Iu:()=>p,yg:()=>d});var n=t(1504);function a(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function i(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function l(e){for(var r=1;r=0||(a[t]=e[t]);return a}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var s=n.createContext({}),u=function(e){var r=n.useContext(s),t=r;return e&&(t="function"==typeof e?e(r):l(l({},r),e)),t},p=function(e){var r=u(e.components);return n.createElement(s.Provider,{value:r},e.children)},c="mdxType",y={inlineCode:"code",wrapper:function(e){var r=e.children;return n.createElement(n.Fragment,{},r)}},g=n.forwardRef((function(e,r){var t=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),c=u(t),g=a,d=c["".concat(s,".").concat(g)]||c[g]||y[g]||i;return t?n.createElement(d,l(l({ref:r},p),{},{components:t})):n.createElement(d,l({ref:r},p))}));function d(e,r){var t=arguments,a=r&&r.mdxType;if("string"==typeof e||a){var i=t.length,l=new Array(i);l[0]=g;var o={};for(var s in r)hasOwnProperty.call(r,s)&&(o[s]=r[s]);o.originalType=e,o[c]="string"==typeof e?e:a,l[1]=o;for(var u=2;u{t.r(r),t.d(r,{assets:()=>s,contentTitle:()=>l,default:()=>y,frontMatter:()=>i,metadata:()=>o,toc:()=>u});var n=t(5072),a=(t(1504),t(5788));const i={title:"Installation",sidebar_label:"Installation",sidebar_position:3},l=void 0,o={unversionedId:"installation",id:"version-v4.x.x/installation",title:"Installation",description:"ESP-DASH depends on the following open-source libraries/boards. Make sure to install them before you install ESP-DASH.",source:"@site/versioned_docs/version-v4.x.x/installation.md",sourceDirName:".",slug:"/installation",permalink:"/installation",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:3,frontMatter:{title:"Installation",sidebar_label:"Installation",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Concept",permalink:"/concept"},next:{title:"Getting Started",permalink:"/getting-started"}},s={},u=[{value:"For ESP8266:",id:"for-esp8266",level:5},{value:"For ESP32:",id:"for-esp32",level:5},{value:"Installing ESP-DASH",id:"installing-esp-dash",level:3},{value:"1. Directly Through Arduino IDE - Library Manager",id:"1-directly-through-arduino-ide---library-manager",level:4},{value:"2. Manual Install",id:"2-manual-install",level:4},{value:"For Windows:",id:"for-windows",level:5},{value:"For Linux:",id:"for-linux",level:5},{value:"3. Import through Arduino IDE",id:"3-import-through-arduino-ide",level:4}],p={toc:u},c="wrapper";function y(e){let{components:r,...t}=e;return(0,a.yg)(c,(0,n.c)({},p,t,{components:r,mdxType:"MDXLayout"}),(0,a.yg)("p",null,"ESP-DASH depends on the following open-source libraries/boards. Make sure to install them before you install ESP-DASH."),(0,a.yg)("h5",{id:"for-esp8266"},"For ESP8266:"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/esp8266/Arduino"},"ESP8266 Arduino Core")," - ",(0,a.yg)("strong",{parentName:"li"},"(latest)")),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/me-no-dev/ESPAsyncTCP"},"ESPAsyncTCP")," - ",(0,a.yg)("strong",{parentName:"li"},"v1.2.0")),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/me-no-dev/ESPAsyncWebServer"},"ESPAsyncWebServer")," - ",(0,a.yg)("strong",{parentName:"li"},"v1.2.3")),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/bblanchon/ArduinoJson"},"ArduinoJson")," - ",(0,a.yg)("strong",{parentName:"li"},"v6.17.0"))),(0,a.yg)("h5",{id:"for-esp32"},"For ESP32:"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/espressif/arduino-esp32"},"ESP32 Arduino Core")," - ",(0,a.yg)("strong",{parentName:"li"},"(latest)")),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/me-no-dev/AsyncTCP"},"AsyncTCP")," - ",(0,a.yg)("strong",{parentName:"li"},"v1.0.3")),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/me-no-dev/ESPAsyncWebServer"},"ESPAsyncWebServer")," - ",(0,a.yg)("strong",{parentName:"li"},"v1.2.3")),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/bblanchon/ArduinoJson"},"ArduinoJson")," - ",(0,a.yg)("strong",{parentName:"li"},"v6.17.0"))),(0,a.yg)("br",null),(0,a.yg)("h3",{id:"installing-esp-dash"},"Installing ESP-DASH"),(0,a.yg)("h4",{id:"1-directly-through-arduino-ide---library-manager"},"1. Directly Through Arduino IDE - Library Manager"),(0,a.yg)("p",null,'Go to Sketch > Include Library > Library Manager > Search for "ESP-DASH" > Install'),(0,a.yg)("h4",{id:"2-manual-install"},"2. Manual Install"),(0,a.yg)("h5",{id:"for-windows"},"For Windows:"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},"Download the ",(0,a.yg)("a",{parentName:"li",href:"https://github.com/ayushsharma82/ESP-DASH/archive/master.zip"},"Repository")),(0,a.yg)("li",{parentName:"ul"},"Extract the .zip in ",(0,a.yg)("inlineCode",{parentName:"li"},'Documents > Arduino > Libraries > {Place "ESP-DASH" folder Here}'))),(0,a.yg)("h5",{id:"for-linux"},"For Linux:"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},"Download the ",(0,a.yg)("a",{parentName:"li",href:"https://github.com/ayushsharma82/ESP-DASH/archive/master.zip"},"Repository")," "),(0,a.yg)("li",{parentName:"ul"},"Extract the .zip in ",(0,a.yg)("inlineCode",{parentName:"li"},'Sketchbook > Libraries > {Place "ESP-DASH" folder Here}'))),(0,a.yg)("h4",{id:"3-import-through-arduino-ide"},"3. Import through Arduino IDE"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},"Download the ",(0,a.yg)("a",{parentName:"li",href:"https://github.com/ayushsharma82/ESP-DASH/archive/master.zip"},"Repository")),(0,a.yg)("li",{parentName:"ul"},"Go to ",(0,a.yg)("inlineCode",{parentName:"li"},"Sketch > Include Library > Add .zip Library > Select the Downloaded .zip File."))))}y.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/34e9d761.41fa7559.js b/assets/js/34e9d761.41fa7559.js deleted file mode 100644 index a7933f09..00000000 --- a/assets/js/34e9d761.41fa7559.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[5725],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>v});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=a.createContext({}),s=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},d=function(e){var t=s(e.components);return a.createElement(p.Provider,{value:t},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,p=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),c=s(r),m=n,v=c["".concat(p,".").concat(m)]||c[m]||u[m]||i;return r?a.createElement(v,l(l({ref:t},d),{},{components:r})):a.createElement(v,l({ref:t},d))}));function v(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,l=new Array(i);l[0]=m;var o={};for(var p in t)hasOwnProperty.call(t,p)&&(o[p]=t[p]);o.originalType=e,o[c]="string"==typeof e?e:n,l[1]=o;for(var s=2;s{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>s});var a=r(7462),n=(r(7294),r(3905));const i={title:"Air Card",sidebar_label:"Air (Pro)",sidebar_position:4},l=void 0,o={unversionedId:"cards/air",id:"version-v4.x.x/cards/air",title:"Air Card",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v4.x.x/cards/air.md",sourceDirName:"cards",slug:"/cards/air",permalink:"/cards/air",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:4,frontMatter:{title:"Air Card",sidebar_label:"Air (Pro)",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Humidity",permalink:"/cards/humidity"},next:{title:"Energy (Pro)",permalink:"/cards/energy"}},p={},s=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],d={toc:s},c="wrapper";function u(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("div",{className:"pro-label"},(0,n.kt)("i",null,(0,n.kt)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/air-card.png",width:"280px",alt:"Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"This card adds a distinctive air/wind icon, and just like generic card you can add a symbol which will be appended to your data. This card can be used to show something related to air pressure/wind speed etc."),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"AIR_CARD")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"String"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Air Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )\n*/\nCard card1(&dashboard, AIR_CARD, "Power Consumption", "kWh");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(float value);\n")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")),(0,n.kt)("p",null,"Or you can also update the symbol along with the value like this:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'card1.update(value, "kWh");\n')),(0,n.kt)("br",null),(0,n.kt)("br",null))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/34e9d761.c024b4e5.js b/assets/js/34e9d761.c024b4e5.js new file mode 100644 index 00000000..2cf37543 --- /dev/null +++ b/assets/js/34e9d761.c024b4e5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[7372],{5788:(e,r,a)=>{a.d(r,{Iu:()=>d,yg:()=>g});var t=a(1504);function n(e,r,a){return r in e?Object.defineProperty(e,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[r]=a,e}function i(e,r){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r&&(t=t.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),a.push.apply(a,t)}return a}function l(e){for(var r=1;r=0||(n[a]=e[a]);return n}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=t.createContext({}),s=function(e){var r=t.useContext(p),a=r;return e&&(a="function"==typeof e?e(r):l(l({},r),e)),a},d=function(e){var r=s(e.components);return t.createElement(p.Provider,{value:r},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var r=e.children;return t.createElement(t.Fragment,{},r)}},y=t.forwardRef((function(e,r){var a=e.components,n=e.mdxType,i=e.originalType,p=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),c=s(a),y=n,g=c["".concat(p,".").concat(y)]||c[y]||u[y]||i;return a?t.createElement(g,l(l({ref:r},d),{},{components:a})):t.createElement(g,l({ref:r},d))}));function g(e,r){var a=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var i=a.length,l=new Array(i);l[0]=y;var o={};for(var p in r)hasOwnProperty.call(r,p)&&(o[p]=r[p]);o.originalType=e,o[c]="string"==typeof e?e:n,l[1]=o;for(var s=2;s{a.r(r),a.d(r,{assets:()=>p,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>s});var t=a(5072),n=(a(1504),a(5788));const i={title:"Air Card",sidebar_label:"Air (Pro)",sidebar_position:4},l=void 0,o={unversionedId:"cards/air",id:"version-v4.x.x/cards/air",title:"Air Card",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v4.x.x/cards/air.md",sourceDirName:"cards",slug:"/cards/air",permalink:"/cards/air",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:4,frontMatter:{title:"Air Card",sidebar_label:"Air (Pro)",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Humidity",permalink:"/cards/humidity"},next:{title:"Energy (Pro)",permalink:"/cards/energy"}},p={},s=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],d={toc:s},c="wrapper";function u(e){let{components:r,...a}=e;return(0,n.yg)(c,(0,t.c)({},d,a,{components:r,mdxType:"MDXLayout"}),(0,n.yg)("div",{className:"pro-label"},(0,n.yg)("i",null,(0,n.yg)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.yg)("h4",{id:"preview"},"Preview:"),(0,n.yg)("img",{className:"card-preview",src:"/img/v4/air-card.png",width:"280px",alt:"Preview"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("p",null,"This card adds a distinctive air/wind icon, and just like generic card you can add a symbol which will be appended to your data. This card can be used to show something related to air pressure/wind speed etc."),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"type"},"Type:"),(0,n.yg)("p",null,(0,n.yg)("inlineCode",{parentName:"p"},"AIR_CARD")),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"int")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"float")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"String"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"initializer"},"Initializer:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Air Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )\n*/\nCard card1(&dashboard, AIR_CARD, "Power Consumption", "kWh");\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"updaters"},"Updaters:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(float value);\n")),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")),(0,n.yg)("p",null,"Or you can also update the symbol along with the value like this:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'card1.update(value, "kWh");\n')),(0,n.yg)("br",null),(0,n.yg)("br",null))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/37c80295.70af6040.js b/assets/js/37c80295.70af6040.js deleted file mode 100644 index 29578390..00000000 --- a/assets/js/37c80295.70af6040.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[9530],{3905:(e,r,t)=>{t.d(r,{Zo:()=>u,kt:()=>y});var a=t(7294);function n(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function i(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);r&&(a=a.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,a)}return t}function l(e){for(var r=1;r=0||(n[t]=e[t]);return n}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}var s=a.createContext({}),p=function(e){var r=a.useContext(s),t=r;return e&&(t="function"==typeof e?e(r):l(l({},r),e)),t},u=function(e){var r=p(e.components);return a.createElement(s.Provider,{value:r},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var r=e.children;return a.createElement(a.Fragment,{},r)}},f=a.forwardRef((function(e,r){var t=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),c=p(t),f=n,y=c["".concat(s,".").concat(f)]||c[f]||d[f]||i;return t?a.createElement(y,l(l({ref:r},u),{},{components:t})):a.createElement(y,l({ref:r},u))}));function y(e,r){var t=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var i=t.length,l=new Array(i);l[0]=f;var o={};for(var s in r)hasOwnProperty.call(r,s)&&(o[s]=r[s]);o.originalType=e,o[c]="string"==typeof e?e:n,l[1]=o;for(var p=2;p{t.r(r),t.d(r,{assets:()=>s,contentTitle:()=>l,default:()=>d,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var a=t(7462),n=(t(7294),t(3905));const i={title:"Bar Chart",sidebar_label:"Bar",sidebar_position:1},l=void 0,o={unversionedId:"charts/bar",id:"version-v3.x.x/charts/bar",title:"Bar Chart",description:"Preview:",source:"@site/versioned_docs/version-v3.x.x/charts/bar.md",sourceDirName:"charts",slug:"/charts/bar",permalink:"/v3.x.x/charts/bar",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:1,frontMatter:{title:"Bar Chart",sidebar_label:"Bar",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Charts",permalink:"/v3.x.x/category/charts"},next:{title:"Line (Pro)",permalink:"/v3.x.x/charts/line"}},s={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types for X-Axis:",id:"valid-data-types-for-x-axis",level:4},{value:"Valid Data Types for Y-Axis:",id:"valid-data-types-for-y-axis",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4},{value:"For X-Axis:",id:"for-x-axis",level:5},{value:"For Y-Axis:",id:"for-y-axis",level:5}],u={toc:p},c="wrapper";function d(e){let{components:r,...t}=e;return(0,n.kt)(c,(0,a.Z)({},u,t,{components:r,mdxType:"MDXLayout"}),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{src:"/img//bar-chart.png",width:"380px",alt:"Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"It's a bar chart. period."),(0,n.kt)("p",null,"You can aggregate large amount of data in form of arrays and display them in a bar chart."),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"BAR_CHART")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types-for-x-axis"},"Valid Data Types for X-Axis:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"String"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types-for-y-axis"},"Valid Data Types for Y-Axis:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Bar Chart\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name )\n*/\nChart chart1(&dashboard, BAR_CHART, "Chart Name");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("h5",{id:"for-x-axis"},"For X-Axis:"),(0,n.kt)("p",null,"X-Axis updater uses ",(0,n.kt)("inlineCode",{parentName:"p"},"updateX")," function."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/*\n Data for X Axis of our Chart\n This array can be of: `int` / `float` or `String`\n*/\nString XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or\n (float array[], size_t array_size)\n or\n (String array[], size_t array_size)\n*/\nchart1.updateX(XAxis, 7);\n')),(0,n.kt)("h5",{id:"for-y-axis"},"For Y-Axis:"),(0,n.kt)("p",null,"Y-Axis updater uses ",(0,n.kt)("inlineCode",{parentName:"p"},"updateY")," function."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"/*\n Data for Y Axis of our Chart\n This array can be of: `int` or `float`\n*/\nint YAxis[] = {0, 0, 0, 0, 0, 0, 0};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or \n (float array[], size_t array_size)\n*/\nchart1.updateY(YAxis, 7);\n")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/37c80295.97b2f9c7.js b/assets/js/37c80295.97b2f9c7.js new file mode 100644 index 00000000..9172d330 --- /dev/null +++ b/assets/js/37c80295.97b2f9c7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[7750],{5788:(e,r,a)=>{a.d(r,{Iu:()=>u,yg:()=>g});var t=a(1504);function n(e,r,a){return r in e?Object.defineProperty(e,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[r]=a,e}function i(e,r){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r&&(t=t.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),a.push.apply(a,t)}return a}function l(e){for(var r=1;r=0||(n[a]=e[a]);return n}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=t.createContext({}),p=function(e){var r=t.useContext(s),a=r;return e&&(a="function"==typeof e?e(r):l(l({},r),e)),a},u=function(e){var r=p(e.components);return t.createElement(s.Provider,{value:r},e.children)},y="mdxType",c={inlineCode:"code",wrapper:function(e){var r=e.children;return t.createElement(t.Fragment,{},r)}},d=t.forwardRef((function(e,r){var a=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),y=p(a),d=n,g=y["".concat(s,".").concat(d)]||y[d]||c[d]||i;return a?t.createElement(g,l(l({ref:r},u),{},{components:a})):t.createElement(g,l({ref:r},u))}));function g(e,r){var a=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var i=a.length,l=new Array(i);l[0]=d;var o={};for(var s in r)hasOwnProperty.call(r,s)&&(o[s]=r[s]);o.originalType=e,o[y]="string"==typeof e?e:n,l[1]=o;for(var p=2;p{a.r(r),a.d(r,{assets:()=>s,contentTitle:()=>l,default:()=>c,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var t=a(5072),n=(a(1504),a(5788));const i={title:"Bar Chart",sidebar_label:"Bar",sidebar_position:1},l=void 0,o={unversionedId:"charts/bar",id:"version-v3.x.x/charts/bar",title:"Bar Chart",description:"Preview:",source:"@site/versioned_docs/version-v3.x.x/charts/bar.md",sourceDirName:"charts",slug:"/charts/bar",permalink:"/v3.x.x/charts/bar",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:1,frontMatter:{title:"Bar Chart",sidebar_label:"Bar",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Charts",permalink:"/v3.x.x/category/charts"},next:{title:"Line (Pro)",permalink:"/v3.x.x/charts/line"}},s={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types for X-Axis:",id:"valid-data-types-for-x-axis",level:4},{value:"Valid Data Types for Y-Axis:",id:"valid-data-types-for-y-axis",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4},{value:"For X-Axis:",id:"for-x-axis",level:5},{value:"For Y-Axis:",id:"for-y-axis",level:5}],u={toc:p},y="wrapper";function c(e){let{components:r,...a}=e;return(0,n.yg)(y,(0,t.c)({},u,a,{components:r,mdxType:"MDXLayout"}),(0,n.yg)("h4",{id:"preview"},"Preview:"),(0,n.yg)("img",{src:"/img//bar-chart.png",width:"380px",alt:"Preview"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("p",null,"It's a bar chart. period."),(0,n.yg)("p",null,"You can aggregate large amount of data in form of arrays and display them in a bar chart."),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"type"},"Type:"),(0,n.yg)("p",null,(0,n.yg)("inlineCode",{parentName:"p"},"BAR_CHART")),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types-for-x-axis"},"Valid Data Types for X-Axis:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"int")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"float")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"String"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types-for-y-axis"},"Valid Data Types for Y-Axis:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"int")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"float"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"initializer"},"Initializer:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Bar Chart\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name )\n*/\nChart chart1(&dashboard, BAR_CHART, "Chart Name");\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"updaters"},"Updaters:"),(0,n.yg)("h5",{id:"for-x-axis"},"For X-Axis:"),(0,n.yg)("p",null,"X-Axis updater uses ",(0,n.yg)("inlineCode",{parentName:"p"},"updateX")," function."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/*\n Data for X Axis of our Chart\n This array can be of: `int` / `float` or `String`\n*/\nString XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or\n (float array[], size_t array_size)\n or\n (String array[], size_t array_size)\n*/\nchart1.updateX(XAxis, 7);\n')),(0,n.yg)("h5",{id:"for-y-axis"},"For Y-Axis:"),(0,n.yg)("p",null,"Y-Axis updater uses ",(0,n.yg)("inlineCode",{parentName:"p"},"updateY")," function."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"/*\n Data for Y Axis of our Chart\n This array can be of: `int` or `float`\n*/\nint YAxis[] = {0, 0, 0, 0, 0, 0, 0};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or \n (float array[], size_t array_size)\n*/\nchart1.updateY(YAxis, 7);\n")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3b62c223.5e0181da.js b/assets/js/3b62c223.5e0181da.js new file mode 100644 index 00000000..adf4e9f3 --- /dev/null +++ b/assets/js/3b62c223.5e0181da.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[7176],{5788:(e,r,a)=>{a.d(r,{Iu:()=>c,yg:()=>y});var n=a(1504);function t(e,r,a){return r in e?Object.defineProperty(e,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[r]=a,e}function i(e,r){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var r=1;r=0||(t[a]=e[a]);return t}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(t[a]=e[a])}return t}var s=n.createContext({}),p=function(e){var r=n.useContext(s),a=r;return e&&(a="function"==typeof e?e(r):l(l({},r),e)),a},c=function(e){var r=p(e.components);return n.createElement(s.Provider,{value:r},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var r=e.children;return n.createElement(n.Fragment,{},r)}},g=n.forwardRef((function(e,r){var a=e.components,t=e.mdxType,i=e.originalType,s=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),d=p(a),g=t,y=d["".concat(s,".").concat(g)]||d[g]||u[g]||i;return a?n.createElement(y,l(l({ref:r},c),{},{components:a})):n.createElement(y,l({ref:r},c))}));function y(e,r){var a=arguments,t=r&&r.mdxType;if("string"==typeof e||t){var i=a.length,l=new Array(i);l[0]=g;var o={};for(var s in r)hasOwnProperty.call(r,s)&&(o[s]=r[s]);o.originalType=e,o[d]="string"==typeof e?e:t,l[1]=o;for(var p=2;p{a.r(r),a.d(r,{assets:()=>s,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var n=a(5072),t=(a(1504),a(5788));const i={title:"Progress Card",sidebar_label:"Progress",sidebar_position:4},l=void 0,o={unversionedId:"cards/progress",id:"version-v4.x.x/cards/progress",title:"Progress Card",description:"Preview:",source:"@site/versioned_docs/version-v4.x.x/cards/progress.md",sourceDirName:"cards",slug:"/cards/progress",permalink:"/cards/progress",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:4,frontMatter:{title:"Progress Card",sidebar_label:"Progress",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Energy (Pro)",permalink:"/cards/energy"},next:{title:"Toggle Button",permalink:"/cards/button"}},s={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],c={toc:p},d="wrapper";function u(e){let{components:r,...a}=e;return(0,t.yg)(d,(0,n.c)({},c,a,{components:r,mdxType:"MDXLayout"}),(0,t.yg)("h4",{id:"preview"},"Preview:"),(0,t.yg)("img",{className:"card-preview",src:"/img/v4/progress-card.png",width:"280px",alt:"Preview"}),(0,t.yg)("br",null),(0,t.yg)("br",null),(0,t.yg)("p",null,"This card displays a horizontal range based on a ",(0,t.yg)("inlineCode",{parentName:"p"},"integer")," or a ",(0,t.yg)("inlineCode",{parentName:"p"},"float")," value. It makes data visualization user friendly."),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"type"},"Type:"),(0,t.yg)("p",null,(0,t.yg)("inlineCode",{parentName:"p"},"PROGRESS_CARD")),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,t.yg)("ul",null,(0,t.yg)("li",{parentName:"ul"},(0,t.yg)("inlineCode",{parentName:"li"},"int")),(0,t.yg)("li",{parentName:"ul"},(0,t.yg)("inlineCode",{parentName:"li"},"float"))),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"initializer"},"Initializer:"),(0,t.yg)("p",null,"With progress card, Initializer requires ",(0,t.yg)("inlineCode",{parentName:"p"},"min")," & ",(0,t.yg)("inlineCode",{parentName:"p"},"max")," range."),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Progress Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional), int min, int max)\n*/\nCard card1(&dashboard, PROGRESS_CARD, "Progress1", "", 0, 255);\n')),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"updaters"},"Updaters:"),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(float value);\n")),(0,t.yg)("p",null,"Or, update symbol along your value:"),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},'card1.update(244, "%");\n')))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3b62c223.b256f63c.js b/assets/js/3b62c223.b256f63c.js deleted file mode 100644 index f0d212ed..00000000 --- a/assets/js/3b62c223.b256f63c.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[8201],{3905:(e,r,t)=>{t.d(r,{Zo:()=>d,kt:()=>v});var a=t(7294);function n(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function i(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);r&&(a=a.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,a)}return t}function l(e){for(var r=1;r=0||(n[t]=e[t]);return n}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}var s=a.createContext({}),p=function(e){var r=a.useContext(s),t=r;return e&&(t="function"==typeof e?e(r):l(l({},r),e)),t},d=function(e){var r=p(e.components);return a.createElement(s.Provider,{value:r},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var r=e.children;return a.createElement(a.Fragment,{},r)}},m=a.forwardRef((function(e,r){var t=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),c=p(t),m=n,v=c["".concat(s,".").concat(m)]||c[m]||u[m]||i;return t?a.createElement(v,l(l({ref:r},d),{},{components:t})):a.createElement(v,l({ref:r},d))}));function v(e,r){var t=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var i=t.length,l=new Array(i);l[0]=m;var o={};for(var s in r)hasOwnProperty.call(r,s)&&(o[s]=r[s]);o.originalType=e,o[c]="string"==typeof e?e:n,l[1]=o;for(var p=2;p{t.r(r),t.d(r,{assets:()=>s,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var a=t(7462),n=(t(7294),t(3905));const i={title:"Progress Card",sidebar_label:"Progress",sidebar_position:4},l=void 0,o={unversionedId:"cards/progress",id:"version-v4.x.x/cards/progress",title:"Progress Card",description:"Preview:",source:"@site/versioned_docs/version-v4.x.x/cards/progress.md",sourceDirName:"cards",slug:"/cards/progress",permalink:"/cards/progress",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:4,frontMatter:{title:"Progress Card",sidebar_label:"Progress",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Energy (Pro)",permalink:"/cards/energy"},next:{title:"Toggle Button",permalink:"/cards/button"}},s={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],d={toc:p},c="wrapper";function u(e){let{components:r,...t}=e;return(0,n.kt)(c,(0,a.Z)({},d,t,{components:r,mdxType:"MDXLayout"}),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/progress-card.png",width:"280px",alt:"Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"This card displays a horizontal range based on a ",(0,n.kt)("inlineCode",{parentName:"p"},"integer")," or a ",(0,n.kt)("inlineCode",{parentName:"p"},"float")," value. It makes data visualization user friendly."),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"PROGRESS_CARD")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("p",null,"With progress card, Initializer requires ",(0,n.kt)("inlineCode",{parentName:"p"},"min")," & ",(0,n.kt)("inlineCode",{parentName:"p"},"max")," range."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Progress Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional), int min, int max)\n*/\nCard card1(&dashboard, PROGRESS_CARD, "Progress1", "", 0, 255);\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(float value);\n")),(0,n.kt)("p",null,"Or, update symbol along your value:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'card1.update(244, "%");\n')))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3b8c55ea.6a78e41f.js b/assets/js/3b8c55ea.6a78e41f.js deleted file mode 100644 index 7c59b0ec..00000000 --- a/assets/js/3b8c55ea.6a78e41f.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[3217],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>h});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}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 l(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),u=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},p=function(e){var t=u(e.components);return n.createElement(s.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),c=u(r),m=a,h=c["".concat(s,".").concat(m)]||c[m]||d[m]||i;return r?n.createElement(h,l(l({ref:t},p),{},{components:r})):n.createElement(h,l({ref:t},p))}));function h(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,l=new Array(i);l[0]=m;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[c]="string"==typeof e?e:a,l[1]=o;for(var u=2;u{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>d,frontMatter:()=>i,metadata:()=>o,toc:()=>u});var n=r(7462),a=(r(7294),r(3905));const i={title:"Installation",sidebar_label:"Installation",sidebar_position:3},l=void 0,o={unversionedId:"installation",id:"installation",title:"Installation",description:"ESP-DASH depends on the following open-source libraries/boards. Make sure to install them before you install ESP-DASH.",source:"@site/docs/installation.md",sourceDirName:".",slug:"/installation",permalink:"/next/installation",draft:!1,tags:[],version:"current",sidebarPosition:3,frontMatter:{title:"Installation",sidebar_label:"Installation",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Concept",permalink:"/next/concept"},next:{title:"Getting Started",permalink:"/next/getting-started"}},s={},u=[{value:"For ESP8266:",id:"for-esp8266",level:5},{value:"For ESP32:",id:"for-esp32",level:5},{value:"Installing ESP-DASH",id:"installing-esp-dash",level:3},{value:"1. Directly Through Arduino IDE - Library Manager",id:"1-directly-through-arduino-ide---library-manager",level:4},{value:"2. Manual Install",id:"2-manual-install",level:4},{value:"For Windows:",id:"for-windows",level:5},{value:"For Linux:",id:"for-linux",level:5},{value:"3. Import through Arduino IDE",id:"3-import-through-arduino-ide",level:4}],p={toc:u},c="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(c,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"ESP-DASH depends on the following open-source libraries/boards. Make sure to install them before you install ESP-DASH."),(0,a.kt)("h5",{id:"for-esp8266"},"For ESP8266:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/esp8266/Arduino"},"ESP8266 Arduino Core")," - ",(0,a.kt)("strong",{parentName:"li"},"(latest)")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/me-no-dev/ESPAsyncTCP"},"ESPAsyncTCP")," - ",(0,a.kt)("strong",{parentName:"li"},"v1.2.0")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/me-no-dev/ESPAsyncWebServer"},"ESPAsyncWebServer")," - ",(0,a.kt)("strong",{parentName:"li"},"v1.2.3")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/bblanchon/ArduinoJson"},"ArduinoJson")," - ",(0,a.kt)("strong",{parentName:"li"},"v6.17.0"))),(0,a.kt)("h5",{id:"for-esp32"},"For ESP32:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/espressif/arduino-esp32"},"ESP32 Arduino Core")," - ",(0,a.kt)("strong",{parentName:"li"},"(latest)")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/me-no-dev/AsyncTCP"},"AsyncTCP")," - ",(0,a.kt)("strong",{parentName:"li"},"v1.0.3")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/me-no-dev/ESPAsyncWebServer"},"ESPAsyncWebServer")," - ",(0,a.kt)("strong",{parentName:"li"},"v1.2.3")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/bblanchon/ArduinoJson"},"ArduinoJson")," - ",(0,a.kt)("strong",{parentName:"li"},"v6.17.0"))),(0,a.kt)("br",null),(0,a.kt)("h3",{id:"installing-esp-dash"},"Installing ESP-DASH"),(0,a.kt)("h4",{id:"1-directly-through-arduino-ide---library-manager"},"1. Directly Through Arduino IDE - Library Manager"),(0,a.kt)("p",null,'Go to Sketch > Include Library > Library Manager > Search for "ESP-DASH" > Install'),(0,a.kt)("h4",{id:"2-manual-install"},"2. Manual Install"),(0,a.kt)("h5",{id:"for-windows"},"For Windows:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Download the ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/ayushsharma82/ESP-DASH/archive/master.zip"},"Repository")),(0,a.kt)("li",{parentName:"ul"},"Extract the .zip in ",(0,a.kt)("inlineCode",{parentName:"li"},'Documents > Arduino > Libraries > {Place "ESP-DASH" folder Here}'))),(0,a.kt)("h5",{id:"for-linux"},"For Linux:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Download the ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/ayushsharma82/ESP-DASH/archive/master.zip"},"Repository")," "),(0,a.kt)("li",{parentName:"ul"},"Extract the .zip in ",(0,a.kt)("inlineCode",{parentName:"li"},'Sketchbook > Libraries > {Place "ESP-DASH" folder Here}'))),(0,a.kt)("h4",{id:"3-import-through-arduino-ide"},"3. Import through Arduino IDE"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Download the ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/ayushsharma82/ESP-DASH/archive/master.zip"},"Repository")),(0,a.kt)("li",{parentName:"ul"},"Go to ",(0,a.kt)("inlineCode",{parentName:"li"},"Sketch > Include Library > Add .zip Library > Select the Downloaded .zip File."))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3b8c55ea.7b1eef68.js b/assets/js/3b8c55ea.7b1eef68.js new file mode 100644 index 00000000..95eb22ad --- /dev/null +++ b/assets/js/3b8c55ea.7b1eef68.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[6696],{5788:(e,r,t)=>{t.d(r,{Iu:()=>p,yg:()=>d});var n=t(1504);function a(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function i(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function l(e){for(var r=1;r=0||(a[t]=e[t]);return a}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var s=n.createContext({}),u=function(e){var r=n.useContext(s),t=r;return e&&(t="function"==typeof e?e(r):l(l({},r),e)),t},p=function(e){var r=u(e.components);return n.createElement(s.Provider,{value:r},e.children)},c="mdxType",y={inlineCode:"code",wrapper:function(e){var r=e.children;return n.createElement(n.Fragment,{},r)}},g=n.forwardRef((function(e,r){var t=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),c=u(t),g=a,d=c["".concat(s,".").concat(g)]||c[g]||y[g]||i;return t?n.createElement(d,l(l({ref:r},p),{},{components:t})):n.createElement(d,l({ref:r},p))}));function d(e,r){var t=arguments,a=r&&r.mdxType;if("string"==typeof e||a){var i=t.length,l=new Array(i);l[0]=g;var o={};for(var s in r)hasOwnProperty.call(r,s)&&(o[s]=r[s]);o.originalType=e,o[c]="string"==typeof e?e:a,l[1]=o;for(var u=2;u{t.r(r),t.d(r,{assets:()=>s,contentTitle:()=>l,default:()=>y,frontMatter:()=>i,metadata:()=>o,toc:()=>u});var n=t(5072),a=(t(1504),t(5788));const i={title:"Installation",sidebar_label:"Installation",sidebar_position:3},l=void 0,o={unversionedId:"installation",id:"installation",title:"Installation",description:"ESP-DASH depends on the following open-source libraries/boards. Make sure to install them before you install ESP-DASH.",source:"@site/docs/installation.md",sourceDirName:".",slug:"/installation",permalink:"/next/installation",draft:!1,tags:[],version:"current",sidebarPosition:3,frontMatter:{title:"Installation",sidebar_label:"Installation",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Concept",permalink:"/next/concept"},next:{title:"Getting Started",permalink:"/next/getting-started"}},s={},u=[{value:"For ESP8266:",id:"for-esp8266",level:5},{value:"For ESP32:",id:"for-esp32",level:5},{value:"Installing ESP-DASH",id:"installing-esp-dash",level:3},{value:"1. Directly Through Arduino IDE - Library Manager",id:"1-directly-through-arduino-ide---library-manager",level:4},{value:"2. Manual Install",id:"2-manual-install",level:4},{value:"For Windows:",id:"for-windows",level:5},{value:"For Linux:",id:"for-linux",level:5},{value:"3. Import through Arduino IDE",id:"3-import-through-arduino-ide",level:4}],p={toc:u},c="wrapper";function y(e){let{components:r,...t}=e;return(0,a.yg)(c,(0,n.c)({},p,t,{components:r,mdxType:"MDXLayout"}),(0,a.yg)("p",null,"ESP-DASH depends on the following open-source libraries/boards. Make sure to install them before you install ESP-DASH."),(0,a.yg)("h5",{id:"for-esp8266"},"For ESP8266:"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/esp8266/Arduino"},"ESP8266 Arduino Core")," - ",(0,a.yg)("strong",{parentName:"li"},"(latest)")),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/me-no-dev/ESPAsyncTCP"},"ESPAsyncTCP")," - ",(0,a.yg)("strong",{parentName:"li"},"v1.2.0")),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/me-no-dev/ESPAsyncWebServer"},"ESPAsyncWebServer")," - ",(0,a.yg)("strong",{parentName:"li"},"v1.2.3")),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/bblanchon/ArduinoJson"},"ArduinoJson")," - ",(0,a.yg)("strong",{parentName:"li"},"v6.17.0"))),(0,a.yg)("h5",{id:"for-esp32"},"For ESP32:"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/espressif/arduino-esp32"},"ESP32 Arduino Core")," - ",(0,a.yg)("strong",{parentName:"li"},"(latest)")),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/me-no-dev/AsyncTCP"},"AsyncTCP")," - ",(0,a.yg)("strong",{parentName:"li"},"v1.0.3")),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/me-no-dev/ESPAsyncWebServer"},"ESPAsyncWebServer")," - ",(0,a.yg)("strong",{parentName:"li"},"v1.2.3")),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/bblanchon/ArduinoJson"},"ArduinoJson")," - ",(0,a.yg)("strong",{parentName:"li"},"v6.17.0"))),(0,a.yg)("br",null),(0,a.yg)("h3",{id:"installing-esp-dash"},"Installing ESP-DASH"),(0,a.yg)("h4",{id:"1-directly-through-arduino-ide---library-manager"},"1. Directly Through Arduino IDE - Library Manager"),(0,a.yg)("p",null,'Go to Sketch > Include Library > Library Manager > Search for "ESP-DASH" > Install'),(0,a.yg)("h4",{id:"2-manual-install"},"2. Manual Install"),(0,a.yg)("h5",{id:"for-windows"},"For Windows:"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},"Download the ",(0,a.yg)("a",{parentName:"li",href:"https://github.com/ayushsharma82/ESP-DASH/archive/master.zip"},"Repository")),(0,a.yg)("li",{parentName:"ul"},"Extract the .zip in ",(0,a.yg)("inlineCode",{parentName:"li"},'Documents > Arduino > Libraries > {Place "ESP-DASH" folder Here}'))),(0,a.yg)("h5",{id:"for-linux"},"For Linux:"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},"Download the ",(0,a.yg)("a",{parentName:"li",href:"https://github.com/ayushsharma82/ESP-DASH/archive/master.zip"},"Repository")," "),(0,a.yg)("li",{parentName:"ul"},"Extract the .zip in ",(0,a.yg)("inlineCode",{parentName:"li"},'Sketchbook > Libraries > {Place "ESP-DASH" folder Here}'))),(0,a.yg)("h4",{id:"3-import-through-arduino-ide"},"3. Import through Arduino IDE"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},"Download the ",(0,a.yg)("a",{parentName:"li",href:"https://github.com/ayushsharma82/ESP-DASH/archive/master.zip"},"Repository")),(0,a.yg)("li",{parentName:"ul"},"Go to ",(0,a.yg)("inlineCode",{parentName:"li"},"Sketch > Include Library > Add .zip Library > Select the Downloaded .zip File."))))}y.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3cd533c2.3e283c80.js b/assets/js/3cd533c2.3e283c80.js deleted file mode 100644 index a3dfdc3d..00000000 --- a/assets/js/3cd533c2.3e283c80.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[3431],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>m});var n=a(7294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1;t=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var c=n.createContext({}),s=function(e){var t=n.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},d=function(e){var t=s(e.components);return n.createElement(c.Provider,{value:t},e.children)},p="mdxType",k={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var a=e.components,i=e.mdxType,r=e.originalType,c=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),p=s(a),u=i,m=p["".concat(c,".").concat(u)]||p[u]||k[u]||r;return a?n.createElement(m,l(l({ref:t},d),{},{components:a})):n.createElement(m,l({ref:t},d))}));function m(e,t){var a=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=a.length,l=new Array(r);l[0]=u;var o={};for(var c in t)hasOwnProperty.call(t,c)&&(o[c]=t[c]);o.originalType=e,o[p]="string"==typeof e?e:i,l[1]=o;for(var s=2;s{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>k,frontMatter:()=>r,metadata:()=>o,toc:()=>s});var n=a(7462),i=(a(7294),a(3905));const r={title:"Joystick Card",sidebar_label:"Joystick (Pro)",sidebar_position:7},l=void 0,o={unversionedId:"cards/joystick",id:"version-v4.x.x/cards/joystick",title:"Joystick Card",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v4.x.x/cards/joystick.md",sourceDirName:"cards",slug:"/cards/joystick",permalink:"/cards/joystick",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:7,frontMatter:{title:"Joystick Card",sidebar_label:"Joystick (Pro)",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Text Input (Pro)",permalink:"/cards/text-input"},next:{title:"Dropdown (Pro)",permalink:"/cards/dropdown"}},c={},s=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Direction Lock:",id:"direction-lock",level:4},{value:"Callback:",id:"callback",level:4},{value:"Directional Callback:",id:"directional-callback",level:5},{value:"Coordinates Callback:",id:"coordinates-callback",level:5}],d={toc:s},p="wrapper";function k(e){let{components:t,...a}=e;return(0,i.kt)(p,(0,n.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("div",{className:"pro-label"},(0,i.kt)("i",null,(0,i.kt)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,i.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,i.kt)("h4",{id:"preview"},"Preview:"),(0,i.kt)("img",{className:"card-preview",src:"/img/v4/joystick-card.png",width:"280px",alt:"Preview"}),(0,i.kt)("br",null),(0,i.kt)("br",null),(0,i.kt)("p",null,"This card adds a joystick to your dashboard to control some stuff and provides you with easy to interpret directional data via callback. You can even lock direction of the joystick to X or Y axis."),(0,i.kt)("br",null),(0,i.kt)("h4",{id:"type"},"Type:"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"JOYSTICK_CARD")),(0,i.kt)("br",null),(0,i.kt)("h4",{id:"initializer"},"Initializer:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Joystick Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* directionLock (optional) )\n*/\nCard joystick(&dashboard, JOYSTICK_CARD, "Joystick 1");\n')),(0,i.kt)("br",null),(0,i.kt)("h4",{id:"direction-lock"},"Direction Lock:"),(0,i.kt)("p",null,"You can lock joystick to X or Y Axis:"),(0,i.kt)("p",null,"Supply it with ",(0,i.kt)("inlineCode",{parentName:"p"},"lockX")," as 4th argument and it will lock to X axis."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cpp"},'Card joystick(&dashboard, JOYSTICK_CARD, "Joystick 1", "lockX");\n')),(0,i.kt)("br",null),(0,i.kt)("p",null,"Supply it with ",(0,i.kt)("inlineCode",{parentName:"p"},"lockY")," as 4th argument and it will lock to Y axis."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cpp"},'Card joystick(&dashboard, JOYSTICK_CARD, "Joystick 1", "lockY");\n')),(0,i.kt)("p",null,"By default, joystick works on both axis."),(0,i.kt)("h4",{id:"callback"},"Callback:"),(0,i.kt)("p",null,"Joystick Card requires a callback function which will be called when we receive a input from our dashboard. In setup block, we will be calling our ",(0,i.kt)("inlineCode",{parentName:"p"},"attachCallback")," function and provide a lambda (callback) function with a ",(0,i.kt)("inlineCode",{parentName:"p"},"const char*")," (character array) argument."),(0,i.kt)("p",null,"Joystick card has 2 callbacks, ",(0,i.kt)("inlineCode",{parentName:"p"},"directional")," and ",(0,i.kt)("inlineCode",{parentName:"p"},"coordinates"),":"),(0,i.kt)("h5",{id:"directional-callback"},"Directional Callback:"),(0,i.kt)("p",null,"This callback will return the active direction of your joystick when it's moved. It will be one of the following:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"up")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"down")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"left")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"right")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"idle"))),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cpp"},"/*\n We provide our attachCallback with a lambda function to handle incomming data\n `value` is the direction of joystick 'up', 'down', 'left', 'right' or 'idle'\n*/\njoystick.attachCallback([&](const char* direction){\n Serial.println(\"[Joystick] Current Direction: \"+String(direction));\n});\n")),(0,i.kt)("h5",{id:"coordinates-callback"},"Coordinates Callback:"),(0,i.kt)("p",null,"This callback will return the active coordinates of the thumb of your joystick when it's moved. It will provide x and y coordinates which ranges from ",(0,i.kt)("inlineCode",{parentName:"p"},"-60")," to ",(0,i.kt)("inlineCode",{parentName:"p"},"60")," on each axis."),(0,i.kt)("p",null,"In case of X axis: ",(0,i.kt)("inlineCode",{parentName:"p"},"-60")," is left, ",(0,i.kt)("inlineCode",{parentName:"p"},"60")," is right.\nFor Y axis: ",(0,i.kt)("inlineCode",{parentName:"p"},"-60")," is up, and ",(0,i.kt)("inlineCode",{parentName:"p"},"60")," is bottom."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cpp"},'/*\n We provide our attachCallback with a lambda function to handle incomming data.\n In this case, we will be getting x and y axis coordinates in range of -60 to 60\n*/\njoystick.attachCallback([&](int8_t x, int8_t y){\n Serial.printf("[Joystick] X Axis: %d, Y Axis: %d\\n", x, y);\n});\n')),(0,i.kt)("br",null),(0,i.kt)("br",null))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3cd533c2.e819cb4a.js b/assets/js/3cd533c2.e819cb4a.js new file mode 100644 index 00000000..f6c1f1b8 --- /dev/null +++ b/assets/js/3cd533c2.e819cb4a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[7096],{5788:(e,a,n)=>{n.d(a,{Iu:()=>d,yg:()=>g});var t=n(1504);function i(e,a,n){return a in e?Object.defineProperty(e,a,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[a]=n,e}function r(e,a){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);a&&(t=t.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),n.push.apply(n,t)}return n}function l(e){for(var a=1;a=0||(i[n]=e[n]);return i}(e,a);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var c=t.createContext({}),s=function(e){var a=t.useContext(c),n=a;return e&&(n="function"==typeof e?e(a):l(l({},a),e)),n},d=function(e){var a=s(e.components);return t.createElement(c.Provider,{value:a},e.children)},p="mdxType",y={inlineCode:"code",wrapper:function(e){var a=e.children;return t.createElement(t.Fragment,{},a)}},u=t.forwardRef((function(e,a){var n=e.components,i=e.mdxType,r=e.originalType,c=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),p=s(n),u=i,g=p["".concat(c,".").concat(u)]||p[u]||y[u]||r;return n?t.createElement(g,l(l({ref:a},d),{},{components:n})):t.createElement(g,l({ref:a},d))}));function g(e,a){var n=arguments,i=a&&a.mdxType;if("string"==typeof e||i){var r=n.length,l=new Array(r);l[0]=u;var o={};for(var c in a)hasOwnProperty.call(a,c)&&(o[c]=a[c]);o.originalType=e,o[p]="string"==typeof e?e:i,l[1]=o;for(var s=2;s{n.r(a),n.d(a,{assets:()=>c,contentTitle:()=>l,default:()=>y,frontMatter:()=>r,metadata:()=>o,toc:()=>s});var t=n(5072),i=(n(1504),n(5788));const r={title:"Joystick Card",sidebar_label:"Joystick (Pro)",sidebar_position:7},l=void 0,o={unversionedId:"cards/joystick",id:"version-v4.x.x/cards/joystick",title:"Joystick Card",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v4.x.x/cards/joystick.md",sourceDirName:"cards",slug:"/cards/joystick",permalink:"/cards/joystick",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:7,frontMatter:{title:"Joystick Card",sidebar_label:"Joystick (Pro)",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Text Input (Pro)",permalink:"/cards/text-input"},next:{title:"Dropdown (Pro)",permalink:"/cards/dropdown"}},c={},s=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Direction Lock:",id:"direction-lock",level:4},{value:"Callback:",id:"callback",level:4},{value:"Directional Callback:",id:"directional-callback",level:5},{value:"Coordinates Callback:",id:"coordinates-callback",level:5}],d={toc:s},p="wrapper";function y(e){let{components:a,...n}=e;return(0,i.yg)(p,(0,t.c)({},d,n,{components:a,mdxType:"MDXLayout"}),(0,i.yg)("div",{className:"pro-label"},(0,i.yg)("i",null,(0,i.yg)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,i.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,i.yg)("h4",{id:"preview"},"Preview:"),(0,i.yg)("img",{className:"card-preview",src:"/img/v4/joystick-card.png",width:"280px",alt:"Preview"}),(0,i.yg)("br",null),(0,i.yg)("br",null),(0,i.yg)("p",null,"This card adds a joystick to your dashboard to control some stuff and provides you with easy to interpret directional data via callback. You can even lock direction of the joystick to X or Y axis."),(0,i.yg)("br",null),(0,i.yg)("h4",{id:"type"},"Type:"),(0,i.yg)("p",null,(0,i.yg)("inlineCode",{parentName:"p"},"JOYSTICK_CARD")),(0,i.yg)("br",null),(0,i.yg)("h4",{id:"initializer"},"Initializer:"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Joystick Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* directionLock (optional) )\n*/\nCard joystick(&dashboard, JOYSTICK_CARD, "Joystick 1");\n')),(0,i.yg)("br",null),(0,i.yg)("h4",{id:"direction-lock"},"Direction Lock:"),(0,i.yg)("p",null,"You can lock joystick to X or Y Axis:"),(0,i.yg)("p",null,"Supply it with ",(0,i.yg)("inlineCode",{parentName:"p"},"lockX")," as 4th argument and it will lock to X axis."),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-cpp"},'Card joystick(&dashboard, JOYSTICK_CARD, "Joystick 1", "lockX");\n')),(0,i.yg)("br",null),(0,i.yg)("p",null,"Supply it with ",(0,i.yg)("inlineCode",{parentName:"p"},"lockY")," as 4th argument and it will lock to Y axis."),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-cpp"},'Card joystick(&dashboard, JOYSTICK_CARD, "Joystick 1", "lockY");\n')),(0,i.yg)("p",null,"By default, joystick works on both axis."),(0,i.yg)("h4",{id:"callback"},"Callback:"),(0,i.yg)("p",null,"Joystick Card requires a callback function which will be called when we receive a input from our dashboard. In setup block, we will be calling our ",(0,i.yg)("inlineCode",{parentName:"p"},"attachCallback")," function and provide a lambda (callback) function with a ",(0,i.yg)("inlineCode",{parentName:"p"},"const char*")," (character array) argument."),(0,i.yg)("p",null,"Joystick card has 2 callbacks, ",(0,i.yg)("inlineCode",{parentName:"p"},"directional")," and ",(0,i.yg)("inlineCode",{parentName:"p"},"coordinates"),":"),(0,i.yg)("h5",{id:"directional-callback"},"Directional Callback:"),(0,i.yg)("p",null,"This callback will return the active direction of your joystick when it's moved. It will be one of the following:"),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"up")),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"down")),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"left")),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"right")),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"idle"))),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-cpp"},"/*\n We provide our attachCallback with a lambda function to handle incomming data\n `value` is the direction of joystick 'up', 'down', 'left', 'right' or 'idle'\n*/\njoystick.attachCallback([&](const char* direction){\n Serial.println(\"[Joystick] Current Direction: \"+String(direction));\n});\n")),(0,i.yg)("h5",{id:"coordinates-callback"},"Coordinates Callback:"),(0,i.yg)("p",null,"This callback will return the active coordinates of the thumb of your joystick when it's moved. It will provide x and y coordinates which ranges from ",(0,i.yg)("inlineCode",{parentName:"p"},"-60")," to ",(0,i.yg)("inlineCode",{parentName:"p"},"60")," on each axis."),(0,i.yg)("p",null,"In case of X axis: ",(0,i.yg)("inlineCode",{parentName:"p"},"-60")," is left, ",(0,i.yg)("inlineCode",{parentName:"p"},"60")," is right.\nFor Y axis: ",(0,i.yg)("inlineCode",{parentName:"p"},"-60")," is up, and ",(0,i.yg)("inlineCode",{parentName:"p"},"60")," is bottom."),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-cpp"},'/*\n We provide our attachCallback with a lambda function to handle incomming data.\n In this case, we will be getting x and y axis coordinates in range of -60 to 60\n*/\njoystick.attachCallback([&](int8_t x, int8_t y){\n Serial.printf("[Joystick] X Axis: %d, Y Axis: %d\\n", x, y);\n});\n')),(0,i.yg)("br",null),(0,i.yg)("br",null))}y.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/402bfe77.43484592.js b/assets/js/402bfe77.43484592.js new file mode 100644 index 00000000..5a09933c --- /dev/null +++ b/assets/js/402bfe77.43484592.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[1476],{5788:(e,r,a)=>{a.d(r,{Iu:()=>y,yg:()=>g});var t=a(1504);function n(e,r,a){return r in e?Object.defineProperty(e,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[r]=a,e}function i(e,r){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r&&(t=t.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),a.push.apply(a,t)}return a}function l(e){for(var r=1;r=0||(n[a]=e[a]);return n}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=t.createContext({}),p=function(e){var r=t.useContext(s),a=r;return e&&(a="function"==typeof e?e(r):l(l({},r),e)),a},y=function(e){var r=p(e.components);return t.createElement(s.Provider,{value:r},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var r=e.children;return t.createElement(t.Fragment,{},r)}},d=t.forwardRef((function(e,r){var a=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,y=o(e,["components","mdxType","originalType","parentName"]),u=p(a),d=n,g=u["".concat(s,".").concat(d)]||u[d]||c[d]||i;return a?t.createElement(g,l(l({ref:r},y),{},{components:a})):t.createElement(g,l({ref:r},y))}));function g(e,r){var a=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var i=a.length,l=new Array(i);l[0]=d;var o={};for(var s in r)hasOwnProperty.call(r,s)&&(o[s]=r[s]);o.originalType=e,o[u]="string"==typeof e?e:n,l[1]=o;for(var p=2;p{a.r(r),a.d(r,{assets:()=>s,contentTitle:()=>l,default:()=>c,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var t=a(5072),n=(a(1504),a(5788));const i={title:"Area Chart",sidebar_label:"Area (Pro)",sidebar_position:3},l=void 0,o={unversionedId:"charts/area",id:"charts/area",title:"Area Chart",description:"This feature is available in DASH Pro only.",source:"@site/docs/charts/area.md",sourceDirName:"charts",slug:"/charts/area",permalink:"/next/charts/area",draft:!1,tags:[],version:"current",sidebarPosition:3,frontMatter:{title:"Area Chart",sidebar_label:"Area (Pro)",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Line (Pro)",permalink:"/next/charts/line"},next:{title:"Pie (Pro)",permalink:"/next/charts/pie"}},s={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types for X-Axis:",id:"valid-data-types-for-x-axis",level:4},{value:"Valid Data Types for Y-Axis:",id:"valid-data-types-for-y-axis",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4},{value:"For X-Axis:",id:"for-x-axis",level:5},{value:"For Y-Axis:",id:"for-y-axis",level:5}],y={toc:p},u="wrapper";function c(e){let{components:r,...a}=e;return(0,n.yg)(u,(0,t.c)({},y,a,{components:r,mdxType:"MDXLayout"}),(0,n.yg)("div",{className:"pro-label"},(0,n.yg)("i",null,(0,n.yg)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.yg)("h4",{id:"preview"},"Preview:"),(0,n.yg)("img",{className:"card-preview",src:"/img/v4/area-chart.png",width:"500px",alt:"Preview"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"type"},"Type:"),(0,n.yg)("p",null,(0,n.yg)("inlineCode",{parentName:"p"},"AREA_CHART")),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types-for-x-axis"},"Valid Data Types for X-Axis:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"int")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"float")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"String"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types-for-y-axis"},"Valid Data Types for Y-Axis:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"int")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"float"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"initializer"},"Initializer:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Area Chart\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name )\n*/\nChart chart1(&dashboard, AREA_CHART, "Chart Name");\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"updaters"},"Updaters:"),(0,n.yg)("h5",{id:"for-x-axis"},"For X-Axis:"),(0,n.yg)("p",null,"X-Axis updater uses ",(0,n.yg)("inlineCode",{parentName:"p"},"updateX")," function."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/*\n Data for X Axis of our Chart\n This array can be of: `int` / `float` or `String`\n \n Note: this array should be kept in global scope. i.e. it should never be deleted from memory.\n*/\nString XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or\n (float array[], size_t array_size)\n or\n (String array[], size_t array_size)\n or\n (const char* array[], size_t array_size)\n*/\nchart1.updateX(XAxis, 7);\n')),(0,n.yg)("h5",{id:"for-y-axis"},"For Y-Axis:"),(0,n.yg)("p",null,"Y-Axis updater uses ",(0,n.yg)("inlineCode",{parentName:"p"},"updateY")," function."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"/*\n Data for Y Axis of our Chart\n This array can be of: `int` or `float`\n \n Note: this array should be kept in global scope. i.e. it should never be deleted from memory.\n*/\nint YAxis[] = {0, 0, 0, 0, 0, 0, 0};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or \n (float array[], size_t array_size)\n*/\nchart1.updateY(YAxis, 7);\n")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/402bfe77.6a65c451.js b/assets/js/402bfe77.6a65c451.js deleted file mode 100644 index 67c44960..00000000 --- a/assets/js/402bfe77.6a65c451.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[9805],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>y});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=a.createContext({}),p=function(e){var t=a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},u=function(e){var t=p(e.components);return a.createElement(s.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},f=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),c=p(r),f=n,y=c["".concat(s,".").concat(f)]||c[f]||d[f]||i;return r?a.createElement(y,l(l({ref:t},u),{},{components:r})):a.createElement(y,l({ref:t},u))}));function y(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,l=new Array(i);l[0]=f;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[c]="string"==typeof e?e:n,l[1]=o;for(var p=2;p{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>d,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var a=r(7462),n=(r(7294),r(3905));const i={title:"Area Chart",sidebar_label:"Area (Pro)",sidebar_position:3},l=void 0,o={unversionedId:"charts/area",id:"charts/area",title:"Area Chart",description:"This feature is available in DASH Pro only.",source:"@site/docs/charts/area.md",sourceDirName:"charts",slug:"/charts/area",permalink:"/next/charts/area",draft:!1,tags:[],version:"current",sidebarPosition:3,frontMatter:{title:"Area Chart",sidebar_label:"Area (Pro)",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Line (Pro)",permalink:"/next/charts/line"},next:{title:"Pie (Pro)",permalink:"/next/charts/pie"}},s={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types for X-Axis:",id:"valid-data-types-for-x-axis",level:4},{value:"Valid Data Types for Y-Axis:",id:"valid-data-types-for-y-axis",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4},{value:"For X-Axis:",id:"for-x-axis",level:5},{value:"For Y-Axis:",id:"for-y-axis",level:5}],u={toc:p},c="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("div",{className:"pro-label"},(0,n.kt)("i",null,(0,n.kt)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/area-chart.png",width:"500px",alt:"Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"AREA_CHART")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types-for-x-axis"},"Valid Data Types for X-Axis:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"String"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types-for-y-axis"},"Valid Data Types for Y-Axis:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Area Chart\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name )\n*/\nChart chart1(&dashboard, AREA_CHART, "Chart Name");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("h5",{id:"for-x-axis"},"For X-Axis:"),(0,n.kt)("p",null,"X-Axis updater uses ",(0,n.kt)("inlineCode",{parentName:"p"},"updateX")," function."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/*\n Data for X Axis of our Chart\n This array can be of: `int` / `float` or `String`\n \n Note: this array should be kept in global scope. i.e. it should never be deleted from memory.\n*/\nString XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or\n (float array[], size_t array_size)\n or\n (String array[], size_t array_size)\n or\n (const char* array[], size_t array_size)\n*/\nchart1.updateX(XAxis, 7);\n')),(0,n.kt)("h5",{id:"for-y-axis"},"For Y-Axis:"),(0,n.kt)("p",null,"Y-Axis updater uses ",(0,n.kt)("inlineCode",{parentName:"p"},"updateY")," function."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"/*\n Data for Y Axis of our Chart\n This array can be of: `int` or `float`\n \n Note: this array should be kept in global scope. i.e. it should never be deleted from memory.\n*/\nint YAxis[] = {0, 0, 0, 0, 0, 0, 0};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or \n (float array[], size_t array_size)\n*/\nchart1.updateY(YAxis, 7);\n")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/44a65385.1aafc6ab.js b/assets/js/44a65385.1aafc6ab.js deleted file mode 100644 index 3f8e38dc..00000000 --- a/assets/js/44a65385.1aafc6ab.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[3148],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>b});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),c=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},d=function(e){var t=c(e.components);return r.createElement(p.Provider,{value:t},e.children)},u="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,p=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),u=c(a),m=n,b=u["".concat(p,".").concat(m)]||u[m]||s[m]||l;return a?r.createElement(b,i(i({ref:t},d),{},{components:a})):r.createElement(b,i({ref:t},d))}));function b(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,i=new Array(l);i[0]=m;var o={};for(var p in t)hasOwnProperty.call(t,p)&&(o[p]=t[p]);o.originalType=e,o[u]="string"==typeof e?e:n,i[1]=o;for(var c=2;c{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>s,frontMatter:()=>l,metadata:()=>o,toc:()=>c});var r=a(7462),n=(a(7294),a(3905));const l={title:"Text Input Card",sidebar_label:"Text Input (Pro)",sidebar_position:6},i=void 0,o={unversionedId:"cards/text-input",id:"cards/text-input",title:"Text Input Card",description:"This feature is available in DASH Pro only.",source:"@site/docs/cards/text-input.md",sourceDirName:"cards",slug:"/cards/text-input",permalink:"/next/cards/text-input",draft:!1,tags:[],version:"current",sidebarPosition:6,frontMatter:{title:"Text Input Card",sidebar_label:"Text Input (Pro)",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"Slider",permalink:"/next/cards/slider"},next:{title:"Joystick (Pro)",permalink:"/next/cards/joystick"}},p={},c=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Callback:",id:"callback",level:4},{value:"Updaters:",id:"updaters",level:4}],d={toc:c},u="wrapper";function s(e){let{components:t,...a}=e;return(0,n.kt)(u,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("div",{className:"pro-label"},(0,n.kt)("i",null,(0,n.kt)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/text-input-card.png",width:"280px",alt:"Text Input Card Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"Text Input Card gives you the ability to take String input from user and save them in your application. It provides you with a input box on the dashboard where user can send back text to your application. "),(0,n.kt)("p",null,"This card is very useful for saving WiFi credentials, passwords and general information."),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"TEXT_INPUT_CARD")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"String")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"char"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Energy Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name)\n*/\nCard card1(&dashboard, TEXT_INPUT_CARD, "User Email");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"callback"},"Callback:"),(0,n.kt)("p",null,"Text Input Card requires a callback function which will be called when we receive a input from our dashboard. In setup block, we will be calling our ",(0,n.kt)("inlineCode",{parentName:"p"},"attachCallback")," function and provide a lambda (callback) function with a ",(0,n.kt)("inlineCode",{parentName:"p"},"const char*")," (character array) argument."),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Note:")," You need to call the ",(0,n.kt)("inlineCode",{parentName:"p"},"update")," function and ",(0,n.kt)("inlineCode",{parentName:"p"},"sendUpdates")," immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard and it will keep the card stuck in 'waiting' phase."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/*\n We provide our attachCallback with a lambda function to handle incomming data\n*/\ncard1.attachCallback([&](const char* value){\n Serial.println("[Card1] Text Input Callback Triggered: "+String(value));\n card1.update(value);\n dashboard.sendUpdates();\n});\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(const char* value);\n")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/44a65385.339e951c.js b/assets/js/44a65385.339e951c.js new file mode 100644 index 00000000..18d40cc0 --- /dev/null +++ b/assets/js/44a65385.339e951c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[1592],{5788:(e,a,t)=>{t.d(a,{Iu:()=>d,yg:()=>g});var r=t(1504);function n(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function l(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);a&&(r=r.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,r)}return t}function i(e){for(var a=1;a=0||(n[t]=e[t]);return n}(e,a);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}var p=r.createContext({}),c=function(e){var a=r.useContext(p),t=a;return e&&(t="function"==typeof e?e(a):i(i({},a),e)),t},d=function(e){var a=c(e.components);return r.createElement(p.Provider,{value:a},e.children)},u="mdxType",s={inlineCode:"code",wrapper:function(e){var a=e.children;return r.createElement(r.Fragment,{},a)}},y=r.forwardRef((function(e,a){var t=e.components,n=e.mdxType,l=e.originalType,p=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),u=c(t),y=n,g=u["".concat(p,".").concat(y)]||u[y]||s[y]||l;return t?r.createElement(g,i(i({ref:a},d),{},{components:t})):r.createElement(g,i({ref:a},d))}));function g(e,a){var t=arguments,n=a&&a.mdxType;if("string"==typeof e||n){var l=t.length,i=new Array(l);i[0]=y;var o={};for(var p in a)hasOwnProperty.call(a,p)&&(o[p]=a[p]);o.originalType=e,o[u]="string"==typeof e?e:n,i[1]=o;for(var c=2;c{t.r(a),t.d(a,{assets:()=>p,contentTitle:()=>i,default:()=>s,frontMatter:()=>l,metadata:()=>o,toc:()=>c});var r=t(5072),n=(t(1504),t(5788));const l={title:"Text Input Card",sidebar_label:"Text Input (Pro)",sidebar_position:6},i=void 0,o={unversionedId:"cards/text-input",id:"cards/text-input",title:"Text Input Card",description:"This feature is available in DASH Pro only.",source:"@site/docs/cards/text-input.md",sourceDirName:"cards",slug:"/cards/text-input",permalink:"/next/cards/text-input",draft:!1,tags:[],version:"current",sidebarPosition:6,frontMatter:{title:"Text Input Card",sidebar_label:"Text Input (Pro)",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"Slider",permalink:"/next/cards/slider"},next:{title:"Joystick (Pro)",permalink:"/next/cards/joystick"}},p={},c=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Callback:",id:"callback",level:4},{value:"Updaters:",id:"updaters",level:4}],d={toc:c},u="wrapper";function s(e){let{components:a,...t}=e;return(0,n.yg)(u,(0,r.c)({},d,t,{components:a,mdxType:"MDXLayout"}),(0,n.yg)("div",{className:"pro-label"},(0,n.yg)("i",null,(0,n.yg)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.yg)("h4",{id:"preview"},"Preview:"),(0,n.yg)("img",{className:"card-preview",src:"/img/v4/text-input-card.png",width:"280px",alt:"Text Input Card Preview"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("p",null,"Text Input Card gives you the ability to take String input from user and save them in your application. It provides you with a input box on the dashboard where user can send back text to your application. "),(0,n.yg)("p",null,"This card is very useful for saving WiFi credentials, passwords and general information."),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"type"},"Type:"),(0,n.yg)("p",null,(0,n.yg)("inlineCode",{parentName:"p"},"TEXT_INPUT_CARD")),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"String")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"char"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"initializer"},"Initializer:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Energy Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name)\n*/\nCard card1(&dashboard, TEXT_INPUT_CARD, "User Email");\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"callback"},"Callback:"),(0,n.yg)("p",null,"Text Input Card requires a callback function which will be called when we receive a input from our dashboard. In setup block, we will be calling our ",(0,n.yg)("inlineCode",{parentName:"p"},"attachCallback")," function and provide a lambda (callback) function with a ",(0,n.yg)("inlineCode",{parentName:"p"},"const char*")," (character array) argument."),(0,n.yg)("p",null,(0,n.yg)("strong",{parentName:"p"},"Note:")," You need to call the ",(0,n.yg)("inlineCode",{parentName:"p"},"update")," function and ",(0,n.yg)("inlineCode",{parentName:"p"},"sendUpdates")," immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard and it will keep the card stuck in 'waiting' phase."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/*\n We provide our attachCallback with a lambda function to handle incomming data\n*/\ncard1.attachCallback([&](const char* value){\n Serial.println("[Card1] Text Input Callback Triggered: "+String(value));\n card1.update(value);\n dashboard.sendUpdates();\n});\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"updaters"},"Updaters:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(const char* value);\n")),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4649c564.44780296.js b/assets/js/4649c564.44780296.js new file mode 100644 index 00000000..4c4f6a6d --- /dev/null +++ b/assets/js/4649c564.44780296.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[3368],{5788:(e,r,t)=>{t.d(r,{Iu:()=>c,yg:()=>m});var o=t(1504);function n(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function i(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,o)}return t}function a(e){for(var r=1;r=0||(n[t]=e[t]);return n}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}var s=o.createContext({}),p=function(e){var r=o.useContext(s),t=r;return e&&(t="function"==typeof e?e(r):a(a({},r),e)),t},c=function(e){var r=p(e.components);return o.createElement(s.Provider,{value:r},e.children)},u="mdxType",y={inlineCode:"code",wrapper:function(e){var r=e.children;return o.createElement(o.Fragment,{},r)}},d=o.forwardRef((function(e,r){var t=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=p(t),d=n,m=u["".concat(s,".").concat(d)]||u[d]||y[d]||i;return t?o.createElement(m,a(a({ref:r},c),{},{components:t})):o.createElement(m,a({ref:r},c))}));function m(e,r){var t=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var i=t.length,a=new Array(i);a[0]=d;var l={};for(var s in r)hasOwnProperty.call(r,s)&&(l[s]=r[s]);l.originalType=e,l[u]="string"==typeof e?e:n,a[1]=l;for(var p=2;p{t.r(r),t.d(r,{assets:()=>s,contentTitle:()=>a,default:()=>y,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var o=t(5072),n=(t(1504),t(5788));const i={title:"Brotli Compression",sidebar_label:"Brotli Compression (Pro)",sidebar_position:6},a=void 0,l={unversionedId:"features/brotli-compression",id:"version-v4.x.x/features/brotli-compression",title:"Brotli Compression",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v4.x.x/features/brotli-compression.md",sourceDirName:"features",slug:"/features/brotli-compression",permalink:"/features/brotli-compression",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:6,frontMatter:{title:"Brotli Compression",sidebar_label:"Brotli Compression (Pro)",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"Custom Card Size (Pro)",permalink:"/features/sizing"},next:{title:"Migration Guide",permalink:"/migrate"}},s={},p=[{value:"How to enable:",id:"how-to-enable",level:4}],c={toc:p},u="wrapper";function y(e){let{components:r,...t}=e;return(0,n.yg)(u,(0,o.c)({},c,t,{components:r,mdxType:"MDXLayout"}),(0,n.yg)("div",{className:"pro-label"},(0,n.yg)("i",null,(0,n.yg)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.yg)("br",null),(0,n.yg)("img",{className:"card-preview",src:"/img/v4/brotli-compression.png",width:"280px",alt:"Preview"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("p",null,"With ESP-DASH Pro v4.3.0 or more, there is an option to enable Brotli compression to further reduce the size of webpage (dashboard) and provide you more space for your code. We've noticed 40% extra reduction in size over gzip compression (default)."),(0,n.yg)("p",null,"Please note that Brotli compression is only supported by Safari browser with unencrpyted HTTP protocol. Due to constraints set by other browsers ( Chrome, Edge, Firefox etc. ) you need to use HTTPS for brotli compression to work properly."),(0,n.yg)("p",null,(0,n.yg)("em",{parentName:"p"},"Note: Broti compression is disabled by default. It's up to user to enable brotli if the above conditions are fine for your use-case.")),(0,n.yg)("h4",{id:"how-to-enable"},"How to enable:"),(0,n.yg)("p",null,"You can switch to brotli compression by setting ",(0,n.yg)("inlineCode",{parentName:"p"},"DASH_USE_BROTLI_COMPRESSION")," to ",(0,n.yg)("inlineCode",{parentName:"p"},"1")," in ",(0,n.yg)("inlineCode",{parentName:"p"},"dash_webpage.h"),"."),(0,n.yg)("ol",null,(0,n.yg)("li",{parentName:"ol"},"Open ",(0,n.yg)("inlineCode",{parentName:"li"},"dash_webpage.h")," in src directory of ESP-DASH Pro library."),(0,n.yg)("li",{parentName:"ol"},"Locate ",(0,n.yg)("inlineCode",{parentName:"li"},"DASH_USE_BROTLI_COMPRESSION")),(0,n.yg)("li",{parentName:"ol"},"Set it to ",(0,n.yg)("inlineCode",{parentName:"li"},"1")),(0,n.yg)("li",{parentName:"ol"},"That's it. Save, compile and upload again to your microcontroller.")))}y.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4649c564.8b535558.js b/assets/js/4649c564.8b535558.js deleted file mode 100644 index 437a81d8..00000000 --- a/assets/js/4649c564.8b535558.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[5227],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>b});var o=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function a(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=o.createContext({}),p=function(e){var t=o.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},c=function(e){var t=p(e.components);return o.createElement(s.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},m=o.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=p(r),m=n,b=u["".concat(s,".").concat(m)]||u[m]||d[m]||i;return r?o.createElement(b,a(a({ref:t},c),{},{components:r})):o.createElement(b,a({ref:t},c))}));function b(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,a=new Array(i);a[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:n,a[1]=l;for(var p=2;p{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var o=r(7462),n=(r(7294),r(3905));const i={title:"Brotli Compression",sidebar_label:"Brotli Compression (Pro)",sidebar_position:6},a=void 0,l={unversionedId:"features/brotli-compression",id:"version-v4.x.x/features/brotli-compression",title:"Brotli Compression",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v4.x.x/features/brotli-compression.md",sourceDirName:"features",slug:"/features/brotli-compression",permalink:"/features/brotli-compression",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:6,frontMatter:{title:"Brotli Compression",sidebar_label:"Brotli Compression (Pro)",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"Custom Card Size (Pro)",permalink:"/features/sizing"},next:{title:"Migration Guide",permalink:"/migrate"}},s={},p=[{value:"How to enable:",id:"how-to-enable",level:4}],c={toc:p},u="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(u,(0,o.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("div",{className:"pro-label"},(0,n.kt)("i",null,(0,n.kt)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.kt)("br",null),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/brotli-compression.png",width:"280px",alt:"Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"With ESP-DASH Pro v4.3.0 or more, there is an option to enable Brotli compression to further reduce the size of webpage (dashboard) and provide you more space for your code. We've noticed 40% extra reduction in size over gzip compression (default)."),(0,n.kt)("p",null,"Please note that Brotli compression is only supported by Safari browser with unencrpyted HTTP protocol. Due to constraints set by other browsers ( Chrome, Edge, Firefox etc. ) you need to use HTTPS for brotli compression to work properly."),(0,n.kt)("p",null,(0,n.kt)("em",{parentName:"p"},"Note: Broti compression is disabled by default. It's up to user to enable brotli if the above conditions are fine for your use-case.")),(0,n.kt)("h4",{id:"how-to-enable"},"How to enable:"),(0,n.kt)("p",null,"You can switch to brotli compression by setting ",(0,n.kt)("inlineCode",{parentName:"p"},"DASH_USE_BROTLI_COMPRESSION")," to ",(0,n.kt)("inlineCode",{parentName:"p"},"1")," in ",(0,n.kt)("inlineCode",{parentName:"p"},"dash_webpage.h"),"."),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Open ",(0,n.kt)("inlineCode",{parentName:"li"},"dash_webpage.h")," in src directory of ESP-DASH Pro library."),(0,n.kt)("li",{parentName:"ol"},"Locate ",(0,n.kt)("inlineCode",{parentName:"li"},"DASH_USE_BROTLI_COMPRESSION")),(0,n.kt)("li",{parentName:"ol"},"Set it to ",(0,n.kt)("inlineCode",{parentName:"li"},"1")),(0,n.kt)("li",{parentName:"ol"},"That's it. Save, compile and upload again to your microcontroller.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/49146ea8.804c7ee1.js b/assets/js/49146ea8.a0648060.js similarity index 66% rename from assets/js/49146ea8.804c7ee1.js rename to assets/js/49146ea8.a0648060.js index 35c7268c..05e05492 100644 --- a/assets/js/49146ea8.804c7ee1.js +++ b/assets/js/49146ea8.a0648060.js @@ -1 +1 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[6874],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>m});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=a.createContext({}),c=function(e){var t=a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=c(e.components);return a.createElement(s.Provider,{value:t},e.children)},h="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),h=c(r),d=n,m=h["".concat(s,".").concat(d)]||h[d]||p[d]||o;return r?a.createElement(m,i(i({ref:t},u),{},{components:r})):a.createElement(m,i({ref:t},u))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,i=new Array(o);i[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[h]="string"==typeof e?e:n,i[1]=l;for(var c=2;c{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>p,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var a=r(7462),n=(r(7294),r(3905));const o={title:"Migration Guide",sidebar_label:"Migration Guide",sidebar_position:12},i=void 0,l={unversionedId:"migrate",id:"version-v4.x.x/migrate",title:"Migration Guide",description:"Note: If you are currently using ESP-DASH V3 or ESP-DASH Pro ( previous releases <= v4.0.8 ), then this article is for you.",source:"@site/versioned_docs/version-v4.x.x/migrate.md",sourceDirName:".",slug:"/migrate",permalink:"/migrate",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:12,frontMatter:{title:"Migration Guide",sidebar_label:"Migration Guide",sidebar_position:12},sidebar:"tutorialSidebar",previous:{title:"Brotli Compression (Pro)",permalink:"/features/brotli-compression"}},s={},c=[{value:"\u26a0\ufe0f Minor Changes:",id:"\ufe0f-minor-changes",level:2},{value:"\u2692\ufe0f Breaking Changes:",id:"\ufe0f-breaking-changes",level:2},{value:"Button Callback",id:"button-callback",level:3},{value:"Charts",id:"charts",level:3}],u={toc:c},h="wrapper";function p(e){let{components:t,...r}=e;return(0,n.kt)(h,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Note: If you are currently using ESP-DASH V3 or ESP-DASH Pro ( previous releases <= v4.0.8 ), then this article is for you.")),(0,n.kt)("p",null,"This article will cover all the minor and breaking changing which come as part of switching your existing codebase to ESP-DASH V4. DASH V4 was made with backwards compatibility in mind therefore there are not many changes to the existing functionality, which means you can get started using it in a few minutes!:"),(0,n.kt)("h2",{id:"\ufe0f-minor-changes"},"\u26a0\ufe0f Minor Changes:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"The second argument of ESPDash Class constructor now only disables system statistics. ",(0,n.kt)("inlineCode",{parentName:"p"},"ESPDash(AsyncWebServer* server, bool enable_default_stats = true);"),". The statistics tab now gets automatically hidden when there are no custom stats added by user and when default (system) statistics are disabled as well.")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"The ",(0,n.kt)("inlineCode",{parentName:"p"},"sendUpdates(bool force);")," function now has a ",(0,n.kt)("inlineCode",{parentName:"p"},"force")," argument which can be used to force refresh the whole layout on connected dashboards."))),(0,n.kt)("h2",{id:"\ufe0f-breaking-changes"},"\u2692\ufe0f Breaking Changes:"),(0,n.kt)("h3",{id:"button-callback"},"Button Callback"),(0,n.kt)("p",null,"The button callback now gets called with a ",(0,n.kt)("inlineCode",{parentName:"p"},"int")," rather than ",(0,n.kt)("inlineCode",{parentName:"p"},"bool")," which lead to issues. The value returned by callback will be ",(0,n.kt)("inlineCode",{parentName:"p"},"1")," or ",(0,n.kt)("inlineCode",{parentName:"p"},"0"),"."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"// New Button Callback\nbutton.attachCallback([&](int value){\n button.update(value);\n dashboard.sendUpdates();\n});\n")),(0,n.kt)("h3",{id:"charts"},"Charts"),(0,n.kt)("p",null,"There is a major overhaul inside the library for the charts functionality to improve reliability of host microcontroller."),(0,n.kt)("p",null,(0,n.kt)("em",{parentName:"p"},"Previously, ESP-DASH would copy the whole X & Y axis array into SRAM of your ESP8266/ESP32 microcontroller, which was fine for smaller arrays but quickly led to crashes whenever somebody tried to use a large dataset.")),(0,n.kt)("p",null,"With V4, the library only keeps the pointer to the dataset which will be used for the charts. This in return lets you use a large array for charts without memory hogging the microcontroller! :D"),(0,n.kt)("p",null,"As part of this critical fix, now you need to keep the dataset ( X & Y axis ) arrays into the global scope all the time and then provide a reference of these array to the library along with it's size. The only thing which you need to change is that if you were creating a array into heap, ( i.e inside a function ) now you need to shift it into global scope. Carefully study the following reference: ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/ayushsharma82/ESP-DASH/blob/master/examples/Benchmark/Benchmark.ino#L56"},"Benchmark Example")))}p.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[2276],{5788:(e,t,r)=>{r.d(t,{Iu:()=>u,yg:()=>d});var a=r(1504);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=a.createContext({}),c=function(e){var t=a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=c(e.components);return a.createElement(s.Provider,{value:t},e.children)},h="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},y=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),h=c(r),y=n,d=h["".concat(s,".").concat(y)]||h[y]||p[y]||o;return r?a.createElement(d,i(i({ref:t},u),{},{components:r})):a.createElement(d,i({ref:t},u))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,i=new Array(o);i[0]=y;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[h]="string"==typeof e?e:n,i[1]=l;for(var c=2;c{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>p,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var a=r(5072),n=(r(1504),r(5788));const o={title:"Migration Guide",sidebar_label:"Migration Guide",sidebar_position:12},i=void 0,l={unversionedId:"migrate",id:"version-v4.x.x/migrate",title:"Migration Guide",description:"Note: If you are currently using ESP-DASH V3 or ESP-DASH Pro ( previous releases <= v4.0.8 ), then this article is for you.",source:"@site/versioned_docs/version-v4.x.x/migrate.md",sourceDirName:".",slug:"/migrate",permalink:"/migrate",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:12,frontMatter:{title:"Migration Guide",sidebar_label:"Migration Guide",sidebar_position:12},sidebar:"tutorialSidebar",previous:{title:"Brotli Compression (Pro)",permalink:"/features/brotli-compression"}},s={},c=[{value:"\u26a0\ufe0f Minor Changes:",id:"\ufe0f-minor-changes",level:2},{value:"\u2692\ufe0f Breaking Changes:",id:"\ufe0f-breaking-changes",level:2},{value:"Button Callback",id:"button-callback",level:3},{value:"Charts",id:"charts",level:3}],u={toc:c},h="wrapper";function p(e){let{components:t,...r}=e;return(0,n.yg)(h,(0,a.c)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.yg)("p",null,(0,n.yg)("strong",{parentName:"p"},"Note: If you are currently using ESP-DASH V3 or ESP-DASH Pro ( previous releases <= v4.0.8 ), then this article is for you.")),(0,n.yg)("p",null,"This article will cover all the minor and breaking changing which come as part of switching your existing codebase to ESP-DASH V4. DASH V4 was made with backwards compatibility in mind therefore there are not many changes to the existing functionality, which means you can get started using it in a few minutes!:"),(0,n.yg)("h2",{id:"\ufe0f-minor-changes"},"\u26a0\ufe0f Minor Changes:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("p",{parentName:"li"},"The second argument of ESPDash Class constructor now only disables system statistics. ",(0,n.yg)("inlineCode",{parentName:"p"},"ESPDash(AsyncWebServer* server, bool enable_default_stats = true);"),". The statistics tab now gets automatically hidden when there are no custom stats added by user and when default (system) statistics are disabled as well.")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("p",{parentName:"li"},"The ",(0,n.yg)("inlineCode",{parentName:"p"},"sendUpdates(bool force);")," function now has a ",(0,n.yg)("inlineCode",{parentName:"p"},"force")," argument which can be used to force refresh the whole layout on connected dashboards."))),(0,n.yg)("h2",{id:"\ufe0f-breaking-changes"},"\u2692\ufe0f Breaking Changes:"),(0,n.yg)("h3",{id:"button-callback"},"Button Callback"),(0,n.yg)("p",null,"The button callback now gets called with a ",(0,n.yg)("inlineCode",{parentName:"p"},"int")," rather than ",(0,n.yg)("inlineCode",{parentName:"p"},"bool")," which lead to issues. The value returned by callback will be ",(0,n.yg)("inlineCode",{parentName:"p"},"1")," or ",(0,n.yg)("inlineCode",{parentName:"p"},"0"),"."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"// New Button Callback\nbutton.attachCallback([&](int value){\n button.update(value);\n dashboard.sendUpdates();\n});\n")),(0,n.yg)("h3",{id:"charts"},"Charts"),(0,n.yg)("p",null,"There is a major overhaul inside the library for the charts functionality to improve reliability of host microcontroller."),(0,n.yg)("p",null,(0,n.yg)("em",{parentName:"p"},"Previously, ESP-DASH would copy the whole X & Y axis array into SRAM of your ESP8266/ESP32 microcontroller, which was fine for smaller arrays but quickly led to crashes whenever somebody tried to use a large dataset.")),(0,n.yg)("p",null,"With V4, the library only keeps the pointer to the dataset which will be used for the charts. This in return lets you use a large array for charts without memory hogging the microcontroller! :D"),(0,n.yg)("p",null,"As part of this critical fix, now you need to keep the dataset ( X & Y axis ) arrays into the global scope all the time and then provide a reference of these array to the library along with it's size. The only thing which you need to change is that if you were creating a array into heap, ( i.e inside a function ) now you need to shift it into global scope. Carefully study the following reference: ",(0,n.yg)("a",{parentName:"p",href:"https://github.com/ayushsharma82/ESP-DASH/blob/master/examples/Benchmark/Benchmark.ino#L56"},"Benchmark Example")))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4972.5456caf6.js b/assets/js/4972.5456caf6.js deleted file mode 100644 index 053c00fc..00000000 --- a/assets/js/4972.5456caf6.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[4972],{4972:(e,t,a)=>{a.r(t),a.d(t,{default:()=>c});var n=a(7294),l=a(5999),o=a(1944),r=a(2760);function c(){return n.createElement(n.Fragment,null,n.createElement(o.d,{title:(0,l.I)({id:"theme.NotFound.title",message:"Page Not Found"})}),n.createElement(r.Z,null,n.createElement("main",{className:"container margin-vert--xl"},n.createElement("div",{className:"row"},n.createElement("div",{className:"col col--6 col--offset-3"},n.createElement("h1",{className:"hero__title"},n.createElement(l.Z,{id:"theme.NotFound.title",description:"The title of the 404 page"},"Page Not Found")),n.createElement("p",null,n.createElement(l.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page"},"We could not find what you were looking for.")),n.createElement("p",null,n.createElement(l.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page"},"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/49d6c00f.a7867691.js b/assets/js/49d6c00f.a7867691.js deleted file mode 100644 index bf2a2bd9..00000000 --- a/assets/js/49d6c00f.a7867691.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[2512],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>b});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var d=a.createContext({}),c=function(e){var t=a.useContext(d),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=c(e.components);return a.createElement(d.Provider,{value:t},e.children)},s="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,l=e.originalType,d=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),s=c(r),m=n,b=s["".concat(d,".").concat(m)]||s[m]||u[m]||l;return r?a.createElement(b,i(i({ref:t},p),{},{components:r})):a.createElement(b,i({ref:t},p))}));function b(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=r.length,i=new Array(l);i[0]=m;var o={};for(var d in t)hasOwnProperty.call(t,d)&&(o[d]=t[d]);o.originalType=e,o[s]="string"==typeof e?e:n,i[1]=o;for(var c=2;c{r.r(t),r.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>u,frontMatter:()=>l,metadata:()=>o,toc:()=>c});var a=r(7462),n=(r(7294),r(3905));const l={title:"Slider Card",sidebar_label:"Slider",sidebar_position:6},i=void 0,o={unversionedId:"cards/slider",id:"cards/slider",title:"Slider Card",description:"Preview:",source:"@site/docs/cards/slider.md",sourceDirName:"cards",slug:"/cards/slider",permalink:"/next/cards/slider",draft:!1,tags:[],version:"current",sidebarPosition:6,frontMatter:{title:"Slider Card",sidebar_label:"Slider",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"Status",permalink:"/next/cards/status"},next:{title:"Text Input (Pro)",permalink:"/next/cards/text-input"}},d={},c=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Callback:",id:"callback",level:4},{value:"Updaters:",id:"updaters",level:4}],p={toc:c},s="wrapper";function u(e){let{components:t,...r}=e;return(0,n.kt)(s,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/slider-card.png",width:"380px",alt:"Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"This card adds a interactive horizontal slider to your dashboard. Slider card is useful when you require a integer input within a certain range. ( Example use case: LED brightness control )"),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"SLIDER_CARD")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("p",null,"With slider card, Initializer requires ",(0,n.kt)("inlineCode",{parentName:"p"},"min")," & ",(0,n.kt)("inlineCode",{parentName:"p"},"max")," range."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Slider Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional), int min, int max)\n*/\nCard card1(&dashboard, SLIDER_CARD, "Test Slider", "", 0, 255);\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"callback"},"Callback:"),(0,n.kt)("p",null,"Slider Card requires a callback function which will be called when we receive a input from our dashboard. We will be calling our ",(0,n.kt)("inlineCode",{parentName:"p"},"attachCallback")," function and provide a lambda function with a ",(0,n.kt)("inlineCode",{parentName:"p"},"int")," argument."),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Note:")," You need to call the ",(0,n.kt)("inlineCode",{parentName:"p"},"update")," function and ",(0,n.kt)("inlineCode",{parentName:"p"},"sendUpdates")," immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/*\n We provide our attachCallback with a lambda function to handle incomming data\n `value` is the boolean sent from your dashboard\n*/\ncard1.attachCallback([&](int value){\n Serial.println("[Card1] Slider Callback Triggered: "+String(value));\n card1.update(value);\n dashboard.sendUpdates();\n});\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,n.kt)("p",null,"Or, update symbol along your value:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'card1.update(244, "%");\n')))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/49d6c00f.c7d657cd.js b/assets/js/49d6c00f.c7d657cd.js new file mode 100644 index 00000000..4af6a10b --- /dev/null +++ b/assets/js/49d6c00f.c7d657cd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[1936],{5788:(e,r,a)=>{a.d(r,{Iu:()=>p,yg:()=>g});var n=a(1504);function t(e,r,a){return r in e?Object.defineProperty(e,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[r]=a,e}function l(e,r){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var r=1;r=0||(t[a]=e[a]);return t}(e,r);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(t[a]=e[a])}return t}var o=n.createContext({}),c=function(e){var r=n.useContext(o),a=r;return e&&(a="function"==typeof e?e(r):i(i({},r),e)),a},p=function(e){var r=c(e.components);return n.createElement(o.Provider,{value:r},e.children)},s="mdxType",u={inlineCode:"code",wrapper:function(e){var r=e.children;return n.createElement(n.Fragment,{},r)}},y=n.forwardRef((function(e,r){var a=e.components,t=e.mdxType,l=e.originalType,o=e.parentName,p=d(e,["components","mdxType","originalType","parentName"]),s=c(a),y=t,g=s["".concat(o,".").concat(y)]||s[y]||u[y]||l;return a?n.createElement(g,i(i({ref:r},p),{},{components:a})):n.createElement(g,i({ref:r},p))}));function g(e,r){var a=arguments,t=r&&r.mdxType;if("string"==typeof e||t){var l=a.length,i=new Array(l);i[0]=y;var d={};for(var o in r)hasOwnProperty.call(r,o)&&(d[o]=r[o]);d.originalType=e,d[s]="string"==typeof e?e:t,i[1]=d;for(var c=2;c{a.r(r),a.d(r,{assets:()=>o,contentTitle:()=>i,default:()=>u,frontMatter:()=>l,metadata:()=>d,toc:()=>c});var n=a(5072),t=(a(1504),a(5788));const l={title:"Slider Card",sidebar_label:"Slider",sidebar_position:6},i=void 0,d={unversionedId:"cards/slider",id:"cards/slider",title:"Slider Card",description:"Preview:",source:"@site/docs/cards/slider.md",sourceDirName:"cards",slug:"/cards/slider",permalink:"/next/cards/slider",draft:!1,tags:[],version:"current",sidebarPosition:6,frontMatter:{title:"Slider Card",sidebar_label:"Slider",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"Status",permalink:"/next/cards/status"},next:{title:"Text Input (Pro)",permalink:"/next/cards/text-input"}},o={},c=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Callback:",id:"callback",level:4},{value:"Updaters:",id:"updaters",level:4}],p={toc:c},s="wrapper";function u(e){let{components:r,...a}=e;return(0,t.yg)(s,(0,n.c)({},p,a,{components:r,mdxType:"MDXLayout"}),(0,t.yg)("h4",{id:"preview"},"Preview:"),(0,t.yg)("img",{className:"card-preview",src:"/img/v4/slider-card.png",width:"380px",alt:"Preview"}),(0,t.yg)("br",null),(0,t.yg)("br",null),(0,t.yg)("p",null,"This card adds a interactive horizontal slider to your dashboard. Slider card is useful when you require a integer input within a certain range. ( Example use case: LED brightness control )"),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"type"},"Type:"),(0,t.yg)("p",null,(0,t.yg)("inlineCode",{parentName:"p"},"SLIDER_CARD")),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,t.yg)("ul",null,(0,t.yg)("li",{parentName:"ul"},(0,t.yg)("inlineCode",{parentName:"li"},"int"))),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"initializer"},"Initializer:"),(0,t.yg)("p",null,"With slider card, Initializer requires ",(0,t.yg)("inlineCode",{parentName:"p"},"min")," & ",(0,t.yg)("inlineCode",{parentName:"p"},"max")," range."),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Slider Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional), int min, int max)\n*/\nCard card1(&dashboard, SLIDER_CARD, "Test Slider", "", 0, 255);\n')),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"callback"},"Callback:"),(0,t.yg)("p",null,"Slider Card requires a callback function which will be called when we receive a input from our dashboard. We will be calling our ",(0,t.yg)("inlineCode",{parentName:"p"},"attachCallback")," function and provide a lambda function with a ",(0,t.yg)("inlineCode",{parentName:"p"},"int")," argument."),(0,t.yg)("p",null,(0,t.yg)("strong",{parentName:"p"},"Note:")," You need to call the ",(0,t.yg)("inlineCode",{parentName:"p"},"update")," function and ",(0,t.yg)("inlineCode",{parentName:"p"},"sendUpdates")," immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard."),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},'/*\n We provide our attachCallback with a lambda function to handle incomming data\n `value` is the boolean sent from your dashboard\n*/\ncard1.attachCallback([&](int value){\n Serial.println("[Card1] Slider Callback Triggered: "+String(value));\n card1.update(value);\n dashboard.sendUpdates();\n});\n')),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"updaters"},"Updaters:"),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,t.yg)("p",null,"Or, update symbol along your value:"),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},'card1.update(244, "%");\n')))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4c3f1b83.3b648b49.js b/assets/js/4c3f1b83.3b648b49.js new file mode 100644 index 00000000..0fd536fc --- /dev/null +++ b/assets/js/4c3f1b83.3b648b49.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[4952],{5788:(e,a,r)=>{r.d(a,{Iu:()=>s,yg:()=>g});var n=r(1504);function t(e,a,r){return a in e?Object.defineProperty(e,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[a]=r,e}function l(e,a){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var a=1;a=0||(t[r]=e[r]);return t}(e,a);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(t[r]=e[r])}return t}var d=n.createContext({}),c=function(e){var a=n.useContext(d),r=a;return e&&(r="function"==typeof e?e(a):i(i({},a),e)),r},s=function(e){var a=c(e.components);return n.createElement(d.Provider,{value:a},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var a=e.children;return n.createElement(n.Fragment,{},a)}},y=n.forwardRef((function(e,a){var r=e.components,t=e.mdxType,l=e.originalType,d=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),p=c(r),y=t,g=p["".concat(d,".").concat(y)]||p[y]||u[y]||l;return r?n.createElement(g,i(i({ref:a},s),{},{components:r})):n.createElement(g,i({ref:a},s))}));function g(e,a){var r=arguments,t=a&&a.mdxType;if("string"==typeof e||t){var l=r.length,i=new Array(l);i[0]=y;var o={};for(var d in a)hasOwnProperty.call(a,d)&&(o[d]=a[d]);o.originalType=e,o[p]="string"==typeof e?e:t,i[1]=o;for(var c=2;c{r.r(a),r.d(a,{assets:()=>d,contentTitle:()=>i,default:()=>u,frontMatter:()=>l,metadata:()=>o,toc:()=>c});var n=r(5072),t=(r(1504),r(5788));const l={title:"Dropdown Card",sidebar_label:"Dropdown (Pro)",sidebar_position:8},i=void 0,o={unversionedId:"cards/dropdown",id:"version-v4.x.x/cards/dropdown",title:"Dropdown Card",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v4.x.x/cards/dropdown.md",sourceDirName:"cards",slug:"/cards/dropdown",permalink:"/cards/dropdown",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:8,frontMatter:{title:"Dropdown Card",sidebar_label:"Dropdown (Pro)",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"Joystick (Pro)",permalink:"/cards/joystick"},next:{title:"Image (Pro)",permalink:"/cards/image"}},d={},c=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Callback:",id:"callback",level:4},{value:"Updaters:",id:"updaters",level:4}],s={toc:c},p="wrapper";function u(e){let{components:a,...r}=e;return(0,t.yg)(p,(0,n.c)({},s,r,{components:a,mdxType:"MDXLayout"}),(0,t.yg)("div",{className:"pro-label"},(0,t.yg)("i",null,(0,t.yg)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,t.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,t.yg)("h4",{id:"preview"},"Preview:"),(0,t.yg)("img",{className:"card-preview",src:"/img/v4/dropdown-card.png",width:"280px",alt:"Preview"}),"\xa0",(0,t.yg)("img",{className:"card-preview",src:"/img/v4/dropdown-card-2.png",width:"280px",alt:"Preview"}),(0,t.yg)("br",null),(0,t.yg)("br",null),(0,t.yg)("p",null,'This card adds a dropdown selectable list on your dashboard. You can pass "," comma separated list as it\'s secondary value with unlimited number of choices.'),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"type"},"Type:"),(0,t.yg)("p",null,(0,t.yg)("inlineCode",{parentName:"p"},"DROPDOWN_CARD")),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,t.yg)("ul",null,(0,t.yg)("li",{parentName:"ul"},(0,t.yg)("inlineCode",{parentName:"li"},"String"))),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"initializer"},"Initializer:"),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Dropdown Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* choices )\n*/\nCard card1(&dashboard, DROPDOWN_CARD, "Test Dropdown", "Option1,Option2,Option3,Option4");\n')),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"callback"},"Callback:"),(0,t.yg)("p",null,"The Dropdown Card requires a callback function that will be invoked when input is received from the dashboard. This function should utilize the ",(0,t.yg)("inlineCode",{parentName:"p"},"attachCallback")," method and provide a lambda function with a ",(0,t.yg)("inlineCode",{parentName:"p"},"const char*")," parameter."),(0,t.yg)("p",null,(0,t.yg)("strong",{parentName:"p"},"Note:")," It's essential to immediately invoke the ",(0,t.yg)("inlineCode",{parentName:"p"},"update")," function and ",(0,t.yg)("inlineCode",{parentName:"p"},"sendUpdates")," after receiving a value in the callback. Failure to do so will result in the user's input not being registered on the dashboard."),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},'/*\n Here, we use a lambda function within attachCallback to handle incoming data.\n `value` represents the const char value sent from your dashboard which is equal to selected value.\n*/\ncard1.attachCallback([&](const char* value){\n Serial.println("[Card1] Dropdown Callback Triggered: "+String(value));\n card1.update(value);\n dashboard.sendUpdates();\n});\n')),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"updaters"},"Updaters:"),(0,t.yg)("p",null,"This will change the selected value of our dropdown:"),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(const char* value);\n")),(0,t.yg)("p",null,"Or you can also update the choices along with the value like this:"),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},"// This will change the selected value and update the choices as well\ncard1.update(const char* value, const char* choices);\n")),(0,t.yg)("br",null),(0,t.yg)("br",null))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4c3f1b83.ea89df0e.js b/assets/js/4c3f1b83.ea89df0e.js deleted file mode 100644 index 8fc35c67..00000000 --- a/assets/js/4c3f1b83.ea89df0e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[6278],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>m});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var d=r.createContext({}),c=function(e){var t=r.useContext(d),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},s=function(e){var t=c(e.components);return r.createElement(d.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,d=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),p=c(a),h=n,m=p["".concat(d,".").concat(h)]||p[h]||u[h]||l;return a?r.createElement(m,o(o({ref:t},s),{},{components:a})):r.createElement(m,o({ref:t},s))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,o=new Array(l);o[0]=h;var i={};for(var d in t)hasOwnProperty.call(t,d)&&(i[d]=t[d]);i.originalType=e,i[p]="string"==typeof e?e:n,o[1]=i;for(var c=2;c{a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>u,frontMatter:()=>l,metadata:()=>i,toc:()=>c});var r=a(7462),n=(a(7294),a(3905));const l={title:"Dropdown Card",sidebar_label:"Dropdown (Pro)",sidebar_position:8},o=void 0,i={unversionedId:"cards/dropdown",id:"version-v4.x.x/cards/dropdown",title:"Dropdown Card",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v4.x.x/cards/dropdown.md",sourceDirName:"cards",slug:"/cards/dropdown",permalink:"/cards/dropdown",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:8,frontMatter:{title:"Dropdown Card",sidebar_label:"Dropdown (Pro)",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"Joystick (Pro)",permalink:"/cards/joystick"},next:{title:"Image (Pro)",permalink:"/cards/image"}},d={},c=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Callback:",id:"callback",level:4},{value:"Updaters:",id:"updaters",level:4}],s={toc:c},p="wrapper";function u(e){let{components:t,...a}=e;return(0,n.kt)(p,(0,r.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("div",{className:"pro-label"},(0,n.kt)("i",null,(0,n.kt)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/dropdown-card.png",width:"280px",alt:"Preview"}),"\xa0",(0,n.kt)("img",{className:"card-preview",src:"/img/v4/dropdown-card-2.png",width:"280px",alt:"Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,'This card adds a dropdown selectable list on your dashboard. You can pass "," comma separated list as it\'s secondary value with unlimited number of choices.'),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"DROPDOWN_CARD")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"String"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Dropdown Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* choices )\n*/\nCard card1(&dashboard, DROPDOWN_CARD, "Test Dropdown", "Option1,Option2,Option3,Option4");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"callback"},"Callback:"),(0,n.kt)("p",null,"The Dropdown Card requires a callback function that will be invoked when input is received from the dashboard. This function should utilize the ",(0,n.kt)("inlineCode",{parentName:"p"},"attachCallback")," method and provide a lambda function with a ",(0,n.kt)("inlineCode",{parentName:"p"},"const char*")," parameter."),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Note:")," It's essential to immediately invoke the ",(0,n.kt)("inlineCode",{parentName:"p"},"update")," function and ",(0,n.kt)("inlineCode",{parentName:"p"},"sendUpdates")," after receiving a value in the callback. Failure to do so will result in the user's input not being registered on the dashboard."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/*\n Here, we use a lambda function within attachCallback to handle incoming data.\n `value` represents the const char value sent from your dashboard which is equal to selected value.\n*/\ncard1.attachCallback([&](const char* value){\n Serial.println("[Card1] Dropdown Callback Triggered: "+String(value));\n card1.update(value);\n dashboard.sendUpdates();\n});\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("p",null,"This will change the selected value of our dropdown:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(const char* value);\n")),(0,n.kt)("p",null,"Or you can also update the choices along with the value like this:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"// This will change the selected value and update the choices as well\ncard1.update(const char* value, const char* choices);\n")),(0,n.kt)("br",null),(0,n.kt)("br",null))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4c4e1a30.a04357e4.js b/assets/js/4c4e1a30.a04357e4.js deleted file mode 100644 index 165d7cf9..00000000 --- a/assets/js/4c4e1a30.a04357e4.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[9761],{348:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"v4.x.x","label":"v4.x.x","banner":null,"badge":true,"noIndex":false,"className":"docs-version-v4.x.x","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"link","label":"Introduction","href":"/","docId":"intro"},{"type":"link","label":"Concept","href":"/concept","docId":"concept"},{"type":"link","label":"Installation","href":"/installation","docId":"installation"},{"type":"link","label":"Getting Started","href":"/getting-started","docId":"getting-started"},{"type":"link","label":"Examples","href":"/more-examples","docId":"more-examples"},{"type":"link","label":"Tabs (Pro)","href":"/tabs","docId":"tabs"},{"type":"link","label":"Statistics","href":"/custom-statistics","docId":"custom-statistics"},{"type":"category","label":"Cards","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Generic","href":"/cards/generic","docId":"cards/generic"},{"type":"link","label":"Temperature","href":"/cards/temperature","docId":"cards/temperature"},{"type":"link","label":"Humidity","href":"/cards/humidity","docId":"cards/humidity"},{"type":"link","label":"Air (Pro)","href":"/cards/air","docId":"cards/air"},{"type":"link","label":"Energy (Pro)","href":"/cards/energy","docId":"cards/energy"},{"type":"link","label":"Progress","href":"/cards/progress","docId":"cards/progress"},{"type":"link","label":"Toggle Button","href":"/cards/button","docId":"cards/button"},{"type":"link","label":"Push Button (Pro)","href":"/cards/push-button","docId":"cards/push-button"},{"type":"link","label":"Status","href":"/cards/status","docId":"cards/status"},{"type":"link","label":"Slider","href":"/cards/slider","docId":"cards/slider"},{"type":"link","label":"Text Input (Pro)","href":"/cards/text-input","docId":"cards/text-input"},{"type":"link","label":"Joystick (Pro)","href":"/cards/joystick","docId":"cards/joystick"},{"type":"link","label":"Dropdown (Pro)","href":"/cards/dropdown","docId":"cards/dropdown"},{"type":"link","label":"Image (Pro)","href":"/cards/image","docId":"cards/image"},{"type":"link","label":"Week Selector (Pro)","href":"/cards/week-selector","docId":"cards/week-selector"}]},{"type":"category","label":"Charts","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Bar","href":"/charts/bar","docId":"charts/bar"},{"type":"link","label":"Line (Pro)","href":"/charts/line","docId":"charts/line"},{"type":"link","label":"Area (Pro)","href":"/charts/area","docId":"charts/area"},{"type":"link","label":"Pie (Pro)","href":"/charts/pie","docId":"charts/pie"}]},{"type":"category","label":"Extra Features","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Custom URI","href":"/features/custom-uri","docId":"features/custom-uri"},{"type":"link","label":"User Authentication","href":"/features/authentication","docId":"features/authentication"},{"type":"link","label":"Disable Statistics","href":"/features/disable-stats","docId":"features/disable-stats"},{"type":"link","label":"Toggle Animation (Pro)","href":"/features/chartanimations","docId":"features/chartanimations"},{"type":"link","label":"Custom Title (Pro)","href":"/features/title","docId":"features/title"},{"type":"link","label":"Custom Logo (Pro)","href":"/features/custom-logo","docId":"features/custom-logo"},{"type":"link","label":"Card Indexing (Pro)","href":"/features/indexing","docId":"features/indexing"},{"type":"link","label":"Custom Card Size (Pro)","href":"/features/sizing","docId":"features/sizing"},{"type":"link","label":"Brotli Compression (Pro)","href":"/features/brotli-compression","docId":"features/brotli-compression"}]},{"type":"link","label":"Migration Guide","href":"/migrate","docId":"migrate"}]},"docs":{"cards/air":{"id":"cards/air","title":"Air Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"cards/button":{"id":"cards/button","title":"Toggle Button","description":"Preview:","sidebar":"tutorialSidebar"},"cards/dropdown":{"id":"cards/dropdown","title":"Dropdown Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"cards/energy":{"id":"cards/energy","title":"Energy Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"cards/generic":{"id":"cards/generic","title":"Generic Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/humidity":{"id":"cards/humidity","title":"Humidity Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/image":{"id":"cards/image","title":"Image Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"cards/joystick":{"id":"cards/joystick","title":"Joystick Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"cards/progress":{"id":"cards/progress","title":"Progress Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/push-button":{"id":"cards/push-button","title":"Push Button Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"cards/slider":{"id":"cards/slider","title":"Slider Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/status":{"id":"cards/status","title":"Status Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/temperature":{"id":"cards/temperature","title":"Temperature Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/text-input":{"id":"cards/text-input","title":"Text Input Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"cards/week-selector":{"id":"cards/week-selector","title":"Week Selector Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"charts/area":{"id":"charts/area","title":"Area Chart","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"charts/bar":{"id":"charts/bar","title":"Bar Chart","description":"Preview:","sidebar":"tutorialSidebar"},"charts/line":{"id":"charts/line","title":"Line Chart","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"charts/pie":{"id":"charts/pie","title":"Pie Chart","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"concept":{"id":"concept","title":"Concept of DASH","description":"In this article, we are going to look at how the internals of ESP-DASH are stacked up, as well as understand the how everything works with eachother inside the library.","sidebar":"tutorialSidebar"},"custom-statistics":{"id":"custom-statistics","title":"Statistics","description":"ESP-DASH has a dedicated page called \\"Statistics\\" on the dashboard which contain key-value pairs of system statistics ( heap, flash usage etc. ) by default. With the launch of ESP-DASH V4, user defined statistics are now also part of the library! You can now add your own statitics to this page. \ud83c\udf89","sidebar":"tutorialSidebar"},"features/authentication":{"id":"features/authentication","title":"User Authentication","description":"ESP-DASH comes with basic HTTP authentication support. You can enable basic HTTP based user authentication to control who can view your dashboard using setAuthentication function.","sidebar":"tutorialSidebar"},"features/brotli-compression":{"id":"features/brotli-compression","title":"Brotli Compression","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"features/chartanimations":{"id":"features/chartanimations","title":"Toggle Animation","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"features/custom-logo":{"id":"features/custom-logo","title":"Custom Logo","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"features/custom-uri":{"id":"features/custom-uri","title":"Custom URI","description":"If you want to serve ESPDash at a path other than \'root\' (ie. http:///) then you can use the constructor to supply the path of your choice.","sidebar":"tutorialSidebar"},"features/disable-stats":{"id":"features/disable-stats","title":"Disable Statistics","description":"You can disable system statistics by using setting false in ESPDash class constructor.","sidebar":"tutorialSidebar"},"features/indexing":{"id":"features/indexing","title":"Card Indexing","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"features/sizing":{"id":"features/sizing","title":"Custom Card Size","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"features/title":{"id":"features/title","title":"Custom Title","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"getting-started":{"id":"getting-started","title":"Getting Started","description":"To get started with ESP-DASH, we will be creating our basic example step by step and learn what each setup does:","sidebar":"tutorialSidebar"},"installation":{"id":"installation","title":"Installation","description":"ESP-DASH depends on the following open-source libraries/boards. Make sure to install them before you install ESP-DASH.","sidebar":"tutorialSidebar"},"intro":{"id":"intro","title":"Intro","description":" ","sidebar":"tutorialSidebar"},"migrate":{"id":"migrate","title":"Migration Guide","description":"Note: If you are currently using ESP-DASH V3 or ESP-DASH Pro ( previous releases <= v4.0.8 ), then this article is for you.","sidebar":"tutorialSidebar"},"more-examples":{"id":"more-examples","title":"Examples","description":"There are many example sketches in our repository. You can check those out to know more about what you can do with ESP-DASH. We have contructed every example with very clear documentation so there is less obstruction in your learning process.","sidebar":"tutorialSidebar"},"tabs":{"id":"tabs","title":"Tabs","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/4c4e1a30.c857dcb9.js b/assets/js/4c4e1a30.c857dcb9.js new file mode 100644 index 00000000..a5b0b459 --- /dev/null +++ b/assets/js/4c4e1a30.c857dcb9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[8120],{5216:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"v4.x.x","label":"v4.x.x","banner":null,"badge":true,"noIndex":false,"className":"docs-version-v4.x.x","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"link","label":"Introduction","href":"/","docId":"intro"},{"type":"link","label":"Concept","href":"/concept","docId":"concept"},{"type":"link","label":"Installation","href":"/installation","docId":"installation"},{"type":"link","label":"Getting Started","href":"/getting-started","docId":"getting-started"},{"type":"link","label":"Examples","href":"/more-examples","docId":"more-examples"},{"type":"link","label":"Tabs (Pro)","href":"/tabs","docId":"tabs"},{"type":"link","label":"Statistics","href":"/custom-statistics","docId":"custom-statistics"},{"type":"category","label":"Cards","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Generic","href":"/cards/generic","docId":"cards/generic"},{"type":"link","label":"Temperature","href":"/cards/temperature","docId":"cards/temperature"},{"type":"link","label":"Humidity","href":"/cards/humidity","docId":"cards/humidity"},{"type":"link","label":"Air (Pro)","href":"/cards/air","docId":"cards/air"},{"type":"link","label":"Energy (Pro)","href":"/cards/energy","docId":"cards/energy"},{"type":"link","label":"Progress","href":"/cards/progress","docId":"cards/progress"},{"type":"link","label":"Toggle Button","href":"/cards/button","docId":"cards/button"},{"type":"link","label":"Push Button (Pro)","href":"/cards/push-button","docId":"cards/push-button"},{"type":"link","label":"Status","href":"/cards/status","docId":"cards/status"},{"type":"link","label":"Slider","href":"/cards/slider","docId":"cards/slider"},{"type":"link","label":"Text Input (Pro)","href":"/cards/text-input","docId":"cards/text-input"},{"type":"link","label":"Joystick (Pro)","href":"/cards/joystick","docId":"cards/joystick"},{"type":"link","label":"Dropdown (Pro)","href":"/cards/dropdown","docId":"cards/dropdown"},{"type":"link","label":"Image (Pro)","href":"/cards/image","docId":"cards/image"},{"type":"link","label":"Week Selector (Pro)","href":"/cards/week-selector","docId":"cards/week-selector"}]},{"type":"category","label":"Charts","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Bar","href":"/charts/bar","docId":"charts/bar"},{"type":"link","label":"Line (Pro)","href":"/charts/line","docId":"charts/line"},{"type":"link","label":"Area (Pro)","href":"/charts/area","docId":"charts/area"},{"type":"link","label":"Pie (Pro)","href":"/charts/pie","docId":"charts/pie"}]},{"type":"category","label":"Extra Features","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Custom URI","href":"/features/custom-uri","docId":"features/custom-uri"},{"type":"link","label":"User Authentication","href":"/features/authentication","docId":"features/authentication"},{"type":"link","label":"Disable Statistics","href":"/features/disable-stats","docId":"features/disable-stats"},{"type":"link","label":"Toggle Animation (Pro)","href":"/features/chartanimations","docId":"features/chartanimations"},{"type":"link","label":"Custom Title (Pro)","href":"/features/title","docId":"features/title"},{"type":"link","label":"Custom Logo (Pro)","href":"/features/custom-logo","docId":"features/custom-logo"},{"type":"link","label":"Card Indexing (Pro)","href":"/features/indexing","docId":"features/indexing"},{"type":"link","label":"Custom Card Size (Pro)","href":"/features/sizing","docId":"features/sizing"},{"type":"link","label":"Brotli Compression (Pro)","href":"/features/brotli-compression","docId":"features/brotli-compression"}]},{"type":"link","label":"Migration Guide","href":"/migrate","docId":"migrate"}]},"docs":{"cards/air":{"id":"cards/air","title":"Air Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"cards/button":{"id":"cards/button","title":"Toggle Button","description":"Preview:","sidebar":"tutorialSidebar"},"cards/dropdown":{"id":"cards/dropdown","title":"Dropdown Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"cards/energy":{"id":"cards/energy","title":"Energy Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"cards/generic":{"id":"cards/generic","title":"Generic Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/humidity":{"id":"cards/humidity","title":"Humidity Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/image":{"id":"cards/image","title":"Image Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"cards/joystick":{"id":"cards/joystick","title":"Joystick Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"cards/progress":{"id":"cards/progress","title":"Progress Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/push-button":{"id":"cards/push-button","title":"Push Button Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"cards/slider":{"id":"cards/slider","title":"Slider Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/status":{"id":"cards/status","title":"Status Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/temperature":{"id":"cards/temperature","title":"Temperature Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/text-input":{"id":"cards/text-input","title":"Text Input Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"cards/week-selector":{"id":"cards/week-selector","title":"Week Selector Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"charts/area":{"id":"charts/area","title":"Area Chart","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"charts/bar":{"id":"charts/bar","title":"Bar Chart","description":"Preview:","sidebar":"tutorialSidebar"},"charts/line":{"id":"charts/line","title":"Line Chart","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"charts/pie":{"id":"charts/pie","title":"Pie Chart","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"concept":{"id":"concept","title":"Concept of DASH","description":"In this article, we are going to look at how the internals of ESP-DASH are stacked up, as well as understand the how everything works with eachother inside the library.","sidebar":"tutorialSidebar"},"custom-statistics":{"id":"custom-statistics","title":"Statistics","description":"ESP-DASH has a dedicated page called \\"Statistics\\" on the dashboard which contain key-value pairs of system statistics ( heap, flash usage etc. ) by default. With the launch of ESP-DASH V4, user defined statistics are now also part of the library! You can now add your own statitics to this page. \ud83c\udf89","sidebar":"tutorialSidebar"},"features/authentication":{"id":"features/authentication","title":"User Authentication","description":"ESP-DASH comes with basic HTTP authentication support. You can enable basic HTTP based user authentication to control who can view your dashboard using setAuthentication function.","sidebar":"tutorialSidebar"},"features/brotli-compression":{"id":"features/brotli-compression","title":"Brotli Compression","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"features/chartanimations":{"id":"features/chartanimations","title":"Toggle Animation","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"features/custom-logo":{"id":"features/custom-logo","title":"Custom Logo","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"features/custom-uri":{"id":"features/custom-uri","title":"Custom URI","description":"If you want to serve ESPDash at a path other than \'root\' (ie. http:///) then you can use the constructor to supply the path of your choice.","sidebar":"tutorialSidebar"},"features/disable-stats":{"id":"features/disable-stats","title":"Disable Statistics","description":"You can disable system statistics by using setting false in ESPDash class constructor.","sidebar":"tutorialSidebar"},"features/indexing":{"id":"features/indexing","title":"Card Indexing","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"features/sizing":{"id":"features/sizing","title":"Custom Card Size","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"features/title":{"id":"features/title","title":"Custom Title","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"getting-started":{"id":"getting-started","title":"Getting Started","description":"To get started with ESP-DASH, we will be creating our basic example step by step and learn what each setup does:","sidebar":"tutorialSidebar"},"installation":{"id":"installation","title":"Installation","description":"ESP-DASH depends on the following open-source libraries/boards. Make sure to install them before you install ESP-DASH.","sidebar":"tutorialSidebar"},"intro":{"id":"intro","title":"Intro","description":" ","sidebar":"tutorialSidebar"},"migrate":{"id":"migrate","title":"Migration Guide","description":"Note: If you are currently using ESP-DASH V3 or ESP-DASH Pro ( previous releases <= v4.0.8 ), then this article is for you.","sidebar":"tutorialSidebar"},"more-examples":{"id":"more-examples","title":"Examples","description":"There are many example sketches in our repository. You can check those out to know more about what you can do with ESP-DASH. We have contructed every example with very clear documentation so there is less obstruction in your learning process.","sidebar":"tutorialSidebar"},"tabs":{"id":"tabs","title":"Tabs","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/4ca68d7b.1d84b558.js b/assets/js/4ca68d7b.1d84b558.js new file mode 100644 index 00000000..a4ecbbc2 --- /dev/null +++ b/assets/js/4ca68d7b.1d84b558.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[3664],{5788:(e,a,r)=>{r.d(a,{Iu:()=>d,yg:()=>g});var t=r(1504);function n(e,a,r){return a in e?Object.defineProperty(e,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[a]=r,e}function l(e,a){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);a&&(t=t.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),r.push.apply(r,t)}return r}function i(e){for(var a=1;a=0||(n[r]=e[r]);return n}(e,a);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var c=t.createContext({}),s=function(e){var a=t.useContext(c),r=a;return e&&(r="function"==typeof e?e(a):i(i({},a),e)),r},d=function(e){var a=s(e.components);return t.createElement(c.Provider,{value:a},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var a=e.children;return t.createElement(t.Fragment,{},a)}},y=t.forwardRef((function(e,a){var r=e.components,n=e.mdxType,l=e.originalType,c=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),p=s(r),y=n,g=p["".concat(c,".").concat(y)]||p[y]||u[y]||l;return r?t.createElement(g,i(i({ref:a},d),{},{components:r})):t.createElement(g,i({ref:a},d))}));function g(e,a){var r=arguments,n=a&&a.mdxType;if("string"==typeof e||n){var l=r.length,i=new Array(l);i[0]=y;var o={};for(var c in a)hasOwnProperty.call(a,c)&&(o[c]=a[c]);o.originalType=e,o[p]="string"==typeof e?e:n,i[1]=o;for(var s=2;s{r.r(a),r.d(a,{assets:()=>c,contentTitle:()=>i,default:()=>u,frontMatter:()=>l,metadata:()=>o,toc:()=>s});var t=r(5072),n=(r(1504),r(5788));const l={title:"Week Selector Card",sidebar_label:"Week Selector (Pro)",sidebar_position:10},i=void 0,o={unversionedId:"cards/week-selector",id:"version-v4.x.x/cards/week-selector",title:"Week Selector Card",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v4.x.x/cards/week-selector.md",sourceDirName:"cards",slug:"/cards/week-selector",permalink:"/cards/week-selector",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:10,frontMatter:{title:"Week Selector Card",sidebar_label:"Week Selector (Pro)",sidebar_position:10},sidebar:"tutorialSidebar",previous:{title:"Image (Pro)",permalink:"/cards/image"},next:{title:"Bar",permalink:"/charts/bar"}},c={},s=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Callback:",id:"callback",level:4},{value:"Updaters:",id:"updaters",level:4}],d={toc:s},p="wrapper";function u(e){let{components:a,...r}=e;return(0,n.yg)(p,(0,t.c)({},d,r,{components:a,mdxType:"MDXLayout"}),(0,n.yg)("div",{className:"pro-label"},(0,n.yg)("i",null,(0,n.yg)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.yg)("h4",{id:"preview"},"Preview:"),(0,n.yg)("img",{className:"card-preview",src:"/img/v4/week-selector.png",width:"280px",alt:"Week Selector Card Preview"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("p",null,"Week selector card gives you a nice card in which days are selectable by users. This type of card is very useful in many scenarios. The output of the card is comma ",(0,n.yg)("inlineCode",{parentName:"p"},",")," separated string on days which were selected by the user."),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"type"},"Type:"),(0,n.yg)("p",null,(0,n.yg)("inlineCode",{parentName:"p"},"WEEK_SELECTOR_CARD")),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"String")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"char"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"initializer"},"Initializer:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Energy Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name)\n*/\nCard card1(&dashboard, WEEK_SELECTOR_CARD, "Select Days");\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"callback"},"Callback:"),(0,n.yg)("p",null,"Week selector card requires a callback function which will be called when we receive a input from our dashboard. In our setup block, we will be calling our ",(0,n.yg)("inlineCode",{parentName:"p"},"attachCallback")," function and provide a lambda (callback) function with a ",(0,n.yg)("inlineCode",{parentName:"p"},"const char*")," (character array) argument. Whenever a user selects a day, this callback will be triggered with a comma ",(0,n.yg)("inlineCode",{parentName:"p"},",")," separated list of days which indicate what was selected by user."),(0,n.yg)("p",null,(0,n.yg)("strong",{parentName:"p"},"Note:")," You need to call the ",(0,n.yg)("inlineCode",{parentName:"p"},"update")," function and ",(0,n.yg)("inlineCode",{parentName:"p"},"sendUpdates")," immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard and it will keep the card stuck in 'waiting' phase."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/*\n We provide our attachCallback with a lambda function to handle incomming data\n Example Value: mon,tue,wed,thu,fri,sat,sun\n*/\ncard1.attachCallback([&](const char* days){\n Serial.println("[Card1] Week Selector Triggered: "+String(days));\n card1.update(value);\n dashboard.sendUpdates();\n});\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"updaters"},"Updaters:"),(0,n.yg)("p",null,"You can also select or deselect values depending on your logic. You just need to supply the updater with a comma ",(0,n.yg)("inlineCode",{parentName:"p"},",")," separated list of days. Order of days in this string doesn't matter. Example: Supplying ",(0,n.yg)("inlineCode",{parentName:"p"},"tue,mon,thu")," will show ",(0,n.yg)("inlineCode",{parentName:"p"},"Monday, Tuesday & Thursday")," as selected on Week Selector Card."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(const char* value);\n")),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4ca68d7b.4e99b1a5.js b/assets/js/4ca68d7b.4e99b1a5.js deleted file mode 100644 index ae2603e3..00000000 --- a/assets/js/4ca68d7b.4e99b1a5.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[9445],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>m});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var c=r.createContext({}),s=function(e){var t=r.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},d=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},k=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,c=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),p=s(a),k=n,m=p["".concat(c,".").concat(k)]||p[k]||u[k]||l;return a?r.createElement(m,i(i({ref:t},d),{},{components:a})):r.createElement(m,i({ref:t},d))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,i=new Array(l);i[0]=k;var o={};for(var c in t)hasOwnProperty.call(t,c)&&(o[c]=t[c]);o.originalType=e,o[p]="string"==typeof e?e:n,i[1]=o;for(var s=2;s{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>u,frontMatter:()=>l,metadata:()=>o,toc:()=>s});var r=a(7462),n=(a(7294),a(3905));const l={title:"Week Selector Card",sidebar_label:"Week Selector (Pro)",sidebar_position:10},i=void 0,o={unversionedId:"cards/week-selector",id:"version-v4.x.x/cards/week-selector",title:"Week Selector Card",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v4.x.x/cards/week-selector.md",sourceDirName:"cards",slug:"/cards/week-selector",permalink:"/cards/week-selector",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:10,frontMatter:{title:"Week Selector Card",sidebar_label:"Week Selector (Pro)",sidebar_position:10},sidebar:"tutorialSidebar",previous:{title:"Image (Pro)",permalink:"/cards/image"},next:{title:"Bar",permalink:"/charts/bar"}},c={},s=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Callback:",id:"callback",level:4},{value:"Updaters:",id:"updaters",level:4}],d={toc:s},p="wrapper";function u(e){let{components:t,...a}=e;return(0,n.kt)(p,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("div",{className:"pro-label"},(0,n.kt)("i",null,(0,n.kt)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/week-selector.png",width:"280px",alt:"Week Selector Card Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"Week selector card gives you a nice card in which days are selectable by users. This type of card is very useful in many scenarios. The output of the card is comma ",(0,n.kt)("inlineCode",{parentName:"p"},",")," separated string on days which were selected by the user."),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"WEEK_SELECTOR_CARD")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"String")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"char"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Energy Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name)\n*/\nCard card1(&dashboard, WEEK_SELECTOR_CARD, "Select Days");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"callback"},"Callback:"),(0,n.kt)("p",null,"Week selector card requires a callback function which will be called when we receive a input from our dashboard. In our setup block, we will be calling our ",(0,n.kt)("inlineCode",{parentName:"p"},"attachCallback")," function and provide a lambda (callback) function with a ",(0,n.kt)("inlineCode",{parentName:"p"},"const char*")," (character array) argument. Whenever a user selects a day, this callback will be triggered with a comma ",(0,n.kt)("inlineCode",{parentName:"p"},",")," separated list of days which indicate what was selected by user."),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Note:")," You need to call the ",(0,n.kt)("inlineCode",{parentName:"p"},"update")," function and ",(0,n.kt)("inlineCode",{parentName:"p"},"sendUpdates")," immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard and it will keep the card stuck in 'waiting' phase."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/*\n We provide our attachCallback with a lambda function to handle incomming data\n Example Value: mon,tue,wed,thu,fri,sat,sun\n*/\ncard1.attachCallback([&](const char* days){\n Serial.println("[Card1] Week Selector Triggered: "+String(days));\n card1.update(value);\n dashboard.sendUpdates();\n});\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("p",null,"You can also select or deselect values depending on your logic. You just need to supply the updater with a comma ",(0,n.kt)("inlineCode",{parentName:"p"},",")," separated list of days. Order of days in this string doesn't matter. Example: Supplying ",(0,n.kt)("inlineCode",{parentName:"p"},"tue,mon,thu")," will show ",(0,n.kt)("inlineCode",{parentName:"p"},"Monday, Tuesday & Thursday")," as selected on Week Selector Card."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(const char* value);\n")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4df0a92e.a09a323f.js b/assets/js/4df0a92e.8e470e79.js similarity index 68% rename from assets/js/4df0a92e.a09a323f.js rename to assets/js/4df0a92e.8e470e79.js index 61d62cd7..415db2ba 100644 --- a/assets/js/4df0a92e.a09a323f.js +++ b/assets/js/4df0a92e.8e470e79.js @@ -1 +1 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[3272],{3905:(e,t,a)=>{a.d(t,{Zo:()=>h,kt:()=>f});var r=a(7294);function s(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(s[a]=e[a]);return s}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(s[a]=e[a])}return s}var l=r.createContext({}),c=function(e){var t=r.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},h=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,s=e.mdxType,n=e.originalType,l=e.parentName,h=i(e,["components","mdxType","originalType","parentName"]),p=c(a),d=s,f=p["".concat(l,".").concat(d)]||p[d]||u[d]||n;return a?r.createElement(f,o(o({ref:t},h),{},{components:a})):r.createElement(f,o({ref:t},h))}));function f(e,t){var a=arguments,s=t&&t.mdxType;if("string"==typeof e||s){var n=a.length,o=new Array(n);o[0]=d;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[p]="string"==typeof e?e:s,o[1]=i;for(var c=2;c{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>n,metadata:()=>i,toc:()=>c});var r=a(7462),s=(a(7294),a(3905));const n={title:"Concept of DASH",sidebar_label:"Concept",sidebar_position:2},o=void 0,i={unversionedId:"concept",id:"version-v4.x.x/concept",title:"Concept of DASH",description:"In this article, we are going to look at how the internals of ESP-DASH are stacked up, as well as understand the how everything works with eachother inside the library.",source:"@site/versioned_docs/version-v4.x.x/concept.md",sourceDirName:".",slug:"/concept",permalink:"/concept",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:2,frontMatter:{title:"Concept of DASH",sidebar_label:"Concept",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Introduction",permalink:"/"},next:{title:"Installation",permalink:"/installation"}},l={},c=[{value:"1. Networking Class (ESPDash.h)",id:"1-networking-class-espdashh",level:4},{value:"2. Card Class (Card.h)",id:"2-card-class-cardh",level:4},{value:"3. Chart Class (Chart.h)",id:"3-chart-class-charth",level:4},{value:"4. Statistic Class (Statistic.h)",id:"4-statistic-class-statistich",level:4},{value:"5. Tab Class (Tab.h) ( Pro )",id:"5-tab-class-tabh--pro-",level:4}],h={toc:c},p="wrapper";function u(e){let{components:t,...a}=e;return(0,s.kt)(p,(0,r.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("p",null,"In this article, we are going to look at how the internals of ESP-DASH are stacked up, as well as understand the how everything works with eachother inside the library."),(0,s.kt)("i",null,"Note: If you looking to get started with ESP-DASH quickly, you can skip this article."),(0,s.kt)("br",null),(0,s.kt)("br",null),(0,s.kt)("img",{src:"/img/v4/concept.svg",alt:"Concept Diagram",width:"800px"}),(0,s.kt)("br",null),(0,s.kt)("br",null),(0,s.kt)("p",null,"DASH contains the following classes which you will use in your application:"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("b",null,"Networking Class")," (ESPDash.h)"),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("b",null,"Card Class")," (Card.h)"),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("b",null,"Chart Class")," (Chart.h)"),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("b",null,"Statistic Class")," (Statistic.h)"),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("b",null,"Tab Class")," (Tab.h) ( Pro Version Only )")),(0,s.kt)("p",null,"The whole idea of ESP-DASH is to make a complete dashboard by using data classes ( as shown in figure above ). The data classes connect with ESP-DASH main class using pointers which handles all the networking and relays realtime updates to the open dashboards."),(0,s.kt)("p",null,"Let's understand the purpose of each class:"),(0,s.kt)("h4",{id:"1-networking-class-espdashh"},"1. Networking Class (ESPDash.h)"),(0,s.kt)("p",null,'The networking class handles all the networking stuff including serving the DASH webpage from program memory of the microcontroller and also to maintain the WebSocket connection with every connected client. Apart from networking, with the release of V4, you can now also configure the webpage according to your application. This includes changing page title, logo etc. ( Go to "Extra Features" to know more ).'),(0,s.kt)("h4",{id:"2-card-class-cardh"},"2. Card Class (Card.h)"),(0,s.kt)("p",null,"The card class is a data storage class in ESP-DASH which is used to create various types of cards on the dashboard. The only purpose of this class is to store the data + configuration in stack or heap depending on your use case and to keep track of the changes in data for realtime updates."),(0,s.kt)("h4",{id:"3-chart-class-charth"},"3. Chart Class (Chart.h)"),(0,s.kt)("p",null,'The chart class is an data storage class which is used to store the X & Y axis arrays to create various types of charts on the dashboard. This class is a bit different from "card" class as to keep the memory footprint low, it doesn\'t stores the data in the class itself. Instead it smartly stores the pointer to arrays so that data can be read on demand without actually copying all the array in the memory.'),(0,s.kt)("small",null,(0,s.kt)("i",null,"Note: If you are migrating from V3, Please look at the migration guide to know more.")),(0,s.kt)("h4",{id:"4-statistic-class-statistich"},"4. Statistic Class (Statistic.h)"),(0,s.kt)("p",null,"The statistic class is used to create custom user defined statistics which will be displayed in the statistics page. Statistics in ESP-DASH's sense are simple key-value pairs which you can send to dashboard to report small but useful data."),(0,s.kt)("h4",{id:"5-tab-class-tabh--pro-"},"5. Tab Class (Tab.h) ( Pro )"),(0,s.kt)("p",null,"The tab class in ",(0,s.kt)("a",{href:"https://espdash.pro/",target:"_blank"},"DASH Pro"),' is also an data class which is used to create multiple pages. Therefore, you are now not limited to the "Overview" page and can create multiple pages to host different cards & charts.'))}u.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[1612],{5788:(e,t,a)=>{a.d(t,{Iu:()=>h,yg:()=>g});var r=a(1504);function s(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(s[a]=e[a]);return s}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(s[a]=e[a])}return s}var l=r.createContext({}),c=function(e){var t=r.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},h=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,s=e.mdxType,n=e.originalType,l=e.parentName,h=i(e,["components","mdxType","originalType","parentName"]),p=c(a),d=s,g=p["".concat(l,".").concat(d)]||p[d]||u[d]||n;return a?r.createElement(g,o(o({ref:t},h),{},{components:a})):r.createElement(g,o({ref:t},h))}));function g(e,t){var a=arguments,s=t&&t.mdxType;if("string"==typeof e||s){var n=a.length,o=new Array(n);o[0]=d;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[p]="string"==typeof e?e:s,o[1]=i;for(var c=2;c{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>n,metadata:()=>i,toc:()=>c});var r=a(5072),s=(a(1504),a(5788));const n={title:"Concept of DASH",sidebar_label:"Concept",sidebar_position:2},o=void 0,i={unversionedId:"concept",id:"version-v4.x.x/concept",title:"Concept of DASH",description:"In this article, we are going to look at how the internals of ESP-DASH are stacked up, as well as understand the how everything works with eachother inside the library.",source:"@site/versioned_docs/version-v4.x.x/concept.md",sourceDirName:".",slug:"/concept",permalink:"/concept",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:2,frontMatter:{title:"Concept of DASH",sidebar_label:"Concept",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Introduction",permalink:"/"},next:{title:"Installation",permalink:"/installation"}},l={},c=[{value:"1. Networking Class (ESPDash.h)",id:"1-networking-class-espdashh",level:4},{value:"2. Card Class (Card.h)",id:"2-card-class-cardh",level:4},{value:"3. Chart Class (Chart.h)",id:"3-chart-class-charth",level:4},{value:"4. Statistic Class (Statistic.h)",id:"4-statistic-class-statistich",level:4},{value:"5. Tab Class (Tab.h) ( Pro )",id:"5-tab-class-tabh--pro-",level:4}],h={toc:c},p="wrapper";function u(e){let{components:t,...a}=e;return(0,s.yg)(p,(0,r.c)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,s.yg)("p",null,"In this article, we are going to look at how the internals of ESP-DASH are stacked up, as well as understand the how everything works with eachother inside the library."),(0,s.yg)("i",null,"Note: If you looking to get started with ESP-DASH quickly, you can skip this article."),(0,s.yg)("br",null),(0,s.yg)("br",null),(0,s.yg)("img",{src:"/img/v4/concept.svg",alt:"Concept Diagram",width:"800px"}),(0,s.yg)("br",null),(0,s.yg)("br",null),(0,s.yg)("p",null,"DASH contains the following classes which you will use in your application:"),(0,s.yg)("ul",null,(0,s.yg)("li",{parentName:"ul"},(0,s.yg)("b",null,"Networking Class")," (ESPDash.h)"),(0,s.yg)("li",{parentName:"ul"},(0,s.yg)("b",null,"Card Class")," (Card.h)"),(0,s.yg)("li",{parentName:"ul"},(0,s.yg)("b",null,"Chart Class")," (Chart.h)"),(0,s.yg)("li",{parentName:"ul"},(0,s.yg)("b",null,"Statistic Class")," (Statistic.h)"),(0,s.yg)("li",{parentName:"ul"},(0,s.yg)("b",null,"Tab Class")," (Tab.h) ( Pro Version Only )")),(0,s.yg)("p",null,"The whole idea of ESP-DASH is to make a complete dashboard by using data classes ( as shown in figure above ). The data classes connect with ESP-DASH main class using pointers which handles all the networking and relays realtime updates to the open dashboards."),(0,s.yg)("p",null,"Let's understand the purpose of each class:"),(0,s.yg)("h4",{id:"1-networking-class-espdashh"},"1. Networking Class (ESPDash.h)"),(0,s.yg)("p",null,'The networking class handles all the networking stuff including serving the DASH webpage from program memory of the microcontroller and also to maintain the WebSocket connection with every connected client. Apart from networking, with the release of V4, you can now also configure the webpage according to your application. This includes changing page title, logo etc. ( Go to "Extra Features" to know more ).'),(0,s.yg)("h4",{id:"2-card-class-cardh"},"2. Card Class (Card.h)"),(0,s.yg)("p",null,"The card class is a data storage class in ESP-DASH which is used to create various types of cards on the dashboard. The only purpose of this class is to store the data + configuration in stack or heap depending on your use case and to keep track of the changes in data for realtime updates."),(0,s.yg)("h4",{id:"3-chart-class-charth"},"3. Chart Class (Chart.h)"),(0,s.yg)("p",null,'The chart class is an data storage class which is used to store the X & Y axis arrays to create various types of charts on the dashboard. This class is a bit different from "card" class as to keep the memory footprint low, it doesn\'t stores the data in the class itself. Instead it smartly stores the pointer to arrays so that data can be read on demand without actually copying all the array in the memory.'),(0,s.yg)("small",null,(0,s.yg)("i",null,"Note: If you are migrating from V3, Please look at the migration guide to know more.")),(0,s.yg)("h4",{id:"4-statistic-class-statistich"},"4. Statistic Class (Statistic.h)"),(0,s.yg)("p",null,"The statistic class is used to create custom user defined statistics which will be displayed in the statistics page. Statistics in ESP-DASH's sense are simple key-value pairs which you can send to dashboard to report small but useful data."),(0,s.yg)("h4",{id:"5-tab-class-tabh--pro-"},"5. Tab Class (Tab.h) ( Pro )"),(0,s.yg)("p",null,"The tab class in ",(0,s.yg)("a",{href:"https://espdash.pro/",target:"_blank"},"DASH Pro"),' is also an data class which is used to create multiple pages. Therefore, you are now not limited to the "Overview" page and can create multiple pages to host different cards & charts.'))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/50198c52.5f86938e.js b/assets/js/50198c52.40736873.js similarity index 63% rename from assets/js/50198c52.5f86938e.js rename to assets/js/50198c52.40736873.js index 7c8774c2..321d20f4 100644 --- a/assets/js/50198c52.5f86938e.js +++ b/assets/js/50198c52.40736873.js @@ -1 +1 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[3792],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>m});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(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 i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var s=n.createContext({}),c=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=c(e.components);return n.createElement(s.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=c(r),f=o,m=d["".concat(s,".").concat(f)]||d[f]||u[f]||a;return r?n.createElement(m,i(i({ref:t},p),{},{components:r})):n.createElement(m,i({ref:t},p))}));function m(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=f;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:o,i[1]=l;for(var c=2;c{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>u,frontMatter:()=>a,metadata:()=>l,toc:()=>c});var n=r(7462),o=(r(7294),r(3905));const a={title:"Card Indexing",sidebar_label:"Card Indexing (Pro)",sidebar_position:5},i=void 0,l={unversionedId:"features/indexing",id:"features/indexing",title:"Card Indexing",description:"This feature is available in DASH Pro only.",source:"@site/docs/features/indexing.md",sourceDirName:"features",slug:"/features/indexing",permalink:"/next/features/indexing",draft:!1,tags:[],version:"current",sidebarPosition:5,frontMatter:{title:"Card Indexing",sidebar_label:"Card Indexing (Pro)",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Custom Logo (Pro)",permalink:"/next/features/custom-logo"},next:{title:"Custom Card Size (Pro)",permalink:"/next/features/sizing"}},s={},c=[{value:"Example:",id:"example",level:4}],p={toc:c},d="wrapper";function u(e){let{components:t,...r}=e;return(0,o.kt)(d,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("div",{className:"pro-label"},(0,o.kt)("i",null,(0,o.kt)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,o.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,o.kt)("br",null),(0,o.kt)("img",{src:"/img/index.png",width:"300px",alt:"Energy Card Preview"}),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("p",null,"ESP-DASH ",(0,o.kt)("span",{style:{color:"rgb(245, 75, 66)"}},"Pro")," provides you with a ",(0,o.kt)("inlineCode",{parentName:"p"},"setIndex")," function in both cards and charts to modify the position of them on the dashboard. "),(0,o.kt)("h4",{id:"example"},"Example:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.setIndex(0);\n")),(0,o.kt)("p",null,"Indexing works in ascending format. The lowest card index will be placed in the front of the list and the highest index will be put in the end. It allows you to set the layout according to your wish."))}u.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[5590],{5788:(e,t,r)=>{r.d(t,{Iu:()=>p,yg:()=>g});var n=r(1504);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(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 i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var s=n.createContext({}),c=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=c(e.components);return n.createElement(s.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=c(r),f=o,g=u["".concat(s,".").concat(f)]||u[f]||d[f]||a;return r?n.createElement(g,i(i({ref:t},p),{},{components:r})):n.createElement(g,i({ref:t},p))}));function g(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=f;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:o,i[1]=l;for(var c=2;c{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>l,toc:()=>c});var n=r(5072),o=(r(1504),r(5788));const a={title:"Card Indexing",sidebar_label:"Card Indexing (Pro)",sidebar_position:5},i=void 0,l={unversionedId:"features/indexing",id:"features/indexing",title:"Card Indexing",description:"This feature is available in DASH Pro only.",source:"@site/docs/features/indexing.md",sourceDirName:"features",slug:"/features/indexing",permalink:"/next/features/indexing",draft:!1,tags:[],version:"current",sidebarPosition:5,frontMatter:{title:"Card Indexing",sidebar_label:"Card Indexing (Pro)",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Custom Logo (Pro)",permalink:"/next/features/custom-logo"},next:{title:"Custom Card Size (Pro)",permalink:"/next/features/sizing"}},s={},c=[{value:"Example:",id:"example",level:4}],p={toc:c},u="wrapper";function d(e){let{components:t,...r}=e;return(0,o.yg)(u,(0,n.c)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,o.yg)("div",{className:"pro-label"},(0,o.yg)("i",null,(0,o.yg)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,o.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,o.yg)("br",null),(0,o.yg)("img",{src:"/img/index.png",width:"300px",alt:"Energy Card Preview"}),(0,o.yg)("br",null),(0,o.yg)("br",null),(0,o.yg)("p",null,"ESP-DASH ",(0,o.yg)("span",{style:{color:"rgb(245, 75, 66)"}},"Pro")," provides you with a ",(0,o.yg)("inlineCode",{parentName:"p"},"setIndex")," function in both cards and charts to modify the position of them on the dashboard. "),(0,o.yg)("h4",{id:"example"},"Example:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.setIndex(0);\n")),(0,o.yg)("p",null,"Indexing works in ascending format. The lowest card index will be placed in the front of the list and the highest index will be put in the end. It allows you to set the layout according to your wish."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/51ce7319.3a8180b6.js b/assets/js/51ce7319.29f9c9b5.js similarity index 50% rename from assets/js/51ce7319.3a8180b6.js rename to assets/js/51ce7319.29f9c9b5.js index 4a0cef98..65c41c46 100644 --- a/assets/js/51ce7319.3a8180b6.js +++ b/assets/js/51ce7319.29f9c9b5.js @@ -1 +1 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[6147],{3905:(e,t,o)=>{o.d(t,{Zo:()=>c,kt:()=>g});var r=o(7294);function n(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function i(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,r)}return o}function a(e){for(var t=1;t=0||(n[o]=e[o]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var s=r.createContext({}),p=function(e){var t=r.useContext(s),o=t;return e&&(o="function"==typeof e?e(t):a(a({},t),e)),o},c=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var o=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=p(o),d=n,g=u["".concat(s,".").concat(d)]||u[d]||m[d]||i;return o?r.createElement(g,a(a({ref:t},c),{},{components:o})):r.createElement(g,a({ref:t},c))}));function g(e,t){var o=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=o.length,a=new Array(i);a[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:n,a[1]=l;for(var p=2;p{o.r(t),o.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>m,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var r=o(7462),n=(o(7294),o(3905));const i={title:"Custom Logo",sidebar_label:"Custom Logo (Pro)",sidebar_position:4},a=void 0,l={unversionedId:"features/custom-logo",id:"features/custom-logo",title:"Custom Logo",description:"This feature is available in DASH Pro only.",source:"@site/docs/features/custom-logo.md",sourceDirName:"features",slug:"/features/custom-logo",permalink:"/next/features/custom-logo",draft:!1,tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Custom Logo",sidebar_label:"Custom Logo (Pro)",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Custom Title (Pro)",permalink:"/next/features/title"},next:{title:"Card Indexing (Pro)",permalink:"/next/features/indexing"}},s={},p=[{value:"Setting Custom Logo",id:"setting-custom-logo",level:3},{value:"What you'll need",id:"what-youll-need",level:4},{value:"Step 1: Procedure to convert logo into byte array",id:"step-1-procedure-to-convert-logo-into-byte-array",level:4},{value:"Step 2: Setting custom logo in sketch",id:"step-2-setting-custom-logo-in-sketch",level:4}],c={toc:p},u="wrapper";function m(e){let{components:t,...o}=e;return(0,n.kt)(u,(0,r.Z)({},c,o,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("div",{className:"pro-label"},(0,n.kt)("i",null,(0,n.kt)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.kt)("br",null),(0,n.kt)("img",{src:"/img/v4/custom-logo-mini.png",width:"305px",alt:"Energy Card Preview"}),"\xa0",(0,n.kt)("img",{src:"/img/v4/custom-logo-large.png",width:"400px",alt:"Energy Card Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,'If you are not familiar with the interface yet, the dashboard has an sidebar which can be expanded and collapsed, in that case the logo switches between "mini" and "large" scale version.'),(0,n.kt)("p",null,"Both these logos can be changed by the user by modifying the ",(0,n.kt)("inlineCode",{parentName:"p"},"logo.h")," & ",(0,n.kt)("inlineCode",{parentName:"p"},"logo.cpp")," file in the library source directory."),(0,n.kt)("h3",{id:"setting-custom-logo"},"Setting Custom Logo"),(0,n.kt)("p",null,"The logo used in DASH is image file converted to byte array. We'll go through the process below:"),(0,n.kt)("h4",{id:"what-youll-need"},"What you'll need"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"You'll need a compatible logo image ",(0,n.kt)("i",null,"( jpeg / png / gif / tif etc. )")," or an SVG file ( recommended due to small file size ). ",(0,n.kt)("i",null,(0,n.kt)("b",null,"Important: Please make sure your image is optimized and small in file size."))),(0,n.kt)("li",{parentName:"ul"},"Know the MIME file type of your image. You can use ",(0,n.kt)("a",{parentName:"li",href:"https://www.htmlstrip.com/mime-file-type-checker"},"HTTPStrip's mime utility"),".")),(0,n.kt)("h4",{id:"step-1-procedure-to-convert-logo-into-byte-array"},"Step 1: Procedure to convert logo into byte array"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Go to ",(0,n.kt)("a",{parentName:"li",href:"https://file2raw.labrat.one/"},"File2Raw Utility")," ( I created this utility a few years back for the purpose of converting files into byte array for C++ applications )."),(0,n.kt)("li",{parentName:"ol"},"Select your logo."),(0,n.kt)("li",{parentName:"ol"},'Select "Gzip Compress" & "Use PROGMEM (Arduino)".'),(0,n.kt)("li",{parentName:"ol"},'Click "Convert".')),(0,n.kt)("h4",{id:"step-2-setting-custom-logo-in-sketch"},"Step 2: Setting custom logo in sketch"),(0,n.kt)("p",null,"Now once your custom logo has been prepared, let's set it in our ESP-DASH Pro library. To do so, the library contains 2 files which contain the variable that govern 'mini' and 'large' logos used by our webpage."),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Go to ",(0,n.kt)("inlineCode",{parentName:"li"},"logo.h")),(0,n.kt)("li",{parentName:"ol"},"Set ",(0,n.kt)("inlineCode",{parentName:"li"},"DASH_MINI_LOGO_MIME")," to your image file type. To find your file's mime type, use this utility: ",(0,n.kt)("a",{parentName:"li",href:"https://www.htmlstrip.com/mime-file-type-checker"},"https://www.htmlstrip.com/mime-file-type-checker")),(0,n.kt)("li",{parentName:"ol"},"Set ",(0,n.kt)("inlineCode",{parentName:"li"},"DASH_MINI_LOGO_WIDTH")," & ",(0,n.kt)("inlineCode",{parentName:"li"},"DASH_MINI_LOGO_HEIGHT")," according to your desired size which will be displayed on the webpage."),(0,n.kt)("li",{parentName:"ol"},"Replace the array length of ",(0,n.kt)("inlineCode",{parentName:"li"},"DASH_MINI_LOGO")," with the newly generated array length."),(0,n.kt)("li",{parentName:"ol"},"Now open ",(0,n.kt)("inlineCode",{parentName:"li"},"logo.cpp")),(0,n.kt)("li",{parentName:"ol"},"Replace the data inside ",(0,n.kt)("inlineCode",{parentName:"li"},"DASH_MINI_LOGO")," with new data generated just before using File2Raw.")),(0,n.kt)("p",null,"Once done, you may repeat the same steps as above for ",(0,n.kt)("inlineCode",{parentName:"p"},"DASH_LARGE_LOGO"),"."))}m.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[5288],{5788:(e,t,o)=>{o.d(t,{Iu:()=>g,yg:()=>m});var r=o(1504);function n(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function i(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,r)}return o}function a(e){for(var t=1;t=0||(n[o]=e[o]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var s=r.createContext({}),p=function(e){var t=r.useContext(s),o=t;return e&&(o="function"==typeof e?e(t):a(a({},t),e)),o},g=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},y=r.forwardRef((function(e,t){var o=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,g=l(e,["components","mdxType","originalType","parentName"]),c=p(o),y=n,m=c["".concat(s,".").concat(y)]||c[y]||u[y]||i;return o?r.createElement(m,a(a({ref:t},g),{},{components:o})):r.createElement(m,a({ref:t},g))}));function m(e,t){var o=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=o.length,a=new Array(i);a[0]=y;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:n,a[1]=l;for(var p=2;p{o.r(t),o.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>u,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var r=o(5072),n=(o(1504),o(5788));const i={title:"Custom Logo",sidebar_label:"Custom Logo (Pro)",sidebar_position:4},a=void 0,l={unversionedId:"features/custom-logo",id:"features/custom-logo",title:"Custom Logo",description:"This feature is available in DASH Pro only.",source:"@site/docs/features/custom-logo.md",sourceDirName:"features",slug:"/features/custom-logo",permalink:"/next/features/custom-logo",draft:!1,tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Custom Logo",sidebar_label:"Custom Logo (Pro)",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Custom Title (Pro)",permalink:"/next/features/title"},next:{title:"Card Indexing (Pro)",permalink:"/next/features/indexing"}},s={},p=[{value:"Setting Custom Logo",id:"setting-custom-logo",level:3},{value:"What you'll need",id:"what-youll-need",level:4},{value:"Step 1: Procedure to convert logo into byte array",id:"step-1-procedure-to-convert-logo-into-byte-array",level:4},{value:"Step 2: Setting custom logo in sketch",id:"step-2-setting-custom-logo-in-sketch",level:4}],g={toc:p},c="wrapper";function u(e){let{components:t,...o}=e;return(0,n.yg)(c,(0,r.c)({},g,o,{components:t,mdxType:"MDXLayout"}),(0,n.yg)("div",{className:"pro-label"},(0,n.yg)("i",null,(0,n.yg)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.yg)("br",null),(0,n.yg)("img",{src:"/img/v4/custom-logo-mini.png",width:"305px",alt:"Energy Card Preview"}),"\xa0",(0,n.yg)("img",{src:"/img/v4/custom-logo-large.png",width:"400px",alt:"Energy Card Preview"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("p",null,'If you are not familiar with the interface yet, the dashboard has an sidebar which can be expanded and collapsed, in that case the logo switches between "mini" and "large" scale version.'),(0,n.yg)("p",null,"Both these logos can be changed by the user by modifying the ",(0,n.yg)("inlineCode",{parentName:"p"},"logo.h")," & ",(0,n.yg)("inlineCode",{parentName:"p"},"logo.cpp")," file in the library source directory."),(0,n.yg)("h3",{id:"setting-custom-logo"},"Setting Custom Logo"),(0,n.yg)("p",null,"The logo used in DASH is image file converted to byte array. We'll go through the process below:"),(0,n.yg)("h4",{id:"what-youll-need"},"What you'll need"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},"You'll need a compatible logo image ",(0,n.yg)("i",null,"( jpeg / png / gif / tif etc. )")," or an SVG file ( recommended due to small file size ). ",(0,n.yg)("i",null,(0,n.yg)("b",null,"Important: Please make sure your image is optimized and small in file size."))),(0,n.yg)("li",{parentName:"ul"},"Know the MIME file type of your image. You can use ",(0,n.yg)("a",{parentName:"li",href:"https://www.htmlstrip.com/mime-file-type-checker"},"HTTPStrip's mime utility"),".")),(0,n.yg)("h4",{id:"step-1-procedure-to-convert-logo-into-byte-array"},"Step 1: Procedure to convert logo into byte array"),(0,n.yg)("ol",null,(0,n.yg)("li",{parentName:"ol"},"Go to ",(0,n.yg)("a",{parentName:"li",href:"https://file2raw.labrat.one/"},"File2Raw Utility")," ( I created this utility a few years back for the purpose of converting files into byte array for C++ applications )."),(0,n.yg)("li",{parentName:"ol"},"Select your logo."),(0,n.yg)("li",{parentName:"ol"},'Select "Gzip Compress" & "Use PROGMEM (Arduino)".'),(0,n.yg)("li",{parentName:"ol"},'Click "Convert".')),(0,n.yg)("h4",{id:"step-2-setting-custom-logo-in-sketch"},"Step 2: Setting custom logo in sketch"),(0,n.yg)("p",null,"Now once your custom logo has been prepared, let's set it in our ESP-DASH Pro library. To do so, the library contains 2 files which contain the variable that govern 'mini' and 'large' logos used by our webpage."),(0,n.yg)("ol",null,(0,n.yg)("li",{parentName:"ol"},"Go to ",(0,n.yg)("inlineCode",{parentName:"li"},"logo.h")),(0,n.yg)("li",{parentName:"ol"},"Set ",(0,n.yg)("inlineCode",{parentName:"li"},"DASH_MINI_LOGO_MIME")," to your image file type. To find your file's mime type, use this utility: ",(0,n.yg)("a",{parentName:"li",href:"https://www.htmlstrip.com/mime-file-type-checker"},"https://www.htmlstrip.com/mime-file-type-checker")),(0,n.yg)("li",{parentName:"ol"},"Set ",(0,n.yg)("inlineCode",{parentName:"li"},"DASH_MINI_LOGO_WIDTH")," & ",(0,n.yg)("inlineCode",{parentName:"li"},"DASH_MINI_LOGO_HEIGHT")," according to your desired size which will be displayed on the webpage."),(0,n.yg)("li",{parentName:"ol"},"Replace the array length of ",(0,n.yg)("inlineCode",{parentName:"li"},"DASH_MINI_LOGO")," with the newly generated array length."),(0,n.yg)("li",{parentName:"ol"},"Now open ",(0,n.yg)("inlineCode",{parentName:"li"},"logo.cpp")),(0,n.yg)("li",{parentName:"ol"},"Replace the data inside ",(0,n.yg)("inlineCode",{parentName:"li"},"DASH_MINI_LOGO")," with new data generated just before using File2Raw.")),(0,n.yg)("p",null,"Once done, you may repeat the same steps as above for ",(0,n.yg)("inlineCode",{parentName:"p"},"DASH_LARGE_LOGO"),"."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/52044914.0a2722b9.js b/assets/js/52044914.0a2722b9.js deleted file mode 100644 index 48091111..00000000 --- a/assets/js/52044914.0a2722b9.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[3818],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>b});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var d=a.createContext({}),p=function(e){var t=a.useContext(d),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},c=function(e){var t=p(e.components);return a.createElement(d.Provider,{value:t},e.children)},s="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,l=e.originalType,d=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),s=p(r),m=n,b=s["".concat(d,".").concat(m)]||s[m]||u[m]||l;return r?a.createElement(b,i(i({ref:t},c),{},{components:r})):a.createElement(b,i({ref:t},c))}));function b(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=r.length,i=new Array(l);i[0]=m;var o={};for(var d in t)hasOwnProperty.call(t,d)&&(o[d]=t[d]);o.originalType=e,o[s]="string"==typeof e?e:n,i[1]=o;for(var p=2;p{r.r(t),r.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>u,frontMatter:()=>l,metadata:()=>o,toc:()=>p});var a=r(7462),n=(r(7294),r(3905));const l={title:"Slider Card",sidebar_label:"Slider",sidebar_position:6},i=void 0,o={unversionedId:"cards/slider",id:"version-v3.x.x/cards/slider",title:"Slider Card",description:"Preview:",source:"@site/versioned_docs/version-v3.x.x/cards/slider.md",sourceDirName:"cards",slug:"/cards/slider",permalink:"/v3.x.x/cards/slider",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:6,frontMatter:{title:"Slider Card",sidebar_label:"Slider",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"Status",permalink:"/v3.x.x/cards/status"},next:{title:"Text Input (Pro)",permalink:"/v3.x.x/cards/text-input"}},d={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Callback:",id:"callback",level:4},{value:"Updaters:",id:"updaters",level:4}],c={toc:p},s="wrapper";function u(e){let{components:t,...r}=e;return(0,n.kt)(s,(0,a.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("br",null),(0,n.kt)("img",{src:"/img//slider-card.png",width:"280px",alt:"Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"This card adds a interactive horizontal slider to your dashboard. Slider card is useful when you require a integer input within a certain range. ( Example use case: LED brightness control )"),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"SLIDER_CARD")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("p",null,"With slider card, Initializer requires ",(0,n.kt)("inlineCode",{parentName:"p"},"min")," & ",(0,n.kt)("inlineCode",{parentName:"p"},"max")," range."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Slider Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional), int min, int max)\n*/\nCard card1(&dashboard, SLIDER_CARD, "Test Slider", "", 0, 255);\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"callback"},"Callback:"),(0,n.kt)("p",null,"Slider Card requires a callback function which will be called when we receive a input from our dashboard. We will be calling our ",(0,n.kt)("inlineCode",{parentName:"p"},"attachCallback")," function and provide a lambda function with a ",(0,n.kt)("inlineCode",{parentName:"p"},"int")," argument."),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Note:")," You need to call the ",(0,n.kt)("inlineCode",{parentName:"p"},"update")," function and ",(0,n.kt)("inlineCode",{parentName:"p"},"sendUpdates")," immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/*\n We provide our attachCallback with a lambda function to handle incomming data\n `value` is the boolean sent from your dashboard\n*/\ncard1.attachCallback([&](int value){\n Serial.println("[Card1] Slider Callback Triggered: "+String(value));\n card1.update(value);\n dashboard.sendUpdates();\n});\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,n.kt)("p",null,"Or, update symbol along your value:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'card1.update(244, "%");\n')))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/52044914.91a67373.js b/assets/js/52044914.91a67373.js new file mode 100644 index 00000000..8ca52f81 --- /dev/null +++ b/assets/js/52044914.91a67373.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[5876],{5788:(e,r,a)=>{a.d(r,{Iu:()=>p,yg:()=>g});var n=a(1504);function t(e,r,a){return r in e?Object.defineProperty(e,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[r]=a,e}function l(e,r){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var r=1;r=0||(t[a]=e[a]);return t}(e,r);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(t[a]=e[a])}return t}var d=n.createContext({}),c=function(e){var r=n.useContext(d),a=r;return e&&(a="function"==typeof e?e(r):i(i({},r),e)),a},p=function(e){var r=c(e.components);return n.createElement(d.Provider,{value:r},e.children)},s="mdxType",u={inlineCode:"code",wrapper:function(e){var r=e.children;return n.createElement(n.Fragment,{},r)}},y=n.forwardRef((function(e,r){var a=e.components,t=e.mdxType,l=e.originalType,d=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),s=c(a),y=t,g=s["".concat(d,".").concat(y)]||s[y]||u[y]||l;return a?n.createElement(g,i(i({ref:r},p),{},{components:a})):n.createElement(g,i({ref:r},p))}));function g(e,r){var a=arguments,t=r&&r.mdxType;if("string"==typeof e||t){var l=a.length,i=new Array(l);i[0]=y;var o={};for(var d in r)hasOwnProperty.call(r,d)&&(o[d]=r[d]);o.originalType=e,o[s]="string"==typeof e?e:t,i[1]=o;for(var c=2;c{a.r(r),a.d(r,{assets:()=>d,contentTitle:()=>i,default:()=>u,frontMatter:()=>l,metadata:()=>o,toc:()=>c});var n=a(5072),t=(a(1504),a(5788));const l={title:"Slider Card",sidebar_label:"Slider",sidebar_position:6},i=void 0,o={unversionedId:"cards/slider",id:"version-v3.x.x/cards/slider",title:"Slider Card",description:"Preview:",source:"@site/versioned_docs/version-v3.x.x/cards/slider.md",sourceDirName:"cards",slug:"/cards/slider",permalink:"/v3.x.x/cards/slider",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:6,frontMatter:{title:"Slider Card",sidebar_label:"Slider",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"Status",permalink:"/v3.x.x/cards/status"},next:{title:"Text Input (Pro)",permalink:"/v3.x.x/cards/text-input"}},d={},c=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Callback:",id:"callback",level:4},{value:"Updaters:",id:"updaters",level:4}],p={toc:c},s="wrapper";function u(e){let{components:r,...a}=e;return(0,t.yg)(s,(0,n.c)({},p,a,{components:r,mdxType:"MDXLayout"}),(0,t.yg)("h4",{id:"preview"},"Preview:"),(0,t.yg)("br",null),(0,t.yg)("img",{src:"/img//slider-card.png",width:"280px",alt:"Preview"}),(0,t.yg)("br",null),(0,t.yg)("br",null),(0,t.yg)("p",null,"This card adds a interactive horizontal slider to your dashboard. Slider card is useful when you require a integer input within a certain range. ( Example use case: LED brightness control )"),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"type"},"Type:"),(0,t.yg)("p",null,(0,t.yg)("inlineCode",{parentName:"p"},"SLIDER_CARD")),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,t.yg)("ul",null,(0,t.yg)("li",{parentName:"ul"},(0,t.yg)("inlineCode",{parentName:"li"},"int"))),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"initializer"},"Initializer:"),(0,t.yg)("p",null,"With slider card, Initializer requires ",(0,t.yg)("inlineCode",{parentName:"p"},"min")," & ",(0,t.yg)("inlineCode",{parentName:"p"},"max")," range."),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Slider Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional), int min, int max)\n*/\nCard card1(&dashboard, SLIDER_CARD, "Test Slider", "", 0, 255);\n')),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"callback"},"Callback:"),(0,t.yg)("p",null,"Slider Card requires a callback function which will be called when we receive a input from our dashboard. We will be calling our ",(0,t.yg)("inlineCode",{parentName:"p"},"attachCallback")," function and provide a lambda function with a ",(0,t.yg)("inlineCode",{parentName:"p"},"int")," argument."),(0,t.yg)("p",null,(0,t.yg)("strong",{parentName:"p"},"Note:")," You need to call the ",(0,t.yg)("inlineCode",{parentName:"p"},"update")," function and ",(0,t.yg)("inlineCode",{parentName:"p"},"sendUpdates")," immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard."),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},'/*\n We provide our attachCallback with a lambda function to handle incomming data\n `value` is the boolean sent from your dashboard\n*/\ncard1.attachCallback([&](int value){\n Serial.println("[Card1] Slider Callback Triggered: "+String(value));\n card1.update(value);\n dashboard.sendUpdates();\n});\n')),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"updaters"},"Updaters:"),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,t.yg)("p",null,"Or, update symbol along your value:"),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},'card1.update(244, "%");\n')))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5327fe66.7cf40457.js b/assets/js/5327fe66.e039b93e.js similarity index 75% rename from assets/js/5327fe66.7cf40457.js rename to assets/js/5327fe66.e039b93e.js index f086f41f..bb2abf69 100644 --- a/assets/js/5327fe66.7cf40457.js +++ b/assets/js/5327fe66.e039b93e.js @@ -1 +1 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[8582],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>d});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(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 i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var u=n.createContext({}),c=function(e){var t=n.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=c(e.components);return n.createElement(u.Provider,{value:t},e.children)},l="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,u=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),l=c(r),m=o,d=l["".concat(u,".").concat(m)]||l[m]||f[m]||a;return r?n.createElement(d,i(i({ref:t},p),{},{components:r})):n.createElement(d,i({ref:t},p))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=m;var s={};for(var u in t)hasOwnProperty.call(t,u)&&(s[u]=t[u]);s.originalType=e,s[l]="string"==typeof e?e:o,i[1]=s;for(var c=2;c{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>f,frontMatter:()=>a,metadata:()=>s,toc:()=>c});var n=r(7462),o=(r(7294),r(3905));const a={title:"Custom URI",sidebar_label:"Custom URI",sidebar_position:0},i=void 0,s={unversionedId:"features/custom-uri",id:"version-v4.x.x/features/custom-uri",title:"Custom URI",description:"If you want to serve ESPDash at a path other than 'root' (ie. http:///) then you can use the constructor to supply the path of your choice.",source:"@site/versioned_docs/version-v4.x.x/features/custom-uri.md",sourceDirName:"features",slug:"/features/custom-uri",permalink:"/features/custom-uri",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:0,frontMatter:{title:"Custom URI",sidebar_label:"Custom URI",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Pie (Pro)",permalink:"/charts/pie"},next:{title:"User Authentication",permalink:"/features/authentication"}},u={},c=[{value:"Example:",id:"example",level:4}],p={toc:c},l="wrapper";function f(e){let{components:t,...r}=e;return(0,o.kt)(l,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"If you want to serve ESPDash at a path other than 'root' (ie. ",(0,o.kt)("inlineCode",{parentName:"p"},"http:///"),") then you can use the constructor to supply the path of your choice."),(0,o.kt)("h4",{id:"example"},"Example:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cpp"},'ESPDash dashboard(&server, "/dash");\n')),(0,o.kt)("p",null,"This will result in ESPDash being served at ",(0,o.kt)("inlineCode",{parentName:"p"},"http:///dash"),"."))}f.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[9516],{5788:(e,t,r)=>{r.d(t,{Iu:()=>p,yg:()=>y});var n=r(1504);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(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 i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var u=n.createContext({}),c=function(e){var t=n.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=c(e.components);return n.createElement(u.Provider,{value:t},e.children)},l="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,u=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),l=c(r),m=o,y=l["".concat(u,".").concat(m)]||l[m]||f[m]||a;return r?n.createElement(y,i(i({ref:t},p),{},{components:r})):n.createElement(y,i({ref:t},p))}));function y(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=m;var s={};for(var u in t)hasOwnProperty.call(t,u)&&(s[u]=t[u]);s.originalType=e,s[l]="string"==typeof e?e:o,i[1]=s;for(var c=2;c{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>f,frontMatter:()=>a,metadata:()=>s,toc:()=>c});var n=r(5072),o=(r(1504),r(5788));const a={title:"Custom URI",sidebar_label:"Custom URI",sidebar_position:0},i=void 0,s={unversionedId:"features/custom-uri",id:"version-v4.x.x/features/custom-uri",title:"Custom URI",description:"If you want to serve ESPDash at a path other than 'root' (ie. http:///) then you can use the constructor to supply the path of your choice.",source:"@site/versioned_docs/version-v4.x.x/features/custom-uri.md",sourceDirName:"features",slug:"/features/custom-uri",permalink:"/features/custom-uri",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:0,frontMatter:{title:"Custom URI",sidebar_label:"Custom URI",sidebar_position:0},sidebar:"tutorialSidebar",previous:{title:"Pie (Pro)",permalink:"/charts/pie"},next:{title:"User Authentication",permalink:"/features/authentication"}},u={},c=[{value:"Example:",id:"example",level:4}],p={toc:c},l="wrapper";function f(e){let{components:t,...r}=e;return(0,o.yg)(l,(0,n.c)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,o.yg)("p",null,"If you want to serve ESPDash at a path other than 'root' (ie. ",(0,o.yg)("inlineCode",{parentName:"p"},"http:///"),") then you can use the constructor to supply the path of your choice."),(0,o.yg)("h4",{id:"example"},"Example:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-cpp"},'ESPDash dashboard(&server, "/dash");\n')),(0,o.yg)("p",null,"This will result in ESPDash being served at ",(0,o.yg)("inlineCode",{parentName:"p"},"http:///dash"),"."))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5554be2c.30429bd1.js b/assets/js/5554be2c.30429bd1.js deleted file mode 100644 index a10973f1..00000000 --- a/assets/js/5554be2c.30429bd1.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[2817],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>y});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=a.createContext({}),p=function(e){var t=a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},u=function(e){var t=p(e.components);return a.createElement(s.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},f=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),c=p(r),f=n,y=c["".concat(s,".").concat(f)]||c[f]||d[f]||i;return r?a.createElement(y,l(l({ref:t},u),{},{components:r})):a.createElement(y,l({ref:t},u))}));function y(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,l=new Array(i);l[0]=f;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[c]="string"==typeof e?e:n,l[1]=o;for(var p=2;p{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>d,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var a=r(7462),n=(r(7294),r(3905));const i={title:"Pie Chart",sidebar_label:"Pie (Pro)",sidebar_position:4},l=void 0,o={unversionedId:"charts/pie",id:"version-v4.x.x/charts/pie",title:"Pie Chart",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v4.x.x/charts/pie.md",sourceDirName:"charts",slug:"/charts/pie",permalink:"/charts/pie",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:4,frontMatter:{title:"Pie Chart",sidebar_label:"Pie (Pro)",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Area (Pro)",permalink:"/charts/area"},next:{title:"Custom URI",permalink:"/features/custom-uri"}},s={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types for X-Axis:",id:"valid-data-types-for-x-axis",level:4},{value:"Valid Data Types for Y-Axis:",id:"valid-data-types-for-y-axis",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4},{value:"For X-Axis:",id:"for-x-axis",level:5},{value:"For Y-Axis:",id:"for-y-axis",level:5}],u={toc:p},c="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("div",{className:"pro-label"},(0,n.kt)("i",null,(0,n.kt)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/pie-chart.png",width:"380px",alt:"Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"PIE_CHART")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types-for-x-axis"},"Valid Data Types for X-Axis:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"String")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"const char*"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types-for-y-axis"},"Valid Data Types for Y-Axis:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Pie Chart\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name )\n*/\nChart chart1(&dashboard, PIE_CHART, "Chart Name");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("h5",{id:"for-x-axis"},"For X-Axis:"),(0,n.kt)("p",null,"X-Axis updater uses ",(0,n.kt)("inlineCode",{parentName:"p"},"updateX")," function."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/*\n Data for X Axis of our Chart\n This array can be of: `int` / `float` or `String`\n \n Note: this array should be kept in global scope. i.e. it should never be deleted from memory.\n*/\nString XAxis[] = {"Biscuits", "Cookies", "Milk", "Thing4", "Thing5"};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or\n (float array[], size_t array_size)\n or\n (String array[], size_t array_size)\n or\n (const char* array[], size_t array_size)\n*/\nchart1.updateX(XAxis, 5);\n')),(0,n.kt)("h5",{id:"for-y-axis"},"For Y-Axis:"),(0,n.kt)("p",null,"Y-Axis updater uses ",(0,n.kt)("inlineCode",{parentName:"p"},"updateY")," function."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"/*\n Data for Y Axis of our Chart\n This array can be of: `int` or `float`\n \n Note: this array should be kept in global scope. i.e. it should never be deleted from memory.\n*/\nint YAxis[] = {0, 0, 0, 0, 0};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or \n (float array[], size_t array_size)\n*/\nchart1.updateY(YAxis, 5);\n")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5554be2c.dbebffdc.js b/assets/js/5554be2c.dbebffdc.js new file mode 100644 index 00000000..47c96137 --- /dev/null +++ b/assets/js/5554be2c.dbebffdc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[9152],{5788:(e,r,a)=>{a.d(r,{Iu:()=>y,yg:()=>g});var t=a(1504);function n(e,r,a){return r in e?Object.defineProperty(e,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[r]=a,e}function i(e,r){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r&&(t=t.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),a.push.apply(a,t)}return a}function l(e){for(var r=1;r=0||(n[a]=e[a]);return n}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=t.createContext({}),p=function(e){var r=t.useContext(s),a=r;return e&&(a="function"==typeof e?e(r):l(l({},r),e)),a},y=function(e){var r=p(e.components);return t.createElement(s.Provider,{value:r},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var r=e.children;return t.createElement(t.Fragment,{},r)}},d=t.forwardRef((function(e,r){var a=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,y=o(e,["components","mdxType","originalType","parentName"]),u=p(a),d=n,g=u["".concat(s,".").concat(d)]||u[d]||c[d]||i;return a?t.createElement(g,l(l({ref:r},y),{},{components:a})):t.createElement(g,l({ref:r},y))}));function g(e,r){var a=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var i=a.length,l=new Array(i);l[0]=d;var o={};for(var s in r)hasOwnProperty.call(r,s)&&(o[s]=r[s]);o.originalType=e,o[u]="string"==typeof e?e:n,l[1]=o;for(var p=2;p{a.r(r),a.d(r,{assets:()=>s,contentTitle:()=>l,default:()=>c,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var t=a(5072),n=(a(1504),a(5788));const i={title:"Pie Chart",sidebar_label:"Pie (Pro)",sidebar_position:4},l=void 0,o={unversionedId:"charts/pie",id:"version-v4.x.x/charts/pie",title:"Pie Chart",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v4.x.x/charts/pie.md",sourceDirName:"charts",slug:"/charts/pie",permalink:"/charts/pie",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:4,frontMatter:{title:"Pie Chart",sidebar_label:"Pie (Pro)",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Area (Pro)",permalink:"/charts/area"},next:{title:"Custom URI",permalink:"/features/custom-uri"}},s={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types for X-Axis:",id:"valid-data-types-for-x-axis",level:4},{value:"Valid Data Types for Y-Axis:",id:"valid-data-types-for-y-axis",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4},{value:"For X-Axis:",id:"for-x-axis",level:5},{value:"For Y-Axis:",id:"for-y-axis",level:5}],y={toc:p},u="wrapper";function c(e){let{components:r,...a}=e;return(0,n.yg)(u,(0,t.c)({},y,a,{components:r,mdxType:"MDXLayout"}),(0,n.yg)("div",{className:"pro-label"},(0,n.yg)("i",null,(0,n.yg)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.yg)("h4",{id:"preview"},"Preview:"),(0,n.yg)("img",{className:"card-preview",src:"/img/v4/pie-chart.png",width:"380px",alt:"Preview"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"type"},"Type:"),(0,n.yg)("p",null,(0,n.yg)("inlineCode",{parentName:"p"},"PIE_CHART")),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types-for-x-axis"},"Valid Data Types for X-Axis:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"int")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"float")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"String")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"const char*"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types-for-y-axis"},"Valid Data Types for Y-Axis:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"int")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"float"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"initializer"},"Initializer:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Pie Chart\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name )\n*/\nChart chart1(&dashboard, PIE_CHART, "Chart Name");\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"updaters"},"Updaters:"),(0,n.yg)("h5",{id:"for-x-axis"},"For X-Axis:"),(0,n.yg)("p",null,"X-Axis updater uses ",(0,n.yg)("inlineCode",{parentName:"p"},"updateX")," function."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/*\n Data for X Axis of our Chart\n This array can be of: `int` / `float` or `String`\n \n Note: this array should be kept in global scope. i.e. it should never be deleted from memory.\n*/\nString XAxis[] = {"Biscuits", "Cookies", "Milk", "Thing4", "Thing5"};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or\n (float array[], size_t array_size)\n or\n (String array[], size_t array_size)\n or\n (const char* array[], size_t array_size)\n*/\nchart1.updateX(XAxis, 5);\n')),(0,n.yg)("h5",{id:"for-y-axis"},"For Y-Axis:"),(0,n.yg)("p",null,"Y-Axis updater uses ",(0,n.yg)("inlineCode",{parentName:"p"},"updateY")," function."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"/*\n Data for Y Axis of our Chart\n This array can be of: `int` or `float`\n \n Note: this array should be kept in global scope. i.e. it should never be deleted from memory.\n*/\nint YAxis[] = {0, 0, 0, 0, 0};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or \n (float array[], size_t array_size)\n*/\nchart1.updateY(YAxis, 5);\n")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/55c57bd6.2d7e4295.js b/assets/js/55c57bd6.2d7e4295.js deleted file mode 100644 index 044cf9b9..00000000 --- a/assets/js/55c57bd6.2d7e4295.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[8411],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>b});var n=a(7294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1;t=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var c=n.createContext({}),s=function(e){var t=n.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},d=function(e){var t=s(e.components);return n.createElement(c.Provider,{value:t},e.children)},p="mdxType",k={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var a=e.components,i=e.mdxType,r=e.originalType,c=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),p=s(a),u=i,b=p["".concat(c,".").concat(u)]||p[u]||k[u]||r;return a?n.createElement(b,l(l({ref:t},d),{},{components:a})):n.createElement(b,l({ref:t},d))}));function b(e,t){var a=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=a.length,l=new Array(r);l[0]=u;var o={};for(var c in t)hasOwnProperty.call(t,c)&&(o[c]=t[c]);o.originalType=e,o[p]="string"==typeof e?e:i,l[1]=o;for(var s=2;s{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>k,frontMatter:()=>r,metadata:()=>o,toc:()=>s});var n=a(7462),i=(a(7294),a(3905));const r={title:"Joystick Card",sidebar_label:"Joystick (Pro)",sidebar_position:7},l=void 0,o={unversionedId:"cards/joystick",id:"version-v3.x.x/cards/joystick",title:"Joystick Card",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v3.x.x/cards/joystick.md",sourceDirName:"cards",slug:"/cards/joystick",permalink:"/v3.x.x/cards/joystick",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:7,frontMatter:{title:"Joystick Card",sidebar_label:"Joystick (Pro)",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Text Input (Pro)",permalink:"/v3.x.x/cards/text-input"},next:{title:"Charts",permalink:"/v3.x.x/category/charts"}},c={},s=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Direction Lock:",id:"direction-lock",level:4},{value:"Callback:",id:"callback",level:4},{value:"Directional Callback:",id:"directional-callback",level:5},{value:"Coordinates Callback:",id:"coordinates-callback",level:5}],d={toc:s},p="wrapper";function k(e){let{components:t,...a}=e;return(0,i.kt)(p,(0,n.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("div",{style:{border:"1px solid rgba(255,0,0, 0.03)",padding:20,borderRadius:14,backgroundColor:"rgba(255,0,0, 0.03)",maxWidth:600}},(0,i.kt)("h4",{style:{fontWeight:"500",marginBottom:5}}," This feature is available in ",(0,i.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only.")),(0,i.kt)("h4",{id:"preview"},"Preview:"),(0,i.kt)("br",null),(0,i.kt)("img",{src:"/img//joystick.gif",width:"320px",alt:"Preview"}),(0,i.kt)("br",null),(0,i.kt)("br",null),(0,i.kt)("p",null,"This card adds a joystick to your dashboard to control some stuff and provides you with easy to interpret directional data via callback. You can even lock direction of the joystick to X or Y axis."),(0,i.kt)("br",null),(0,i.kt)("h4",{id:"type"},"Type:"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"JOYSTICK_CARD")),(0,i.kt)("br",null),(0,i.kt)("h4",{id:"initializer"},"Initializer:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Joystick Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* directionLock (optional) )\n*/\nCard joystick(&dashboard, JOYSTICK_CARD, "Joystick 1");\n')),(0,i.kt)("br",null),(0,i.kt)("h4",{id:"direction-lock"},"Direction Lock:"),(0,i.kt)("p",null,"You can lock joystick to X or Y Axis:"),(0,i.kt)("p",null,"Supply it with ",(0,i.kt)("inlineCode",{parentName:"p"},"lockX")," as 4th argument and it will lock to X axis."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cpp"},'Card joystick(&dashboard, JOYSTICK_CARD, "Joystick 1", "lockX");\n')),(0,i.kt)("br",null),(0,i.kt)("p",null,"Supply it with ",(0,i.kt)("inlineCode",{parentName:"p"},"lockY")," as 4th argument and it will lock to Y axis."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cpp"},'Card joystick(&dashboard, JOYSTICK_CARD, "Joystick 1", "lockY");\n')),(0,i.kt)("p",null,"By default, joystick works on both axis."),(0,i.kt)("h4",{id:"callback"},"Callback:"),(0,i.kt)("p",null,"Joystick Card requires a callback function which will be called when we receive a input from our dashboard. In setup block, we will be calling our ",(0,i.kt)("inlineCode",{parentName:"p"},"attachCallback")," function and provide a lambda (callback) function with a ",(0,i.kt)("inlineCode",{parentName:"p"},"const char*")," (character array) argument."),(0,i.kt)("p",null,"Joystick card has 2 callbacks, ",(0,i.kt)("inlineCode",{parentName:"p"},"directional")," and ",(0,i.kt)("inlineCode",{parentName:"p"},"coordinates"),":"),(0,i.kt)("h5",{id:"directional-callback"},"Directional Callback:"),(0,i.kt)("p",null,"This callback will return the active direction of your joystick when it's moved. It will be one of the following:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"up")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"down")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"left")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"right")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"idle"))),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cpp"},"/*\n We provide our attachCallback with a lambda function to handle incomming data\n `value` is the direction of joystick 'up', 'down', 'left', 'right' or 'idle'\n*/\njoystick.attachCallback([&](const char* direction){\n Serial.println(\"[Joystick] Current Direction: \"+String(direction));\n});\n")),(0,i.kt)("h5",{id:"coordinates-callback"},"Coordinates Callback:"),(0,i.kt)("p",null,"This callback will return the active coordinates of the thumb of your joystick when it's moved. It will provide x and y coordinates which ranges from ",(0,i.kt)("inlineCode",{parentName:"p"},"-60")," to ",(0,i.kt)("inlineCode",{parentName:"p"},"60")," on each axis."),(0,i.kt)("p",null,"In case of X axis: ",(0,i.kt)("inlineCode",{parentName:"p"},"-60")," is left, ",(0,i.kt)("inlineCode",{parentName:"p"},"60")," is right.\nFor Y axis: ",(0,i.kt)("inlineCode",{parentName:"p"},"-60")," is up, and ",(0,i.kt)("inlineCode",{parentName:"p"},"60")," is bottom."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cpp"},'/*\n We provide our attachCallback with a lambda function to handle incomming data.\n In this case, we will be getting x and y axis coordinates in range of -60 to 60\n*/\njoystick.attachCallback([&](int8_t x, int8_t y){\n Serial.printf("[Joystick] X Axis: %d, Y Axis: %d\\n", x, y);\n});\n')),(0,i.kt)("br",null),(0,i.kt)("br",null))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/55c57bd6.8318919e.js b/assets/js/55c57bd6.8318919e.js new file mode 100644 index 00000000..73120b01 --- /dev/null +++ b/assets/js/55c57bd6.8318919e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[2940],{5788:(e,a,t)=>{t.d(a,{Iu:()=>d,yg:()=>g});var n=t(1504);function i(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function r(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,n)}return t}function l(e){for(var a=1;a=0||(i[t]=e[t]);return i}(e,a);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var c=n.createContext({}),s=function(e){var a=n.useContext(c),t=a;return e&&(t="function"==typeof e?e(a):l(l({},a),e)),t},d=function(e){var a=s(e.components);return n.createElement(c.Provider,{value:a},e.children)},p="mdxType",y={inlineCode:"code",wrapper:function(e){var a=e.children;return n.createElement(n.Fragment,{},a)}},u=n.forwardRef((function(e,a){var t=e.components,i=e.mdxType,r=e.originalType,c=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),p=s(t),u=i,g=p["".concat(c,".").concat(u)]||p[u]||y[u]||r;return t?n.createElement(g,l(l({ref:a},d),{},{components:t})):n.createElement(g,l({ref:a},d))}));function g(e,a){var t=arguments,i=a&&a.mdxType;if("string"==typeof e||i){var r=t.length,l=new Array(r);l[0]=u;var o={};for(var c in a)hasOwnProperty.call(a,c)&&(o[c]=a[c]);o.originalType=e,o[p]="string"==typeof e?e:i,l[1]=o;for(var s=2;s{t.r(a),t.d(a,{assets:()=>c,contentTitle:()=>l,default:()=>y,frontMatter:()=>r,metadata:()=>o,toc:()=>s});var n=t(5072),i=(t(1504),t(5788));const r={title:"Joystick Card",sidebar_label:"Joystick (Pro)",sidebar_position:7},l=void 0,o={unversionedId:"cards/joystick",id:"version-v3.x.x/cards/joystick",title:"Joystick Card",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v3.x.x/cards/joystick.md",sourceDirName:"cards",slug:"/cards/joystick",permalink:"/v3.x.x/cards/joystick",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:7,frontMatter:{title:"Joystick Card",sidebar_label:"Joystick (Pro)",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Text Input (Pro)",permalink:"/v3.x.x/cards/text-input"},next:{title:"Charts",permalink:"/v3.x.x/category/charts"}},c={},s=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Direction Lock:",id:"direction-lock",level:4},{value:"Callback:",id:"callback",level:4},{value:"Directional Callback:",id:"directional-callback",level:5},{value:"Coordinates Callback:",id:"coordinates-callback",level:5}],d={toc:s},p="wrapper";function y(e){let{components:a,...t}=e;return(0,i.yg)(p,(0,n.c)({},d,t,{components:a,mdxType:"MDXLayout"}),(0,i.yg)("div",{style:{border:"1px solid rgba(255,0,0, 0.03)",padding:20,borderRadius:14,backgroundColor:"rgba(255,0,0, 0.03)",maxWidth:600}},(0,i.yg)("h4",{style:{fontWeight:"500",marginBottom:5}}," This feature is available in ",(0,i.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only.")),(0,i.yg)("h4",{id:"preview"},"Preview:"),(0,i.yg)("br",null),(0,i.yg)("img",{src:"/img//joystick.gif",width:"320px",alt:"Preview"}),(0,i.yg)("br",null),(0,i.yg)("br",null),(0,i.yg)("p",null,"This card adds a joystick to your dashboard to control some stuff and provides you with easy to interpret directional data via callback. You can even lock direction of the joystick to X or Y axis."),(0,i.yg)("br",null),(0,i.yg)("h4",{id:"type"},"Type:"),(0,i.yg)("p",null,(0,i.yg)("inlineCode",{parentName:"p"},"JOYSTICK_CARD")),(0,i.yg)("br",null),(0,i.yg)("h4",{id:"initializer"},"Initializer:"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Joystick Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* directionLock (optional) )\n*/\nCard joystick(&dashboard, JOYSTICK_CARD, "Joystick 1");\n')),(0,i.yg)("br",null),(0,i.yg)("h4",{id:"direction-lock"},"Direction Lock:"),(0,i.yg)("p",null,"You can lock joystick to X or Y Axis:"),(0,i.yg)("p",null,"Supply it with ",(0,i.yg)("inlineCode",{parentName:"p"},"lockX")," as 4th argument and it will lock to X axis."),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-cpp"},'Card joystick(&dashboard, JOYSTICK_CARD, "Joystick 1", "lockX");\n')),(0,i.yg)("br",null),(0,i.yg)("p",null,"Supply it with ",(0,i.yg)("inlineCode",{parentName:"p"},"lockY")," as 4th argument and it will lock to Y axis."),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-cpp"},'Card joystick(&dashboard, JOYSTICK_CARD, "Joystick 1", "lockY");\n')),(0,i.yg)("p",null,"By default, joystick works on both axis."),(0,i.yg)("h4",{id:"callback"},"Callback:"),(0,i.yg)("p",null,"Joystick Card requires a callback function which will be called when we receive a input from our dashboard. In setup block, we will be calling our ",(0,i.yg)("inlineCode",{parentName:"p"},"attachCallback")," function and provide a lambda (callback) function with a ",(0,i.yg)("inlineCode",{parentName:"p"},"const char*")," (character array) argument."),(0,i.yg)("p",null,"Joystick card has 2 callbacks, ",(0,i.yg)("inlineCode",{parentName:"p"},"directional")," and ",(0,i.yg)("inlineCode",{parentName:"p"},"coordinates"),":"),(0,i.yg)("h5",{id:"directional-callback"},"Directional Callback:"),(0,i.yg)("p",null,"This callback will return the active direction of your joystick when it's moved. It will be one of the following:"),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"up")),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"down")),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"left")),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"right")),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"idle"))),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-cpp"},"/*\n We provide our attachCallback with a lambda function to handle incomming data\n `value` is the direction of joystick 'up', 'down', 'left', 'right' or 'idle'\n*/\njoystick.attachCallback([&](const char* direction){\n Serial.println(\"[Joystick] Current Direction: \"+String(direction));\n});\n")),(0,i.yg)("h5",{id:"coordinates-callback"},"Coordinates Callback:"),(0,i.yg)("p",null,"This callback will return the active coordinates of the thumb of your joystick when it's moved. It will provide x and y coordinates which ranges from ",(0,i.yg)("inlineCode",{parentName:"p"},"-60")," to ",(0,i.yg)("inlineCode",{parentName:"p"},"60")," on each axis."),(0,i.yg)("p",null,"In case of X axis: ",(0,i.yg)("inlineCode",{parentName:"p"},"-60")," is left, ",(0,i.yg)("inlineCode",{parentName:"p"},"60")," is right.\nFor Y axis: ",(0,i.yg)("inlineCode",{parentName:"p"},"-60")," is up, and ",(0,i.yg)("inlineCode",{parentName:"p"},"60")," is bottom."),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-cpp"},'/*\n We provide our attachCallback with a lambda function to handle incomming data.\n In this case, we will be getting x and y axis coordinates in range of -60 to 60\n*/\njoystick.attachCallback([&](int8_t x, int8_t y){\n Serial.printf("[Joystick] X Axis: %d, Y Axis: %d\\n", x, y);\n});\n')),(0,i.yg)("br",null),(0,i.yg)("br",null))}y.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/56927624.39c7f16e.js b/assets/js/56927624.39c7f16e.js deleted file mode 100644 index a6efb3a3..00000000 --- a/assets/js/56927624.39c7f16e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[6160],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var n=a(7294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1;t=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var c=n.createContext({}),s=function(e){var t=n.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},p=function(e){var t=s(e.components);return n.createElement(c.Provider,{value:t},e.children)},d="mdxType",k={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var a=e.components,i=e.mdxType,r=e.originalType,c=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),d=s(a),u=i,m=d["".concat(c,".").concat(u)]||d[u]||k[u]||r;return a?n.createElement(m,l(l({ref:t},p),{},{components:a})):n.createElement(m,l({ref:t},p))}));function m(e,t){var a=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=a.length,l=new Array(r);l[0]=u;var o={};for(var c in t)hasOwnProperty.call(t,c)&&(o[c]=t[c]);o.originalType=e,o[d]="string"==typeof e?e:i,l[1]=o;for(var s=2;s{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>k,frontMatter:()=>r,metadata:()=>o,toc:()=>s});var n=a(7462),i=(a(7294),a(3905));const r={title:"Joystick Card",sidebar_label:"Joystick (Pro)",sidebar_position:7},l=void 0,o={unversionedId:"cards/joystick",id:"cards/joystick",title:"Joystick Card",description:"This feature is available in DASH Pro only.",source:"@site/docs/cards/joystick.md",sourceDirName:"cards",slug:"/cards/joystick",permalink:"/next/cards/joystick",draft:!1,tags:[],version:"current",sidebarPosition:7,frontMatter:{title:"Joystick Card",sidebar_label:"Joystick (Pro)",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Text Input (Pro)",permalink:"/next/cards/text-input"},next:{title:"Dropdown (Pro)",permalink:"/next/cards/dropdown"}},c={},s=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Direction Lock:",id:"direction-lock",level:4},{value:"Callback:",id:"callback",level:4},{value:"Directional Callback:",id:"directional-callback",level:5},{value:"Coordinates Callback:",id:"coordinates-callback",level:5}],p={toc:s},d="wrapper";function k(e){let{components:t,...a}=e;return(0,i.kt)(d,(0,n.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("div",{className:"pro-label"},(0,i.kt)("i",null,(0,i.kt)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,i.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,i.kt)("h4",{id:"preview"},"Preview:"),(0,i.kt)("img",{className:"card-preview",src:"/img/v4/joystick-card.png",width:"280px",alt:"Preview"}),(0,i.kt)("br",null),(0,i.kt)("br",null),(0,i.kt)("p",null,"This card adds a joystick to your dashboard to control some stuff and provides you with easy to interpret directional data via callback. You can even lock direction of the joystick to X or Y axis."),(0,i.kt)("br",null),(0,i.kt)("h4",{id:"type"},"Type:"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"JOYSTICK_CARD")),(0,i.kt)("br",null),(0,i.kt)("h4",{id:"initializer"},"Initializer:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Joystick Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* directionLock (optional) )\n*/\nCard joystick(&dashboard, JOYSTICK_CARD, "Joystick 1");\n')),(0,i.kt)("br",null),(0,i.kt)("h4",{id:"direction-lock"},"Direction Lock:"),(0,i.kt)("p",null,"You can lock joystick to X or Y Axis:"),(0,i.kt)("p",null,"Supply it with ",(0,i.kt)("inlineCode",{parentName:"p"},"lockX")," as 4th argument and it will lock to X axis."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cpp"},'Card joystick(&dashboard, JOYSTICK_CARD, "Joystick 1", "lockX");\n')),(0,i.kt)("br",null),(0,i.kt)("p",null,"Supply it with ",(0,i.kt)("inlineCode",{parentName:"p"},"lockY")," as 4th argument and it will lock to Y axis."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cpp"},'Card joystick(&dashboard, JOYSTICK_CARD, "Joystick 1", "lockY");\n')),(0,i.kt)("p",null,"By default, joystick works on both axis."),(0,i.kt)("h4",{id:"callback"},"Callback:"),(0,i.kt)("p",null,"Joystick Card requires a callback function which will be called when we receive a input from our dashboard. In setup block, we will be calling our ",(0,i.kt)("inlineCode",{parentName:"p"},"attachCallback")," function and provide a lambda (callback) function with a ",(0,i.kt)("inlineCode",{parentName:"p"},"const char*")," (character array) argument."),(0,i.kt)("p",null,"Joystick card has 2 callbacks, ",(0,i.kt)("inlineCode",{parentName:"p"},"directional")," and ",(0,i.kt)("inlineCode",{parentName:"p"},"coordinates"),":"),(0,i.kt)("h5",{id:"directional-callback"},"Directional Callback:"),(0,i.kt)("p",null,"This callback will return the active direction of your joystick when it's moved. It will be one of the following:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"up")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"down")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"left")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"right")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"idle"))),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cpp"},"/*\n We provide our attachCallback with a lambda function to handle incomming data\n `value` is the direction of joystick 'up', 'down', 'left', 'right' or 'idle'\n*/\njoystick.attachCallback([&](const char* direction){\n Serial.println(\"[Joystick] Current Direction: \"+String(direction));\n});\n")),(0,i.kt)("h5",{id:"coordinates-callback"},"Coordinates Callback:"),(0,i.kt)("p",null,"This callback will return the active coordinates of the thumb of your joystick when it's moved. It will provide x and y coordinates which ranges from ",(0,i.kt)("inlineCode",{parentName:"p"},"-60")," to ",(0,i.kt)("inlineCode",{parentName:"p"},"60")," on each axis."),(0,i.kt)("p",null,"In case of X axis: ",(0,i.kt)("inlineCode",{parentName:"p"},"-60")," is left, ",(0,i.kt)("inlineCode",{parentName:"p"},"60")," is right.\nFor Y axis: ",(0,i.kt)("inlineCode",{parentName:"p"},"-60")," is up, and ",(0,i.kt)("inlineCode",{parentName:"p"},"60")," is bottom."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cpp"},'/*\n We provide our attachCallback with a lambda function to handle incomming data.\n In this case, we will be getting x and y axis coordinates in range of -60 to 60\n*/\njoystick.attachCallback([&](int8_t x, int8_t y){\n Serial.printf("[Joystick] X Axis: %d, Y Axis: %d\\n", x, y);\n});\n')),(0,i.kt)("br",null),(0,i.kt)("br",null))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/56927624.ca48a20a.js b/assets/js/56927624.ca48a20a.js new file mode 100644 index 00000000..66aff423 --- /dev/null +++ b/assets/js/56927624.ca48a20a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[1496],{5788:(e,a,t)=>{t.d(a,{Iu:()=>p,yg:()=>g});var n=t(1504);function i(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function r(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,n)}return t}function l(e){for(var a=1;a=0||(i[t]=e[t]);return i}(e,a);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var c=n.createContext({}),s=function(e){var a=n.useContext(c),t=a;return e&&(t="function"==typeof e?e(a):l(l({},a),e)),t},p=function(e){var a=s(e.components);return n.createElement(c.Provider,{value:a},e.children)},d="mdxType",y={inlineCode:"code",wrapper:function(e){var a=e.children;return n.createElement(n.Fragment,{},a)}},u=n.forwardRef((function(e,a){var t=e.components,i=e.mdxType,r=e.originalType,c=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),d=s(t),u=i,g=d["".concat(c,".").concat(u)]||d[u]||y[u]||r;return t?n.createElement(g,l(l({ref:a},p),{},{components:t})):n.createElement(g,l({ref:a},p))}));function g(e,a){var t=arguments,i=a&&a.mdxType;if("string"==typeof e||i){var r=t.length,l=new Array(r);l[0]=u;var o={};for(var c in a)hasOwnProperty.call(a,c)&&(o[c]=a[c]);o.originalType=e,o[d]="string"==typeof e?e:i,l[1]=o;for(var s=2;s{t.r(a),t.d(a,{assets:()=>c,contentTitle:()=>l,default:()=>y,frontMatter:()=>r,metadata:()=>o,toc:()=>s});var n=t(5072),i=(t(1504),t(5788));const r={title:"Joystick Card",sidebar_label:"Joystick (Pro)",sidebar_position:7},l=void 0,o={unversionedId:"cards/joystick",id:"cards/joystick",title:"Joystick Card",description:"This feature is available in DASH Pro only.",source:"@site/docs/cards/joystick.md",sourceDirName:"cards",slug:"/cards/joystick",permalink:"/next/cards/joystick",draft:!1,tags:[],version:"current",sidebarPosition:7,frontMatter:{title:"Joystick Card",sidebar_label:"Joystick (Pro)",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Text Input (Pro)",permalink:"/next/cards/text-input"},next:{title:"Dropdown (Pro)",permalink:"/next/cards/dropdown"}},c={},s=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Direction Lock:",id:"direction-lock",level:4},{value:"Callback:",id:"callback",level:4},{value:"Directional Callback:",id:"directional-callback",level:5},{value:"Coordinates Callback:",id:"coordinates-callback",level:5}],p={toc:s},d="wrapper";function y(e){let{components:a,...t}=e;return(0,i.yg)(d,(0,n.c)({},p,t,{components:a,mdxType:"MDXLayout"}),(0,i.yg)("div",{className:"pro-label"},(0,i.yg)("i",null,(0,i.yg)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,i.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,i.yg)("h4",{id:"preview"},"Preview:"),(0,i.yg)("img",{className:"card-preview",src:"/img/v4/joystick-card.png",width:"280px",alt:"Preview"}),(0,i.yg)("br",null),(0,i.yg)("br",null),(0,i.yg)("p",null,"This card adds a joystick to your dashboard to control some stuff and provides you with easy to interpret directional data via callback. You can even lock direction of the joystick to X or Y axis."),(0,i.yg)("br",null),(0,i.yg)("h4",{id:"type"},"Type:"),(0,i.yg)("p",null,(0,i.yg)("inlineCode",{parentName:"p"},"JOYSTICK_CARD")),(0,i.yg)("br",null),(0,i.yg)("h4",{id:"initializer"},"Initializer:"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Joystick Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* directionLock (optional) )\n*/\nCard joystick(&dashboard, JOYSTICK_CARD, "Joystick 1");\n')),(0,i.yg)("br",null),(0,i.yg)("h4",{id:"direction-lock"},"Direction Lock:"),(0,i.yg)("p",null,"You can lock joystick to X or Y Axis:"),(0,i.yg)("p",null,"Supply it with ",(0,i.yg)("inlineCode",{parentName:"p"},"lockX")," as 4th argument and it will lock to X axis."),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-cpp"},'Card joystick(&dashboard, JOYSTICK_CARD, "Joystick 1", "lockX");\n')),(0,i.yg)("br",null),(0,i.yg)("p",null,"Supply it with ",(0,i.yg)("inlineCode",{parentName:"p"},"lockY")," as 4th argument and it will lock to Y axis."),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-cpp"},'Card joystick(&dashboard, JOYSTICK_CARD, "Joystick 1", "lockY");\n')),(0,i.yg)("p",null,"By default, joystick works on both axis."),(0,i.yg)("h4",{id:"callback"},"Callback:"),(0,i.yg)("p",null,"Joystick Card requires a callback function which will be called when we receive a input from our dashboard. In setup block, we will be calling our ",(0,i.yg)("inlineCode",{parentName:"p"},"attachCallback")," function and provide a lambda (callback) function with a ",(0,i.yg)("inlineCode",{parentName:"p"},"const char*")," (character array) argument."),(0,i.yg)("p",null,"Joystick card has 2 callbacks, ",(0,i.yg)("inlineCode",{parentName:"p"},"directional")," and ",(0,i.yg)("inlineCode",{parentName:"p"},"coordinates"),":"),(0,i.yg)("h5",{id:"directional-callback"},"Directional Callback:"),(0,i.yg)("p",null,"This callback will return the active direction of your joystick when it's moved. It will be one of the following:"),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"up")),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"down")),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"left")),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"right")),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"idle"))),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-cpp"},"/*\n We provide our attachCallback with a lambda function to handle incomming data\n `value` is the direction of joystick 'up', 'down', 'left', 'right' or 'idle'\n*/\njoystick.attachCallback([&](const char* direction){\n Serial.println(\"[Joystick] Current Direction: \"+String(direction));\n});\n")),(0,i.yg)("h5",{id:"coordinates-callback"},"Coordinates Callback:"),(0,i.yg)("p",null,"This callback will return the active coordinates of the thumb of your joystick when it's moved. It will provide x and y coordinates which ranges from ",(0,i.yg)("inlineCode",{parentName:"p"},"-60")," to ",(0,i.yg)("inlineCode",{parentName:"p"},"60")," on each axis."),(0,i.yg)("p",null,"In case of X axis: ",(0,i.yg)("inlineCode",{parentName:"p"},"-60")," is left, ",(0,i.yg)("inlineCode",{parentName:"p"},"60")," is right.\nFor Y axis: ",(0,i.yg)("inlineCode",{parentName:"p"},"-60")," is up, and ",(0,i.yg)("inlineCode",{parentName:"p"},"60")," is bottom."),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-cpp"},'/*\n We provide our attachCallback with a lambda function to handle incomming data.\n In this case, we will be getting x and y axis coordinates in range of -60 to 60\n*/\njoystick.attachCallback([&](int8_t x, int8_t y){\n Serial.printf("[Joystick] X Axis: %d, Y Axis: %d\\n", x, y);\n});\n')),(0,i.yg)("br",null),(0,i.yg)("br",null))}y.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5942c4f9.349f5f36.js b/assets/js/5942c4f9.349f5f36.js new file mode 100644 index 00000000..e1d1a4c0 --- /dev/null +++ b/assets/js/5942c4f9.349f5f36.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[5972],{5788:(e,r,n)=>{n.d(r,{Iu:()=>d,yg:()=>y});var a=n(1504);function t(e,r,n){return r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}function i(e,r){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);r&&(a=a.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var r=1;r=0||(t[n]=e[n]);return t}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(t[n]=e[n])}return t}var s=a.createContext({}),p=function(e){var r=a.useContext(s),n=r;return e&&(n="function"==typeof e?e(r):l(l({},r),e)),n},d=function(e){var r=p(e.components);return a.createElement(s.Provider,{value:r},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var r=e.children;return a.createElement(a.Fragment,{},r)}},g=a.forwardRef((function(e,r){var n=e.components,t=e.mdxType,i=e.originalType,s=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),c=p(n),g=t,y=c["".concat(s,".").concat(g)]||c[g]||u[g]||i;return n?a.createElement(y,l(l({ref:r},d),{},{components:n})):a.createElement(y,l({ref:r},d))}));function y(e,r){var n=arguments,t=r&&r.mdxType;if("string"==typeof e||t){var i=n.length,l=new Array(i);l[0]=g;var o={};for(var s in r)hasOwnProperty.call(r,s)&&(o[s]=r[s]);o.originalType=e,o[c]="string"==typeof e?e:t,l[1]=o;for(var p=2;p{n.r(r),n.d(r,{assets:()=>s,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var a=n(5072),t=(n(1504),n(5788));const i={title:"Progress Card",sidebar_label:"Progress",sidebar_position:4},l=void 0,o={unversionedId:"cards/progress",id:"version-v3.x.x/cards/progress",title:"Progress Card",description:"Preview:",source:"@site/versioned_docs/version-v3.x.x/cards/progress.md",sourceDirName:"cards",slug:"/cards/progress",permalink:"/v3.x.x/cards/progress",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:4,frontMatter:{title:"Progress Card",sidebar_label:"Progress",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Energy (Pro)",permalink:"/v3.x.x/cards/energy"},next:{title:"Button",permalink:"/v3.x.x/cards/button"}},s={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],d={toc:p},c="wrapper";function u(e){let{components:r,...n}=e;return(0,t.yg)(c,(0,a.c)({},d,n,{components:r,mdxType:"MDXLayout"}),(0,t.yg)("h4",{id:"preview"},"Preview:"),(0,t.yg)("img",{src:"/img//progress-card.png",width:"280px",alt:"Preview"}),(0,t.yg)("br",null),(0,t.yg)("br",null),(0,t.yg)("p",null,"This card displays a horizontal range based on a ",(0,t.yg)("inlineCode",{parentName:"p"},"integer")," or a ",(0,t.yg)("inlineCode",{parentName:"p"},"float")," value. It makes data visualization user friendly."),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"type"},"Type:"),(0,t.yg)("p",null,(0,t.yg)("inlineCode",{parentName:"p"},"PROGRESS_CARD")),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,t.yg)("ul",null,(0,t.yg)("li",{parentName:"ul"},(0,t.yg)("inlineCode",{parentName:"li"},"int")),(0,t.yg)("li",{parentName:"ul"},(0,t.yg)("inlineCode",{parentName:"li"},"float"))),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"initializer"},"Initializer:"),(0,t.yg)("p",null,"With progress card, Initializer requires ",(0,t.yg)("inlineCode",{parentName:"p"},"min")," & ",(0,t.yg)("inlineCode",{parentName:"p"},"max")," range."),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Progress Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional), int min, int max)\n*/\nCard card1(&dashboard, PROGRESS_CARD, "Progress1", "", 0, 255);\n')),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"updaters"},"Updaters:"),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(float value);\n")),(0,t.yg)("p",null,"Or, update symbol along your value:"),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},'card1.update(244, "%");\n')))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5942c4f9.52772b0a.js b/assets/js/5942c4f9.52772b0a.js deleted file mode 100644 index 19e83612..00000000 --- a/assets/js/5942c4f9.52772b0a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[6637],{3905:(e,r,t)=>{t.d(r,{Zo:()=>d,kt:()=>v});var n=t(7294);function a(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function i(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function l(e){for(var r=1;r=0||(a[t]=e[t]);return a}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var s=n.createContext({}),p=function(e){var r=n.useContext(s),t=r;return e&&(t="function"==typeof e?e(r):l(l({},r),e)),t},d=function(e){var r=p(e.components);return n.createElement(s.Provider,{value:r},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var r=e.children;return n.createElement(n.Fragment,{},r)}},m=n.forwardRef((function(e,r){var t=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),c=p(t),m=a,v=c["".concat(s,".").concat(m)]||c[m]||u[m]||i;return t?n.createElement(v,l(l({ref:r},d),{},{components:t})):n.createElement(v,l({ref:r},d))}));function v(e,r){var t=arguments,a=r&&r.mdxType;if("string"==typeof e||a){var i=t.length,l=new Array(i);l[0]=m;var o={};for(var s in r)hasOwnProperty.call(r,s)&&(o[s]=r[s]);o.originalType=e,o[c]="string"==typeof e?e:a,l[1]=o;for(var p=2;p{t.r(r),t.d(r,{assets:()=>s,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var n=t(7462),a=(t(7294),t(3905));const i={title:"Progress Card",sidebar_label:"Progress",sidebar_position:4},l=void 0,o={unversionedId:"cards/progress",id:"version-v3.x.x/cards/progress",title:"Progress Card",description:"Preview:",source:"@site/versioned_docs/version-v3.x.x/cards/progress.md",sourceDirName:"cards",slug:"/cards/progress",permalink:"/v3.x.x/cards/progress",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:4,frontMatter:{title:"Progress Card",sidebar_label:"Progress",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Energy (Pro)",permalink:"/v3.x.x/cards/energy"},next:{title:"Button",permalink:"/v3.x.x/cards/button"}},s={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],d={toc:p},c="wrapper";function u(e){let{components:r,...t}=e;return(0,a.kt)(c,(0,n.Z)({},d,t,{components:r,mdxType:"MDXLayout"}),(0,a.kt)("h4",{id:"preview"},"Preview:"),(0,a.kt)("img",{src:"/img//progress-card.png",width:"280px",alt:"Preview"}),(0,a.kt)("br",null),(0,a.kt)("br",null),(0,a.kt)("p",null,"This card displays a horizontal range based on a ",(0,a.kt)("inlineCode",{parentName:"p"},"integer")," or a ",(0,a.kt)("inlineCode",{parentName:"p"},"float")," value. It makes data visualization user friendly."),(0,a.kt)("br",null),(0,a.kt)("h4",{id:"type"},"Type:"),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"PROGRESS_CARD")),(0,a.kt)("br",null),(0,a.kt)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"int")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"float"))),(0,a.kt)("br",null),(0,a.kt)("h4",{id:"initializer"},"Initializer:"),(0,a.kt)("p",null,"With progress card, Initializer requires ",(0,a.kt)("inlineCode",{parentName:"p"},"min")," & ",(0,a.kt)("inlineCode",{parentName:"p"},"max")," range."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Progress Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional), int min, int max)\n*/\nCard card1(&dashboard, PROGRESS_CARD, "Progress1", "", 0, 255);\n')),(0,a.kt)("br",null),(0,a.kt)("h4",{id:"updaters"},"Updaters:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(float value);\n")),(0,a.kt)("p",null,"Or, update symbol along your value:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cpp"},'card1.update(244, "%");\n')))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5acd1b26.1d7be724.js b/assets/js/5acd1b26.1d7be724.js new file mode 100644 index 00000000..aac613c8 --- /dev/null +++ b/assets/js/5acd1b26.1d7be724.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[624],{5788:(e,r,a)=>{a.d(r,{Iu:()=>y,yg:()=>g});var t=a(1504);function n(e,r,a){return r in e?Object.defineProperty(e,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[r]=a,e}function i(e,r){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r&&(t=t.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),a.push.apply(a,t)}return a}function l(e){for(var r=1;r=0||(n[a]=e[a]);return n}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=t.createContext({}),p=function(e){var r=t.useContext(s),a=r;return e&&(a="function"==typeof e?e(r):l(l({},r),e)),a},y=function(e){var r=p(e.components);return t.createElement(s.Provider,{value:r},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var r=e.children;return t.createElement(t.Fragment,{},r)}},c=t.forwardRef((function(e,r){var a=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,y=o(e,["components","mdxType","originalType","parentName"]),u=p(a),c=n,g=u["".concat(s,".").concat(c)]||u[c]||d[c]||i;return a?t.createElement(g,l(l({ref:r},y),{},{components:a})):t.createElement(g,l({ref:r},y))}));function g(e,r){var a=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var i=a.length,l=new Array(i);l[0]=c;var o={};for(var s in r)hasOwnProperty.call(r,s)&&(o[s]=r[s]);o.originalType=e,o[u]="string"==typeof e?e:n,l[1]=o;for(var p=2;p{a.r(r),a.d(r,{assets:()=>s,contentTitle:()=>l,default:()=>d,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var t=a(5072),n=(a(1504),a(5788));const i={title:"Area Chart",sidebar_label:"Area (Pro)",sidebar_position:3},l=void 0,o={unversionedId:"charts/area",id:"version-v3.x.x/charts/area",title:"Area Chart",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v3.x.x/charts/area.md",sourceDirName:"charts",slug:"/charts/area",permalink:"/v3.x.x/charts/area",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:3,frontMatter:{title:"Area Chart",sidebar_label:"Area (Pro)",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Line (Pro)",permalink:"/v3.x.x/charts/line"},next:{title:"Pie (Pro)",permalink:"/v3.x.x/charts/pie"}},s={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types for X-Axis:",id:"valid-data-types-for-x-axis",level:4},{value:"Valid Data Types for Y-Axis:",id:"valid-data-types-for-y-axis",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4},{value:"For X-Axis:",id:"for-x-axis",level:5},{value:"For Y-Axis:",id:"for-y-axis",level:5}],y={toc:p},u="wrapper";function d(e){let{components:r,...a}=e;return(0,n.yg)(u,(0,t.c)({},y,a,{components:r,mdxType:"MDXLayout"}),(0,n.yg)("div",{style:{border:"1px solid rgba(255,0,0, 0.03)",padding:20,borderRadius:14,backgroundColor:"rgba(255,0,0, 0.03)",maxWidth:600}},(0,n.yg)("h4",{style:{fontWeight:"500",marginBottom:5}}," This feature is available in ",(0,n.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only.")),(0,n.yg)("h4",{id:"preview"},"Preview:"),(0,n.yg)("img",{src:"/img//area-chart.png",width:"380px",alt:"Preview"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("p",null,"Similar to line chart, area chart fills the space below it with a color. You can aggregate large amount of data in form of arrays and display them in a area chart."),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"type"},"Type:"),(0,n.yg)("p",null,(0,n.yg)("inlineCode",{parentName:"p"},"AREA_CHART")),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types-for-x-axis"},"Valid Data Types for X-Axis:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"int")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"float")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"String"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types-for-y-axis"},"Valid Data Types for Y-Axis:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"int")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"float"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"initializer"},"Initializer:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Area Chart\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name )\n*/\nChart chart1(&dashboard, AREA_CHART, "Chart Name");\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"updaters"},"Updaters:"),(0,n.yg)("h5",{id:"for-x-axis"},"For X-Axis:"),(0,n.yg)("p",null,"X-Axis updater uses ",(0,n.yg)("inlineCode",{parentName:"p"},"updateX")," function."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/*\n Data for X Axis of our Chart\n This array can be of: `int` / `float` or `String`\n*/\nString XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or\n (float array[], size_t array_size)\n or\n (String array[], size_t array_size)\n*/\nchart1.updateX(XAxis, 7);\n')),(0,n.yg)("h5",{id:"for-y-axis"},"For Y-Axis:"),(0,n.yg)("p",null,"Y-Axis updater uses ",(0,n.yg)("inlineCode",{parentName:"p"},"updateY")," function."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"/*\n Data for Y Axis of our Chart\n This array can be of: `int` or `float`\n*/\nint YAxis[] = {0, 0, 0, 0, 0, 0, 0};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or \n (float array[], size_t array_size)\n*/\nchart1.updateY(YAxis, 7);\n")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5acd1b26.6eb448d9.js b/assets/js/5acd1b26.6eb448d9.js deleted file mode 100644 index ba482fb3..00000000 --- a/assets/js/5acd1b26.6eb448d9.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[4412],{3905:(e,r,t)=>{t.d(r,{Zo:()=>u,kt:()=>y});var a=t(7294);function n(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function i(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);r&&(a=a.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,a)}return t}function l(e){for(var r=1;r=0||(n[t]=e[t]);return n}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}var s=a.createContext({}),p=function(e){var r=a.useContext(s),t=r;return e&&(t="function"==typeof e?e(r):l(l({},r),e)),t},u=function(e){var r=p(e.components);return a.createElement(s.Provider,{value:r},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var r=e.children;return a.createElement(a.Fragment,{},r)}},f=a.forwardRef((function(e,r){var t=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),d=p(t),f=n,y=d["".concat(s,".").concat(f)]||d[f]||c[f]||i;return t?a.createElement(y,l(l({ref:r},u),{},{components:t})):a.createElement(y,l({ref:r},u))}));function y(e,r){var t=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var i=t.length,l=new Array(i);l[0]=f;var o={};for(var s in r)hasOwnProperty.call(r,s)&&(o[s]=r[s]);o.originalType=e,o[d]="string"==typeof e?e:n,l[1]=o;for(var p=2;p{t.r(r),t.d(r,{assets:()=>s,contentTitle:()=>l,default:()=>c,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var a=t(7462),n=(t(7294),t(3905));const i={title:"Area Chart",sidebar_label:"Area (Pro)",sidebar_position:3},l=void 0,o={unversionedId:"charts/area",id:"version-v3.x.x/charts/area",title:"Area Chart",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v3.x.x/charts/area.md",sourceDirName:"charts",slug:"/charts/area",permalink:"/v3.x.x/charts/area",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:3,frontMatter:{title:"Area Chart",sidebar_label:"Area (Pro)",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Line (Pro)",permalink:"/v3.x.x/charts/line"},next:{title:"Pie (Pro)",permalink:"/v3.x.x/charts/pie"}},s={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types for X-Axis:",id:"valid-data-types-for-x-axis",level:4},{value:"Valid Data Types for Y-Axis:",id:"valid-data-types-for-y-axis",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4},{value:"For X-Axis:",id:"for-x-axis",level:5},{value:"For Y-Axis:",id:"for-y-axis",level:5}],u={toc:p},d="wrapper";function c(e){let{components:r,...t}=e;return(0,n.kt)(d,(0,a.Z)({},u,t,{components:r,mdxType:"MDXLayout"}),(0,n.kt)("div",{style:{border:"1px solid rgba(255,0,0, 0.03)",padding:20,borderRadius:14,backgroundColor:"rgba(255,0,0, 0.03)",maxWidth:600}},(0,n.kt)("h4",{style:{fontWeight:"500",marginBottom:5}}," This feature is available in ",(0,n.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only.")),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{src:"/img//area-chart.png",width:"380px",alt:"Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"Similar to line chart, area chart fills the space below it with a color. You can aggregate large amount of data in form of arrays and display them in a area chart."),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"AREA_CHART")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types-for-x-axis"},"Valid Data Types for X-Axis:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"String"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types-for-y-axis"},"Valid Data Types for Y-Axis:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Area Chart\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name )\n*/\nChart chart1(&dashboard, AREA_CHART, "Chart Name");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("h5",{id:"for-x-axis"},"For X-Axis:"),(0,n.kt)("p",null,"X-Axis updater uses ",(0,n.kt)("inlineCode",{parentName:"p"},"updateX")," function."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/*\n Data for X Axis of our Chart\n This array can be of: `int` / `float` or `String`\n*/\nString XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or\n (float array[], size_t array_size)\n or\n (String array[], size_t array_size)\n*/\nchart1.updateX(XAxis, 7);\n')),(0,n.kt)("h5",{id:"for-y-axis"},"For Y-Axis:"),(0,n.kt)("p",null,"Y-Axis updater uses ",(0,n.kt)("inlineCode",{parentName:"p"},"updateY")," function."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"/*\n Data for Y Axis of our Chart\n This array can be of: `int` or `float`\n*/\nint YAxis[] = {0, 0, 0, 0, 0, 0, 0};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or \n (float array[], size_t array_size)\n*/\nchart1.updateY(YAxis, 7);\n")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5b27bca1.97f17469.js b/assets/js/5b27bca1.97f17469.js new file mode 100644 index 00000000..b4ab1af6 --- /dev/null +++ b/assets/js/5b27bca1.97f17469.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[8784],{5788:(e,r,a)=>{a.d(r,{Iu:()=>y,yg:()=>g});var t=a(1504);function n(e,r,a){return r in e?Object.defineProperty(e,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[r]=a,e}function i(e,r){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r&&(t=t.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),a.push.apply(a,t)}return a}function l(e){for(var r=1;r=0||(n[a]=e[a]);return n}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=t.createContext({}),p=function(e){var r=t.useContext(s),a=r;return e&&(a="function"==typeof e?e(r):l(l({},r),e)),a},y=function(e){var r=p(e.components);return t.createElement(s.Provider,{value:r},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var r=e.children;return t.createElement(t.Fragment,{},r)}},d=t.forwardRef((function(e,r){var a=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,y=o(e,["components","mdxType","originalType","parentName"]),u=p(a),d=n,g=u["".concat(s,".").concat(d)]||u[d]||c[d]||i;return a?t.createElement(g,l(l({ref:r},y),{},{components:a})):t.createElement(g,l({ref:r},y))}));function g(e,r){var a=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var i=a.length,l=new Array(i);l[0]=d;var o={};for(var s in r)hasOwnProperty.call(r,s)&&(o[s]=r[s]);o.originalType=e,o[u]="string"==typeof e?e:n,l[1]=o;for(var p=2;p{a.r(r),a.d(r,{assets:()=>s,contentTitle:()=>l,default:()=>c,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var t=a(5072),n=(a(1504),a(5788));const i={title:"Pie Chart",sidebar_label:"Pie (Pro)",sidebar_position:4},l=void 0,o={unversionedId:"charts/pie",id:"charts/pie",title:"Pie Chart",description:"This feature is available in DASH Pro only.",source:"@site/docs/charts/pie.md",sourceDirName:"charts",slug:"/charts/pie",permalink:"/next/charts/pie",draft:!1,tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Pie Chart",sidebar_label:"Pie (Pro)",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Area (Pro)",permalink:"/next/charts/area"},next:{title:"Custom URI",permalink:"/next/features/custom-uri"}},s={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types for X-Axis:",id:"valid-data-types-for-x-axis",level:4},{value:"Valid Data Types for Y-Axis:",id:"valid-data-types-for-y-axis",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4},{value:"For X-Axis:",id:"for-x-axis",level:5},{value:"For Y-Axis:",id:"for-y-axis",level:5}],y={toc:p},u="wrapper";function c(e){let{components:r,...a}=e;return(0,n.yg)(u,(0,t.c)({},y,a,{components:r,mdxType:"MDXLayout"}),(0,n.yg)("div",{className:"pro-label"},(0,n.yg)("i",null,(0,n.yg)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.yg)("h4",{id:"preview"},"Preview:"),(0,n.yg)("img",{className:"card-preview",src:"/img/v4/pie-chart.png",width:"380px",alt:"Preview"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"type"},"Type:"),(0,n.yg)("p",null,(0,n.yg)("inlineCode",{parentName:"p"},"PIE_CHART")),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types-for-x-axis"},"Valid Data Types for X-Axis:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"int")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"float")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"String")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"const char*"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types-for-y-axis"},"Valid Data Types for Y-Axis:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"int")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"float"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"initializer"},"Initializer:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Pie Chart\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name )\n*/\nChart chart1(&dashboard, PIE_CHART, "Chart Name");\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"updaters"},"Updaters:"),(0,n.yg)("h5",{id:"for-x-axis"},"For X-Axis:"),(0,n.yg)("p",null,"X-Axis updater uses ",(0,n.yg)("inlineCode",{parentName:"p"},"updateX")," function."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/*\n Data for X Axis of our Chart\n This array can be of: `int` / `float` or `String`\n \n Note: this array should be kept in global scope. i.e. it should never be deleted from memory.\n*/\nString XAxis[] = {"Biscuits", "Cookies", "Milk", "Thing4", "Thing5"};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or\n (float array[], size_t array_size)\n or\n (String array[], size_t array_size)\n or\n (const char* array[], size_t array_size)\n*/\nchart1.updateX(XAxis, 5);\n')),(0,n.yg)("h5",{id:"for-y-axis"},"For Y-Axis:"),(0,n.yg)("p",null,"Y-Axis updater uses ",(0,n.yg)("inlineCode",{parentName:"p"},"updateY")," function."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"/*\n Data for Y Axis of our Chart\n This array can be of: `int` or `float`\n \n Note: this array should be kept in global scope. i.e. it should never be deleted from memory.\n*/\nint YAxis[] = {0, 0, 0, 0, 0};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or \n (float array[], size_t array_size)\n*/\nchart1.updateY(YAxis, 5);\n")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5b27bca1.b87a1c5b.js b/assets/js/5b27bca1.b87a1c5b.js deleted file mode 100644 index d5b9565e..00000000 --- a/assets/js/5b27bca1.b87a1c5b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[4360],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>y});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=a.createContext({}),p=function(e){var t=a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},u=function(e){var t=p(e.components);return a.createElement(s.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},f=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),c=p(r),f=n,y=c["".concat(s,".").concat(f)]||c[f]||d[f]||i;return r?a.createElement(y,l(l({ref:t},u),{},{components:r})):a.createElement(y,l({ref:t},u))}));function y(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,l=new Array(i);l[0]=f;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[c]="string"==typeof e?e:n,l[1]=o;for(var p=2;p{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>d,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var a=r(7462),n=(r(7294),r(3905));const i={title:"Pie Chart",sidebar_label:"Pie (Pro)",sidebar_position:4},l=void 0,o={unversionedId:"charts/pie",id:"charts/pie",title:"Pie Chart",description:"This feature is available in DASH Pro only.",source:"@site/docs/charts/pie.md",sourceDirName:"charts",slug:"/charts/pie",permalink:"/next/charts/pie",draft:!1,tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Pie Chart",sidebar_label:"Pie (Pro)",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Area (Pro)",permalink:"/next/charts/area"},next:{title:"Custom URI",permalink:"/next/features/custom-uri"}},s={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types for X-Axis:",id:"valid-data-types-for-x-axis",level:4},{value:"Valid Data Types for Y-Axis:",id:"valid-data-types-for-y-axis",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4},{value:"For X-Axis:",id:"for-x-axis",level:5},{value:"For Y-Axis:",id:"for-y-axis",level:5}],u={toc:p},c="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("div",{className:"pro-label"},(0,n.kt)("i",null,(0,n.kt)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/pie-chart.png",width:"380px",alt:"Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"PIE_CHART")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types-for-x-axis"},"Valid Data Types for X-Axis:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"String")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"const char*"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types-for-y-axis"},"Valid Data Types for Y-Axis:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Pie Chart\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name )\n*/\nChart chart1(&dashboard, PIE_CHART, "Chart Name");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("h5",{id:"for-x-axis"},"For X-Axis:"),(0,n.kt)("p",null,"X-Axis updater uses ",(0,n.kt)("inlineCode",{parentName:"p"},"updateX")," function."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/*\n Data for X Axis of our Chart\n This array can be of: `int` / `float` or `String`\n \n Note: this array should be kept in global scope. i.e. it should never be deleted from memory.\n*/\nString XAxis[] = {"Biscuits", "Cookies", "Milk", "Thing4", "Thing5"};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or\n (float array[], size_t array_size)\n or\n (String array[], size_t array_size)\n or\n (const char* array[], size_t array_size)\n*/\nchart1.updateX(XAxis, 5);\n')),(0,n.kt)("h5",{id:"for-y-axis"},"For Y-Axis:"),(0,n.kt)("p",null,"Y-Axis updater uses ",(0,n.kt)("inlineCode",{parentName:"p"},"updateY")," function."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"/*\n Data for Y Axis of our Chart\n This array can be of: `int` or `float`\n \n Note: this array should be kept in global scope. i.e. it should never be deleted from memory.\n*/\nint YAxis[] = {0, 0, 0, 0, 0};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or \n (float array[], size_t array_size)\n*/\nchart1.updateY(YAxis, 5);\n")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5c2cce4e.8d782e33.js b/assets/js/5c2cce4e.4fd5ae09.js similarity index 55% rename from assets/js/5c2cce4e.8d782e33.js rename to assets/js/5c2cce4e.4fd5ae09.js index fe9b5acf..95413ad0 100644 --- a/assets/js/5c2cce4e.8d782e33.js +++ b/assets/js/5c2cce4e.4fd5ae09.js @@ -1 +1 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[1890],{3905:(e,n,t)=>{t.d(n,{Zo:()=>c,kt:()=>m});var a=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function l(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var o=a.createContext({}),d=function(e){var n=a.useContext(o),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},c=function(e){var n=d(e.components);return a.createElement(o.Provider,{value:n},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},h=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,o=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),p=d(t),h=r,m=p["".concat(o,".").concat(h)]||p[h]||u[h]||i;return t?a.createElement(m,l(l({ref:n},c),{},{components:t})):a.createElement(m,l({ref:n},c))}));function m(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,l=new Array(i);l[0]=h;var s={};for(var o in n)hasOwnProperty.call(n,o)&&(s[o]=n[o]);s.originalType=e,s[p]="string"==typeof e?e:r,l[1]=s;for(var d=2;d{t.r(n),t.d(n,{assets:()=>o,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>d});var a=t(7462),r=(t(7294),t(3905));const i={title:"Getting Started",sidebar_label:"Getting Started",sidebar_position:4},l=void 0,s={unversionedId:"getting-started",id:"version-v3.x.x/getting-started",title:"Getting Started",description:"To get started with ESP-DASH, we will be creating our basic example step by step and learn what each setup does:",source:"@site/versioned_docs/version-v3.x.x/getting-started.md",sourceDirName:".",slug:"/getting-started",permalink:"/v3.x.x/getting-started",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:4,frontMatter:{title:"Getting Started",sidebar_label:"Getting Started",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Installation",permalink:"/v3.x.x/installation"},next:{title:"Examples",permalink:"/v3.x.x/more-examples"}},o={},d=[{value:"Part 1: Include Dependencies",id:"part-1-include-dependencies",level:4},{value:"Part 2: Create AsyncWebServer Instance",id:"part-2-create-asyncwebserver-instance",level:4},{value:"Part 3: Attach ESP-DASH Instance",id:"part-3-attach-esp-dash-instance",level:4},{value:"Part 4: Create Cards",id:"part-4-create-cards",level:4},{value:"Part 5: Setup Block",id:"part-5-setup-block",level:4},{value:"Part 5: Loop Block",id:"part-5-loop-block",level:4},{value:"1. Updating Card Values",id:"1-updating-card-values",level:5},{value:"2. Sending updates to our Dashboard",id:"2-sending-updates-to-our-dashboard",level:5},{value:"Complete Loop Block:",id:"complete-loop-block",level:5},{value:"Final Code",id:"final-code",level:3}],c={toc:d},p="wrapper";function u(e){let{components:n,...t}=e;return(0,r.kt)(p,(0,a.Z)({},c,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"To get started with ESP-DASH, we will be creating our ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/ayushsharma82/ESP-DASH/tree/master/examples/Basic"},"basic")," example step by step and learn what each setup does:"),(0,r.kt)("br",null),(0,r.kt)("h4",{id:"part-1-include-dependencies"},"Part 1: Include Dependencies"),(0,r.kt)("p",null,"We have used conditional compilation in this part therefore the code will work for both ESP8266 & ESP32."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cpp"},"#include \n#if defined(ESP8266)\n /* ESP8266 Dependencies */\n #include \n #include \n #include \n#elif defined(ESP32)\n /* ESP32 Dependencies */\n #include \n #include \n #include \n#endif\n#include \n")),(0,r.kt)("br",null),(0,r.kt)("hr",null),(0,r.kt)("br",null),(0,r.kt)("h4",{id:"part-2-create-asyncwebserver-instance"},"Part 2: Create AsyncWebServer Instance"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cpp"},"/* Start Webserver */\nAsyncWebServer server(80);\n")),(0,r.kt)("br",null),(0,r.kt)("hr",null),(0,r.kt)("br",null),(0,r.kt)("h4",{id:"part-3-attach-esp-dash-instance"},"Part 3: Attach ESP-DASH Instance"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cpp"},"/* Attach ESP-DASH to AsyncWebServer */\nESPDash dashboard(&server); \n")),(0,r.kt)("br",null),(0,r.kt)("hr",null),(0,r.kt)("br",null),(0,r.kt)("h4",{id:"part-4-create-cards"},"Part 4: Create Cards"),(0,r.kt)("p",null,"In this step, we will creating ESP-DASH cards and passing our dasboard instance as a first argument so that they can add / remove themselves."),(0,r.kt)("p",null,(0,r.kt)("em",{parentName:"p"},"After we are done with this guide, Please take a look at Cards section to know more about the types of cards available to us.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Dashboard Cards \n Format - (Dashboard Instance, Card Type, Card Name, Card Symbol(optional) )\n*/\nCard temperature(&dashboard, TEMPERATURE_CARD, "Temperature", "\xb0C");\nCard humidity(&dashboard, HUMIDITY_CARD, "Humidity", "%");\n')),(0,r.kt)("br",null),(0,r.kt)("hr",null),(0,r.kt)("br",null),(0,r.kt)("h4",{id:"part-5-setup-block"},"Part 5: Setup Block"),(0,r.kt)("p",null,"In our setup block, we will be adding the usual WiFi connectivity stuff and then start our AsyncWebServer with ",(0,r.kt)("inlineCode",{parentName:"p"},"server.begin();"),"."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cpp"},'void setup() {\n Serial.begin(115200);\n\n /* Connect WiFi */\n WiFi.mode(WIFI_STA);\n WiFi.begin("ssid", "password");\n if (WiFi.waitForConnectResult() != WL_CONNECTED) {\n Serial.printf("WiFi Failed!\\n");\n return;\n }\n Serial.print("IP Address: ");\n Serial.println(WiFi.localIP());\n\n /* Start AsyncWebServer */\n server.begin();\n}\n')),(0,r.kt)("br",null),(0,r.kt)("hr",null),(0,r.kt)("br",null),(0,r.kt)("h4",{id:"part-5-loop-block"},"Part 5: Loop Block"),(0,r.kt)("p",null,"In our loop block, we will be doing 2 things:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Updating card values"),(0,r.kt)("li",{parentName:"ol"},"Sending updates to our dashboard")),(0,r.kt)("h5",{id:"1-updating-card-values"},"1. Updating Card Values"),(0,r.kt)("p",null,"Remember the 'Cards' we created in 4th part? We will now access those cards by their variable and update them using the ",(0,r.kt)("inlineCode",{parentName:"p"},"update")," function which is provided with our card's class:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cpp"},"temperature.update((int)random(0, 50));\n")),(0,r.kt)("h5",{id:"2-sending-updates-to-our-dashboard"},"2. Sending updates to our Dashboard"),(0,r.kt)("p",null,"Once we have updated values of our card(s), we will call the ",(0,r.kt)("inlineCode",{parentName:"p"},"sendUpdates()")," function of our dashboard instance and it will send new card values to every connected client in real time."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cpp"},"dashboard.sendUpdates();\n")),(0,r.kt)("p",null,(0,r.kt)("em",{parentName:"p"},"Technically speaking, You can call these functions anywhere in your sketch, but for demonstration purposes we have called them in our loop block.")),(0,r.kt)("h5",{id:"complete-loop-block"},"Complete Loop Block:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cpp"},"void loop() {\n /* Update Card Values */\n temperature.update((int)random(0, 50));\n humidity.update((int)random(0, 100));\n\n /* Send Updates to our Dashboard (realtime) */\n dashboard.sendUpdates();\n\n /* \n Delay is just for demonstration purposes in this example,\n Replace this code with 'millis interval' in your final project.\n */\n delay(3000);\n}\n")),(0,r.kt)("br",null),(0,r.kt)("hr",null),(0,r.kt)("br",null),(0,r.kt)("h3",{id:"final-code"},"Final Code"),(0,r.kt)("p",null,"That's it! Now we can just upload this sketch to our MCU and access the dashboard via it's IP address. ( Make sure to change the ",(0,r.kt)("inlineCode",{parentName:"p"},"ssid")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"password")," in our sketch according to your Access Point )"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cpp"},'/*\n -----------------------\n ESPDASH - Basic Example\n -----------------------\n\n Skill Level: Intermediate\n\n In this example we will be creating a basic dashboard which consists \n of some cards and then update them in realtime ( at 3s interval ).\n\n Github: https://github.com/ayushsharma82/ESP-DASH\n WiKi: https://ayushsharma82.github.io/ESP-DASH/\n\n Works with both ESP8266 & ESP32\n*/\n\n#include \n#if defined(ESP8266)\n /* ESP8266 Dependencies */\n #include \n #include \n #include \n#elif defined(ESP32)\n /* ESP32 Dependencies */\n #include \n #include \n #include \n#endif\n#include \n\n\n/* Your WiFi Credentials */\nconst char* ssid = ""; // SSID\nconst char* password = ""; // Password\n\n/* Start Webserver */\nAsyncWebServer server(80);\n\n/* Attach ESP-DASH to AsyncWebServer */\nESPDash dashboard(&server); \n\n/* \n Dashboard Cards \n Format - (Dashboard Instance, Card Type, Card Name, Card Symbol(optional) )\n*/\nCard temperature(&dashboard, TEMPERATURE_CARD, "Temperature", "\xb0C");\nCard humidity(&dashboard, HUMIDITY_CARD, "Humidity", "%");\n\n\nvoid setup() {\n Serial.begin(115200);\n\n /* Connect WiFi */\n WiFi.mode(WIFI_STA);\n WiFi.begin(ssid, password);\n if (WiFi.waitForConnectResult() != WL_CONNECTED) {\n Serial.printf("WiFi Failed!\\n");\n return;\n }\n Serial.print("IP Address: ");\n Serial.println(WiFi.localIP());\n\n /* Start AsyncWebServer */\n server.begin();\n}\n\nvoid loop() {\n /* Update Card Values */\n temperature.update((int)random(0, 50));\n humidity.update((int)random(0, 100));\n\n /* Send Updates to our Dashboard (realtime) */\n dashboard.sendUpdates();\n\n /* \n Delay is just for demonstration purposes in this example,\n Replace this code with \'millis interval\' in your final project.\n */\n delay(3000);\n}\n')))}u.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[7156],{5788:(e,n,a)=>{a.d(n,{Iu:()=>c,yg:()=>g});var t=a(1504);function r(e,n,a){return n in e?Object.defineProperty(e,n,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[n]=a,e}function i(e,n){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),a.push.apply(a,t)}return a}function l(e){for(var n=1;n=0||(r[a]=e[a]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var o=t.createContext({}),d=function(e){var n=t.useContext(o),a=n;return e&&(a="function"==typeof e?e(n):l(l({},n),e)),a},c=function(e){var n=d(e.components);return t.createElement(o.Provider,{value:n},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var n=e.children;return t.createElement(t.Fragment,{},n)}},h=t.forwardRef((function(e,n){var a=e.components,r=e.mdxType,i=e.originalType,o=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),p=d(a),h=r,g=p["".concat(o,".").concat(h)]||p[h]||u[h]||i;return a?t.createElement(g,l(l({ref:n},c),{},{components:a})):t.createElement(g,l({ref:n},c))}));function g(e,n){var a=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=a.length,l=new Array(i);l[0]=h;var s={};for(var o in n)hasOwnProperty.call(n,o)&&(s[o]=n[o]);s.originalType=e,s[p]="string"==typeof e?e:r,l[1]=s;for(var d=2;d{a.r(n),a.d(n,{assets:()=>o,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>d});var t=a(5072),r=(a(1504),a(5788));const i={title:"Getting Started",sidebar_label:"Getting Started",sidebar_position:4},l=void 0,s={unversionedId:"getting-started",id:"version-v3.x.x/getting-started",title:"Getting Started",description:"To get started with ESP-DASH, we will be creating our basic example step by step and learn what each setup does:",source:"@site/versioned_docs/version-v3.x.x/getting-started.md",sourceDirName:".",slug:"/getting-started",permalink:"/v3.x.x/getting-started",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:4,frontMatter:{title:"Getting Started",sidebar_label:"Getting Started",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Installation",permalink:"/v3.x.x/installation"},next:{title:"Examples",permalink:"/v3.x.x/more-examples"}},o={},d=[{value:"Part 1: Include Dependencies",id:"part-1-include-dependencies",level:4},{value:"Part 2: Create AsyncWebServer Instance",id:"part-2-create-asyncwebserver-instance",level:4},{value:"Part 3: Attach ESP-DASH Instance",id:"part-3-attach-esp-dash-instance",level:4},{value:"Part 4: Create Cards",id:"part-4-create-cards",level:4},{value:"Part 5: Setup Block",id:"part-5-setup-block",level:4},{value:"Part 5: Loop Block",id:"part-5-loop-block",level:4},{value:"1. Updating Card Values",id:"1-updating-card-values",level:5},{value:"2. Sending updates to our Dashboard",id:"2-sending-updates-to-our-dashboard",level:5},{value:"Complete Loop Block:",id:"complete-loop-block",level:5},{value:"Final Code",id:"final-code",level:3}],c={toc:d},p="wrapper";function u(e){let{components:n,...a}=e;return(0,r.yg)(p,(0,t.c)({},c,a,{components:n,mdxType:"MDXLayout"}),(0,r.yg)("p",null,"To get started with ESP-DASH, we will be creating our ",(0,r.yg)("a",{parentName:"p",href:"https://github.com/ayushsharma82/ESP-DASH/tree/master/examples/Basic"},"basic")," example step by step and learn what each setup does:"),(0,r.yg)("br",null),(0,r.yg)("h4",{id:"part-1-include-dependencies"},"Part 1: Include Dependencies"),(0,r.yg)("p",null,"We have used conditional compilation in this part therefore the code will work for both ESP8266 & ESP32."),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-cpp"},"#include \n#if defined(ESP8266)\n /* ESP8266 Dependencies */\n #include \n #include \n #include \n#elif defined(ESP32)\n /* ESP32 Dependencies */\n #include \n #include \n #include \n#endif\n#include \n")),(0,r.yg)("br",null),(0,r.yg)("hr",null),(0,r.yg)("br",null),(0,r.yg)("h4",{id:"part-2-create-asyncwebserver-instance"},"Part 2: Create AsyncWebServer Instance"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-cpp"},"/* Start Webserver */\nAsyncWebServer server(80);\n")),(0,r.yg)("br",null),(0,r.yg)("hr",null),(0,r.yg)("br",null),(0,r.yg)("h4",{id:"part-3-attach-esp-dash-instance"},"Part 3: Attach ESP-DASH Instance"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-cpp"},"/* Attach ESP-DASH to AsyncWebServer */\nESPDash dashboard(&server); \n")),(0,r.yg)("br",null),(0,r.yg)("hr",null),(0,r.yg)("br",null),(0,r.yg)("h4",{id:"part-4-create-cards"},"Part 4: Create Cards"),(0,r.yg)("p",null,"In this step, we will creating ESP-DASH cards and passing our dasboard instance as a first argument so that they can add / remove themselves."),(0,r.yg)("p",null,(0,r.yg)("em",{parentName:"p"},"After we are done with this guide, Please take a look at Cards section to know more about the types of cards available to us.")),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Dashboard Cards \n Format - (Dashboard Instance, Card Type, Card Name, Card Symbol(optional) )\n*/\nCard temperature(&dashboard, TEMPERATURE_CARD, "Temperature", "\xb0C");\nCard humidity(&dashboard, HUMIDITY_CARD, "Humidity", "%");\n')),(0,r.yg)("br",null),(0,r.yg)("hr",null),(0,r.yg)("br",null),(0,r.yg)("h4",{id:"part-5-setup-block"},"Part 5: Setup Block"),(0,r.yg)("p",null,"In our setup block, we will be adding the usual WiFi connectivity stuff and then start our AsyncWebServer with ",(0,r.yg)("inlineCode",{parentName:"p"},"server.begin();"),"."),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-cpp"},'void setup() {\n Serial.begin(115200);\n\n /* Connect WiFi */\n WiFi.mode(WIFI_STA);\n WiFi.begin("ssid", "password");\n if (WiFi.waitForConnectResult() != WL_CONNECTED) {\n Serial.printf("WiFi Failed!\\n");\n return;\n }\n Serial.print("IP Address: ");\n Serial.println(WiFi.localIP());\n\n /* Start AsyncWebServer */\n server.begin();\n}\n')),(0,r.yg)("br",null),(0,r.yg)("hr",null),(0,r.yg)("br",null),(0,r.yg)("h4",{id:"part-5-loop-block"},"Part 5: Loop Block"),(0,r.yg)("p",null,"In our loop block, we will be doing 2 things:"),(0,r.yg)("ol",null,(0,r.yg)("li",{parentName:"ol"},"Updating card values"),(0,r.yg)("li",{parentName:"ol"},"Sending updates to our dashboard")),(0,r.yg)("h5",{id:"1-updating-card-values"},"1. Updating Card Values"),(0,r.yg)("p",null,"Remember the 'Cards' we created in 4th part? We will now access those cards by their variable and update them using the ",(0,r.yg)("inlineCode",{parentName:"p"},"update")," function which is provided with our card's class:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-cpp"},"temperature.update((int)random(0, 50));\n")),(0,r.yg)("h5",{id:"2-sending-updates-to-our-dashboard"},"2. Sending updates to our Dashboard"),(0,r.yg)("p",null,"Once we have updated values of our card(s), we will call the ",(0,r.yg)("inlineCode",{parentName:"p"},"sendUpdates()")," function of our dashboard instance and it will send new card values to every connected client in real time."),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-cpp"},"dashboard.sendUpdates();\n")),(0,r.yg)("p",null,(0,r.yg)("em",{parentName:"p"},"Technically speaking, You can call these functions anywhere in your sketch, but for demonstration purposes we have called them in our loop block.")),(0,r.yg)("h5",{id:"complete-loop-block"},"Complete Loop Block:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-cpp"},"void loop() {\n /* Update Card Values */\n temperature.update((int)random(0, 50));\n humidity.update((int)random(0, 100));\n\n /* Send Updates to our Dashboard (realtime) */\n dashboard.sendUpdates();\n\n /* \n Delay is just for demonstration purposes in this example,\n Replace this code with 'millis interval' in your final project.\n */\n delay(3000);\n}\n")),(0,r.yg)("br",null),(0,r.yg)("hr",null),(0,r.yg)("br",null),(0,r.yg)("h3",{id:"final-code"},"Final Code"),(0,r.yg)("p",null,"That's it! Now we can just upload this sketch to our MCU and access the dashboard via it's IP address. ( Make sure to change the ",(0,r.yg)("inlineCode",{parentName:"p"},"ssid")," and ",(0,r.yg)("inlineCode",{parentName:"p"},"password")," in our sketch according to your Access Point )"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-cpp"},'/*\n -----------------------\n ESPDASH - Basic Example\n -----------------------\n\n Skill Level: Intermediate\n\n In this example we will be creating a basic dashboard which consists \n of some cards and then update them in realtime ( at 3s interval ).\n\n Github: https://github.com/ayushsharma82/ESP-DASH\n WiKi: https://ayushsharma82.github.io/ESP-DASH/\n\n Works with both ESP8266 & ESP32\n*/\n\n#include \n#if defined(ESP8266)\n /* ESP8266 Dependencies */\n #include \n #include \n #include \n#elif defined(ESP32)\n /* ESP32 Dependencies */\n #include \n #include \n #include \n#endif\n#include \n\n\n/* Your WiFi Credentials */\nconst char* ssid = ""; // SSID\nconst char* password = ""; // Password\n\n/* Start Webserver */\nAsyncWebServer server(80);\n\n/* Attach ESP-DASH to AsyncWebServer */\nESPDash dashboard(&server); \n\n/* \n Dashboard Cards \n Format - (Dashboard Instance, Card Type, Card Name, Card Symbol(optional) )\n*/\nCard temperature(&dashboard, TEMPERATURE_CARD, "Temperature", "\xb0C");\nCard humidity(&dashboard, HUMIDITY_CARD, "Humidity", "%");\n\n\nvoid setup() {\n Serial.begin(115200);\n\n /* Connect WiFi */\n WiFi.mode(WIFI_STA);\n WiFi.begin(ssid, password);\n if (WiFi.waitForConnectResult() != WL_CONNECTED) {\n Serial.printf("WiFi Failed!\\n");\n return;\n }\n Serial.print("IP Address: ");\n Serial.println(WiFi.localIP());\n\n /* Start AsyncWebServer */\n server.begin();\n}\n\nvoid loop() {\n /* Update Card Values */\n temperature.update((int)random(0, 50));\n humidity.update((int)random(0, 100));\n\n /* Send Updates to our Dashboard (realtime) */\n dashboard.sendUpdates();\n\n /* \n Delay is just for demonstration purposes in this example,\n Replace this code with \'millis interval\' in your final project.\n */\n delay(3000);\n}\n')))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5fde1817.524bc49d.js b/assets/js/5fde1817.524bc49d.js deleted file mode 100644 index d31271dc..00000000 --- a/assets/js/5fde1817.524bc49d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[2757],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>y});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=a.createContext({}),s=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},c=function(e){var t=s(e.components);return a.createElement(p.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,p=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),d=s(r),m=n,y=d["".concat(p,".").concat(m)]||d[m]||u[m]||i;return r?a.createElement(y,l(l({ref:t},c),{},{components:r})):a.createElement(y,l({ref:t},c))}));function y(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,l=new Array(i);l[0]=m;var o={};for(var p in t)hasOwnProperty.call(t,p)&&(o[p]=t[p]);o.originalType=e,o[d]="string"==typeof e?e:n,l[1]=o;for(var s=2;s{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>s});var a=r(7462),n=(r(7294),r(3905));const i={title:"Air Card",sidebar_label:"Air (Pro)",sidebar_position:4},l=void 0,o={unversionedId:"cards/air",id:"cards/air",title:"Air Card",description:"This feature is available in DASH Pro only.",source:"@site/docs/cards/air.md",sourceDirName:"cards",slug:"/cards/air",permalink:"/next/cards/air",draft:!1,tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Air Card",sidebar_label:"Air (Pro)",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Humidity",permalink:"/next/cards/humidity"},next:{title:"Energy (Pro)",permalink:"/next/cards/energy"}},p={},s=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],c={toc:s},d="wrapper";function u(e){let{components:t,...r}=e;return(0,n.kt)(d,(0,a.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("div",{className:"pro-label"},(0,n.kt)("i",null,(0,n.kt)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/air-card.png",width:"280px",alt:"Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"This card adds a distinctive air/wind icon, and just like generic card you can add a symbol which will be appended to your data. This card can be used to show something related to air pressure/wind speed etc."),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"AIR_CARD")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"String"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Air Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )\n*/\nCard card1(&dashboard, AIR_CARD, "Power Consumption", "kWh");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(float value);\n")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")),(0,n.kt)("p",null,"Or you can also update the symbol along with the value like this:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'card1.update(value, "kWh");\n')),(0,n.kt)("br",null),(0,n.kt)("br",null))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5fde1817.b5677359.js b/assets/js/5fde1817.b5677359.js new file mode 100644 index 00000000..5cd96d7a --- /dev/null +++ b/assets/js/5fde1817.b5677359.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[4380],{5788:(e,r,a)=>{a.d(r,{Iu:()=>s,yg:()=>g});var t=a(1504);function n(e,r,a){return r in e?Object.defineProperty(e,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[r]=a,e}function i(e,r){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r&&(t=t.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),a.push.apply(a,t)}return a}function l(e){for(var r=1;r=0||(n[a]=e[a]);return n}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=t.createContext({}),c=function(e){var r=t.useContext(p),a=r;return e&&(a="function"==typeof e?e(r):l(l({},r),e)),a},s=function(e){var r=c(e.components);return t.createElement(p.Provider,{value:r},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var r=e.children;return t.createElement(t.Fragment,{},r)}},y=t.forwardRef((function(e,r){var a=e.components,n=e.mdxType,i=e.originalType,p=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),d=c(a),y=n,g=d["".concat(p,".").concat(y)]||d[y]||u[y]||i;return a?t.createElement(g,l(l({ref:r},s),{},{components:a})):t.createElement(g,l({ref:r},s))}));function g(e,r){var a=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var i=a.length,l=new Array(i);l[0]=y;var o={};for(var p in r)hasOwnProperty.call(r,p)&&(o[p]=r[p]);o.originalType=e,o[d]="string"==typeof e?e:n,l[1]=o;for(var c=2;c{a.r(r),a.d(r,{assets:()=>p,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>c});var t=a(5072),n=(a(1504),a(5788));const i={title:"Air Card",sidebar_label:"Air (Pro)",sidebar_position:4},l=void 0,o={unversionedId:"cards/air",id:"cards/air",title:"Air Card",description:"This feature is available in DASH Pro only.",source:"@site/docs/cards/air.md",sourceDirName:"cards",slug:"/cards/air",permalink:"/next/cards/air",draft:!1,tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Air Card",sidebar_label:"Air (Pro)",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Humidity",permalink:"/next/cards/humidity"},next:{title:"Energy (Pro)",permalink:"/next/cards/energy"}},p={},c=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],s={toc:c},d="wrapper";function u(e){let{components:r,...a}=e;return(0,n.yg)(d,(0,t.c)({},s,a,{components:r,mdxType:"MDXLayout"}),(0,n.yg)("div",{className:"pro-label"},(0,n.yg)("i",null,(0,n.yg)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.yg)("h4",{id:"preview"},"Preview:"),(0,n.yg)("img",{className:"card-preview",src:"/img/v4/air-card.png",width:"280px",alt:"Preview"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("p",null,"This card adds a distinctive air/wind icon, and just like generic card you can add a symbol which will be appended to your data. This card can be used to show something related to air pressure/wind speed etc."),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"type"},"Type:"),(0,n.yg)("p",null,(0,n.yg)("inlineCode",{parentName:"p"},"AIR_CARD")),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"int")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"float")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"String"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"initializer"},"Initializer:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Air Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )\n*/\nCard card1(&dashboard, AIR_CARD, "Power Consumption", "kWh");\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"updaters"},"Updaters:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(float value);\n")),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")),(0,n.yg)("p",null,"Or you can also update the symbol along with the value like this:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'card1.update(value, "kWh");\n')),(0,n.yg)("br",null),(0,n.yg)("br",null))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/641f1acd.21f573e0.js b/assets/js/641f1acd.21f573e0.js new file mode 100644 index 00000000..e13c2475 --- /dev/null +++ b/assets/js/641f1acd.21f573e0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[2784],{5788:(e,r,t)=>{t.d(r,{Iu:()=>c,yg:()=>g});var a=t(1504);function n(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function l(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);r&&(a=a.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,a)}return t}function i(e){for(var r=1;r=0||(n[t]=e[t]);return n}(e,r);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}var o=a.createContext({}),u=function(e){var r=a.useContext(o),t=r;return e&&(t="function"==typeof e?e(r):i(i({},r),e)),t},c=function(e){var r=u(e.components);return a.createElement(o.Provider,{value:r},e.children)},d="mdxType",s={inlineCode:"code",wrapper:function(e){var r=e.children;return a.createElement(a.Fragment,{},r)}},y=a.forwardRef((function(e,r){var t=e.components,n=e.mdxType,l=e.originalType,o=e.parentName,c=p(e,["components","mdxType","originalType","parentName"]),d=u(t),y=n,g=d["".concat(o,".").concat(y)]||d[y]||s[y]||l;return t?a.createElement(g,i(i({ref:r},c),{},{components:t})):a.createElement(g,i({ref:r},c))}));function g(e,r){var t=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var l=t.length,i=new Array(l);i[0]=y;var p={};for(var o in r)hasOwnProperty.call(r,o)&&(p[o]=r[o]);p.originalType=e,p[d]="string"==typeof e?e:n,i[1]=p;for(var u=2;u{t.r(r),t.d(r,{assets:()=>o,contentTitle:()=>i,default:()=>s,frontMatter:()=>l,metadata:()=>p,toc:()=>u});var a=t(5072),n=(t(1504),t(5788));const l={title:"Temperature Card",sidebar_label:"Temperature",sidebar_position:2},i=void 0,p={unversionedId:"cards/temperature",id:"version-v3.x.x/cards/temperature",title:"Temperature Card",description:"Preview:",source:"@site/versioned_docs/version-v3.x.x/cards/temperature.md",sourceDirName:"cards",slug:"/cards/temperature",permalink:"/v3.x.x/cards/temperature",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:2,frontMatter:{title:"Temperature Card",sidebar_label:"Temperature",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Generic",permalink:"/v3.x.x/cards/generic"},next:{title:"Humidity",permalink:"/v3.x.x/cards/humidity"}},o={},u=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],c={toc:u},d="wrapper";function s(e){let{components:r,...t}=e;return(0,n.yg)(d,(0,a.c)({},c,t,{components:r,mdxType:"MDXLayout"}),(0,n.yg)("h4",{id:"preview"},"Preview:"),(0,n.yg)("img",{src:"/img//temperature-card.png",width:"280px",alt:"Preview"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("p",null,"This card adds a distinctive temperature icon, and just like generic card you can add a symbol which will be appended to your data."),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"type"},"Type:"),(0,n.yg)("p",null,(0,n.yg)("inlineCode",{parentName:"p"},"TEMPERATURE_CARD")),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"int")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"float")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"String"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"initializer"},"Initializer:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Temperature Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )\n*/\nCard card1(&dashboard, TEMPERATURE_CARD, "Temperature1", "\xb0C");\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"updaters"},"Updaters:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(float value);\n")),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")),(0,n.yg)("p",null,"Or you can also update the symbol along with the value like this:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'card1.update(value, "\xb0F");\n')),(0,n.yg)("br",null),(0,n.yg)("br",null))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/641f1acd.6c7b7916.js b/assets/js/641f1acd.6c7b7916.js deleted file mode 100644 index 0f7f65f6..00000000 --- a/assets/js/641f1acd.6c7b7916.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[2900],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>v});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var o=a.createContext({}),u=function(e){var t=a.useContext(o),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},c=function(e){var t=u(e.components);return a.createElement(o.Provider,{value:t},e.children)},d="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,l=e.originalType,o=e.parentName,c=p(e,["components","mdxType","originalType","parentName"]),d=u(r),m=n,v=d["".concat(o,".").concat(m)]||d[m]||s[m]||l;return r?a.createElement(v,i(i({ref:t},c),{},{components:r})):a.createElement(v,i({ref:t},c))}));function v(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=r.length,i=new Array(l);i[0]=m;var p={};for(var o in t)hasOwnProperty.call(t,o)&&(p[o]=t[o]);p.originalType=e,p[d]="string"==typeof e?e:n,i[1]=p;for(var u=2;u{r.r(t),r.d(t,{assets:()=>o,contentTitle:()=>i,default:()=>s,frontMatter:()=>l,metadata:()=>p,toc:()=>u});var a=r(7462),n=(r(7294),r(3905));const l={title:"Temperature Card",sidebar_label:"Temperature",sidebar_position:2},i=void 0,p={unversionedId:"cards/temperature",id:"version-v3.x.x/cards/temperature",title:"Temperature Card",description:"Preview:",source:"@site/versioned_docs/version-v3.x.x/cards/temperature.md",sourceDirName:"cards",slug:"/cards/temperature",permalink:"/v3.x.x/cards/temperature",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:2,frontMatter:{title:"Temperature Card",sidebar_label:"Temperature",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Generic",permalink:"/v3.x.x/cards/generic"},next:{title:"Humidity",permalink:"/v3.x.x/cards/humidity"}},o={},u=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],c={toc:u},d="wrapper";function s(e){let{components:t,...r}=e;return(0,n.kt)(d,(0,a.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{src:"/img//temperature-card.png",width:"280px",alt:"Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"This card adds a distinctive temperature icon, and just like generic card you can add a symbol which will be appended to your data."),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"TEMPERATURE_CARD")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"String"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Temperature Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )\n*/\nCard card1(&dashboard, TEMPERATURE_CARD, "Temperature1", "\xb0C");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(float value);\n")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")),(0,n.kt)("p",null,"Or you can also update the symbol along with the value like this:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'card1.update(value, "\xb0F");\n')),(0,n.kt)("br",null),(0,n.kt)("br",null))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/652d9580.3d67284c.js b/assets/js/652d9580.3d67284c.js deleted file mode 100644 index 93dbb58b..00000000 --- a/assets/js/652d9580.3d67284c.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[6913],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>m});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var l=a.createContext({}),c=function(e){var t=a.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},f=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,s=e.originalType,l=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),p=c(r),f=n,m=p["".concat(l,".").concat(f)]||p[f]||d[f]||s;return r?a.createElement(m,i(i({ref:t},u),{},{components:r})):a.createElement(m,i({ref:t},u))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var s=r.length,i=new Array(s);i[0]=f;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[p]="string"==typeof e?e:n,i[1]=o;for(var c=2;c{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>s,metadata:()=>o,toc:()=>c});var a=r(7462),n=(r(7294),r(3905));const s={title:"Disable Statistics",sidebar_label:"Disable Statistics",sidebar_position:2},i=void 0,o={unversionedId:"features/disable-stats",id:"features/disable-stats",title:"Disable Statistics",description:"You can disable system statistics by using setting false in ESPDash class constructor.",source:"@site/docs/features/disable-stats.md",sourceDirName:"features",slug:"/features/disable-stats",permalink:"/next/features/disable-stats",draft:!1,tags:[],version:"current",sidebarPosition:2,frontMatter:{title:"Disable Statistics",sidebar_label:"Disable Statistics",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"User Authentication",permalink:"/next/features/authentication"},next:{title:"Toggle Animation (Pro)",permalink:"/next/features/chartanimations"}},l={},c=[{value:"Example:",id:"example",level:4},{value:"If no custom URI is defined (second parameter):",id:"if-no-custom-uri-is-defined-second-parameter",level:4},{value:"If using a using custom URI (third parameter):",id:"if-using-a-using-custom-uri-third-parameter",level:4}],u={toc:c},p="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(p,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"You can disable system statistics by using setting ",(0,n.kt)("inlineCode",{parentName:"p"},"false")," in ESPDash class constructor."),(0,n.kt)("h4",{id:"example"},"Example:"),(0,n.kt)("h4",{id:"if-no-custom-uri-is-defined-second-parameter"},"If no custom URI is defined (second parameter):"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"ESPDash dashboard(&server, false);\n")),(0,n.kt)("h4",{id:"if-using-a-using-custom-uri-third-parameter"},"If using a using custom URI (third parameter):"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'ESPDash dashbord(&server, "/", false);\n')),(0,n.kt)("p",null,"If you would like to completely disable and hide the statistics tab from the sidebar, please use the above example and make sure you don't have any ",(0,n.kt)("i",null,"custom statistics"),'. By doing so, it will automatically hide the "statistics" tab from sidebar.'))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/652d9580.58c250bb.js b/assets/js/652d9580.58c250bb.js new file mode 100644 index 00000000..ded0ea36 --- /dev/null +++ b/assets/js/652d9580.58c250bb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[248],{5788:(e,t,r)=>{r.d(t,{Iu:()=>u,yg:()=>m});var a=r(1504);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var l=a.createContext({}),c=function(e){var t=a.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},f=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,s=e.originalType,l=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),p=c(r),f=n,m=p["".concat(l,".").concat(f)]||p[f]||d[f]||s;return r?a.createElement(m,i(i({ref:t},u),{},{components:r})):a.createElement(m,i({ref:t},u))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var s=r.length,i=new Array(s);i[0]=f;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[p]="string"==typeof e?e:n,i[1]=o;for(var c=2;c{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>s,metadata:()=>o,toc:()=>c});var a=r(5072),n=(r(1504),r(5788));const s={title:"Disable Statistics",sidebar_label:"Disable Statistics",sidebar_position:2},i=void 0,o={unversionedId:"features/disable-stats",id:"features/disable-stats",title:"Disable Statistics",description:"You can disable system statistics by using setting false in ESPDash class constructor.",source:"@site/docs/features/disable-stats.md",sourceDirName:"features",slug:"/features/disable-stats",permalink:"/next/features/disable-stats",draft:!1,tags:[],version:"current",sidebarPosition:2,frontMatter:{title:"Disable Statistics",sidebar_label:"Disable Statistics",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"User Authentication",permalink:"/next/features/authentication"},next:{title:"Toggle Animation (Pro)",permalink:"/next/features/chartanimations"}},l={},c=[{value:"Example:",id:"example",level:4},{value:"If no custom URI is defined (second parameter):",id:"if-no-custom-uri-is-defined-second-parameter",level:4},{value:"If using a using custom URI (third parameter):",id:"if-using-a-using-custom-uri-third-parameter",level:4}],u={toc:c},p="wrapper";function d(e){let{components:t,...r}=e;return(0,n.yg)(p,(0,a.c)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.yg)("p",null,"You can disable system statistics by using setting ",(0,n.yg)("inlineCode",{parentName:"p"},"false")," in ESPDash class constructor."),(0,n.yg)("h4",{id:"example"},"Example:"),(0,n.yg)("h4",{id:"if-no-custom-uri-is-defined-second-parameter"},"If no custom URI is defined (second parameter):"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"ESPDash dashboard(&server, false);\n")),(0,n.yg)("h4",{id:"if-using-a-using-custom-uri-third-parameter"},"If using a using custom URI (third parameter):"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'ESPDash dashbord(&server, "/", false);\n')),(0,n.yg)("p",null,"If you would like to completely disable and hide the statistics tab from the sidebar, please use the above example and make sure you don't have any ",(0,n.yg)("i",null,"custom statistics"),'. By doing so, it will automatically hide the "statistics" tab from sidebar.'))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6944cb31.87f2da5c.js b/assets/js/6944cb31.859e8dc8.js similarity index 98% rename from assets/js/6944cb31.87f2da5c.js rename to assets/js/6944cb31.859e8dc8.js index 8768564c..d1f87a0c 100644 --- a/assets/js/6944cb31.87f2da5c.js +++ b/assets/js/6944cb31.859e8dc8.js @@ -1 +1 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[9184],{2446:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"v3.x.x","label":"v3.x.x","banner":"unmaintained","badge":true,"noIndex":false,"className":"docs-version-v3.x.x","isLast":false,"docsSidebars":{"tutorialSidebar":[{"type":"link","label":"Introduction","href":"/v3.x.x/","docId":"intro"},{"type":"link","label":"Concept","href":"/v3.x.x/concept","docId":"concept"},{"type":"link","label":"Installation","href":"/v3.x.x/installation","docId":"installation"},{"type":"link","label":"Getting Started","href":"/v3.x.x/getting-started","docId":"getting-started"},{"type":"link","label":"Examples","href":"/v3.x.x/more-examples","docId":"more-examples"},{"type":"link","label":"Card Indexing (Pro)","href":"/v3.x.x/indexing","docId":"indexing"},{"type":"category","label":"Cards","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Generic","href":"/v3.x.x/cards/generic","docId":"cards/generic"},{"type":"link","label":"Temperature","href":"/v3.x.x/cards/temperature","docId":"cards/temperature"},{"type":"link","label":"Humidity","href":"/v3.x.x/cards/humidity","docId":"cards/humidity"},{"type":"link","label":"Air (Pro)","href":"/v3.x.x/cards/air","docId":"cards/air"},{"type":"link","label":"Energy (Pro)","href":"/v3.x.x/cards/energy","docId":"cards/energy"},{"type":"link","label":"Progress","href":"/v3.x.x/cards/progress","docId":"cards/progress"},{"type":"link","label":"Button","href":"/v3.x.x/cards/button","docId":"cards/button"},{"type":"link","label":"Status","href":"/v3.x.x/cards/status","docId":"cards/status"},{"type":"link","label":"Slider","href":"/v3.x.x/cards/slider","docId":"cards/slider"},{"type":"link","label":"Text Input (Pro)","href":"/v3.x.x/cards/text-input","docId":"cards/text-input"},{"type":"link","label":"Joystick (Pro)","href":"/v3.x.x/cards/joystick","docId":"cards/joystick"}],"href":"/v3.x.x/category/cards"},{"type":"category","label":"Charts","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Bar","href":"/v3.x.x/charts/bar","docId":"charts/bar"},{"type":"link","label":"Line (Pro)","href":"/v3.x.x/charts/line","docId":"charts/line"},{"type":"link","label":"Area (Pro)","href":"/v3.x.x/charts/area","docId":"charts/area"},{"type":"link","label":"Pie (Pro)","href":"/v3.x.x/charts/pie","docId":"charts/pie"}],"href":"/v3.x.x/category/charts"}]},"docs":{"cards/air":{"id":"cards/air","title":"Air Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"cards/button":{"id":"cards/button","title":"Button Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/energy":{"id":"cards/energy","title":"Energy Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"cards/generic":{"id":"cards/generic","title":"Generic Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/humidity":{"id":"cards/humidity","title":"Humidity Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/joystick":{"id":"cards/joystick","title":"Joystick Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"cards/progress":{"id":"cards/progress","title":"Progress Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/slider":{"id":"cards/slider","title":"Slider Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/status":{"id":"cards/status","title":"Status Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/temperature":{"id":"cards/temperature","title":"Temperature Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/text-input":{"id":"cards/text-input","title":"Text Input Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"charts/area":{"id":"charts/area","title":"Area Chart","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"charts/bar":{"id":"charts/bar","title":"Bar Chart","description":"Preview:","sidebar":"tutorialSidebar"},"charts/line":{"id":"charts/line","title":"Line Chart","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"charts/pie":{"id":"charts/pie","title":"Pie Chart","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"concept":{"id":"concept","title":"Concept of DASH","description":"The whole concept of ESP-DASH is around the idea of having \'Cards\' and \'Charts\' ( UI components ) on our dashboard. Therefore with V3, we divided the whole library into 3 separate classes:","sidebar":"tutorialSidebar"},"getting-started":{"id":"getting-started","title":"Getting Started","description":"To get started with ESP-DASH, we will be creating our basic example step by step and learn what each setup does:","sidebar":"tutorialSidebar"},"indexing":{"id":"indexing","title":"Card Indexing","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"installation":{"id":"installation","title":"Installation","description":"ESP-DASH depends on the following open-source libraries/boards. Make sure to install them before you install ESP-DASH.","sidebar":"tutorialSidebar"},"intro":{"id":"intro","title":"Intro","description":" ","sidebar":"tutorialSidebar"},"more-examples":{"id":"more-examples","title":"Examples","description":"There are many example sketches in our repository. You can check those out to know more about what you can do with ESP-DASH.","sidebar":"tutorialSidebar"}}}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[3960],{4828:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"v3.x.x","label":"v3.x.x","banner":"unmaintained","badge":true,"noIndex":false,"className":"docs-version-v3.x.x","isLast":false,"docsSidebars":{"tutorialSidebar":[{"type":"link","label":"Introduction","href":"/v3.x.x/","docId":"intro"},{"type":"link","label":"Concept","href":"/v3.x.x/concept","docId":"concept"},{"type":"link","label":"Installation","href":"/v3.x.x/installation","docId":"installation"},{"type":"link","label":"Getting Started","href":"/v3.x.x/getting-started","docId":"getting-started"},{"type":"link","label":"Examples","href":"/v3.x.x/more-examples","docId":"more-examples"},{"type":"link","label":"Card Indexing (Pro)","href":"/v3.x.x/indexing","docId":"indexing"},{"type":"category","label":"Cards","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Generic","href":"/v3.x.x/cards/generic","docId":"cards/generic"},{"type":"link","label":"Temperature","href":"/v3.x.x/cards/temperature","docId":"cards/temperature"},{"type":"link","label":"Humidity","href":"/v3.x.x/cards/humidity","docId":"cards/humidity"},{"type":"link","label":"Air (Pro)","href":"/v3.x.x/cards/air","docId":"cards/air"},{"type":"link","label":"Energy (Pro)","href":"/v3.x.x/cards/energy","docId":"cards/energy"},{"type":"link","label":"Progress","href":"/v3.x.x/cards/progress","docId":"cards/progress"},{"type":"link","label":"Button","href":"/v3.x.x/cards/button","docId":"cards/button"},{"type":"link","label":"Status","href":"/v3.x.x/cards/status","docId":"cards/status"},{"type":"link","label":"Slider","href":"/v3.x.x/cards/slider","docId":"cards/slider"},{"type":"link","label":"Text Input (Pro)","href":"/v3.x.x/cards/text-input","docId":"cards/text-input"},{"type":"link","label":"Joystick (Pro)","href":"/v3.x.x/cards/joystick","docId":"cards/joystick"}],"href":"/v3.x.x/category/cards"},{"type":"category","label":"Charts","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Bar","href":"/v3.x.x/charts/bar","docId":"charts/bar"},{"type":"link","label":"Line (Pro)","href":"/v3.x.x/charts/line","docId":"charts/line"},{"type":"link","label":"Area (Pro)","href":"/v3.x.x/charts/area","docId":"charts/area"},{"type":"link","label":"Pie (Pro)","href":"/v3.x.x/charts/pie","docId":"charts/pie"}],"href":"/v3.x.x/category/charts"}]},"docs":{"cards/air":{"id":"cards/air","title":"Air Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"cards/button":{"id":"cards/button","title":"Button Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/energy":{"id":"cards/energy","title":"Energy Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"cards/generic":{"id":"cards/generic","title":"Generic Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/humidity":{"id":"cards/humidity","title":"Humidity Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/joystick":{"id":"cards/joystick","title":"Joystick Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"cards/progress":{"id":"cards/progress","title":"Progress Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/slider":{"id":"cards/slider","title":"Slider Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/status":{"id":"cards/status","title":"Status Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/temperature":{"id":"cards/temperature","title":"Temperature Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/text-input":{"id":"cards/text-input","title":"Text Input Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"charts/area":{"id":"charts/area","title":"Area Chart","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"charts/bar":{"id":"charts/bar","title":"Bar Chart","description":"Preview:","sidebar":"tutorialSidebar"},"charts/line":{"id":"charts/line","title":"Line Chart","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"charts/pie":{"id":"charts/pie","title":"Pie Chart","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"concept":{"id":"concept","title":"Concept of DASH","description":"The whole concept of ESP-DASH is around the idea of having \'Cards\' and \'Charts\' ( UI components ) on our dashboard. Therefore with V3, we divided the whole library into 3 separate classes:","sidebar":"tutorialSidebar"},"getting-started":{"id":"getting-started","title":"Getting Started","description":"To get started with ESP-DASH, we will be creating our basic example step by step and learn what each setup does:","sidebar":"tutorialSidebar"},"indexing":{"id":"indexing","title":"Card Indexing","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"installation":{"id":"installation","title":"Installation","description":"ESP-DASH depends on the following open-source libraries/boards. Make sure to install them before you install ESP-DASH.","sidebar":"tutorialSidebar"},"intro":{"id":"intro","title":"Intro","description":" ","sidebar":"tutorialSidebar"},"more-examples":{"id":"more-examples","title":"Examples","description":"There are many example sketches in our repository. You can check those out to know more about what you can do with ESP-DASH.","sidebar":"tutorialSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/6bf84c41.28a5acfc.js b/assets/js/6bf84c41.28a5acfc.js new file mode 100644 index 00000000..ef0bd889 --- /dev/null +++ b/assets/js/6bf84c41.28a5acfc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[1972],{5788:(e,r,t)=>{t.d(r,{Iu:()=>p,yg:()=>d});var n=t(1504);function a(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function i(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function l(e){for(var r=1;r=0||(a[t]=e[t]);return a}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var s=n.createContext({}),u=function(e){var r=n.useContext(s),t=r;return e&&(t="function"==typeof e?e(r):l(l({},r),e)),t},p=function(e){var r=u(e.components);return n.createElement(s.Provider,{value:r},e.children)},c="mdxType",y={inlineCode:"code",wrapper:function(e){var r=e.children;return n.createElement(n.Fragment,{},r)}},g=n.forwardRef((function(e,r){var t=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),c=u(t),g=a,d=c["".concat(s,".").concat(g)]||c[g]||y[g]||i;return t?n.createElement(d,l(l({ref:r},p),{},{components:t})):n.createElement(d,l({ref:r},p))}));function d(e,r){var t=arguments,a=r&&r.mdxType;if("string"==typeof e||a){var i=t.length,l=new Array(i);l[0]=g;var o={};for(var s in r)hasOwnProperty.call(r,s)&&(o[s]=r[s]);o.originalType=e,o[c]="string"==typeof e?e:a,l[1]=o;for(var u=2;u{t.r(r),t.d(r,{assets:()=>s,contentTitle:()=>l,default:()=>y,frontMatter:()=>i,metadata:()=>o,toc:()=>u});var n=t(5072),a=(t(1504),t(5788));const i={title:"Installation",sidebar_label:"Installation",sidebar_position:3},l=void 0,o={unversionedId:"installation",id:"version-v3.x.x/installation",title:"Installation",description:"ESP-DASH depends on the following open-source libraries/boards. Make sure to install them before you install ESP-DASH.",source:"@site/versioned_docs/version-v3.x.x/installation.md",sourceDirName:".",slug:"/installation",permalink:"/v3.x.x/installation",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:3,frontMatter:{title:"Installation",sidebar_label:"Installation",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Concept",permalink:"/v3.x.x/concept"},next:{title:"Getting Started",permalink:"/v3.x.x/getting-started"}},s={},u=[{value:"For ESP8266:",id:"for-esp8266",level:5},{value:"For ESP32:",id:"for-esp32",level:5},{value:"Installing ESP-DASH",id:"installing-esp-dash",level:3},{value:"1. Directly Through Arduino IDE - Library Manager",id:"1-directly-through-arduino-ide---library-manager",level:4},{value:"2. Manual Install",id:"2-manual-install",level:4},{value:"For Windows:",id:"for-windows",level:5},{value:"For Linux:",id:"for-linux",level:5},{value:"3. Import through Arduino IDE",id:"3-import-through-arduino-ide",level:4}],p={toc:u},c="wrapper";function y(e){let{components:r,...t}=e;return(0,a.yg)(c,(0,n.c)({},p,t,{components:r,mdxType:"MDXLayout"}),(0,a.yg)("p",null,"ESP-DASH depends on the following open-source libraries/boards. Make sure to install them before you install ESP-DASH."),(0,a.yg)("h5",{id:"for-esp8266"},"For ESP8266:"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/esp8266/Arduino"},"ESP8266 Arduino Core")," - ",(0,a.yg)("strong",{parentName:"li"},"(latest)")),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/me-no-dev/ESPAsyncTCP"},"ESPAsyncTCP")," - ",(0,a.yg)("strong",{parentName:"li"},"v1.2.0")),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/me-no-dev/ESPAsyncWebServer"},"ESPAsyncWebServer")," - ",(0,a.yg)("strong",{parentName:"li"},"v1.2.3")),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/bblanchon/ArduinoJson"},"ArduinoJson")," - ",(0,a.yg)("strong",{parentName:"li"},"v6.17.0"))),(0,a.yg)("h5",{id:"for-esp32"},"For ESP32:"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/espressif/arduino-esp32"},"ESP32 Arduino Core")," - ",(0,a.yg)("strong",{parentName:"li"},"(latest)")),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/me-no-dev/AsyncTCP"},"AsyncTCP")," - ",(0,a.yg)("strong",{parentName:"li"},"v1.0.3")),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/me-no-dev/ESPAsyncWebServer"},"ESPAsyncWebServer")," - ",(0,a.yg)("strong",{parentName:"li"},"v1.2.3")),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/bblanchon/ArduinoJson"},"ArduinoJson")," - ",(0,a.yg)("strong",{parentName:"li"},"v6.17.0"))),(0,a.yg)("br",null),(0,a.yg)("h3",{id:"installing-esp-dash"},"Installing ESP-DASH"),(0,a.yg)("h4",{id:"1-directly-through-arduino-ide---library-manager"},"1. Directly Through Arduino IDE - Library Manager"),(0,a.yg)("p",null,'Go to Sketch > Include Library > Library Manager > Search for "ESP-DASH" > Install'),(0,a.yg)("h4",{id:"2-manual-install"},"2. Manual Install"),(0,a.yg)("h5",{id:"for-windows"},"For Windows:"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},"Download the ",(0,a.yg)("a",{parentName:"li",href:"https://github.com/ayushsharma82/ESP-DASH/archive/master.zip"},"Repository")),(0,a.yg)("li",{parentName:"ul"},"Extract the .zip in ",(0,a.yg)("inlineCode",{parentName:"li"},'Documents > Arduino > Libraries > {Place "ESP-DASH" folder Here}'))),(0,a.yg)("h5",{id:"for-linux"},"For Linux:"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},"Download the ",(0,a.yg)("a",{parentName:"li",href:"https://github.com/ayushsharma82/ESP-DASH/archive/master.zip"},"Repository")," "),(0,a.yg)("li",{parentName:"ul"},"Extract the .zip in ",(0,a.yg)("inlineCode",{parentName:"li"},'Sketchbook > Libraries > {Place "ESP-DASH" folder Here}'))),(0,a.yg)("h4",{id:"3-import-through-arduino-ide"},"3. Import through Arduino IDE"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},"Download the ",(0,a.yg)("a",{parentName:"li",href:"https://github.com/ayushsharma82/ESP-DASH/archive/master.zip"},"Repository")),(0,a.yg)("li",{parentName:"ul"},"Go to ",(0,a.yg)("inlineCode",{parentName:"li"},"Sketch > Include Library > Add .zip Library > Select the Downloaded .zip File."))))}y.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6bf84c41.a1eee67d.js b/assets/js/6bf84c41.a1eee67d.js deleted file mode 100644 index 13858792..00000000 --- a/assets/js/6bf84c41.a1eee67d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[3979],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>h});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}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 l(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),u=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},p=function(e){var t=u(e.components);return n.createElement(s.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),c=u(r),m=a,h=c["".concat(s,".").concat(m)]||c[m]||d[m]||i;return r?n.createElement(h,l(l({ref:t},p),{},{components:r})):n.createElement(h,l({ref:t},p))}));function h(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,l=new Array(i);l[0]=m;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[c]="string"==typeof e?e:a,l[1]=o;for(var u=2;u{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>d,frontMatter:()=>i,metadata:()=>o,toc:()=>u});var n=r(7462),a=(r(7294),r(3905));const i={title:"Installation",sidebar_label:"Installation",sidebar_position:3},l=void 0,o={unversionedId:"installation",id:"version-v3.x.x/installation",title:"Installation",description:"ESP-DASH depends on the following open-source libraries/boards. Make sure to install them before you install ESP-DASH.",source:"@site/versioned_docs/version-v3.x.x/installation.md",sourceDirName:".",slug:"/installation",permalink:"/v3.x.x/installation",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:3,frontMatter:{title:"Installation",sidebar_label:"Installation",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Concept",permalink:"/v3.x.x/concept"},next:{title:"Getting Started",permalink:"/v3.x.x/getting-started"}},s={},u=[{value:"For ESP8266:",id:"for-esp8266",level:5},{value:"For ESP32:",id:"for-esp32",level:5},{value:"Installing ESP-DASH",id:"installing-esp-dash",level:3},{value:"1. Directly Through Arduino IDE - Library Manager",id:"1-directly-through-arduino-ide---library-manager",level:4},{value:"2. Manual Install",id:"2-manual-install",level:4},{value:"For Windows:",id:"for-windows",level:5},{value:"For Linux:",id:"for-linux",level:5},{value:"3. Import through Arduino IDE",id:"3-import-through-arduino-ide",level:4}],p={toc:u},c="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(c,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"ESP-DASH depends on the following open-source libraries/boards. Make sure to install them before you install ESP-DASH."),(0,a.kt)("h5",{id:"for-esp8266"},"For ESP8266:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/esp8266/Arduino"},"ESP8266 Arduino Core")," - ",(0,a.kt)("strong",{parentName:"li"},"(latest)")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/me-no-dev/ESPAsyncTCP"},"ESPAsyncTCP")," - ",(0,a.kt)("strong",{parentName:"li"},"v1.2.0")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/me-no-dev/ESPAsyncWebServer"},"ESPAsyncWebServer")," - ",(0,a.kt)("strong",{parentName:"li"},"v1.2.3")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/bblanchon/ArduinoJson"},"ArduinoJson")," - ",(0,a.kt)("strong",{parentName:"li"},"v6.17.0"))),(0,a.kt)("h5",{id:"for-esp32"},"For ESP32:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/espressif/arduino-esp32"},"ESP32 Arduino Core")," - ",(0,a.kt)("strong",{parentName:"li"},"(latest)")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/me-no-dev/AsyncTCP"},"AsyncTCP")," - ",(0,a.kt)("strong",{parentName:"li"},"v1.0.3")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/me-no-dev/ESPAsyncWebServer"},"ESPAsyncWebServer")," - ",(0,a.kt)("strong",{parentName:"li"},"v1.2.3")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/bblanchon/ArduinoJson"},"ArduinoJson")," - ",(0,a.kt)("strong",{parentName:"li"},"v6.17.0"))),(0,a.kt)("br",null),(0,a.kt)("h3",{id:"installing-esp-dash"},"Installing ESP-DASH"),(0,a.kt)("h4",{id:"1-directly-through-arduino-ide---library-manager"},"1. Directly Through Arduino IDE - Library Manager"),(0,a.kt)("p",null,'Go to Sketch > Include Library > Library Manager > Search for "ESP-DASH" > Install'),(0,a.kt)("h4",{id:"2-manual-install"},"2. Manual Install"),(0,a.kt)("h5",{id:"for-windows"},"For Windows:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Download the ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/ayushsharma82/ESP-DASH/archive/master.zip"},"Repository")),(0,a.kt)("li",{parentName:"ul"},"Extract the .zip in ",(0,a.kt)("inlineCode",{parentName:"li"},'Documents > Arduino > Libraries > {Place "ESP-DASH" folder Here}'))),(0,a.kt)("h5",{id:"for-linux"},"For Linux:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Download the ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/ayushsharma82/ESP-DASH/archive/master.zip"},"Repository")," "),(0,a.kt)("li",{parentName:"ul"},"Extract the .zip in ",(0,a.kt)("inlineCode",{parentName:"li"},'Sketchbook > Libraries > {Place "ESP-DASH" folder Here}'))),(0,a.kt)("h4",{id:"3-import-through-arduino-ide"},"3. Import through Arduino IDE"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Download the ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/ayushsharma82/ESP-DASH/archive/master.zip"},"Repository")),(0,a.kt)("li",{parentName:"ul"},"Go to ",(0,a.kt)("inlineCode",{parentName:"li"},"Sketch > Include Library > Add .zip Library > Select the Downloaded .zip File."))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6d50d705.655757f6.js b/assets/js/6d50d705.655757f6.js deleted file mode 100644 index 03f648d6..00000000 --- a/assets/js/6d50d705.655757f6.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[9630],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>y});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}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 l(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),p=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},s=function(e){var t=p(e.components);return n.createElement(c.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),d=p(r),m=a,y=d["".concat(c,".").concat(m)]||d[m]||u[m]||i;return r?n.createElement(y,l(l({ref:t},s),{},{components:r})):n.createElement(y,l({ref:t},s))}));function y(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,l=new Array(i);l[0]=m;var o={};for(var c in t)hasOwnProperty.call(t,c)&&(o[c]=t[c]);o.originalType=e,o[d]="string"==typeof e?e:a,l[1]=o;for(var p=2;p{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var n=r(7462),a=(r(7294),r(3905));const i={title:"Generic Card",sidebar_label:"Generic",sidebar_position:1},l=void 0,o={unversionedId:"cards/generic",id:"version-v3.x.x/cards/generic",title:"Generic Card",description:"Preview:",source:"@site/versioned_docs/version-v3.x.x/cards/generic.md",sourceDirName:"cards",slug:"/cards/generic",permalink:"/v3.x.x/cards/generic",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:1,frontMatter:{title:"Generic Card",sidebar_label:"Generic",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Cards",permalink:"/v3.x.x/category/cards"},next:{title:"Temperature",permalink:"/v3.x.x/cards/temperature"}},c={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],s={toc:p},d="wrapper";function u(e){let{components:t,...r}=e;return(0,a.kt)(d,(0,n.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h4",{id:"preview"},"Preview:"),(0,a.kt)("img",{src:"/img/generic-card.png",width:"280px",alt:"Preview"}),(0,a.kt)("br",null),(0,a.kt)("br",null),(0,a.kt)("p",null,"Generic card is the 'fits-all-types' card, which you can use to display any kind of value. It's mostly used when you want to display numbers, strings etc which don't relate to any other card in the list."),(0,a.kt)("small",null,(0,a.kt)("b",null,"Note:")," If you can't find the card which you are looking for, you can always raise request for more cards on the repository by creating an issue."),(0,a.kt)("br",null),(0,a.kt)("h4",{id:"type"},"Type:"),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"GENERIC_CARD")),(0,a.kt)("br",null),(0,a.kt)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"int")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"bool")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"float")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"String"))),(0,a.kt)("br",null),(0,a.kt)("h4",{id:"initializer"},"Initializer:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Generic Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )\n*/\nCard card1(&dashboard, GENERIC_CARD, "Generic1");\n')),(0,a.kt)("br",null),(0,a.kt)("h4",{id:"updaters"},"Updaters:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(bool value);\n")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(float value);\n")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")),(0,a.kt)("br",null),(0,a.kt)("br",null))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6d50d705.9b04319f.js b/assets/js/6d50d705.9b04319f.js new file mode 100644 index 00000000..94ee575f --- /dev/null +++ b/assets/js/6d50d705.9b04319f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[4992],{5788:(e,r,n)=>{n.d(r,{Iu:()=>s,yg:()=>g});var t=n(1504);function a(e,r,n){return r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}function i(e,r){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r&&(t=t.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),n.push.apply(n,t)}return n}function l(e){for(var r=1;r=0||(a[n]=e[n]);return a}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=t.createContext({}),p=function(e){var r=t.useContext(c),n=r;return e&&(n="function"==typeof e?e(r):l(l({},r),e)),n},s=function(e){var r=p(e.components);return t.createElement(c.Provider,{value:r},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var r=e.children;return t.createElement(t.Fragment,{},r)}},y=t.forwardRef((function(e,r){var n=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),d=p(n),y=a,g=d["".concat(c,".").concat(y)]||d[y]||u[y]||i;return n?t.createElement(g,l(l({ref:r},s),{},{components:n})):t.createElement(g,l({ref:r},s))}));function g(e,r){var n=arguments,a=r&&r.mdxType;if("string"==typeof e||a){var i=n.length,l=new Array(i);l[0]=y;var o={};for(var c in r)hasOwnProperty.call(r,c)&&(o[c]=r[c]);o.originalType=e,o[d]="string"==typeof e?e:a,l[1]=o;for(var p=2;p{n.r(r),n.d(r,{assets:()=>c,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var t=n(5072),a=(n(1504),n(5788));const i={title:"Generic Card",sidebar_label:"Generic",sidebar_position:1},l=void 0,o={unversionedId:"cards/generic",id:"version-v3.x.x/cards/generic",title:"Generic Card",description:"Preview:",source:"@site/versioned_docs/version-v3.x.x/cards/generic.md",sourceDirName:"cards",slug:"/cards/generic",permalink:"/v3.x.x/cards/generic",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:1,frontMatter:{title:"Generic Card",sidebar_label:"Generic",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Cards",permalink:"/v3.x.x/category/cards"},next:{title:"Temperature",permalink:"/v3.x.x/cards/temperature"}},c={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],s={toc:p},d="wrapper";function u(e){let{components:r,...n}=e;return(0,a.yg)(d,(0,t.c)({},s,n,{components:r,mdxType:"MDXLayout"}),(0,a.yg)("h4",{id:"preview"},"Preview:"),(0,a.yg)("img",{src:"/img/generic-card.png",width:"280px",alt:"Preview"}),(0,a.yg)("br",null),(0,a.yg)("br",null),(0,a.yg)("p",null,"Generic card is the 'fits-all-types' card, which you can use to display any kind of value. It's mostly used when you want to display numbers, strings etc which don't relate to any other card in the list."),(0,a.yg)("small",null,(0,a.yg)("b",null,"Note:")," If you can't find the card which you are looking for, you can always raise request for more cards on the repository by creating an issue."),(0,a.yg)("br",null),(0,a.yg)("h4",{id:"type"},"Type:"),(0,a.yg)("p",null,(0,a.yg)("inlineCode",{parentName:"p"},"GENERIC_CARD")),(0,a.yg)("br",null),(0,a.yg)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("inlineCode",{parentName:"li"},"int")),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("inlineCode",{parentName:"li"},"bool")),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("inlineCode",{parentName:"li"},"float")),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("inlineCode",{parentName:"li"},"String"))),(0,a.yg)("br",null),(0,a.yg)("h4",{id:"initializer"},"Initializer:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Generic Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )\n*/\nCard card1(&dashboard, GENERIC_CARD, "Generic1");\n')),(0,a.yg)("br",null),(0,a.yg)("h4",{id:"updaters"},"Updaters:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(bool value);\n")),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(float value);\n")),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")),(0,a.yg)("br",null),(0,a.yg)("br",null))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6fb081b8.1a0e07d2.js b/assets/js/6fb081b8.1a0e07d2.js new file mode 100644 index 00000000..278479c3 --- /dev/null +++ b/assets/js/6fb081b8.1a0e07d2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[2048],{5788:(e,r,a)=>{a.d(r,{Iu:()=>c,yg:()=>g});var n=a(1504);function t(e,r,a){return r in e?Object.defineProperty(e,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[r]=a,e}function l(e,r){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var r=1;r=0||(t[a]=e[a]);return t}(e,r);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(t[a]=e[a])}return t}var p=n.createContext({}),s=function(e){var r=n.useContext(p),a=r;return e&&(a="function"==typeof e?e(r):i(i({},r),e)),a},c=function(e){var r=s(e.components);return n.createElement(p.Provider,{value:r},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var r=e.children;return n.createElement(n.Fragment,{},r)}},y=n.forwardRef((function(e,r){var a=e.components,t=e.mdxType,l=e.originalType,p=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),d=s(a),y=t,g=d["".concat(p,".").concat(y)]||d[y]||u[y]||l;return a?n.createElement(g,i(i({ref:r},c),{},{components:a})):n.createElement(g,i({ref:r},c))}));function g(e,r){var a=arguments,t=r&&r.mdxType;if("string"==typeof e||t){var l=a.length,i=new Array(l);i[0]=y;var o={};for(var p in r)hasOwnProperty.call(r,p)&&(o[p]=r[p]);o.originalType=e,o[d]="string"==typeof e?e:t,i[1]=o;for(var s=2;s{a.r(r),a.d(r,{assets:()=>p,contentTitle:()=>i,default:()=>u,frontMatter:()=>l,metadata:()=>o,toc:()=>s});var n=a(5072),t=(a(1504),a(5788));const l={title:"Energy Card",sidebar_label:"Energy (Pro)",sidebar_position:4},i=void 0,o={unversionedId:"cards/energy",id:"version-v4.x.x/cards/energy",title:"Energy Card",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v4.x.x/cards/energy.md",sourceDirName:"cards",slug:"/cards/energy",permalink:"/cards/energy",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:4,frontMatter:{title:"Energy Card",sidebar_label:"Energy (Pro)",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Air (Pro)",permalink:"/cards/air"},next:{title:"Progress",permalink:"/cards/progress"}},p={},s=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],c={toc:s},d="wrapper";function u(e){let{components:r,...a}=e;return(0,t.yg)(d,(0,n.c)({},c,a,{components:r,mdxType:"MDXLayout"}),(0,t.yg)("div",{className:"pro-label"},(0,t.yg)("i",null,(0,t.yg)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,t.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,t.yg)("h4",{id:"preview"},"Preview:"),(0,t.yg)("img",{className:"card-preview",src:"/img/v4/energy-card.png",width:"280px",alt:"Energy Card Preview"}),(0,t.yg)("br",null),(0,t.yg)("br",null),(0,t.yg)("p",null,"This card adds a distinctive energy/power icon, and just like generic card you can add a symbol which will be appended to your data. This card can be used to show something related to power consumption and usage etc."),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"type"},"Type:"),(0,t.yg)("p",null,(0,t.yg)("inlineCode",{parentName:"p"},"ENERGY_CARD")),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,t.yg)("ul",null,(0,t.yg)("li",{parentName:"ul"},(0,t.yg)("inlineCode",{parentName:"li"},"int")),(0,t.yg)("li",{parentName:"ul"},(0,t.yg)("inlineCode",{parentName:"li"},"float")),(0,t.yg)("li",{parentName:"ul"},(0,t.yg)("inlineCode",{parentName:"li"},"String"))),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"initializer"},"Initializer:"),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Energy Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )\n*/\nCard card1(&dashboard, ENERGY_CARD, "Power Consumption", "kWh");\n')),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"updaters"},"Updaters:"),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(float value);\n")),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")),(0,t.yg)("p",null,"Or you can also update the symbol along with the value like this:"),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},'card1.update(value, "kWh");\n')),(0,t.yg)("br",null),(0,t.yg)("br",null))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6fb081b8.34f5e2e2.js b/assets/js/6fb081b8.34f5e2e2.js deleted file mode 100644 index 6c700999..00000000 --- a/assets/js/6fb081b8.34f5e2e2.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[5983],{3905:(e,r,t)=>{t.d(r,{Zo:()=>c,kt:()=>m});var a=t(7294);function n(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function l(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);r&&(a=a.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,a)}return t}function i(e){for(var r=1;r=0||(n[t]=e[t]);return n}(e,r);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}var p=a.createContext({}),s=function(e){var r=a.useContext(p),t=r;return e&&(t="function"==typeof e?e(r):i(i({},r),e)),t},c=function(e){var r=s(e.components);return a.createElement(p.Provider,{value:r},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var r=e.children;return a.createElement(a.Fragment,{},r)}},y=a.forwardRef((function(e,r){var t=e.components,n=e.mdxType,l=e.originalType,p=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),d=s(t),y=n,m=d["".concat(p,".").concat(y)]||d[y]||u[y]||l;return t?a.createElement(m,i(i({ref:r},c),{},{components:t})):a.createElement(m,i({ref:r},c))}));function m(e,r){var t=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var l=t.length,i=new Array(l);i[0]=y;var o={};for(var p in r)hasOwnProperty.call(r,p)&&(o[p]=r[p]);o.originalType=e,o[d]="string"==typeof e?e:n,i[1]=o;for(var s=2;s{t.r(r),t.d(r,{assets:()=>p,contentTitle:()=>i,default:()=>u,frontMatter:()=>l,metadata:()=>o,toc:()=>s});var a=t(7462),n=(t(7294),t(3905));const l={title:"Energy Card",sidebar_label:"Energy (Pro)",sidebar_position:4},i=void 0,o={unversionedId:"cards/energy",id:"version-v4.x.x/cards/energy",title:"Energy Card",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v4.x.x/cards/energy.md",sourceDirName:"cards",slug:"/cards/energy",permalink:"/cards/energy",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:4,frontMatter:{title:"Energy Card",sidebar_label:"Energy (Pro)",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Air (Pro)",permalink:"/cards/air"},next:{title:"Progress",permalink:"/cards/progress"}},p={},s=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],c={toc:s},d="wrapper";function u(e){let{components:r,...t}=e;return(0,n.kt)(d,(0,a.Z)({},c,t,{components:r,mdxType:"MDXLayout"}),(0,n.kt)("div",{className:"pro-label"},(0,n.kt)("i",null,(0,n.kt)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/energy-card.png",width:"280px",alt:"Energy Card Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"This card adds a distinctive energy/power icon, and just like generic card you can add a symbol which will be appended to your data. This card can be used to show something related to power consumption and usage etc."),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"ENERGY_CARD")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"String"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Energy Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )\n*/\nCard card1(&dashboard, ENERGY_CARD, "Power Consumption", "kWh");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(float value);\n")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")),(0,n.kt)("p",null,"Or you can also update the symbol along with the value like this:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'card1.update(value, "kWh");\n')),(0,n.kt)("br",null),(0,n.kt)("br",null))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/78c63844.6338b5df.js b/assets/js/78c63844.6338b5df.js deleted file mode 100644 index 2b5ecf74..00000000 --- a/assets/js/78c63844.6338b5df.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[7190],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>y});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var o=a.createContext({}),c=function(e){var t=a.useContext(o),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=c(e.components);return a.createElement(o.Provider,{value:t},e.children)},d="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,l=e.originalType,o=e.parentName,u=p(e,["components","mdxType","originalType","parentName"]),d=c(r),m=n,y=d["".concat(o,".").concat(m)]||d[m]||s[m]||l;return r?a.createElement(y,i(i({ref:t},u),{},{components:r})):a.createElement(y,i({ref:t},u))}));function y(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=r.length,i=new Array(l);i[0]=m;var p={};for(var o in t)hasOwnProperty.call(t,o)&&(p[o]=t[o]);p.originalType=e,p[d]="string"==typeof e?e:n,i[1]=p;for(var c=2;c{r.r(t),r.d(t,{assets:()=>o,contentTitle:()=>i,default:()=>s,frontMatter:()=>l,metadata:()=>p,toc:()=>c});var a=r(7462),n=(r(7294),r(3905));const l={title:"Temperature Card",sidebar_label:"Temperature",sidebar_position:2},i=void 0,p={unversionedId:"cards/temperature",id:"cards/temperature",title:"Temperature Card",description:"Preview:",source:"@site/docs/cards/temperature.md",sourceDirName:"cards",slug:"/cards/temperature",permalink:"/next/cards/temperature",draft:!1,tags:[],version:"current",sidebarPosition:2,frontMatter:{title:"Temperature Card",sidebar_label:"Temperature",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Generic",permalink:"/next/cards/generic"},next:{title:"Humidity",permalink:"/next/cards/humidity"}},o={},c=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],u={toc:c},d="wrapper";function s(e){let{components:t,...r}=e;return(0,n.kt)(d,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/temperature-card.png",width:"280px",alt:"Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"This card adds a distinctive temperature icon, and just like generic card you can add a symbol which will be appended to your data."),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"TEMPERATURE_CARD")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"String"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Temperature Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )\n*/\nCard card1(&dashboard, TEMPERATURE_CARD, "Temperature1", "\xb0C");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(float value);\n")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")),(0,n.kt)("p",null,"Or you can also update the symbol along with the value like this:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'card1.update(value, "\xb0F");\n')),(0,n.kt)("br",null),(0,n.kt)("br",null))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/78c63844.72e8b46f.js b/assets/js/78c63844.72e8b46f.js new file mode 100644 index 00000000..9615e527 --- /dev/null +++ b/assets/js/78c63844.72e8b46f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[3008],{5788:(e,r,t)=>{t.d(r,{Iu:()=>u,yg:()=>g});var a=t(1504);function n(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function l(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);r&&(a=a.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,a)}return t}function i(e){for(var r=1;r=0||(n[t]=e[t]);return n}(e,r);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}var o=a.createContext({}),c=function(e){var r=a.useContext(o),t=r;return e&&(t="function"==typeof e?e(r):i(i({},r),e)),t},u=function(e){var r=c(e.components);return a.createElement(o.Provider,{value:r},e.children)},d="mdxType",s={inlineCode:"code",wrapper:function(e){var r=e.children;return a.createElement(a.Fragment,{},r)}},y=a.forwardRef((function(e,r){var t=e.components,n=e.mdxType,l=e.originalType,o=e.parentName,u=p(e,["components","mdxType","originalType","parentName"]),d=c(t),y=n,g=d["".concat(o,".").concat(y)]||d[y]||s[y]||l;return t?a.createElement(g,i(i({ref:r},u),{},{components:t})):a.createElement(g,i({ref:r},u))}));function g(e,r){var t=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var l=t.length,i=new Array(l);i[0]=y;var p={};for(var o in r)hasOwnProperty.call(r,o)&&(p[o]=r[o]);p.originalType=e,p[d]="string"==typeof e?e:n,i[1]=p;for(var c=2;c{t.r(r),t.d(r,{assets:()=>o,contentTitle:()=>i,default:()=>s,frontMatter:()=>l,metadata:()=>p,toc:()=>c});var a=t(5072),n=(t(1504),t(5788));const l={title:"Temperature Card",sidebar_label:"Temperature",sidebar_position:2},i=void 0,p={unversionedId:"cards/temperature",id:"cards/temperature",title:"Temperature Card",description:"Preview:",source:"@site/docs/cards/temperature.md",sourceDirName:"cards",slug:"/cards/temperature",permalink:"/next/cards/temperature",draft:!1,tags:[],version:"current",sidebarPosition:2,frontMatter:{title:"Temperature Card",sidebar_label:"Temperature",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Generic",permalink:"/next/cards/generic"},next:{title:"Humidity",permalink:"/next/cards/humidity"}},o={},c=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],u={toc:c},d="wrapper";function s(e){let{components:r,...t}=e;return(0,n.yg)(d,(0,a.c)({},u,t,{components:r,mdxType:"MDXLayout"}),(0,n.yg)("h4",{id:"preview"},"Preview:"),(0,n.yg)("img",{className:"card-preview",src:"/img/v4/temperature-card.png",width:"280px",alt:"Preview"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("p",null,"This card adds a distinctive temperature icon, and just like generic card you can add a symbol which will be appended to your data."),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"type"},"Type:"),(0,n.yg)("p",null,(0,n.yg)("inlineCode",{parentName:"p"},"TEMPERATURE_CARD")),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"int")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"float")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"String"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"initializer"},"Initializer:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Temperature Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )\n*/\nCard card1(&dashboard, TEMPERATURE_CARD, "Temperature1", "\xb0C");\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"updaters"},"Updaters:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(float value);\n")),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")),(0,n.yg)("p",null,"Or you can also update the symbol along with the value like this:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'card1.update(value, "\xb0F");\n')),(0,n.yg)("br",null),(0,n.yg)("br",null))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/7957.58b21ff1.js b/assets/js/7957.58b21ff1.js deleted file mode 100644 index cd76f1d3..00000000 --- a/assets/js/7957.58b21ff1.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[7957],{3905:(e,t,n)=>{"use strict";n.d(t,{Zo:()=>d,kt:()=>f});var a=n(7294);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 r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=a.createContext({}),i=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},d=function(e){var t=i(e.components);return a.createElement(s.Provider,{value:t},e.children)},m="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},p=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,s=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),m=i(n),p=o,f=m["".concat(s,".").concat(p)]||m[p]||u[p]||r;return n?a.createElement(f,l(l({ref:t},d),{},{components:n})):a.createElement(f,l({ref:t},d))}));function f(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,l=new Array(r);l[0]=p;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c[m]="string"==typeof e?e:o,l[1]=c;for(var i=2;i{"use strict";n.d(t,{Z:()=>v});var a=n(7462),o=n(7294),r=n(6010),l=n(5281),c=n(2802),s=n(8596),i=n(9960),d=n(5999),m=n(4996);function u(e){return o.createElement("svg",(0,a.Z)({viewBox:"0 0 24 24"},e),o.createElement("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 p={breadcrumbHomeIcon:"breadcrumbHomeIcon_YNFT"};function f(){const e=(0,m.Z)("/");return o.createElement("li",{className:"breadcrumbs__item"},o.createElement(i.Z,{"aria-label":(0,d.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},o.createElement(u,{className:p.breadcrumbHomeIcon})))}const h={breadcrumbsContainer:"breadcrumbsContainer_Z_bl"};function g(e){let{children:t,href:n,isLast:a}=e;const r="breadcrumbs__link";return a?o.createElement("span",{className:r,itemProp:"name"},t):n?o.createElement(i.Z,{className:r,href:n,itemProp:"item"},o.createElement("span",{itemProp:"name"},t)):o.createElement("span",{className:r},t)}function b(e){let{children:t,active:n,index:l,addMicrodata:c}=e;return o.createElement("li",(0,a.Z)({},c&&{itemScope:!0,itemProp:"itemListElement",itemType:"https://schema.org/ListItem"},{className:(0,r.Z)("breadcrumbs__item",{"breadcrumbs__item--active":n})}),t,o.createElement("meta",{itemProp:"position",content:String(l+1)}))}function v(){const e=(0,c.s1)(),t=(0,s.Ns)();return e?o.createElement("nav",{className:(0,r.Z)(l.k.docs.docBreadcrumbs,h.breadcrumbsContainer),"aria-label":(0,d.I)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"})},o.createElement("ul",{className:"breadcrumbs",itemScope:!0,itemType:"https://schema.org/BreadcrumbList"},t&&o.createElement(f,null),e.map(((t,n)=>{const a=n===e.length-1;return o.createElement(b,{key:n,active:a,index:n,addMicrodata:!!t.href},o.createElement(g,{href:t.href,isLast:a},t.label))})))):null}},7887:(e,t,n)=>{"use strict";n.d(t,{Z:()=>C});var a=n(7294),o=n(6010),r=n(5281),l=n(5130),c=n(5999);function s(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:n}=e;return a.createElement(c.Z,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:a.createElement("b",null,a.createElement("time",{dateTime:new Date(1e3*t).toISOString()},n))}}," on {date}")}function i(e){let{lastUpdatedBy:t}=e;return a.createElement(c.Z,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:a.createElement("b",null,t)}}," by {user}")}function d(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:n,lastUpdatedBy:o}=e;return a.createElement("span",{className:r.k.common.lastUpdated},a.createElement(c.Z,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:t&&n?a.createElement(s,{lastUpdatedAt:t,formattedLastUpdatedAt:n}):"",byUser:o?a.createElement(i,{lastUpdatedBy:o}):""}},"Last updated{atDate}{byUser}"),!1)}var m=n(7462);const u={iconEdit:"iconEdit_Z9Sw"};function p(e){let{className:t,...n}=e;return a.createElement("svg",(0,m.Z)({fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,o.Z)(u.iconEdit,t),"aria-hidden":"true"},n),a.createElement("g",null,a.createElement("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 f(e){let{editUrl:t}=e;return a.createElement("a",{href:t,target:"_blank",rel:"noreferrer noopener",className:r.k.common.editThisPage},a.createElement(p,null),a.createElement(c.Z,{id:"theme.common.editThisPage",description:"The link label to edit the current page"},"Edit this page"))}var h=n(9960);const g={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};function b(e){let{permalink:t,label:n,count:r}=e;return a.createElement(h.Z,{href:t,className:(0,o.Z)(g.tag,r?g.tagWithCount:g.tagRegular)},n,r&&a.createElement("span",null,r))}const v={tags:"tags_jXut",tag:"tag_QGVx"};function E(e){let{tags:t}=e;return a.createElement(a.Fragment,null,a.createElement("b",null,a.createElement(c.Z,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list"},"Tags:")),a.createElement("ul",{className:(0,o.Z)(v.tags,"padding--none","margin-left--sm")},t.map((e=>{let{label:t,permalink:n}=e;return a.createElement("li",{key:n,className:v.tag},a.createElement(b,{label:t,permalink:n}))}))))}const y={lastUpdated:"lastUpdated_vwxv"};function k(e){return a.createElement("div",{className:(0,o.Z)(r.k.docs.docFooterTagsRow,"row margin-bottom--sm")},a.createElement("div",{className:"col"},a.createElement(E,e)))}function N(e){let{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:l,formattedLastUpdatedAt:c}=e;return a.createElement("div",{className:(0,o.Z)(r.k.docs.docFooterEditMetaRow,"row")},a.createElement("div",{className:"col"},t&&a.createElement(f,{editUrl:t})),a.createElement("div",{className:(0,o.Z)("col",y.lastUpdated)},(n||l)&&a.createElement(d,{lastUpdatedAt:n,formattedLastUpdatedAt:c,lastUpdatedBy:l})))}function C(){const{metadata:e}=(0,l.k)(),{editUrl:t,lastUpdatedAt:n,formattedLastUpdatedAt:c,lastUpdatedBy:s,tags:i}=e,d=i.length>0,m=!!(t||n||s);return d||m?a.createElement("footer",{className:(0,o.Z)(r.k.docs.docFooter,"docusaurus-mt-lg")},d&&a.createElement(k,{tags:i}),m&&a.createElement(N,{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:s,formattedLastUpdatedAt:c})):null}},2894:(e,t,n)=>{"use strict";n.d(t,{Z:()=>l});var a=n(7294),o=n(5130),r=n(4966);function l(){const{metadata:e}=(0,o.k)();return a.createElement(r.Z,{previous:e.previous,next:e.next})}},8832:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var a=n(7294),o=n(5281),r=n(5130),l=n(7462),c=n(6010),s=n(3743);const i={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"},d="table-of-contents__link toc-highlight",m="table-of-contents__link--active";function u(e){let{className:t,...n}=e;return a.createElement("div",{className:(0,c.Z)(i.tableOfContents,"thin-scrollbar",t)},a.createElement(s.Z,(0,l.Z)({},n,{linkClassName:d,linkActiveClassName:m})))}function p(){const{toc:e,frontMatter:t}=(0,r.k)();return a.createElement(u,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:o.k.docs.docTocDesktop})}},6781:(e,t,n)=>{"use strict";n.d(t,{Z:()=>g});var a=n(7294),o=n(6010),r=n(5281),l=n(5130),c=n(6043),s=n(3743),i=n(7462),d=n(5999);const m={tocCollapsibleButton:"tocCollapsibleButton_TO0P",tocCollapsibleButtonExpanded:"tocCollapsibleButtonExpanded_MG3E"};function u(e){let{collapsed:t,...n}=e;return a.createElement("button",(0,i.Z)({type:"button"},n,{className:(0,o.Z)("clean-btn",m.tocCollapsibleButton,!t&&m.tocCollapsibleButtonExpanded,n.className)}),a.createElement(d.Z,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component"},"On this page"))}const p={tocCollapsible:"tocCollapsible_ETCw",tocCollapsibleContent:"tocCollapsibleContent_vkbj",tocCollapsibleExpanded:"tocCollapsibleExpanded_sAul"};function f(e){let{toc:t,className:n,minHeadingLevel:r,maxHeadingLevel:l}=e;const{collapsed:i,toggleCollapsed:d}=(0,c.u)({initialState:!0});return a.createElement("div",{className:(0,o.Z)(p.tocCollapsible,!i&&p.tocCollapsibleExpanded,n)},a.createElement(u,{collapsed:i,onClick:d}),a.createElement(c.z,{lazy:!0,className:p.tocCollapsibleContent,collapsed:i},a.createElement(s.Z,{toc:t,minHeadingLevel:r,maxHeadingLevel:l})))}const h={tocMobile:"tocMobile_ITEo"};function g(){const{toc:e,frontMatter:t}=(0,l.k)();return a.createElement(f,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:(0,o.Z)(r.k.docs.docTocMobile,h.tocMobile)})}},6176:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var a=n(7294),o=n(1944),r=n(5130);function l(){const{metadata:e,frontMatter:t,assets:n}=(0,r.k)();return a.createElement(o.d,{title:e.title,description:e.description,keywords:t.keywords,image:n.image??t.image})}var c=n(11);function s(e){const t=`docs-doc-id-${e.content.metadata.unversionedId}`,n=e.content;return a.createElement(r.b,{content:e.content},a.createElement(o.FG,{className:t},a.createElement(l,null),a.createElement(c.Z,null,a.createElement(n,null))))}},4966:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var a=n(7462),o=n(7294),r=n(5999),l=n(6010),c=n(9960);function s(e){const{permalink:t,title:n,subLabel:a,isNext:r}=e;return o.createElement(c.Z,{className:(0,l.Z)("pagination-nav__link",r?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t},a&&o.createElement("div",{className:"pagination-nav__sublabel"},a),o.createElement("div",{className:"pagination-nav__label"},n))}function i(e){const{previous:t,next:n}=e;return o.createElement("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,r.I)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"})},t&&o.createElement(s,(0,a.Z)({},t,{subLabel:o.createElement(r.Z,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc"},"Previous")})),n&&o.createElement(s,(0,a.Z)({},n,{subLabel:o.createElement(r.Z,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc"},"Next"),isNext:!0})))}},4364:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(7294),o=n(6010),r=n(5999),l=n(5281),c=n(4477);function s(e){let{className:t}=e;const n=(0,c.E)();return n.badge?a.createElement("span",{className:(0,o.Z)(t,l.k.docs.docVersionBadge,"badge badge--secondary")},a.createElement(r.Z,{id:"theme.docs.versionBadge.label",values:{versionLabel:n.label}},"Version: {versionLabel}")):null}},3120:(e,t,n)=>{"use strict";n.d(t,{Z:()=>g});var a=n(7294),o=n(6010),r=n(2263),l=n(9960),c=n(5999),s=n(143),i=n(5281),d=n(373),m=n(4477);const u={unreleased:function(e){let{siteTitle:t,versionMetadata:n}=e;return a.createElement(c.Z,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:a.createElement("b",null,n.label)}},"This is unreleased documentation for {siteTitle} {versionLabel} version.")},unmaintained:function(e){let{siteTitle:t,versionMetadata:n}=e;return a.createElement(c.Z,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:a.createElement("b",null,n.label)}},"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.")}};function p(e){const t=u[e.versionMetadata.banner];return a.createElement(t,e)}function f(e){let{versionLabel:t,to:n,onClick:o}=e;return a.createElement(c.Z,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:a.createElement("b",null,a.createElement(l.Z,{to:n,onClick:o},a.createElement(c.Z,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label"},"latest version")))}},"For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).")}function h(e){let{className:t,versionMetadata:n}=e;const{siteConfig:{title:l}}=(0,r.Z)(),{pluginId:c}=(0,s.gA)({failfast:!0}),{savePreferredVersionName:m}=(0,d.J)(c),{latestDocSuggestion:u,latestVersionSuggestion:h}=(0,s.Jo)(c),g=u??(b=h).docs.find((e=>e.id===b.mainDocId));var b;return a.createElement("div",{className:(0,o.Z)(t,i.k.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert"},a.createElement("div",null,a.createElement(p,{siteTitle:l,versionMetadata:n})),a.createElement("div",{className:"margin-top--md"},a.createElement(f,{versionLabel:h.label,to:g.path,onClick:()=>m(h.name)})))}function g(e){let{className:t}=e;const n=(0,m.E)();return n.banner?a.createElement(h,{className:t,versionMetadata:n}):null}},2503:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var a=n(7462),o=n(7294),r=n(6010),l=n(5999),c=n(6668),s=n(9960);const i={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};function d(e){let{as:t,id:n,...d}=e;const{navbar:{hideOnScroll:m}}=(0,c.L)();if("h1"===t||!n)return o.createElement(t,(0,a.Z)({},d,{id:void 0}));const u=(0,l.I)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof d.children?d.children:n});return o.createElement(t,(0,a.Z)({},d,{className:(0,r.Z)("anchor",m?i.anchorWithHideOnScrollNavbar:i.anchorWithStickyNavbar,d.className),id:n}),d.children,o.createElement(s.Z,{className:"hash-link",to:`#${n}`,"aria-label":u,title:u},"\u200b"))}},1506:(e,t,n)=>{"use strict";n.d(t,{Z:()=>be});var a=n(7294),o=n(3905),r=n(7462),l=n(5742);var c=n(2389),s=n(6010),i=n(2949),d=n(6668);function m(){const{prism:e}=(0,d.L)(),{colorMode:t}=(0,i.I)(),n=e.theme,a=e.darkTheme||n;return"dark"===t?a:n}var u=n(5281),p=n(7594),f=n.n(p);const h=/title=(?["'])(?.*?)\1/,g=/\{(?<range>[\d,-]+)\}/,b={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}};function v(e,t){const n=e.map((e=>{const{start:n,end:a}=b[e];return`(?:${n}\\s*(${t.flatMap((e=>[e.line,e.block?.start,e.block?.end].filter(Boolean))).join("|")})\\s*${a})`})).join("|");return new RegExp(`^\\s*(?:${n})\\s*$`)}function E(e,t){let n=e.replace(/\n$/,"");const{language:a,magicComments:o,metastring:r}=t;if(r&&g.test(r)){const e=r.match(g).groups.range;if(0===o.length)throw new Error(`A highlight range has been given in code block's metastring (\`\`\` ${r}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.`);const t=o[0].className,a=f()(e).filter((e=>e>0)).map((e=>[e-1,[t]]));return{lineClassNames:Object.fromEntries(a),code:n}}if(void 0===a)return{lineClassNames:{},code:n};const l=function(e,t){switch(e){case"js":case"javascript":case"ts":case"typescript":return v(["js","jsBlock"],t);case"jsx":case"tsx":return v(["js","jsBlock","jsx"],t);case"html":return v(["js","jsBlock","html"],t);case"python":case"py":case"bash":return v(["bash"],t);case"markdown":case"md":return v(["html","jsx","bash"],t);default:return v(Object.keys(b),t)}}(a,o),c=n.split("\n"),s=Object.fromEntries(o.map((e=>[e.className,{start:0,range:""}]))),i=Object.fromEntries(o.filter((e=>e.line)).map((e=>{let{className:t,line:n}=e;return[n,t]}))),d=Object.fromEntries(o.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.start,t]}))),m=Object.fromEntries(o.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.end,t]})));for(let p=0;p<c.length;){const e=c[p].match(l);if(!e){p+=1;continue}const t=e.slice(1).find((e=>void 0!==e));i[t]?s[i[t]].range+=`${p},`:d[t]?s[d[t]].start=p:m[t]&&(s[m[t]].range+=`${s[m[t]].start}-${p-1},`),c.splice(p,1)}n=c.join("\n");const u={};return Object.entries(s).forEach((e=>{let[t,{range:n}]=e;f()(n).forEach((e=>{u[e]??=[],u[e].push(t)}))})),{lineClassNames:u,code:n}}const y={codeBlockContainer:"codeBlockContainer_Ckt0"};function k(e){let{as:t,...n}=e;const o=function(e){const t={color:"--prism-color",backgroundColor:"--prism-background-color"},n={};return Object.entries(e.plain).forEach((e=>{let[a,o]=e;const r=t[a];r&&"string"==typeof o&&(n[r]=o)})),n}(m());return a.createElement(t,(0,r.Z)({},n,{style:o,className:(0,s.Z)(n.className,y.codeBlockContainer,u.k.common.codeBlock)}))}const N={codeBlockContent:"codeBlockContent_biex",codeBlockTitle:"codeBlockTitle_Ktv7",codeBlock:"codeBlock_bY9V",codeBlockStandalone:"codeBlockStandalone_MEMb",codeBlockLines:"codeBlockLines_e6Vv",codeBlockLinesWithNumbering:"codeBlockLinesWithNumbering_o6Pm",buttonGroup:"buttonGroup__atx"};function C(e){let{children:t,className:n}=e;return a.createElement(k,{as:"pre",tabIndex:0,className:(0,s.Z)(N.codeBlockStandalone,"thin-scrollbar",n)},a.createElement("code",{className:N.codeBlockLines},t))}var L=n(902);const Z={attributes:!0,characterData:!0,childList:!0,subtree:!0};function T(e,t){const[n,o]=(0,a.useState)(),r=(0,a.useCallback)((()=>{o(e.current?.closest("[role=tabpanel][hidden]"))}),[e,o]);(0,a.useEffect)((()=>{r()}),[r]),function(e,t,n){void 0===n&&(n=Z);const o=(0,L.zX)(t),r=(0,L.Ql)(n);(0,a.useEffect)((()=>{const t=new MutationObserver(o);return e&&t.observe(e,r),()=>t.disconnect()}),[e,o,r])}(n,(e=>{e.forEach((e=>{"attributes"===e.type&&"hidden"===e.attributeName&&(t(),r())}))}),{attributes:!0,characterData:!1,childList:!1,subtree:!1})}const _={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"}}]};var w={Prism:n(7410).Z,theme:_};function B(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function x(){return x=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},x.apply(this,arguments)}var O=/\r\n|\r|\n/,H=function(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)},A=function(e,t){var n=e.length;return n>0&&e[n-1]===t?e:e.concat(t)};function j(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&-1===t.indexOf(a)&&(n[a]=e[a]);return n}var S=function(e){function t(){for(var t=this,n=[],a=arguments.length;a--;)n[a]=arguments[a];e.apply(this,n),B(this,"getThemeDict",(function(e){if(void 0!==t.themeDict&&e.theme===t.prevTheme&&e.language===t.prevLanguage)return t.themeDict;t.prevTheme=e.theme,t.prevLanguage=e.language;var n=e.theme?function(e,t){var n=e.plain,a=Object.create(null),o=e.styles.reduce((function(e,n){var a=n.languages,o=n.style;return a&&!a.includes(t)||n.types.forEach((function(t){var n=x({},e[t],o);e[t]=n})),e}),a);return o.root=n,o.plain=x({},n,{backgroundColor:null}),o}(e.theme,e.language):void 0;return t.themeDict=n})),B(this,"getLineProps",(function(e){var n=e.key,a=e.className,o=e.style,r=x({},j(e,["key","className","style","line"]),{className:"token-line",style:void 0,key:void 0}),l=t.getThemeDict(t.props);return void 0!==l&&(r.style=l.plain),void 0!==o&&(r.style=void 0!==r.style?x({},r.style,o):o),void 0!==n&&(r.key=n),a&&(r.className+=" "+a),r})),B(this,"getStyleForToken",(function(e){var n=e.types,a=e.empty,o=n.length,r=t.getThemeDict(t.props);if(void 0!==r){if(1===o&&"plain"===n[0])return a?{display:"inline-block"}:void 0;if(1===o&&!a)return r[n[0]];var l=a?{display:"inline-block"}:{},c=n.map((function(e){return r[e]}));return Object.assign.apply(Object,[l].concat(c))}})),B(this,"getTokenProps",(function(e){var n=e.key,a=e.className,o=e.style,r=e.token,l=x({},j(e,["key","className","style","token"]),{className:"token "+r.types.join(" "),children:r.content,style:t.getStyleForToken(r),key:void 0});return void 0!==o&&(l.style=void 0!==l.style?x({},l.style,o):o),void 0!==n&&(l.key=n),a&&(l.className+=" "+a),l})),B(this,"tokenize",(function(e,t,n,a){var o={code:t,grammar:n,language:a,tokens:[]};e.hooks.run("before-tokenize",o);var r=o.tokens=e.tokenize(o.code,o.grammar,o.language);return e.hooks.run("after-tokenize",o),r}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.render=function(){var e=this.props,t=e.Prism,n=e.language,a=e.code,o=e.children,r=this.getThemeDict(this.props),l=t.languages[n];return o({tokens:function(e){for(var t=[[]],n=[e],a=[0],o=[e.length],r=0,l=0,c=[],s=[c];l>-1;){for(;(r=a[l]++)<o[l];){var i=void 0,d=t[l],m=n[l][r];if("string"==typeof m?(d=l>0?d:["plain"],i=m):(d=A(d,m.type),m.alias&&(d=A(d,m.alias)),i=m.content),"string"==typeof i){var u=i.split(O),p=u.length;c.push({types:d,content:u[0]});for(var f=1;f<p;f++)H(c),s.push(c=[]),c.push({types:d,content:u[f]})}else l++,t.push(d),n.push(i),a.push(0),o.push(i.length)}l--,t.pop(),n.pop(),a.pop(),o.pop()}return H(c),s}(void 0!==l?this.tokenize(t,a,l,n):[a]),className:"prism-code language-"+n,style:void 0!==r?r.root:{},getLineProps:this.getLineProps,getTokenProps:this.getTokenProps})},t}(a.Component);const M=S,I={codeLine:"codeLine_lJS_",codeLineNumber:"codeLineNumber_Tfdd",codeLineContent:"codeLineContent_feaV"};function P(e){let{line:t,classNames:n,showLineNumbers:o,getLineProps:l,getTokenProps:c}=e;1===t.length&&"\n"===t[0].content&&(t[0].content="");const i=l({line:t,className:(0,s.Z)(n,o&&I.codeLine)}),d=t.map(((e,t)=>a.createElement("span",(0,r.Z)({key:t},c({token:e,key:t})))));return a.createElement("span",i,o?a.createElement(a.Fragment,null,a.createElement("span",{className:I.codeLineNumber}),a.createElement("span",{className:I.codeLineContent},d)):d,a.createElement("br",null))}var U=n(5999);function z(e){return a.createElement("svg",(0,r.Z)({viewBox:"0 0 24 24"},e),a.createElement("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 V(e){return a.createElement("svg",(0,r.Z)({viewBox:"0 0 24 24"},e),a.createElement("path",{fill:"currentColor",d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"}))}const D={copyButtonCopied:"copyButtonCopied_obH4",copyButtonIcons:"copyButtonIcons_eSgA",copyButtonIcon:"copyButtonIcon_y97N",copyButtonSuccessIcon:"copyButtonSuccessIcon_LjdS"};function R(e){let{code:t,className:n}=e;const[o,r]=(0,a.useState)(!1),l=(0,a.useRef)(void 0),c=(0,a.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 a=document.createElement("textarea"),o=document.activeElement;a.value=e,a.setAttribute("readonly",""),a.style.contain="strict",a.style.position="absolute",a.style.left="-9999px",a.style.fontSize="12pt";const r=document.getSelection(),l=r.rangeCount>0&&r.getRangeAt(0);n.append(a),a.select(),a.selectionStart=0,a.selectionEnd=e.length;let c=!1;try{c=document.execCommand("copy")}catch{}a.remove(),l&&(r.removeAllRanges(),r.addRange(l)),o&&o.focus()}(t),r(!0),l.current=window.setTimeout((()=>{r(!1)}),1e3)}),[t]);return(0,a.useEffect)((()=>()=>window.clearTimeout(l.current)),[]),a.createElement("button",{type:"button","aria-label":o?(0,U.I)({id:"theme.CodeBlock.copied",message:"Copied",description:"The copied button label on code blocks"}):(0,U.I)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"}),title:(0,U.I)({id:"theme.CodeBlock.copy",message:"Copy",description:"The copy button label on code blocks"}),className:(0,s.Z)("clean-btn",n,D.copyButton,o&&D.copyButtonCopied),onClick:c},a.createElement("span",{className:D.copyButtonIcons,"aria-hidden":"true"},a.createElement(z,{className:D.copyButtonIcon}),a.createElement(V,{className:D.copyButtonSuccessIcon})))}function W(e){return a.createElement("svg",(0,r.Z)({viewBox:"0 0 24 24"},e),a.createElement("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 $={wordWrapButtonIcon:"wordWrapButtonIcon_Bwma",wordWrapButtonEnabled:"wordWrapButtonEnabled_EoeP"};function F(e){let{className:t,onClick:n,isEnabled:o}=e;const r=(0,U.I)({id:"theme.CodeBlock.wordWrapToggle",message:"Toggle word wrap",description:"The title attribute for toggle word wrapping button of code block lines"});return a.createElement("button",{type:"button",onClick:n,className:(0,s.Z)("clean-btn",t,o&&$.wordWrapButtonEnabled),"aria-label":r,title:r},a.createElement(W,{className:$.wordWrapButtonIcon,"aria-hidden":"true"}))}function q(e){let{children:t,className:n="",metastring:o,title:l,showLineNumbers:c,language:i}=e;const{prism:{defaultLanguage:u,magicComments:p}}=(0,d.L)(),f=i??function(e){const t=e.split(" ").find((e=>e.startsWith("language-")));return t?.replace(/language-/,"")}(n)??u,g=m(),b=function(){const[e,t]=(0,a.useState)(!1),[n,o]=(0,a.useState)(!1),r=(0,a.useRef)(null),l=(0,a.useCallback)((()=>{const n=r.current.querySelector("code");e?n.removeAttribute("style"):(n.style.whiteSpace="pre-wrap",n.style.overflowWrap="anywhere"),t((e=>!e))}),[r,e]),c=(0,a.useCallback)((()=>{const{scrollWidth:e,clientWidth:t}=r.current,n=e>t||r.current.querySelector("code").hasAttribute("style");o(n)}),[r]);return T(r,c),(0,a.useEffect)((()=>{c()}),[e,c]),(0,a.useEffect)((()=>(window.addEventListener("resize",c,{passive:!0}),()=>{window.removeEventListener("resize",c)})),[c]),{codeBlockRef:r,isEnabled:e,isCodeScrollable:n,toggle:l}}(),v=function(e){return e?.match(h)?.groups.title??""}(o)||l,{lineClassNames:y,code:C}=E(t,{metastring:o,language:f,magicComments:p}),L=c??function(e){return Boolean(e?.includes("showLineNumbers"))}(o);return a.createElement(k,{as:"div",className:(0,s.Z)(n,f&&!n.includes(`language-${f}`)&&`language-${f}`)},v&&a.createElement("div",{className:N.codeBlockTitle},v),a.createElement("div",{className:N.codeBlockContent},a.createElement(M,(0,r.Z)({},w,{theme:g,code:C,language:f??"text"}),(e=>{let{className:t,tokens:n,getLineProps:o,getTokenProps:r}=e;return a.createElement("pre",{tabIndex:0,ref:b.codeBlockRef,className:(0,s.Z)(t,N.codeBlock,"thin-scrollbar")},a.createElement("code",{className:(0,s.Z)(N.codeBlockLines,L&&N.codeBlockLinesWithNumbering)},n.map(((e,t)=>a.createElement(P,{key:t,line:e,getLineProps:o,getTokenProps:r,classNames:y[t],showLineNumbers:L})))))})),a.createElement("div",{className:N.buttonGroup},(b.isEnabled||b.isCodeScrollable)&&a.createElement(F,{className:N.codeButton,onClick:()=>b.toggle(),isEnabled:b.isEnabled}),a.createElement(R,{className:N.codeButton,code:C}))))}function G(e){let{children:t,...n}=e;const o=(0,c.Z)(),l=function(e){return a.Children.toArray(e).some((e=>(0,a.isValidElement)(e)))?e:Array.isArray(e)?e.join(""):e}(t),s="string"==typeof l?q:C;return a.createElement(s,(0,r.Z)({key:String(o)},n),l)}var Y=n(9960);var J=n(6043);const Q={details:"details_lb9f",isBrowser:"isBrowser_bmU9",collapsibleContent:"collapsibleContent_i85q"};function X(e){return!!e&&("SUMMARY"===e.tagName||X(e.parentElement))}function K(e,t){return!!e&&(e===t||K(e.parentElement,t))}function ee(e){let{summary:t,children:n,...o}=e;const l=(0,c.Z)(),i=(0,a.useRef)(null),{collapsed:d,setCollapsed:m}=(0,J.u)({initialState:!o.open}),[u,p]=(0,a.useState)(o.open),f=a.isValidElement(t)?t:a.createElement("summary",null,t??"Details");return a.createElement("details",(0,r.Z)({},o,{ref:i,open:u,"data-collapsed":d,className:(0,s.Z)(Q.details,l&&Q.isBrowser,o.className),onMouseDown:e=>{X(e.target)&&e.detail>1&&e.preventDefault()},onClick:e=>{e.stopPropagation();const t=e.target;X(t)&&K(t,i.current)&&(e.preventDefault(),d?(m(!1),p(!0)):m(!0))}}),f,a.createElement(J.z,{lazy:!1,collapsed:d,disableSSRStyle:!0,onCollapseTransitionEnd:e=>{m(e),p(!e)}},a.createElement("div",{className:Q.collapsibleContent},n)))}const te={details:"details_b_Ee"},ne="alert alert--info";function ae(e){let{...t}=e;return a.createElement(ee,(0,r.Z)({},t,{className:(0,s.Z)(ne,te.details,t.className)}))}var oe=n(2503);function re(e){return a.createElement(oe.Z,e)}const le={containsTaskList:"containsTaskList_mC6p"};function ce(e){if(void 0!==e)return(0,s.Z)(e,e?.includes("contains-task-list")&&le.containsTaskList)}const se={img:"img_ev3q"};const ie="admonition_LlT9",de="admonitionHeading_tbUL",me="admonitionIcon_kALy",ue="admonitionContent_S0QG";const pe={note:{infimaClassName:"secondary",iconComponent:function(){return a.createElement("svg",{viewBox:"0 0 14 16"},a.createElement("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"}))},label:a.createElement(U.Z,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)"},"note")},tip:{infimaClassName:"success",iconComponent:function(){return a.createElement("svg",{viewBox:"0 0 12 16"},a.createElement("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"}))},label:a.createElement(U.Z,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)"},"tip")},danger:{infimaClassName:"danger",iconComponent:function(){return a.createElement("svg",{viewBox:"0 0 12 16"},a.createElement("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"}))},label:a.createElement(U.Z,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)"},"danger")},info:{infimaClassName:"info",iconComponent:function(){return a.createElement("svg",{viewBox:"0 0 14 16"},a.createElement("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"}))},label:a.createElement(U.Z,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)"},"info")},caution:{infimaClassName:"warning",iconComponent:function(){return a.createElement("svg",{viewBox:"0 0 16 16"},a.createElement("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"}))},label:a.createElement(U.Z,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)"},"caution")}},fe={secondary:"note",important:"info",success:"tip",warning:"danger"};function he(e){const{mdxAdmonitionTitle:t,rest:n}=function(e){const t=a.Children.toArray(e),n=t.find((e=>a.isValidElement(e)&&"mdxAdmonitionTitle"===e.props?.mdxType)),o=a.createElement(a.Fragment,null,t.filter((e=>e!==n)));return{mdxAdmonitionTitle:n,rest:o}}(e.children);return{...e,title:e.title??t,children:n}}const ge={head:function(e){const t=a.Children.map(e.children,(e=>a.isValidElement(e)?function(e){if(e.props?.mdxType&&e.props.originalType){const{mdxType:t,originalType:n,...o}=e.props;return a.createElement(e.props.originalType,o)}return e}(e):e));return a.createElement(l.Z,e,t)},code:function(e){const t=["a","abbr","b","br","button","cite","code","del","dfn","em","i","img","input","ins","kbd","label","object","output","q","ruby","s","small","span","strong","sub","sup","time","u","var","wbr"];return a.Children.toArray(e.children).every((e=>"string"==typeof e&&!e.includes("\n")||(0,a.isValidElement)(e)&&t.includes(e.props?.mdxType)))?a.createElement("code",e):a.createElement(G,e)},a:function(e){return a.createElement(Y.Z,e)},pre:function(e){return a.createElement(G,(0,a.isValidElement)(e.children)&&"code"===e.children.props?.originalType?e.children.props:{...e})},details:function(e){const t=a.Children.toArray(e.children),n=t.find((e=>a.isValidElement(e)&&"summary"===e.props?.mdxType)),o=a.createElement(a.Fragment,null,t.filter((e=>e!==n)));return a.createElement(ae,(0,r.Z)({},e,{summary:n}),o)},ul:function(e){return a.createElement("ul",(0,r.Z)({},e,{className:ce(e.className)}))},img:function(e){return a.createElement("img",(0,r.Z)({loading:"lazy"},e,{className:(t=e.className,(0,s.Z)(t,se.img))}));var t},h1:e=>a.createElement(re,(0,r.Z)({as:"h1"},e)),h2:e=>a.createElement(re,(0,r.Z)({as:"h2"},e)),h3:e=>a.createElement(re,(0,r.Z)({as:"h3"},e)),h4:e=>a.createElement(re,(0,r.Z)({as:"h4"},e)),h5:e=>a.createElement(re,(0,r.Z)({as:"h5"},e)),h6:e=>a.createElement(re,(0,r.Z)({as:"h6"},e)),admonition:function(e){const{children:t,type:n,title:o,icon:r}=he(e),l=function(e){const t=fe[e]??e,n=pe[t];return n||(console.warn(`No admonition config found for admonition type "${t}". Using Info as fallback.`),pe.info)}(n),c=o??l.label,{iconComponent:i}=l,d=r??a.createElement(i,null);return a.createElement("div",{className:(0,s.Z)(u.k.common.admonition,u.k.common.admonitionType(e.type),"alert",`alert--${l.infimaClassName}`,ie)},a.createElement("div",{className:de},a.createElement("span",{className:me},d),c),a.createElement("div",{className:ue},t))},mermaid:n(1875).Z};function be(e){let{children:t}=e;return a.createElement(o.Zo,{components:ge},t)}},3743:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var a=n(7462),o=n(7294),r=n(6668);function l(e){const t=e.map((e=>({...e,parentIndex:-1,children:[]}))),n=Array(7).fill(-1);t.forEach(((e,t)=>{const a=n.slice(2,e.level);e.parentIndex=Math.max(...a),n[e.level]=t}));const a=[];return t.forEach((e=>{const{parentIndex:n,...o}=e;n>=0?t[n].children.push(o):a.push(o)})),a}function c(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return t.flatMap((e=>{const t=c({toc:e.children,minHeadingLevel:n,maxHeadingLevel:a});return function(e){return e.level>=n&&e.level<=a}(e)?[{...e,children:t}]:t}))}function s(e){const t=e.getBoundingClientRect();return t.top===t.bottom?s(e.parentNode):t}function i(e,t){let{anchorTopOffset:n}=t;const a=e.find((e=>s(e).top>=n));if(a){return function(e){return e.top>0&&e.bottom<window.innerHeight/2}(s(a))?a:e[e.indexOf(a)-1]??null}return e[e.length-1]??null}function d(){const e=(0,o.useRef)(0),{navbar:{hideOnScroll:t}}=(0,r.L)();return(0,o.useEffect)((()=>{e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}function m(e){const t=(0,o.useRef)(void 0),n=d();(0,o.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:a,linkActiveClassName:o,minHeadingLevel:r,maxHeadingLevel:l}=e;function c(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(a),c=function(e){let{minHeadingLevel:t,maxHeadingLevel:n}=e;const a=[];for(let o=t;o<=n;o+=1)a.push(`h${o}.anchor`);return Array.from(document.querySelectorAll(a.join()))}({minHeadingLevel:r,maxHeadingLevel:l}),s=i(c,{anchorTopOffset:n.current}),d=e.find((e=>s&&s.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,n){n?(t.current&&t.current!==e&&t.current.classList.remove(o),e.classList.add(o),t.current=e):e.classList.remove(o)}(e,e===d)}))}return document.addEventListener("scroll",c),document.addEventListener("resize",c),c(),()=>{document.removeEventListener("scroll",c),document.removeEventListener("resize",c)}}),[e,n])}function u(e){let{toc:t,className:n,linkClassName:a,isChild:r}=e;return t.length?o.createElement("ul",{className:r?void 0:n},t.map((e=>o.createElement("li",{key:e.id},o.createElement("a",{href:`#${e.id}`,className:a??void 0,dangerouslySetInnerHTML:{__html:e.value}}),o.createElement(u,{isChild:!0,toc:e.children,className:n,linkClassName:a}))))):null}const p=o.memo(u);function f(e){let{toc:t,className:n="table-of-contents table-of-contents__left-border",linkClassName:s="table-of-contents__link",linkActiveClassName:i,minHeadingLevel:d,maxHeadingLevel:u,...f}=e;const h=(0,r.L)(),g=d??h.tableOfContents.minHeadingLevel,b=u??h.tableOfContents.maxHeadingLevel,v=function(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return(0,o.useMemo)((()=>c({toc:l(t),minHeadingLevel:n,maxHeadingLevel:a})),[t,n,a])}({toc:t,minHeadingLevel:g,maxHeadingLevel:b});return m((0,o.useMemo)((()=>{if(s&&i)return{linkClassName:s,linkActiveClassName:i,minHeadingLevel:g,maxHeadingLevel:b}}),[s,i,g,b])),o.createElement(p,(0,a.Z)({toc:v,className:n,linkClassName:s},f))}},5130:(e,t,n)=>{"use strict";n.d(t,{b:()=>l,k:()=>c});var a=n(7294),o=n(902);const r=a.createContext(null);function l(e){let{children:t,content:n}=e;const o=function(e){return(0,a.useMemo)((()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc})),[e])}(n);return a.createElement(r.Provider,{value:o},t)}function c(){const e=(0,a.useContext)(r);if(null===e)throw new o.i6("DocProvider");return e}},7594:(e,t)=>{function n(e){let t,n=[];for(let a of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(a))n.push(parseInt(a,10));else if(t=a.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,a,o,r]=t;if(a&&r){a=parseInt(a),r=parseInt(r);const e=a<r?1:-1;"-"!==o&&".."!==o&&"\u2025"!==o||(r+=e);for(let t=a;t!==r;t+=e)n.push(t)}}return n}t.default=n,e.exports=n}}]); \ No newline at end of file diff --git a/assets/js/8127.d5d423b0.js b/assets/js/8127.d5d423b0.js new file mode 100644 index 00000000..d7e26e1b --- /dev/null +++ b/assets/js/8127.d5d423b0.js @@ -0,0 +1 @@ +(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[8127],{5788:(e,t,n)=>{"use strict";n.d(t,{Iu:()=>d,yg:()=>f});var a=n(1504);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 r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,a,o=function(e,t){if(null==e)return{};var n,a,o={},r=Object.keys(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=a.createContext({}),i=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},d=function(e){var t=i(e.components);return a.createElement(s.Provider,{value:t},e.children)},m="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},p=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),m=i(n),p=o,f=m["".concat(s,".").concat(p)]||m[p]||u[p]||r;return n?a.createElement(f,c(c({ref:t},d),{},{components:n})):a.createElement(f,c({ref:t},d))}));function f(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,c=new Array(r);c[0]=p;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[m]="string"==typeof e?e:o,c[1]=l;for(var i=2;i<r;i++)c[i]=n[i];return a.createElement.apply(null,c)}return a.createElement.apply(null,n)}p.displayName="MDXCreateElement"},4556:(e,t,n)=>{"use strict";n.d(t,{c:()=>v});var a=n(5072),o=n(1504),r=n(4971),c=n(5864),l=n(9940),s=n(3376),i=n(6016),d=n(4357),m=n(964);function u(e){return o.createElement("svg",(0,a.c)({viewBox:"0 0 24 24"},e),o.createElement("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 p={breadcrumbHomeIcon:"breadcrumbHomeIcon_YNFT"};function f(){const e=(0,m.c)("/");return o.createElement("li",{className:"breadcrumbs__item"},o.createElement(i.c,{"aria-label":(0,d.G)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e},o.createElement(u,{className:p.breadcrumbHomeIcon})))}const h={breadcrumbsContainer:"breadcrumbsContainer_Z_bl"};function g(e){let{children:t,href:n,isLast:a}=e;const r="breadcrumbs__link";return a?o.createElement("span",{className:r,itemProp:"name"},t):n?o.createElement(i.c,{className:r,href:n,itemProp:"item"},o.createElement("span",{itemProp:"name"},t)):o.createElement("span",{className:r},t)}function b(e){let{children:t,active:n,index:c,addMicrodata:l}=e;return o.createElement("li",(0,a.c)({},l&&{itemScope:!0,itemProp:"itemListElement",itemType:"https://schema.org/ListItem"},{className:(0,r.c)("breadcrumbs__item",{"breadcrumbs__item--active":n})}),t,o.createElement("meta",{itemProp:"position",content:String(c+1)}))}function v(){const e=(0,l.js)(),t=(0,s.Y5)();return e?o.createElement("nav",{className:(0,r.c)(c.W.docs.docBreadcrumbs,h.breadcrumbsContainer),"aria-label":(0,d.G)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"})},o.createElement("ul",{className:"breadcrumbs",itemScope:!0,itemType:"https://schema.org/BreadcrumbList"},t&&o.createElement(f,null),e.map(((t,n)=>{const a=n===e.length-1;return o.createElement(b,{key:n,active:a,index:n,addMicrodata:!!t.href},o.createElement(g,{href:t.href,isLast:a},t.label))})))):null}},8748:(e,t,n)=>{"use strict";n.d(t,{c:()=>C});var a=n(1504),o=n(4971),r=n(5864),c=n(1262),l=n(4357);function s(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:n}=e;return a.createElement(l.c,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:a.createElement("b",null,a.createElement("time",{dateTime:new Date(1e3*t).toISOString()},n))}}," on {date}")}function i(e){let{lastUpdatedBy:t}=e;return a.createElement(l.c,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:a.createElement("b",null,t)}}," by {user}")}function d(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:n,lastUpdatedBy:o}=e;return a.createElement("span",{className:r.W.common.lastUpdated},a.createElement(l.c,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:t&&n?a.createElement(s,{lastUpdatedAt:t,formattedLastUpdatedAt:n}):"",byUser:o?a.createElement(i,{lastUpdatedBy:o}):""}},"Last updated{atDate}{byUser}"),!1)}var m=n(5072);const u={iconEdit:"iconEdit_Z9Sw"};function p(e){let{className:t,...n}=e;return a.createElement("svg",(0,m.c)({fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,o.c)(u.iconEdit,t),"aria-hidden":"true"},n),a.createElement("g",null,a.createElement("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 f(e){let{editUrl:t}=e;return a.createElement("a",{href:t,target:"_blank",rel:"noreferrer noopener",className:r.W.common.editThisPage},a.createElement(p,null),a.createElement(l.c,{id:"theme.common.editThisPage",description:"The link label to edit the current page"},"Edit this page"))}var h=n(6016);const g={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};function b(e){let{permalink:t,label:n,count:r}=e;return a.createElement(h.c,{href:t,className:(0,o.c)(g.tag,r?g.tagWithCount:g.tagRegular)},n,r&&a.createElement("span",null,r))}const v={tags:"tags_jXut",tag:"tag_QGVx"};function E(e){let{tags:t}=e;return a.createElement(a.Fragment,null,a.createElement("b",null,a.createElement(l.c,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list"},"Tags:")),a.createElement("ul",{className:(0,o.c)(v.tags,"padding--none","margin-left--sm")},t.map((e=>{let{label:t,permalink:n}=e;return a.createElement("li",{key:n,className:v.tag},a.createElement(b,{label:t,permalink:n}))}))))}const y={lastUpdated:"lastUpdated_vwxv"};function k(e){return a.createElement("div",{className:(0,o.c)(r.W.docs.docFooterTagsRow,"row margin-bottom--sm")},a.createElement("div",{className:"col"},a.createElement(E,e)))}function N(e){let{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:c,formattedLastUpdatedAt:l}=e;return a.createElement("div",{className:(0,o.c)(r.W.docs.docFooterEditMetaRow,"row")},a.createElement("div",{className:"col"},t&&a.createElement(f,{editUrl:t})),a.createElement("div",{className:(0,o.c)("col",y.lastUpdated)},(n||c)&&a.createElement(d,{lastUpdatedAt:n,formattedLastUpdatedAt:l,lastUpdatedBy:c})))}function C(){const{metadata:e}=(0,c.G)(),{editUrl:t,lastUpdatedAt:n,formattedLastUpdatedAt:l,lastUpdatedBy:s,tags:i}=e,d=i.length>0,m=!!(t||n||s);return d||m?a.createElement("footer",{className:(0,o.c)(r.W.docs.docFooter,"docusaurus-mt-lg")},d&&a.createElement(k,{tags:i}),m&&a.createElement(N,{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:s,formattedLastUpdatedAt:l})):null}},4664:(e,t,n)=>{"use strict";n.d(t,{c:()=>c});var a=n(1504),o=n(1262),r=n(9236);function c(){const{metadata:e}=(0,o.G)();return a.createElement(r.c,{previous:e.previous,next:e.next})}},9500:(e,t,n)=>{"use strict";n.d(t,{c:()=>p});var a=n(1504),o=n(5864),r=n(1262),c=n(5072),l=n(4971),s=n(3088);const i={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"},d="table-of-contents__link toc-highlight",m="table-of-contents__link--active";function u(e){let{className:t,...n}=e;return a.createElement("div",{className:(0,l.c)(i.tableOfContents,"thin-scrollbar",t)},a.createElement(s.c,(0,c.c)({},n,{linkClassName:d,linkActiveClassName:m})))}function p(){const{toc:e,frontMatter:t}=(0,r.G)();return a.createElement(u,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:o.W.docs.docTocDesktop})}},180:(e,t,n)=>{"use strict";n.d(t,{c:()=>g});var a=n(1504),o=n(4971),r=n(5864),c=n(1262),l=n(8448),s=n(3088),i=n(5072),d=n(4357);const m={tocCollapsibleButton:"tocCollapsibleButton_TO0P",tocCollapsibleButtonExpanded:"tocCollapsibleButtonExpanded_MG3E"};function u(e){let{collapsed:t,...n}=e;return a.createElement("button",(0,i.c)({type:"button"},n,{className:(0,o.c)("clean-btn",m.tocCollapsibleButton,!t&&m.tocCollapsibleButtonExpanded,n.className)}),a.createElement(d.c,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component"},"On this page"))}const p={tocCollapsible:"tocCollapsible_ETCw",tocCollapsibleContent:"tocCollapsibleContent_vkbj",tocCollapsibleExpanded:"tocCollapsibleExpanded_sAul"};function f(e){let{toc:t,className:n,minHeadingLevel:r,maxHeadingLevel:c}=e;const{collapsed:i,toggleCollapsed:d}=(0,l.a)({initialState:!0});return a.createElement("div",{className:(0,o.c)(p.tocCollapsible,!i&&p.tocCollapsibleExpanded,n)},a.createElement(u,{collapsed:i,onClick:d}),a.createElement(l.U,{lazy:!0,className:p.tocCollapsibleContent,collapsed:i},a.createElement(s.c,{toc:t,minHeadingLevel:r,maxHeadingLevel:c})))}const h={tocMobile:"tocMobile_ITEo"};function g(){const{toc:e,frontMatter:t}=(0,c.G)();return a.createElement(f,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:(0,o.c)(r.W.docs.docTocMobile,h.tocMobile)})}},6560:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var a=n(1504),o=n(5756),r=n(1262);function c(){const{metadata:e,frontMatter:t,assets:n}=(0,r.G)();return a.createElement(o.U7,{title:e.title,description:e.description,keywords:t.keywords,image:n.image??t.image})}var l=n(226);function s(e){const t=`docs-doc-id-${e.content.metadata.unversionedId}`,n=e.content;return a.createElement(r.A,{content:e.content},a.createElement(o.cr,{className:t},a.createElement(c,null),a.createElement(l.c,null,a.createElement(n,null))))}},9236:(e,t,n)=>{"use strict";n.d(t,{c:()=>i});var a=n(5072),o=n(1504),r=n(4357),c=n(4971),l=n(6016);function s(e){const{permalink:t,title:n,subLabel:a,isNext:r}=e;return o.createElement(l.c,{className:(0,c.c)("pagination-nav__link",r?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t},a&&o.createElement("div",{className:"pagination-nav__sublabel"},a),o.createElement("div",{className:"pagination-nav__label"},n))}function i(e){const{previous:t,next:n}=e;return o.createElement("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,r.G)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"})},t&&o.createElement(s,(0,a.c)({},t,{subLabel:o.createElement(r.c,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc"},"Previous")})),n&&o.createElement(s,(0,a.c)({},n,{subLabel:o.createElement(r.c,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc"},"Next"),isNext:!0})))}},8092:(e,t,n)=>{"use strict";n.d(t,{c:()=>s});var a=n(1504),o=n(4971),r=n(4357),c=n(5864),l=n(9920);function s(e){let{className:t}=e;const n=(0,l.E)();return n.badge?a.createElement("span",{className:(0,o.c)(t,c.W.docs.docVersionBadge,"badge badge--secondary")},a.createElement(r.c,{id:"theme.docs.versionBadge.label",values:{versionLabel:n.label}},"Version: {versionLabel}")):null}},2136:(e,t,n)=>{"use strict";n.d(t,{c:()=>g});var a=n(1504),o=n(4971),r=n(8264),c=n(6016),l=n(4357),s=n(2840),i=n(5864),d=n(4592),m=n(9920);const u={unreleased:function(e){let{siteTitle:t,versionMetadata:n}=e;return a.createElement(l.c,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:a.createElement("b",null,n.label)}},"This is unreleased documentation for {siteTitle} {versionLabel} version.")},unmaintained:function(e){let{siteTitle:t,versionMetadata:n}=e;return a.createElement(l.c,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:a.createElement("b",null,n.label)}},"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.")}};function p(e){const t=u[e.versionMetadata.banner];return a.createElement(t,e)}function f(e){let{versionLabel:t,to:n,onClick:o}=e;return a.createElement(l.c,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:a.createElement("b",null,a.createElement(c.c,{to:n,onClick:o},a.createElement(l.c,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label"},"latest version")))}},"For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).")}function h(e){let{className:t,versionMetadata:n}=e;const{siteConfig:{title:c}}=(0,r.c)(),{pluginId:l}=(0,s.UF)({failfast:!0}),{savePreferredVersionName:m}=(0,d.iy)(l),{latestDocSuggestion:u,latestVersionSuggestion:h}=(0,s.i8)(l),g=u??(b=h).docs.find((e=>e.id===b.mainDocId));var b;return a.createElement("div",{className:(0,o.c)(t,i.W.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert"},a.createElement("div",null,a.createElement(p,{siteTitle:c,versionMetadata:n})),a.createElement("div",{className:"margin-top--md"},a.createElement(f,{versionLabel:h.label,to:g.path,onClick:()=>m(h.name)})))}function g(e){let{className:t}=e;const n=(0,m.E)();return n.banner?a.createElement(h,{className:t,versionMetadata:n}):null}},6448:(e,t,n)=>{"use strict";n.d(t,{c:()=>d});var a=n(5072),o=n(1504),r=n(4971),c=n(4357),l=n(1824),s=n(6016);const i={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};function d(e){let{as:t,id:n,...d}=e;const{navbar:{hideOnScroll:m}}=(0,l.y)();if("h1"===t||!n)return o.createElement(t,(0,a.c)({},d,{id:void 0}));const u=(0,c.G)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof d.children?d.children:n});return o.createElement(t,(0,a.c)({},d,{className:(0,r.c)("anchor",m?i.anchorWithHideOnScrollNavbar:i.anchorWithStickyNavbar,d.className),id:n}),d.children,o.createElement(s.c,{className:"hash-link",to:`#${n}`,"aria-label":u,title:u},"\u200b"))}},6992:(e,t,n)=>{"use strict";n.d(t,{c:()=>be});var a=n(1504),o=n(5788),r=n(5072),c=n(6952);var l=n(3664),s=n(4971),i=n(6528),d=n(1824);function m(){const{prism:e}=(0,d.y)(),{colorMode:t}=(0,i.U)(),n=e.theme,a=e.darkTheme||n;return"dark"===t?a:n}var u=n(5864),p=n(6504),f=n.n(p);const h=/title=(?<quote>["'])(?<title>.*?)\1/,g=/\{(?<range>[\d,-]+)\}/,b={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}};function v(e,t){const n=e.map((e=>{const{start:n,end:a}=b[e];return`(?:${n}\\s*(${t.flatMap((e=>[e.line,e.block?.start,e.block?.end].filter(Boolean))).join("|")})\\s*${a})`})).join("|");return new RegExp(`^\\s*(?:${n})\\s*$`)}function E(e,t){let n=e.replace(/\n$/,"");const{language:a,magicComments:o,metastring:r}=t;if(r&&g.test(r)){const e=r.match(g).groups.range;if(0===o.length)throw new Error(`A highlight range has been given in code block's metastring (\`\`\` ${r}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.`);const t=o[0].className,a=f()(e).filter((e=>e>0)).map((e=>[e-1,[t]]));return{lineClassNames:Object.fromEntries(a),code:n}}if(void 0===a)return{lineClassNames:{},code:n};const c=function(e,t){switch(e){case"js":case"javascript":case"ts":case"typescript":return v(["js","jsBlock"],t);case"jsx":case"tsx":return v(["js","jsBlock","jsx"],t);case"html":return v(["js","jsBlock","html"],t);case"python":case"py":case"bash":return v(["bash"],t);case"markdown":case"md":return v(["html","jsx","bash"],t);default:return v(Object.keys(b),t)}}(a,o),l=n.split("\n"),s=Object.fromEntries(o.map((e=>[e.className,{start:0,range:""}]))),i=Object.fromEntries(o.filter((e=>e.line)).map((e=>{let{className:t,line:n}=e;return[n,t]}))),d=Object.fromEntries(o.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.start,t]}))),m=Object.fromEntries(o.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.end,t]})));for(let p=0;p<l.length;){const e=l[p].match(c);if(!e){p+=1;continue}const t=e.slice(1).find((e=>void 0!==e));i[t]?s[i[t]].range+=`${p},`:d[t]?s[d[t]].start=p:m[t]&&(s[m[t]].range+=`${s[m[t]].start}-${p-1},`),l.splice(p,1)}n=l.join("\n");const u={};return Object.entries(s).forEach((e=>{let[t,{range:n}]=e;f()(n).forEach((e=>{u[e]??=[],u[e].push(t)}))})),{lineClassNames:u,code:n}}const y={codeBlockContainer:"codeBlockContainer_Ckt0"};function k(e){let{as:t,...n}=e;const o=function(e){const t={color:"--prism-color",backgroundColor:"--prism-background-color"},n={};return Object.entries(e.plain).forEach((e=>{let[a,o]=e;const r=t[a];r&&"string"==typeof o&&(n[r]=o)})),n}(m());return a.createElement(t,(0,r.c)({},n,{style:o,className:(0,s.c)(n.className,y.codeBlockContainer,u.W.common.codeBlock)}))}const N={codeBlockContent:"codeBlockContent_biex",codeBlockTitle:"codeBlockTitle_Ktv7",codeBlock:"codeBlock_bY9V",codeBlockStandalone:"codeBlockStandalone_MEMb",codeBlockLines:"codeBlockLines_e6Vv",codeBlockLinesWithNumbering:"codeBlockLinesWithNumbering_o6Pm",buttonGroup:"buttonGroup__atx"};function C(e){let{children:t,className:n}=e;return a.createElement(k,{as:"pre",tabIndex:0,className:(0,s.c)(N.codeBlockStandalone,"thin-scrollbar",n)},a.createElement("code",{className:N.codeBlockLines},t))}var L=n(1100);const T={attributes:!0,characterData:!0,childList:!0,subtree:!0};function _(e,t){const[n,o]=(0,a.useState)(),r=(0,a.useCallback)((()=>{o(e.current?.closest("[role=tabpanel][hidden]"))}),[e,o]);(0,a.useEffect)((()=>{r()}),[r]),function(e,t,n){void 0===n&&(n=T);const o=(0,L.yA)(t),r=(0,L.Mh)(n);(0,a.useEffect)((()=>{const t=new MutationObserver(o);return e&&t.observe(e,r),()=>t.disconnect()}),[e,o,r])}(n,(e=>{e.forEach((e=>{"attributes"===e.type&&"hidden"===e.attributeName&&(t(),r())}))}),{attributes:!0,characterData:!1,childList:!1,subtree:!1})}const w={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"}}]};var B={Prism:n(6724).c,theme:w};function x(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function O(){return O=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},O.apply(this,arguments)}var A=/\r\n|\r|\n/,H=function(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)},j=function(e,t){var n=e.length;return n>0&&e[n-1]===t?e:e.concat(t)};function S(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&-1===t.indexOf(a)&&(n[a]=e[a]);return n}var M=function(e){function t(){for(var t=this,n=[],a=arguments.length;a--;)n[a]=arguments[a];e.apply(this,n),x(this,"getThemeDict",(function(e){if(void 0!==t.themeDict&&e.theme===t.prevTheme&&e.language===t.prevLanguage)return t.themeDict;t.prevTheme=e.theme,t.prevLanguage=e.language;var n=e.theme?function(e,t){var n=e.plain,a=Object.create(null),o=e.styles.reduce((function(e,n){var a=n.languages,o=n.style;return a&&!a.includes(t)||n.types.forEach((function(t){var n=O({},e[t],o);e[t]=n})),e}),a);return o.root=n,o.plain=O({},n,{backgroundColor:null}),o}(e.theme,e.language):void 0;return t.themeDict=n})),x(this,"getLineProps",(function(e){var n=e.key,a=e.className,o=e.style,r=O({},S(e,["key","className","style","line"]),{className:"token-line",style:void 0,key:void 0}),c=t.getThemeDict(t.props);return void 0!==c&&(r.style=c.plain),void 0!==o&&(r.style=void 0!==r.style?O({},r.style,o):o),void 0!==n&&(r.key=n),a&&(r.className+=" "+a),r})),x(this,"getStyleForToken",(function(e){var n=e.types,a=e.empty,o=n.length,r=t.getThemeDict(t.props);if(void 0!==r){if(1===o&&"plain"===n[0])return a?{display:"inline-block"}:void 0;if(1===o&&!a)return r[n[0]];var c=a?{display:"inline-block"}:{},l=n.map((function(e){return r[e]}));return Object.assign.apply(Object,[c].concat(l))}})),x(this,"getTokenProps",(function(e){var n=e.key,a=e.className,o=e.style,r=e.token,c=O({},S(e,["key","className","style","token"]),{className:"token "+r.types.join(" "),children:r.content,style:t.getStyleForToken(r),key:void 0});return void 0!==o&&(c.style=void 0!==c.style?O({},c.style,o):o),void 0!==n&&(c.key=n),a&&(c.className+=" "+a),c})),x(this,"tokenize",(function(e,t,n,a){var o={code:t,grammar:n,language:a,tokens:[]};e.hooks.run("before-tokenize",o);var r=o.tokens=e.tokenize(o.code,o.grammar,o.language);return e.hooks.run("after-tokenize",o),r}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.render=function(){var e=this.props,t=e.Prism,n=e.language,a=e.code,o=e.children,r=this.getThemeDict(this.props),c=t.languages[n];return o({tokens:function(e){for(var t=[[]],n=[e],a=[0],o=[e.length],r=0,c=0,l=[],s=[l];c>-1;){for(;(r=a[c]++)<o[c];){var i=void 0,d=t[c],m=n[c][r];if("string"==typeof m?(d=c>0?d:["plain"],i=m):(d=j(d,m.type),m.alias&&(d=j(d,m.alias)),i=m.content),"string"==typeof i){var u=i.split(A),p=u.length;l.push({types:d,content:u[0]});for(var f=1;f<p;f++)H(l),s.push(l=[]),l.push({types:d,content:u[f]})}else c++,t.push(d),n.push(i),a.push(0),o.push(i.length)}c--,t.pop(),n.pop(),a.pop(),o.pop()}return H(l),s}(void 0!==c?this.tokenize(t,a,c,n):[a]),className:"prism-code language-"+n,style:void 0!==r?r.root:{},getLineProps:this.getLineProps,getTokenProps:this.getTokenProps})},t}(a.Component);const U=M,P={codeLine:"codeLine_lJS_",codeLineNumber:"codeLineNumber_Tfdd",codeLineContent:"codeLineContent_feaV"};function I(e){let{line:t,classNames:n,showLineNumbers:o,getLineProps:c,getTokenProps:l}=e;1===t.length&&"\n"===t[0].content&&(t[0].content="");const i=c({line:t,className:(0,s.c)(n,o&&P.codeLine)}),d=t.map(((e,t)=>a.createElement("span",(0,r.c)({key:t},l({token:e,key:t})))));return a.createElement("span",i,o?a.createElement(a.Fragment,null,a.createElement("span",{className:P.codeLineNumber}),a.createElement("span",{className:P.codeLineContent},d)):d,a.createElement("br",null))}var W=n(4357);function z(e){return a.createElement("svg",(0,r.c)({viewBox:"0 0 24 24"},e),a.createElement("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 V(e){return a.createElement("svg",(0,r.c)({viewBox:"0 0 24 24"},e),a.createElement("path",{fill:"currentColor",d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"}))}const D={copyButtonCopied:"copyButtonCopied_obH4",copyButtonIcons:"copyButtonIcons_eSgA",copyButtonIcon:"copyButtonIcon_y97N",copyButtonSuccessIcon:"copyButtonSuccessIcon_LjdS"};function R(e){let{code:t,className:n}=e;const[o,r]=(0,a.useState)(!1),c=(0,a.useRef)(void 0),l=(0,a.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 a=document.createElement("textarea"),o=document.activeElement;a.value=e,a.setAttribute("readonly",""),a.style.contain="strict",a.style.position="absolute",a.style.left="-9999px",a.style.fontSize="12pt";const r=document.getSelection(),c=r.rangeCount>0&&r.getRangeAt(0);n.append(a),a.select(),a.selectionStart=0,a.selectionEnd=e.length;let l=!1;try{l=document.execCommand("copy")}catch{}a.remove(),c&&(r.removeAllRanges(),r.addRange(c)),o&&o.focus()}(t),r(!0),c.current=window.setTimeout((()=>{r(!1)}),1e3)}),[t]);return(0,a.useEffect)((()=>()=>window.clearTimeout(c.current)),[]),a.createElement("button",{type:"button","aria-label":o?(0,W.G)({id:"theme.CodeBlock.copied",message:"Copied",description:"The copied button label on code blocks"}):(0,W.G)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"}),title:(0,W.G)({id:"theme.CodeBlock.copy",message:"Copy",description:"The copy button label on code blocks"}),className:(0,s.c)("clean-btn",n,D.copyButton,o&&D.copyButtonCopied),onClick:l},a.createElement("span",{className:D.copyButtonIcons,"aria-hidden":"true"},a.createElement(z,{className:D.copyButtonIcon}),a.createElement(V,{className:D.copyButtonSuccessIcon})))}function $(e){return a.createElement("svg",(0,r.c)({viewBox:"0 0 24 24"},e),a.createElement("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 G={wordWrapButtonIcon:"wordWrapButtonIcon_Bwma",wordWrapButtonEnabled:"wordWrapButtonEnabled_EoeP"};function F(e){let{className:t,onClick:n,isEnabled:o}=e;const r=(0,W.G)({id:"theme.CodeBlock.wordWrapToggle",message:"Toggle word wrap",description:"The title attribute for toggle word wrapping button of code block lines"});return a.createElement("button",{type:"button",onClick:n,className:(0,s.c)("clean-btn",t,o&&G.wordWrapButtonEnabled),"aria-label":r,title:r},a.createElement($,{className:G.wordWrapButtonIcon,"aria-hidden":"true"}))}function q(e){let{children:t,className:n="",metastring:o,title:c,showLineNumbers:l,language:i}=e;const{prism:{defaultLanguage:u,magicComments:p}}=(0,d.y)(),f=i??function(e){const t=e.split(" ").find((e=>e.startsWith("language-")));return t?.replace(/language-/,"")}(n)??u,g=m(),b=function(){const[e,t]=(0,a.useState)(!1),[n,o]=(0,a.useState)(!1),r=(0,a.useRef)(null),c=(0,a.useCallback)((()=>{const n=r.current.querySelector("code");e?n.removeAttribute("style"):(n.style.whiteSpace="pre-wrap",n.style.overflowWrap="anywhere"),t((e=>!e))}),[r,e]),l=(0,a.useCallback)((()=>{const{scrollWidth:e,clientWidth:t}=r.current,n=e>t||r.current.querySelector("code").hasAttribute("style");o(n)}),[r]);return _(r,l),(0,a.useEffect)((()=>{l()}),[e,l]),(0,a.useEffect)((()=>(window.addEventListener("resize",l,{passive:!0}),()=>{window.removeEventListener("resize",l)})),[l]),{codeBlockRef:r,isEnabled:e,isCodeScrollable:n,toggle:c}}(),v=function(e){return e?.match(h)?.groups.title??""}(o)||c,{lineClassNames:y,code:C}=E(t,{metastring:o,language:f,magicComments:p}),L=l??function(e){return Boolean(e?.includes("showLineNumbers"))}(o);return a.createElement(k,{as:"div",className:(0,s.c)(n,f&&!n.includes(`language-${f}`)&&`language-${f}`)},v&&a.createElement("div",{className:N.codeBlockTitle},v),a.createElement("div",{className:N.codeBlockContent},a.createElement(U,(0,r.c)({},B,{theme:g,code:C,language:f??"text"}),(e=>{let{className:t,tokens:n,getLineProps:o,getTokenProps:r}=e;return a.createElement("pre",{tabIndex:0,ref:b.codeBlockRef,className:(0,s.c)(t,N.codeBlock,"thin-scrollbar")},a.createElement("code",{className:(0,s.c)(N.codeBlockLines,L&&N.codeBlockLinesWithNumbering)},n.map(((e,t)=>a.createElement(I,{key:t,line:e,getLineProps:o,getTokenProps:r,classNames:y[t],showLineNumbers:L})))))})),a.createElement("div",{className:N.buttonGroup},(b.isEnabled||b.isCodeScrollable)&&a.createElement(F,{className:N.codeButton,onClick:()=>b.toggle(),isEnabled:b.isEnabled}),a.createElement(R,{className:N.codeButton,code:C}))))}function Y(e){let{children:t,...n}=e;const o=(0,l.c)(),c=function(e){return a.Children.toArray(e).some((e=>(0,a.isValidElement)(e)))?e:Array.isArray(e)?e.join(""):e}(t),s="string"==typeof c?q:C;return a.createElement(s,(0,r.c)({key:String(o)},n),c)}var Z=n(6016);var Q=n(8448);const X={details:"details_lb9f",isBrowser:"isBrowser_bmU9",collapsibleContent:"collapsibleContent_i85q"};function J(e){return!!e&&("SUMMARY"===e.tagName||J(e.parentElement))}function K(e,t){return!!e&&(e===t||K(e.parentElement,t))}function ee(e){let{summary:t,children:n,...o}=e;const c=(0,l.c)(),i=(0,a.useRef)(null),{collapsed:d,setCollapsed:m}=(0,Q.a)({initialState:!o.open}),[u,p]=(0,a.useState)(o.open),f=a.isValidElement(t)?t:a.createElement("summary",null,t??"Details");return a.createElement("details",(0,r.c)({},o,{ref:i,open:u,"data-collapsed":d,className:(0,s.c)(X.details,c&&X.isBrowser,o.className),onMouseDown:e=>{J(e.target)&&e.detail>1&&e.preventDefault()},onClick:e=>{e.stopPropagation();const t=e.target;J(t)&&K(t,i.current)&&(e.preventDefault(),d?(m(!1),p(!0)):m(!0))}}),f,a.createElement(Q.U,{lazy:!1,collapsed:d,disableSSRStyle:!0,onCollapseTransitionEnd:e=>{m(e),p(!e)}},a.createElement("div",{className:X.collapsibleContent},n)))}const te={details:"details_b_Ee"},ne="alert alert--info";function ae(e){let{...t}=e;return a.createElement(ee,(0,r.c)({},t,{className:(0,s.c)(ne,te.details,t.className)}))}var oe=n(6448);function re(e){return a.createElement(oe.c,e)}const ce={containsTaskList:"containsTaskList_mC6p"};function le(e){if(void 0!==e)return(0,s.c)(e,e?.includes("contains-task-list")&&ce.containsTaskList)}const se={img:"img_ev3q"};const ie="admonition_LlT9",de="admonitionHeading_tbUL",me="admonitionIcon_kALy",ue="admonitionContent_S0QG";const pe={note:{infimaClassName:"secondary",iconComponent:function(){return a.createElement("svg",{viewBox:"0 0 14 16"},a.createElement("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"}))},label:a.createElement(W.c,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)"},"note")},tip:{infimaClassName:"success",iconComponent:function(){return a.createElement("svg",{viewBox:"0 0 12 16"},a.createElement("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"}))},label:a.createElement(W.c,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)"},"tip")},danger:{infimaClassName:"danger",iconComponent:function(){return a.createElement("svg",{viewBox:"0 0 12 16"},a.createElement("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"}))},label:a.createElement(W.c,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)"},"danger")},info:{infimaClassName:"info",iconComponent:function(){return a.createElement("svg",{viewBox:"0 0 14 16"},a.createElement("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"}))},label:a.createElement(W.c,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)"},"info")},caution:{infimaClassName:"warning",iconComponent:function(){return a.createElement("svg",{viewBox:"0 0 16 16"},a.createElement("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"}))},label:a.createElement(W.c,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)"},"caution")}},fe={secondary:"note",important:"info",success:"tip",warning:"danger"};function he(e){const{mdxAdmonitionTitle:t,rest:n}=function(e){const t=a.Children.toArray(e),n=t.find((e=>a.isValidElement(e)&&"mdxAdmonitionTitle"===e.props?.mdxType)),o=a.createElement(a.Fragment,null,t.filter((e=>e!==n)));return{mdxAdmonitionTitle:n,rest:o}}(e.children);return{...e,title:e.title??t,children:n}}const ge={head:function(e){const t=a.Children.map(e.children,(e=>a.isValidElement(e)?function(e){if(e.props?.mdxType&&e.props.originalType){const{mdxType:t,originalType:n,...o}=e.props;return a.createElement(e.props.originalType,o)}return e}(e):e));return a.createElement(c.c,e,t)},code:function(e){const t=["a","abbr","b","br","button","cite","code","del","dfn","em","i","img","input","ins","kbd","label","object","output","q","ruby","s","small","span","strong","sub","sup","time","u","var","wbr"];return a.Children.toArray(e.children).every((e=>"string"==typeof e&&!e.includes("\n")||(0,a.isValidElement)(e)&&t.includes(e.props?.mdxType)))?a.createElement("code",e):a.createElement(Y,e)},a:function(e){return a.createElement(Z.c,e)},pre:function(e){return a.createElement(Y,(0,a.isValidElement)(e.children)&&"code"===e.children.props?.originalType?e.children.props:{...e})},details:function(e){const t=a.Children.toArray(e.children),n=t.find((e=>a.isValidElement(e)&&"summary"===e.props?.mdxType)),o=a.createElement(a.Fragment,null,t.filter((e=>e!==n)));return a.createElement(ae,(0,r.c)({},e,{summary:n}),o)},ul:function(e){return a.createElement("ul",(0,r.c)({},e,{className:le(e.className)}))},img:function(e){return a.createElement("img",(0,r.c)({loading:"lazy"},e,{className:(t=e.className,(0,s.c)(t,se.img))}));var t},h1:e=>a.createElement(re,(0,r.c)({as:"h1"},e)),h2:e=>a.createElement(re,(0,r.c)({as:"h2"},e)),h3:e=>a.createElement(re,(0,r.c)({as:"h3"},e)),h4:e=>a.createElement(re,(0,r.c)({as:"h4"},e)),h5:e=>a.createElement(re,(0,r.c)({as:"h5"},e)),h6:e=>a.createElement(re,(0,r.c)({as:"h6"},e)),admonition:function(e){const{children:t,type:n,title:o,icon:r}=he(e),c=function(e){const t=fe[e]??e,n=pe[t];return n||(console.warn(`No admonition config found for admonition type "${t}". Using Info as fallback.`),pe.info)}(n),l=o??c.label,{iconComponent:i}=c,d=r??a.createElement(i,null);return a.createElement("div",{className:(0,s.c)(u.W.common.admonition,u.W.common.admonitionType(e.type),"alert",`alert--${c.infimaClassName}`,ie)},a.createElement("div",{className:de},a.createElement("span",{className:me},d),l),a.createElement("div",{className:ue},t))},mermaid:n(2944).c};function be(e){let{children:t}=e;return a.createElement(o.Iu,{components:ge},t)}},3088:(e,t,n)=>{"use strict";n.d(t,{c:()=>f});var a=n(5072),o=n(1504),r=n(1824);function c(e){const t=e.map((e=>({...e,parentIndex:-1,children:[]}))),n=Array(7).fill(-1);t.forEach(((e,t)=>{const a=n.slice(2,e.level);e.parentIndex=Math.max(...a),n[e.level]=t}));const a=[];return t.forEach((e=>{const{parentIndex:n,...o}=e;n>=0?t[n].children.push(o):a.push(o)})),a}function l(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return t.flatMap((e=>{const t=l({toc:e.children,minHeadingLevel:n,maxHeadingLevel:a});return function(e){return e.level>=n&&e.level<=a}(e)?[{...e,children:t}]:t}))}function s(e){const t=e.getBoundingClientRect();return t.top===t.bottom?s(e.parentNode):t}function i(e,t){let{anchorTopOffset:n}=t;const a=e.find((e=>s(e).top>=n));if(a){return function(e){return e.top>0&&e.bottom<window.innerHeight/2}(s(a))?a:e[e.indexOf(a)-1]??null}return e[e.length-1]??null}function d(){const e=(0,o.useRef)(0),{navbar:{hideOnScroll:t}}=(0,r.y)();return(0,o.useEffect)((()=>{e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}function m(e){const t=(0,o.useRef)(void 0),n=d();(0,o.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:a,linkActiveClassName:o,minHeadingLevel:r,maxHeadingLevel:c}=e;function l(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(a),l=function(e){let{minHeadingLevel:t,maxHeadingLevel:n}=e;const a=[];for(let o=t;o<=n;o+=1)a.push(`h${o}.anchor`);return Array.from(document.querySelectorAll(a.join()))}({minHeadingLevel:r,maxHeadingLevel:c}),s=i(l,{anchorTopOffset:n.current}),d=e.find((e=>s&&s.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,n){n?(t.current&&t.current!==e&&t.current.classList.remove(o),e.classList.add(o),t.current=e):e.classList.remove(o)}(e,e===d)}))}return document.addEventListener("scroll",l),document.addEventListener("resize",l),l(),()=>{document.removeEventListener("scroll",l),document.removeEventListener("resize",l)}}),[e,n])}function u(e){let{toc:t,className:n,linkClassName:a,isChild:r}=e;return t.length?o.createElement("ul",{className:r?void 0:n},t.map((e=>o.createElement("li",{key:e.id},o.createElement("a",{href:`#${e.id}`,className:a??void 0,dangerouslySetInnerHTML:{__html:e.value}}),o.createElement(u,{isChild:!0,toc:e.children,className:n,linkClassName:a}))))):null}const p=o.memo(u);function f(e){let{toc:t,className:n="table-of-contents table-of-contents__left-border",linkClassName:s="table-of-contents__link",linkActiveClassName:i,minHeadingLevel:d,maxHeadingLevel:u,...f}=e;const h=(0,r.y)(),g=d??h.tableOfContents.minHeadingLevel,b=u??h.tableOfContents.maxHeadingLevel,v=function(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return(0,o.useMemo)((()=>l({toc:c(t),minHeadingLevel:n,maxHeadingLevel:a})),[t,n,a])}({toc:t,minHeadingLevel:g,maxHeadingLevel:b});return m((0,o.useMemo)((()=>{if(s&&i)return{linkClassName:s,linkActiveClassName:i,minHeadingLevel:g,maxHeadingLevel:b}}),[s,i,g,b])),o.createElement(p,(0,a.c)({toc:v,className:n,linkClassName:s},f))}},1262:(e,t,n)=>{"use strict";n.d(t,{A:()=>c,G:()=>l});var a=n(1504),o=n(1100);const r=a.createContext(null);function c(e){let{children:t,content:n}=e;const o=function(e){return(0,a.useMemo)((()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc})),[e])}(n);return a.createElement(r.Provider,{value:o},t)}function l(){const e=(0,a.useContext)(r);if(null===e)throw new o.AH("DocProvider");return e}},6504:(e,t)=>{function n(e){let t,n=[];for(let a of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(a))n.push(parseInt(a,10));else if(t=a.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,a,o,r]=t;if(a&&r){a=parseInt(a),r=parseInt(r);const e=a<r?1:-1;"-"!==o&&".."!==o&&"\u2025"!==o||(r+=e);for(let t=a;t!==r;t+=e)n.push(t)}}return n}t.default=n,e.exports=n}}]); \ No newline at end of file diff --git a/assets/js/82dc478c.dc782b30.js b/assets/js/82dc478c.68f36aa0.js similarity index 58% rename from assets/js/82dc478c.dc782b30.js rename to assets/js/82dc478c.68f36aa0.js index bac79f75..16e0e404 100644 --- a/assets/js/82dc478c.dc782b30.js +++ b/assets/js/82dc478c.68f36aa0.js @@ -1 +1 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[3569],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>f});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(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 i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var s=n.createContext({}),c=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=c(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=c(r),m=o,f=p["".concat(s,".").concat(m)]||p[m]||d[m]||a;return r?n.createElement(f,i(i({ref:t},u),{},{components:r})):n.createElement(f,i({ref:t},u))}));function f(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:o,i[1]=l;for(var c=2;c<a;c++)i[c]=r[c];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}m.displayName="MDXCreateElement"},2323:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>l,toc:()=>c});var n=r(7462),o=(r(7294),r(3905));const a={title:"Intro",hide_title:!0,sidebar_label:"Introduction",sidebar_position:1,slug:"/"},i=void 0,l={unversionedId:"intro",id:"version-v4.x.x/intro",title:"Intro",description:" ",source:"@site/versioned_docs/version-v4.x.x/intro.md",sourceDirName:".",slug:"/",permalink:"/",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:1,frontMatter:{title:"Intro",hide_title:!0,sidebar_label:"Introduction",sidebar_position:1,slug:"/"},sidebar:"tutorialSidebar",next:{title:"Concept",permalink:"/concept"}},s={},c=[{value:"Preview:",id:"preview",level:4}],u={toc:c},p="wrapper";function d(e){let{components:t,...r}=e;return(0,o.kt)(p,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("br",null),(0,o.kt)("img",{src:"/img/dash-splash.png",width:"300px"}),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("img",{src:"https://img.shields.io/github/last-commit/ayushsharma82/ESP-DASH?style=for-the-badge"}),"\xa0 \xa0",(0,o.kt)("img",{src:"https://img.shields.io/github/actions/workflow/status/ayushsharma82/ESP-DASH/ci.yml?branch=master&style=for-the-badge"}),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("p",null,"So as many would ask, what is ESP-DASH? In simple words - It's a ",(0,o.kt)("b",null,"UI library")," for ESP32 & ESP8266 microcontrollers that let you generate a fully capable dashboard. It can moulded in any way possible to suit your application needs."),(0,o.kt)("p",null,"Here are a few things by which you benefit by using ESP-DASH in your project:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\ud83d\udd25 Automatic webpage generation."),(0,o.kt)("li",{parentName:"ul"},"\u23f1\ufe0f Realtime updates to all connected clients."),(0,o.kt)("li",{parentName:"ul"},"\ud83c\udfb7 No need to learn HTML/CSS/JS. ESP-DASH provides you with a C++ interface."),(0,o.kt)("li",{parentName:"ul"},"\ud83d\udeeb Ready to use components for your data."),(0,o.kt)("li",{parentName:"ul"},"\ud83c\udfc0 It's dynamic! Add or remove components anytime from the webpage."),(0,o.kt)("li",{parentName:"ul"},"\ud83d\udcc8 Inbuilt charts support.")),(0,o.kt)("br",null),(0,o.kt)("i",null,'Note: This documentation serves both the versions of ESP-DASH ( Lite - Open Source and Pro ). Therefore, if you notice "(Pro)" mentioned on any of the features in the documentation, that means it is only available in ',(0,o.kt)("a",{href:"https://espdash.pro"},"ESP-DASH Pro"),"."),(0,o.kt)("h4",{id:"preview"},"Preview:"),(0,o.kt)("img",{src:"/img/v4/preview.png",className:"img-dropshadow",width:"800"}))}d.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[1828],{5788:(e,t,r)=>{r.d(t,{Iu:()=>u,yg:()=>m});var n=r(1504);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(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 i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var s=n.createContext({}),c=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=c(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",y={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=c(r),d=o,m=p["".concat(s,".").concat(d)]||p[d]||y[d]||a;return r?n.createElement(m,i(i({ref:t},u),{},{components:r})):n.createElement(m,i({ref:t},u))}));function m(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:o,i[1]=l;for(var c=2;c<a;c++)i[c]=r[c];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}d.displayName="MDXCreateElement"},9148:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>y,frontMatter:()=>a,metadata:()=>l,toc:()=>c});var n=r(5072),o=(r(1504),r(5788));const a={title:"Intro",hide_title:!0,sidebar_label:"Introduction",sidebar_position:1,slug:"/"},i=void 0,l={unversionedId:"intro",id:"version-v4.x.x/intro",title:"Intro",description:" ",source:"@site/versioned_docs/version-v4.x.x/intro.md",sourceDirName:".",slug:"/",permalink:"/",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:1,frontMatter:{title:"Intro",hide_title:!0,sidebar_label:"Introduction",sidebar_position:1,slug:"/"},sidebar:"tutorialSidebar",next:{title:"Concept",permalink:"/concept"}},s={},c=[{value:"Preview:",id:"preview",level:4}],u={toc:c},p="wrapper";function y(e){let{components:t,...r}=e;return(0,o.yg)(p,(0,n.c)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,o.yg)("br",null),(0,o.yg)("img",{src:"/img/dash-splash.png",width:"300px"}),(0,o.yg)("br",null),(0,o.yg)("br",null),(0,o.yg)("img",{src:"https://img.shields.io/github/last-commit/ayushsharma82/ESP-DASH?style=for-the-badge"}),"\xa0 \xa0",(0,o.yg)("img",{src:"https://img.shields.io/github/actions/workflow/status/ayushsharma82/ESP-DASH/ci.yml?branch=master&style=for-the-badge"}),(0,o.yg)("br",null),(0,o.yg)("br",null),(0,o.yg)("br",null),(0,o.yg)("p",null,"So as many would ask, what is ESP-DASH? In simple words - It's a ",(0,o.yg)("b",null,"UI library")," for ESP32 & ESP8266 microcontrollers that let you generate a fully capable dashboard. It can moulded in any way possible to suit your application needs."),(0,o.yg)("p",null,"Here are a few things by which you benefit by using ESP-DASH in your project:"),(0,o.yg)("ul",null,(0,o.yg)("li",{parentName:"ul"},"\ud83d\udd25 Automatic webpage generation."),(0,o.yg)("li",{parentName:"ul"},"\u23f1\ufe0f Realtime updates to all connected clients."),(0,o.yg)("li",{parentName:"ul"},"\ud83c\udfb7 No need to learn HTML/CSS/JS. ESP-DASH provides you with a C++ interface."),(0,o.yg)("li",{parentName:"ul"},"\ud83d\udeeb Ready to use components for your data."),(0,o.yg)("li",{parentName:"ul"},"\ud83c\udfc0 It's dynamic! Add or remove components anytime from the webpage."),(0,o.yg)("li",{parentName:"ul"},"\ud83d\udcc8 Inbuilt charts support.")),(0,o.yg)("br",null),(0,o.yg)("i",null,'Note: This documentation serves both the versions of ESP-DASH ( Lite - Open Source and Pro ). Therefore, if you notice "(Pro)" mentioned on any of the features in the documentation, that means it is only available in ',(0,o.yg)("a",{href:"https://espdash.pro"},"ESP-DASH Pro"),"."),(0,o.yg)("h4",{id:"preview"},"Preview:"),(0,o.yg)("img",{src:"/img/v4/preview.png",className:"img-dropshadow",width:"800"}))}y.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/849d26d9.4879fb3e.js b/assets/js/849d26d9.4879fb3e.js new file mode 100644 index 00000000..ea8109b4 --- /dev/null +++ b/assets/js/849d26d9.4879fb3e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[6884],{5788:(e,n,t)=>{t.d(n,{Iu:()=>u,yg:()=>y});var r=t(1504);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function o(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?a(Object(t),!0).forEach((function(n){i(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):a(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function l(e,n){if(null==e)return{};var t,r,i=function(e,n){if(null==e)return{};var t,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)t=a[r],n.indexOf(t)>=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)t=a[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var s=r.createContext({}),p=function(e){var n=r.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},u=function(e){var n=p(e.components);return r.createElement(s.Provider,{value:n},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},g=r.forwardRef((function(e,n){var t=e.components,i=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),c=p(t),g=i,y=c["".concat(s,".").concat(g)]||c[g]||d[g]||a;return t?r.createElement(y,o(o({ref:n},u),{},{components:t})):r.createElement(y,o({ref:n},u))}));function y(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var a=t.length,o=new Array(a);o[0]=g;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l[c]="string"==typeof e?e:i,o[1]=l;for(var p=2;p<a;p++)o[p]=t[p];return r.createElement.apply(null,o)}return r.createElement.apply(null,t)}g.displayName="MDXCreateElement"},7164:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>a,metadata:()=>l,toc:()=>p});var r=t(5072),i=(t(1504),t(5788));const a={title:"Custom Card Size",sidebar_label:"Custom Card Size (Pro)",sidebar_position:5},o=void 0,l={unversionedId:"features/sizing",id:"features/sizing",title:"Custom Card Size",description:"This feature is available in DASH Pro only.",source:"@site/docs/features/sizing.md",sourceDirName:"features",slug:"/features/sizing",permalink:"/next/features/sizing",draft:!1,tags:[],version:"current",sidebarPosition:5,frontMatter:{title:"Custom Card Size",sidebar_label:"Custom Card Size (Pro)",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Card Indexing (Pro)",permalink:"/next/features/indexing"},next:{title:"Brotli Compression (Pro)",permalink:"/next/features/brotli-compression"}},s={},p=[{value:"Reference",id:"reference",level:3},{value:"Option 1:",id:"option-1",level:5},{value:"Option 2:",id:"option-2",level:5},{value:"Example",id:"example",level:3},{value:"Option 1:",id:"option-1-1",level:5},{value:"Option 2:",id:"option-2-1",level:5}],u={toc:p},c="wrapper";function d(e){let{components:n,...t}=e;return(0,i.yg)(c,(0,r.c)({},u,t,{components:n,mdxType:"MDXLayout"}),(0,i.yg)("div",{className:"pro-label"},(0,i.yg)("i",null,(0,i.yg)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,i.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,i.yg)("br",null),(0,i.yg)("img",{src:"/img/v4/custom-size.png",width:"800px",alt:"Energy Card Preview"}),(0,i.yg)("br",null),(0,i.yg)("br",null),(0,i.yg)("p",null,"ESP-DASH Pro allows you to change the size of your cards & charts by providing you the ",(0,i.yg)("inlineCode",{parentName:"p"},"setSize")," function. This function allows you to set a responsive width for your widgets without actually modifying the whole webpage."),(0,i.yg)("h3",{id:"reference"},"Reference"),(0,i.yg)("p",null,"Card sizing consists of breakpoints for an responsive layout that scales up or down to every screen size. The valid value for each breakpoint is ",(0,i.yg)("inlineCode",{parentName:"p"},"1")," to ",(0,i.yg)("inlineCode",{parentName:"p"},"12"),"."),(0,i.yg)("p",null,"To understand better, the breakpoints are as follows:"),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"xs")," - Small Smartphone"),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"sm")," - Normal Smartphone"),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"md")," - Tablet"),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"lg")," - HD laptop"),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"xl")," - Full HD laptop"),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"xxl")," - 2K display and above")),(0,i.yg)("h5",{id:"option-1"},"Option 1:"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-cpp"}," // This reference can be found in Card.h\n void setSize(const uint8_t xs, const uint8_t sm, const uint8_t md, const uint8_t lg, const uint8_t xl, const uint8_t xxl);\n")),(0,i.yg)("h5",{id:"option-2"},"Option 2:"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-cpp"}," // These references can be found in Card.h\n struct CardSize {\n uint8_t xs;\n uint8_t sm;\n uint8_t md;\n uint8_t lg;\n uint8_t xl;\n uint8_t xxl;\n };\n\n void setSize(const CardSize &size);\n")),(0,i.yg)("h3",{id:"example"},"Example"),(0,i.yg)("h5",{id:"option-1-1"},"Option 1:"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.setSize(12, 12, 6, 4, 3, 2);\n")),(0,i.yg)("h5",{id:"option-2-1"},"Option 2:"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.setSize({\n .xs = 12,\n .sm = 12,\n .md = 6,\n .lg = 4,\n .xl = 3,\n .xxl = 2\n});\n")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/849d26d9.ce745ae5.js b/assets/js/849d26d9.ce745ae5.js deleted file mode 100644 index aa05aeda..00000000 --- a/assets/js/849d26d9.ce745ae5.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[9214],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>f});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=r.createContext({}),p=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),c=p(n),m=i,f=c["".concat(s,".").concat(m)]||c[m]||d[m]||a;return n?r.createElement(f,o(o({ref:t},u),{},{components:n})):r.createElement(f,o({ref:t},u))}));function f(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=n.length,o=new Array(a);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:i,o[1]=l;for(var p=2;p<a;p++)o[p]=n[p];return r.createElement.apply(null,o)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},1364:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>a,metadata:()=>l,toc:()=>p});var r=n(7462),i=(n(7294),n(3905));const a={title:"Custom Card Size",sidebar_label:"Custom Card Size (Pro)",sidebar_position:5},o=void 0,l={unversionedId:"features/sizing",id:"features/sizing",title:"Custom Card Size",description:"This feature is available in DASH Pro only.",source:"@site/docs/features/sizing.md",sourceDirName:"features",slug:"/features/sizing",permalink:"/next/features/sizing",draft:!1,tags:[],version:"current",sidebarPosition:5,frontMatter:{title:"Custom Card Size",sidebar_label:"Custom Card Size (Pro)",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Card Indexing (Pro)",permalink:"/next/features/indexing"},next:{title:"Brotli Compression (Pro)",permalink:"/next/features/brotli-compression"}},s={},p=[{value:"Reference",id:"reference",level:3},{value:"Option 1:",id:"option-1",level:5},{value:"Option 2:",id:"option-2",level:5},{value:"Example",id:"example",level:3},{value:"Option 1:",id:"option-1-1",level:5},{value:"Option 2:",id:"option-2-1",level:5}],u={toc:p},c="wrapper";function d(e){let{components:t,...n}=e;return(0,i.kt)(c,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("div",{className:"pro-label"},(0,i.kt)("i",null,(0,i.kt)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,i.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,i.kt)("br",null),(0,i.kt)("img",{src:"/img/v4/custom-size.png",width:"800px",alt:"Energy Card Preview"}),(0,i.kt)("br",null),(0,i.kt)("br",null),(0,i.kt)("p",null,"ESP-DASH Pro allows you to change the size of your cards & charts by providing you the ",(0,i.kt)("inlineCode",{parentName:"p"},"setSize")," function. This function allows you to set a responsive width for your widgets without actually modifying the whole webpage."),(0,i.kt)("h3",{id:"reference"},"Reference"),(0,i.kt)("p",null,"Card sizing consists of breakpoints for an responsive layout that scales up or down to every screen size. The valid value for each breakpoint is ",(0,i.kt)("inlineCode",{parentName:"p"},"1")," to ",(0,i.kt)("inlineCode",{parentName:"p"},"12"),"."),(0,i.kt)("p",null,"To understand better, the breakpoints are as follows:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"xs")," - Small Smartphone"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"sm")," - Normal Smartphone"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"md")," - Tablet"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"lg")," - HD laptop"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"xl")," - Full HD laptop"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"xxl")," - 2K display and above")),(0,i.kt)("h5",{id:"option-1"},"Option 1:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cpp"}," // This reference can be found in Card.h\n void setSize(const uint8_t xs, const uint8_t sm, const uint8_t md, const uint8_t lg, const uint8_t xl, const uint8_t xxl);\n")),(0,i.kt)("h5",{id:"option-2"},"Option 2:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cpp"}," // These references can be found in Card.h\n struct CardSize {\n uint8_t xs;\n uint8_t sm;\n uint8_t md;\n uint8_t lg;\n uint8_t xl;\n uint8_t xxl;\n };\n\n void setSize(const CardSize &size);\n")),(0,i.kt)("h3",{id:"example"},"Example"),(0,i.kt)("h5",{id:"option-1-1"},"Option 1:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.setSize(12, 12, 6, 4, 3, 2);\n")),(0,i.kt)("h5",{id:"option-2-1"},"Option 2:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.setSize({\n .xs = 12,\n .sm = 12,\n .md = 6,\n .lg = 4,\n .xl = 3,\n .xxl = 2\n});\n")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/85d52a4f.04eea523.js b/assets/js/85d52a4f.bd9e7558.js similarity index 88% rename from assets/js/85d52a4f.04eea523.js rename to assets/js/85d52a4f.bd9e7558.js index 89f6e633..30c271c2 100644 --- a/assets/js/85d52a4f.04eea523.js +++ b/assets/js/85d52a4f.bd9e7558.js @@ -1 +1 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[9758],{6863:e=>{e.exports=JSON.parse('{"title":"Cards","description":"Cards are one of the key elements in ESP-DASH which let you display or recieve data back from the user. Below you can find every type of card which ESP-DASH provides you with:","slug":"/category/cards","permalink":"/v3.x.x/category/cards","navigation":{"previous":{"title":"Card Indexing (Pro)","permalink":"/v3.x.x/indexing"},"next":{"title":"Generic","permalink":"/v3.x.x/cards/generic"}}}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[2490],{8324:e=>{e.exports=JSON.parse('{"title":"Cards","description":"Cards are one of the key elements in ESP-DASH which let you display or recieve data back from the user. Below you can find every type of card which ESP-DASH provides you with:","slug":"/category/cards","permalink":"/v3.x.x/category/cards","navigation":{"previous":{"title":"Card Indexing (Pro)","permalink":"/v3.x.x/indexing"},"next":{"title":"Generic","permalink":"/v3.x.x/cards/generic"}}}')}}]); \ No newline at end of file diff --git a/assets/js/87b1afb5.38bb97ef.js b/assets/js/87b1afb5.38bb97ef.js deleted file mode 100644 index 84f89cab..00000000 --- a/assets/js/87b1afb5.38bb97ef.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[4744],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>y});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(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){n(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 o(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=a.createContext({}),p=function(e){var t=a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},u=function(e){var t=p(e.components);return a.createElement(s.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},f=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),d=p(r),f=n,y=d["".concat(s,".").concat(f)]||d[f]||c[f]||i;return r?a.createElement(y,l(l({ref:t},u),{},{components:r})):a.createElement(y,l({ref:t},u))}));function y(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,l=new Array(i);l[0]=f;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[d]="string"==typeof e?e:n,l[1]=o;for(var p=2;p<i;p++)l[p]=r[p];return a.createElement.apply(null,l)}return a.createElement.apply(null,r)}f.displayName="MDXCreateElement"},6908:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>c,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var a=r(7462),n=(r(7294),r(3905));const i={title:"Pie Chart",sidebar_label:"Pie (Pro)",sidebar_position:4},l=void 0,o={unversionedId:"charts/pie",id:"version-v3.x.x/charts/pie",title:"Pie Chart",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v3.x.x/charts/pie.md",sourceDirName:"charts",slug:"/charts/pie",permalink:"/v3.x.x/charts/pie",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:4,frontMatter:{title:"Pie Chart",sidebar_label:"Pie (Pro)",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Area (Pro)",permalink:"/v3.x.x/charts/area"}},s={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types for X-Axis:",id:"valid-data-types-for-x-axis",level:4},{value:"Valid Data Types for Y-Axis:",id:"valid-data-types-for-y-axis",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4},{value:"For X-Axis:",id:"for-x-axis",level:5},{value:"For Y-Axis:",id:"for-y-axis",level:5}],u={toc:p},d="wrapper";function c(e){let{components:t,...r}=e;return(0,n.kt)(d,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("div",{style:{border:"1px solid rgba(255,0,0, 0.03)",padding:20,borderRadius:14,backgroundColor:"rgba(255,0,0, 0.03)",maxWidth:600}},(0,n.kt)("h4",{style:{fontWeight:"500",marginBottom:5}}," This feature is available in ",(0,n.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only.")),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{src:"/img//pie-chart.png",width:"380px",alt:"Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"Pie chart is a circular chart used for displaying various data where you can represent your data in a circular form."),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"PIE_CHART")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types-for-x-axis"},"Valid Data Types for X-Axis:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"String"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types-for-y-axis"},"Valid Data Types for Y-Axis:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Pie Chart\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name )\n*/\nChart chart1(&dashboard, PIE_CHART, "Chart Name");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("h5",{id:"for-x-axis"},"For X-Axis:"),(0,n.kt)("p",null,"X-Axis updater uses ",(0,n.kt)("inlineCode",{parentName:"p"},"updateX")," function."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/*\n Data for X Axis of our Chart\n This array can be of: `int` / `float` or `String`\n*/\nString XAxis[] = {"Biscuits", "Cookies", "Milk", "Thing4", "Thing5"};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or\n (float array[], size_t array_size)\n or\n (String array[], size_t array_size)\n*/\nchart1.updateX(XAxis, 5);\n')),(0,n.kt)("h5",{id:"for-y-axis"},"For Y-Axis:"),(0,n.kt)("p",null,"Y-Axis updater uses ",(0,n.kt)("inlineCode",{parentName:"p"},"updateY")," function."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"/*\n Data for Y Axis of our Chart\n This array can be of: `int` or `float`\n*/\nint YAxis[] = {0, 0, 0, 0, 0};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or \n (float array[], size_t array_size)\n*/\nchart1.updateY(YAxis, 5);\n")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/87b1afb5.79e57858.js b/assets/js/87b1afb5.79e57858.js new file mode 100644 index 00000000..f8cc954a --- /dev/null +++ b/assets/js/87b1afb5.79e57858.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[6960],{5788:(e,r,a)=>{a.d(r,{Iu:()=>y,yg:()=>g});var t=a(1504);function n(e,r,a){return r in e?Object.defineProperty(e,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[r]=a,e}function i(e,r){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r&&(t=t.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),a.push.apply(a,t)}return a}function l(e){for(var r=1;r<arguments.length;r++){var a=null!=arguments[r]?arguments[r]:{};r%2?i(Object(a),!0).forEach((function(r){n(e,r,a[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(a,r))}))}return e}function o(e,r){if(null==e)return{};var a,t,n=function(e,r){if(null==e)return{};var a,t,n={},i=Object.keys(e);for(t=0;t<i.length;t++)a=i[t],r.indexOf(a)>=0||(n[a]=e[a]);return n}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t<i.length;t++)a=i[t],r.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=t.createContext({}),p=function(e){var r=t.useContext(s),a=r;return e&&(a="function"==typeof e?e(r):l(l({},r),e)),a},y=function(e){var r=p(e.components);return t.createElement(s.Provider,{value:r},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var r=e.children;return t.createElement(t.Fragment,{},r)}},c=t.forwardRef((function(e,r){var a=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,y=o(e,["components","mdxType","originalType","parentName"]),u=p(a),c=n,g=u["".concat(s,".").concat(c)]||u[c]||d[c]||i;return a?t.createElement(g,l(l({ref:r},y),{},{components:a})):t.createElement(g,l({ref:r},y))}));function g(e,r){var a=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var i=a.length,l=new Array(i);l[0]=c;var o={};for(var s in r)hasOwnProperty.call(r,s)&&(o[s]=r[s]);o.originalType=e,o[u]="string"==typeof e?e:n,l[1]=o;for(var p=2;p<i;p++)l[p]=a[p];return t.createElement.apply(null,l)}return t.createElement.apply(null,a)}c.displayName="MDXCreateElement"},3584:(e,r,a)=>{a.r(r),a.d(r,{assets:()=>s,contentTitle:()=>l,default:()=>d,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var t=a(5072),n=(a(1504),a(5788));const i={title:"Pie Chart",sidebar_label:"Pie (Pro)",sidebar_position:4},l=void 0,o={unversionedId:"charts/pie",id:"version-v3.x.x/charts/pie",title:"Pie Chart",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v3.x.x/charts/pie.md",sourceDirName:"charts",slug:"/charts/pie",permalink:"/v3.x.x/charts/pie",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:4,frontMatter:{title:"Pie Chart",sidebar_label:"Pie (Pro)",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Area (Pro)",permalink:"/v3.x.x/charts/area"}},s={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types for X-Axis:",id:"valid-data-types-for-x-axis",level:4},{value:"Valid Data Types for Y-Axis:",id:"valid-data-types-for-y-axis",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4},{value:"For X-Axis:",id:"for-x-axis",level:5},{value:"For Y-Axis:",id:"for-y-axis",level:5}],y={toc:p},u="wrapper";function d(e){let{components:r,...a}=e;return(0,n.yg)(u,(0,t.c)({},y,a,{components:r,mdxType:"MDXLayout"}),(0,n.yg)("div",{style:{border:"1px solid rgba(255,0,0, 0.03)",padding:20,borderRadius:14,backgroundColor:"rgba(255,0,0, 0.03)",maxWidth:600}},(0,n.yg)("h4",{style:{fontWeight:"500",marginBottom:5}}," This feature is available in ",(0,n.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only.")),(0,n.yg)("h4",{id:"preview"},"Preview:"),(0,n.yg)("img",{src:"/img//pie-chart.png",width:"380px",alt:"Preview"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("p",null,"Pie chart is a circular chart used for displaying various data where you can represent your data in a circular form."),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"type"},"Type:"),(0,n.yg)("p",null,(0,n.yg)("inlineCode",{parentName:"p"},"PIE_CHART")),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types-for-x-axis"},"Valid Data Types for X-Axis:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"int")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"float")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"String"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types-for-y-axis"},"Valid Data Types for Y-Axis:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"int")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"float"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"initializer"},"Initializer:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Pie Chart\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name )\n*/\nChart chart1(&dashboard, PIE_CHART, "Chart Name");\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"updaters"},"Updaters:"),(0,n.yg)("h5",{id:"for-x-axis"},"For X-Axis:"),(0,n.yg)("p",null,"X-Axis updater uses ",(0,n.yg)("inlineCode",{parentName:"p"},"updateX")," function."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/*\n Data for X Axis of our Chart\n This array can be of: `int` / `float` or `String`\n*/\nString XAxis[] = {"Biscuits", "Cookies", "Milk", "Thing4", "Thing5"};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or\n (float array[], size_t array_size)\n or\n (String array[], size_t array_size)\n*/\nchart1.updateX(XAxis, 5);\n')),(0,n.yg)("h5",{id:"for-y-axis"},"For Y-Axis:"),(0,n.yg)("p",null,"Y-Axis updater uses ",(0,n.yg)("inlineCode",{parentName:"p"},"updateY")," function."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"/*\n Data for Y Axis of our Chart\n This array can be of: `int` or `float`\n*/\nint YAxis[] = {0, 0, 0, 0, 0};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or \n (float array[], size_t array_size)\n*/\nchart1.updateY(YAxis, 5);\n")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/88f14c76.c12960a0.js b/assets/js/88f14c76.9f55716e.js similarity index 70% rename from assets/js/88f14c76.c12960a0.js rename to assets/js/88f14c76.9f55716e.js index 0f6ba3ee..084dd63e 100644 --- a/assets/js/88f14c76.c12960a0.js +++ b/assets/js/88f14c76.9f55716e.js @@ -1 +1 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[3739],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>m});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(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 i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var s=n.createContext({}),c=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=c(e.components);return n.createElement(s.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=c(r),f=o,m=d["".concat(s,".").concat(f)]||d[f]||u[f]||a;return r?n.createElement(m,i(i({ref:t},p),{},{components:r})):n.createElement(m,i({ref:t},p))}));function m(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=f;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:o,i[1]=l;for(var c=2;c<a;c++)i[c]=r[c];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}f.displayName="MDXCreateElement"},8113:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>u,frontMatter:()=>a,metadata:()=>l,toc:()=>c});var n=r(7462),o=(r(7294),r(3905));const a={title:"Card Indexing",sidebar_label:"Card Indexing (Pro)",sidebar_position:5},i=void 0,l={unversionedId:"features/indexing",id:"version-v4.x.x/features/indexing",title:"Card Indexing",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v4.x.x/features/indexing.md",sourceDirName:"features",slug:"/features/indexing",permalink:"/features/indexing",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:5,frontMatter:{title:"Card Indexing",sidebar_label:"Card Indexing (Pro)",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Custom Logo (Pro)",permalink:"/features/custom-logo"},next:{title:"Custom Card Size (Pro)",permalink:"/features/sizing"}},s={},c=[{value:"Example:",id:"example",level:4}],p={toc:c},d="wrapper";function u(e){let{components:t,...r}=e;return(0,o.kt)(d,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("div",{className:"pro-label"},(0,o.kt)("i",null,(0,o.kt)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,o.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,o.kt)("br",null),(0,o.kt)("img",{src:"/img/index.png",width:"300px",alt:"Energy Card Preview"}),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("p",null,"ESP-DASH ",(0,o.kt)("span",{style:{color:"rgb(245, 75, 66)"}},"Pro")," provides you with a ",(0,o.kt)("inlineCode",{parentName:"p"},"setIndex")," function in both cards and charts to modify the position of them on the dashboard. "),(0,o.kt)("h4",{id:"example"},"Example:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.setIndex(0);\n")),(0,o.kt)("p",null,"Indexing works in ascending format. The lowest card index will be placed in the front of the list and the highest index will be put in the end. It allows you to set the layout according to your wish."))}u.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[7760],{5788:(e,t,r)=>{r.d(t,{Iu:()=>p,yg:()=>g});var n=r(1504);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(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 i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var s=n.createContext({}),c=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=c(e.components);return n.createElement(s.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=c(r),f=o,g=d["".concat(s,".").concat(f)]||d[f]||u[f]||a;return r?n.createElement(g,i(i({ref:t},p),{},{components:r})):n.createElement(g,i({ref:t},p))}));function g(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=f;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:o,i[1]=l;for(var c=2;c<a;c++)i[c]=r[c];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}f.displayName="MDXCreateElement"},2508:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>u,frontMatter:()=>a,metadata:()=>l,toc:()=>c});var n=r(5072),o=(r(1504),r(5788));const a={title:"Card Indexing",sidebar_label:"Card Indexing (Pro)",sidebar_position:5},i=void 0,l={unversionedId:"features/indexing",id:"version-v4.x.x/features/indexing",title:"Card Indexing",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v4.x.x/features/indexing.md",sourceDirName:"features",slug:"/features/indexing",permalink:"/features/indexing",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:5,frontMatter:{title:"Card Indexing",sidebar_label:"Card Indexing (Pro)",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Custom Logo (Pro)",permalink:"/features/custom-logo"},next:{title:"Custom Card Size (Pro)",permalink:"/features/sizing"}},s={},c=[{value:"Example:",id:"example",level:4}],p={toc:c},d="wrapper";function u(e){let{components:t,...r}=e;return(0,o.yg)(d,(0,n.c)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,o.yg)("div",{className:"pro-label"},(0,o.yg)("i",null,(0,o.yg)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,o.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,o.yg)("br",null),(0,o.yg)("img",{src:"/img/index.png",width:"300px",alt:"Energy Card Preview"}),(0,o.yg)("br",null),(0,o.yg)("br",null),(0,o.yg)("p",null,"ESP-DASH ",(0,o.yg)("span",{style:{color:"rgb(245, 75, 66)"}},"Pro")," provides you with a ",(0,o.yg)("inlineCode",{parentName:"p"},"setIndex")," function in both cards and charts to modify the position of them on the dashboard. "),(0,o.yg)("h4",{id:"example"},"Example:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.setIndex(0);\n")),(0,o.yg)("p",null,"Indexing works in ascending format. The lowest card index will be placed in the front of the list and the highest index will be put in the end. It allows you to set the layout according to your wish."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/900bf023.685b959d.js b/assets/js/900bf023.685b959d.js new file mode 100644 index 00000000..0dbb2226 --- /dev/null +++ b/assets/js/900bf023.685b959d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[8777],{5788:(e,r,t)=>{t.d(r,{Iu:()=>u,yg:()=>m});var a=t(1504);function n(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function i(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);r&&(a=a.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,a)}return t}function l(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?i(Object(t),!0).forEach((function(r){n(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function o(e,r){if(null==e)return{};var t,a,n=function(e,r){if(null==e)return{};var t,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)t=i[a],r.indexOf(t)>=0||(n[t]=e[t]);return n}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)t=i[a],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}var p=a.createContext({}),d=function(e){var r=a.useContext(p),t=r;return e&&(t="function"==typeof e?e(r):l(l({},r),e)),t},u=function(e){var r=d(e.components);return a.createElement(p.Provider,{value:r},e.children)},c="mdxType",s={inlineCode:"code",wrapper:function(e){var r=e.children;return a.createElement(a.Fragment,{},r)}},y=a.forwardRef((function(e,r){var t=e.components,n=e.mdxType,i=e.originalType,p=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),c=d(t),y=n,m=c["".concat(p,".").concat(y)]||c[y]||s[y]||i;return t?a.createElement(m,l(l({ref:r},u),{},{components:t})):a.createElement(m,l({ref:r},u))}));function m(e,r){var t=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var i=t.length,l=new Array(i);l[0]=y;var o={};for(var p in r)hasOwnProperty.call(r,p)&&(o[p]=r[p]);o.originalType=e,o[c]="string"==typeof e?e:n,l[1]=o;for(var d=2;d<i;d++)l[d]=t[d];return a.createElement.apply(null,l)}return a.createElement.apply(null,t)}y.displayName="MDXCreateElement"},4588:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>p,contentTitle:()=>l,default:()=>s,frontMatter:()=>i,metadata:()=>o,toc:()=>d});var a=t(5072),n=(t(1504),t(5788));const i={title:"Humidity Card",sidebar_label:"Humidity",sidebar_position:3},l=void 0,o={unversionedId:"cards/humidity",id:"version-v4.x.x/cards/humidity",title:"Humidity Card",description:"Preview:",source:"@site/versioned_docs/version-v4.x.x/cards/humidity.md",sourceDirName:"cards",slug:"/cards/humidity",permalink:"/cards/humidity",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:3,frontMatter:{title:"Humidity Card",sidebar_label:"Humidity",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Temperature",permalink:"/cards/temperature"},next:{title:"Air (Pro)",permalink:"/cards/air"}},p={},d=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],u={toc:d},c="wrapper";function s(e){let{components:r,...t}=e;return(0,n.yg)(c,(0,a.c)({},u,t,{components:r,mdxType:"MDXLayout"}),(0,n.yg)("h4",{id:"preview"},"Preview:"),(0,n.yg)("img",{className:"card-preview",src:"/img/v4/humidity-card.png",width:"280px",alt:"Preview"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("p",null,"This card adds a distinctive humidity icon, and just like generic card you can add a symbol which will be appended to your data."),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"type"},"Type:"),(0,n.yg)("p",null,(0,n.yg)("inlineCode",{parentName:"p"},"HUMIDITY_CARD")),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"int")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"float")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"String"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"initializer"},"Initializer:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Humidity Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )\n*/\nCard card1(&dashboard, HUMIDITY_CARD, "Humidity1", "%");\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"updaters"},"Updaters:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(float value);\n")),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")),(0,n.yg)("p",null,"Or you can also update the symbol along with the value like this:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'card1.update(value, "RH");\n')),(0,n.yg)("br",null),(0,n.yg)("br",null))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/900bf023.76f4101e.js b/assets/js/900bf023.76f4101e.js deleted file mode 100644 index 391ff16b..00000000 --- a/assets/js/900bf023.76f4101e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[7998],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>y});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(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){n(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 o(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=a.createContext({}),d=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},u=function(e){var t=d(e.components);return a.createElement(p.Provider,{value:t},e.children)},c="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,p=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),c=d(r),m=n,y=c["".concat(p,".").concat(m)]||c[m]||s[m]||i;return r?a.createElement(y,l(l({ref:t},u),{},{components:r})):a.createElement(y,l({ref:t},u))}));function y(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,l=new Array(i);l[0]=m;var o={};for(var p in t)hasOwnProperty.call(t,p)&&(o[p]=t[p]);o.originalType=e,o[c]="string"==typeof e?e:n,l[1]=o;for(var d=2;d<i;d++)l[d]=r[d];return a.createElement.apply(null,l)}return a.createElement.apply(null,r)}m.displayName="MDXCreateElement"},1084:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>s,frontMatter:()=>i,metadata:()=>o,toc:()=>d});var a=r(7462),n=(r(7294),r(3905));const i={title:"Humidity Card",sidebar_label:"Humidity",sidebar_position:3},l=void 0,o={unversionedId:"cards/humidity",id:"version-v4.x.x/cards/humidity",title:"Humidity Card",description:"Preview:",source:"@site/versioned_docs/version-v4.x.x/cards/humidity.md",sourceDirName:"cards",slug:"/cards/humidity",permalink:"/cards/humidity",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:3,frontMatter:{title:"Humidity Card",sidebar_label:"Humidity",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Temperature",permalink:"/cards/temperature"},next:{title:"Air (Pro)",permalink:"/cards/air"}},p={},d=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],u={toc:d},c="wrapper";function s(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/humidity-card.png",width:"280px",alt:"Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"This card adds a distinctive humidity icon, and just like generic card you can add a symbol which will be appended to your data."),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"HUMIDITY_CARD")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"String"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Humidity Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )\n*/\nCard card1(&dashboard, HUMIDITY_CARD, "Humidity1", "%");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(float value);\n")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")),(0,n.kt)("p",null,"Or you can also update the symbol along with the value like this:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'card1.update(value, "RH");\n')),(0,n.kt)("br",null),(0,n.kt)("br",null))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/91e7212c.9e46f80a.js b/assets/js/91e7212c.9e46f80a.js new file mode 100644 index 00000000..aa40e3d6 --- /dev/null +++ b/assets/js/91e7212c.9e46f80a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[7244],{5788:(e,r,t)=>{t.d(r,{Iu:()=>c,yg:()=>y});var n=t(1504);function o(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function a(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function i(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?a(Object(t),!0).forEach((function(r){o(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):a(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function l(e,r){if(null==e)return{};var t,n,o=function(e,r){if(null==e)return{};var t,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)t=a[n],r.indexOf(t)>=0||(o[t]=e[t]);return o}(e,r);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)t=a[n],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var s=n.createContext({}),d=function(e){var r=n.useContext(s),t=r;return e&&(t="function"==typeof e?e(r):i(i({},r),e)),t},c=function(e){var r=d(e.components);return n.createElement(s.Provider,{value:r},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var r=e.children;return n.createElement(n.Fragment,{},r)}},g=n.forwardRef((function(e,r){var t=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),p=d(t),g=o,y=p["".concat(s,".").concat(g)]||p[g]||u[g]||a;return t?n.createElement(y,i(i({ref:r},c),{},{components:t})):n.createElement(y,i({ref:r},c))}));function y(e,r){var t=arguments,o=r&&r.mdxType;if("string"==typeof e||o){var a=t.length,i=new Array(a);i[0]=g;var l={};for(var s in r)hasOwnProperty.call(r,s)&&(l[s]=r[s]);l.originalType=e,l[p]="string"==typeof e?e:o,i[1]=l;for(var d=2;d<a;d++)i[d]=t[d];return n.createElement.apply(null,i)}return n.createElement.apply(null,t)}g.displayName="MDXCreateElement"},2484:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>s,contentTitle:()=>i,default:()=>u,frontMatter:()=>a,metadata:()=>l,toc:()=>d});var n=t(5072),o=(t(1504),t(5788));const a={title:"Card Indexing",sidebar_label:"Card Indexing (Pro)",sidebar_position:6},i=void 0,l={unversionedId:"indexing",id:"version-v3.x.x/indexing",title:"Card Indexing",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v3.x.x/indexing.md",sourceDirName:".",slug:"/indexing",permalink:"/v3.x.x/indexing",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:6,frontMatter:{title:"Card Indexing",sidebar_label:"Card Indexing (Pro)",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"Examples",permalink:"/v3.x.x/more-examples"},next:{title:"Cards",permalink:"/v3.x.x/category/cards"}},s={},d=[{value:"Example:",id:"example",level:4}],c={toc:d},p="wrapper";function u(e){let{components:r,...t}=e;return(0,o.yg)(p,(0,n.c)({},c,t,{components:r,mdxType:"MDXLayout"}),(0,o.yg)("div",{style:{border:"1px solid rgba(255,0,0, 0.03)",padding:20,borderRadius:14,backgroundColor:"rgba(255,0,0, 0.03)",maxWidth:600}},(0,o.yg)("h4",{style:{fontWeight:"500",marginBottom:5}}," This feature is available in ",(0,o.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only.")),(0,o.yg)("br",null),(0,o.yg)("img",{src:"/img//index.png",width:"300px",alt:"Energy Card Preview"}),(0,o.yg)("br",null),(0,o.yg)("br",null),(0,o.yg)("p",null,"ESP-DASH ",(0,o.yg)("span",{style:{color:"rgb(245, 75, 66)"}},"Pro")," provides you with a ",(0,o.yg)("inlineCode",{parentName:"p"},"setIndex")," function in both cards and charts to modify the position of them on the dashboard. "),(0,o.yg)("h4",{id:"example"},"Example:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.setIndex(0);\n")),(0,o.yg)("p",null,"Indexing works in ascending format. The lowest card index will be placed in the front of the list and the highest index will be put in the end. It allows you to set the layout according to your wish."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/91e7212c.a82b6059.js b/assets/js/91e7212c.a82b6059.js deleted file mode 100644 index cca764d7..00000000 --- a/assets/js/91e7212c.a82b6059.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[4684],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>m});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(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 i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var s=n.createContext({}),d=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},c=function(e){var t=d(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),p=d(r),f=o,m=p["".concat(s,".").concat(f)]||p[f]||u[f]||a;return r?n.createElement(m,i(i({ref:t},c),{},{components:r})):n.createElement(m,i({ref:t},c))}));function m(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=f;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:o,i[1]=l;for(var d=2;d<a;d++)i[d]=r[d];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}f.displayName="MDXCreateElement"},617:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>u,frontMatter:()=>a,metadata:()=>l,toc:()=>d});var n=r(7462),o=(r(7294),r(3905));const a={title:"Card Indexing",sidebar_label:"Card Indexing (Pro)",sidebar_position:6},i=void 0,l={unversionedId:"indexing",id:"version-v3.x.x/indexing",title:"Card Indexing",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v3.x.x/indexing.md",sourceDirName:".",slug:"/indexing",permalink:"/v3.x.x/indexing",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:6,frontMatter:{title:"Card Indexing",sidebar_label:"Card Indexing (Pro)",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"Examples",permalink:"/v3.x.x/more-examples"},next:{title:"Cards",permalink:"/v3.x.x/category/cards"}},s={},d=[{value:"Example:",id:"example",level:4}],c={toc:d},p="wrapper";function u(e){let{components:t,...r}=e;return(0,o.kt)(p,(0,n.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("div",{style:{border:"1px solid rgba(255,0,0, 0.03)",padding:20,borderRadius:14,backgroundColor:"rgba(255,0,0, 0.03)",maxWidth:600}},(0,o.kt)("h4",{style:{fontWeight:"500",marginBottom:5}}," This feature is available in ",(0,o.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only.")),(0,o.kt)("br",null),(0,o.kt)("img",{src:"/img//index.png",width:"300px",alt:"Energy Card Preview"}),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("p",null,"ESP-DASH ",(0,o.kt)("span",{style:{color:"rgb(245, 75, 66)"}},"Pro")," provides you with a ",(0,o.kt)("inlineCode",{parentName:"p"},"setIndex")," function in both cards and charts to modify the position of them on the dashboard. "),(0,o.kt)("h4",{id:"example"},"Example:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.setIndex(0);\n")),(0,o.kt)("p",null,"Indexing works in ascending format. The lowest card index will be placed in the front of the list and the highest index will be put in the end. It allows you to set the layout according to your wish."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.76c25254.js b/assets/js/935f2afb.76c25254.js new file mode 100644 index 00000000..24f7efc3 --- /dev/null +++ b/assets/js/935f2afb.76c25254.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[5696],{5988:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":"unreleased","badge":true,"noIndex":false,"className":"docs-version-current","isLast":false,"docsSidebars":{"tutorialSidebar":[{"type":"link","label":"Introduction","href":"/next/","docId":"intro"},{"type":"link","label":"Concept","href":"/next/concept","docId":"concept"},{"type":"link","label":"Installation","href":"/next/installation","docId":"installation"},{"type":"link","label":"Getting Started","href":"/next/getting-started","docId":"getting-started"},{"type":"link","label":"Examples","href":"/next/more-examples","docId":"more-examples"},{"type":"link","label":"Tabs (Pro)","href":"/next/tabs","docId":"tabs"},{"type":"link","label":"Statistics","href":"/next/custom-statistics","docId":"custom-statistics"},{"type":"category","label":"Cards","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Generic","href":"/next/cards/generic","docId":"cards/generic"},{"type":"link","label":"Temperature","href":"/next/cards/temperature","docId":"cards/temperature"},{"type":"link","label":"Humidity","href":"/next/cards/humidity","docId":"cards/humidity"},{"type":"link","label":"Air (Pro)","href":"/next/cards/air","docId":"cards/air"},{"type":"link","label":"Energy (Pro)","href":"/next/cards/energy","docId":"cards/energy"},{"type":"link","label":"Progress","href":"/next/cards/progress","docId":"cards/progress"},{"type":"link","label":"Toggle Button","href":"/next/cards/button","docId":"cards/button"},{"type":"link","label":"Push Button (Pro)","href":"/next/cards/push-button","docId":"cards/push-button"},{"type":"link","label":"Status","href":"/next/cards/status","docId":"cards/status"},{"type":"link","label":"Slider","href":"/next/cards/slider","docId":"cards/slider"},{"type":"link","label":"Text Input (Pro)","href":"/next/cards/text-input","docId":"cards/text-input"},{"type":"link","label":"Joystick (Pro)","href":"/next/cards/joystick","docId":"cards/joystick"},{"type":"link","label":"Dropdown (Pro)","href":"/next/cards/dropdown","docId":"cards/dropdown"},{"type":"link","label":"Image (Pro)","href":"/next/cards/image","docId":"cards/image"},{"type":"link","label":"Week Selector (Pro)","href":"/next/cards/week-selector","docId":"cards/week-selector"}]},{"type":"category","label":"Charts","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Bar","href":"/next/charts/bar","docId":"charts/bar"},{"type":"link","label":"Line (Pro)","href":"/next/charts/line","docId":"charts/line"},{"type":"link","label":"Area (Pro)","href":"/next/charts/area","docId":"charts/area"},{"type":"link","label":"Pie (Pro)","href":"/next/charts/pie","docId":"charts/pie"}]},{"type":"category","label":"Extra Features","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Custom URI","href":"/next/features/custom-uri","docId":"features/custom-uri"},{"type":"link","label":"User Authentication","href":"/next/features/authentication","docId":"features/authentication"},{"type":"link","label":"Disable Statistics","href":"/next/features/disable-stats","docId":"features/disable-stats"},{"type":"link","label":"Toggle Animation (Pro)","href":"/next/features/chartanimations","docId":"features/chartanimations"},{"type":"link","label":"Custom Title (Pro)","href":"/next/features/title","docId":"features/title"},{"type":"link","label":"Custom Logo (Pro)","href":"/next/features/custom-logo","docId":"features/custom-logo"},{"type":"link","label":"Card Indexing (Pro)","href":"/next/features/indexing","docId":"features/indexing"},{"type":"link","label":"Custom Card Size (Pro)","href":"/next/features/sizing","docId":"features/sizing"},{"type":"link","label":"Brotli Compression (Pro)","href":"/next/features/brotli-compression","docId":"features/brotli-compression"}]},{"type":"link","label":"Migration Guide","href":"/next/migrate","docId":"migrate"}]},"docs":{"cards/air":{"id":"cards/air","title":"Air Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"cards/button":{"id":"cards/button","title":"Toggle Button","description":"Preview:","sidebar":"tutorialSidebar"},"cards/dropdown":{"id":"cards/dropdown","title":"Dropdown Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"cards/energy":{"id":"cards/energy","title":"Energy Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"cards/generic":{"id":"cards/generic","title":"Generic Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/humidity":{"id":"cards/humidity","title":"Humidity Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/image":{"id":"cards/image","title":"Image Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"cards/joystick":{"id":"cards/joystick","title":"Joystick Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"cards/progress":{"id":"cards/progress","title":"Progress Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/push-button":{"id":"cards/push-button","title":"Push Button Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"cards/slider":{"id":"cards/slider","title":"Slider Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/status":{"id":"cards/status","title":"Status Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/temperature":{"id":"cards/temperature","title":"Temperature Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/text-input":{"id":"cards/text-input","title":"Text Input Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"cards/week-selector":{"id":"cards/week-selector","title":"Week Selector Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"charts/area":{"id":"charts/area","title":"Area Chart","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"charts/bar":{"id":"charts/bar","title":"Bar Chart","description":"Preview:","sidebar":"tutorialSidebar"},"charts/line":{"id":"charts/line","title":"Line Chart","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"charts/pie":{"id":"charts/pie","title":"Pie Chart","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"concept":{"id":"concept","title":"Concept of DASH","description":"In this article, we are going to look at how the internals of ESP-DASH are stacked up, as well as understand the how everything works with eachother inside the library.","sidebar":"tutorialSidebar"},"custom-statistics":{"id":"custom-statistics","title":"Statistics","description":"ESP-DASH has a dedicated page called \\"Statistics\\" on the dashboard which contain key-value pairs of system statistics ( heap, flash usage etc. ) by default. With the launch of ESP-DASH V4, user defined statistics are now also part of the library! You can now add your own statitics to this page. \ud83c\udf89","sidebar":"tutorialSidebar"},"features/authentication":{"id":"features/authentication","title":"User Authentication","description":"ESP-DASH comes with basic HTTP authentication support. You can enable basic HTTP based user authentication to control who can view your dashboard using setAuthentication function.","sidebar":"tutorialSidebar"},"features/brotli-compression":{"id":"features/brotli-compression","title":"Brotli Compression","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"features/chartanimations":{"id":"features/chartanimations","title":"Toggle Animation","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"features/custom-logo":{"id":"features/custom-logo","title":"Custom Logo","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"features/custom-uri":{"id":"features/custom-uri","title":"Custom URI","description":"If you want to serve ESPDash at a path other than \'root\' (ie. http:///) then you can use the constructor to supply the path of your choice.","sidebar":"tutorialSidebar"},"features/disable-stats":{"id":"features/disable-stats","title":"Disable Statistics","description":"You can disable system statistics by using setting false in ESPDash class constructor.","sidebar":"tutorialSidebar"},"features/indexing":{"id":"features/indexing","title":"Card Indexing","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"features/sizing":{"id":"features/sizing","title":"Custom Card Size","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"features/title":{"id":"features/title","title":"Custom Title","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"getting-started":{"id":"getting-started","title":"Getting Started","description":"To get started with ESP-DASH, we will be creating our basic example step by step and learn what each setup does:","sidebar":"tutorialSidebar"},"installation":{"id":"installation","title":"Installation","description":"ESP-DASH depends on the following open-source libraries/boards. Make sure to install them before you install ESP-DASH.","sidebar":"tutorialSidebar"},"intro":{"id":"intro","title":"Intro","description":" ","sidebar":"tutorialSidebar"},"migrate":{"id":"migrate","title":"Migration Guide","description":"Note: If you are currently using ESP-DASH V3 or ESP-DASH Pro ( previous releases <= v4.0.8 ), then this article is for you.","sidebar":"tutorialSidebar"},"more-examples":{"id":"more-examples","title":"Examples","description":"There are many example sketches in our repository. You can check those out to know more about what you can do with ESP-DASH. We have contructed every example with very clear documentation so there is less obstruction in your learning process.","sidebar":"tutorialSidebar"},"tabs":{"id":"tabs","title":"Tabs","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.a7ff5ebd.js b/assets/js/935f2afb.a7ff5ebd.js deleted file mode 100644 index 21650052..00000000 --- a/assets/js/935f2afb.a7ff5ebd.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":"unreleased","badge":true,"noIndex":false,"className":"docs-version-current","isLast":false,"docsSidebars":{"tutorialSidebar":[{"type":"link","label":"Introduction","href":"/next/","docId":"intro"},{"type":"link","label":"Concept","href":"/next/concept","docId":"concept"},{"type":"link","label":"Installation","href":"/next/installation","docId":"installation"},{"type":"link","label":"Getting Started","href":"/next/getting-started","docId":"getting-started"},{"type":"link","label":"Examples","href":"/next/more-examples","docId":"more-examples"},{"type":"link","label":"Tabs (Pro)","href":"/next/tabs","docId":"tabs"},{"type":"link","label":"Statistics","href":"/next/custom-statistics","docId":"custom-statistics"},{"type":"category","label":"Cards","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Generic","href":"/next/cards/generic","docId":"cards/generic"},{"type":"link","label":"Temperature","href":"/next/cards/temperature","docId":"cards/temperature"},{"type":"link","label":"Humidity","href":"/next/cards/humidity","docId":"cards/humidity"},{"type":"link","label":"Air (Pro)","href":"/next/cards/air","docId":"cards/air"},{"type":"link","label":"Energy (Pro)","href":"/next/cards/energy","docId":"cards/energy"},{"type":"link","label":"Progress","href":"/next/cards/progress","docId":"cards/progress"},{"type":"link","label":"Toggle Button","href":"/next/cards/button","docId":"cards/button"},{"type":"link","label":"Push Button (Pro)","href":"/next/cards/push-button","docId":"cards/push-button"},{"type":"link","label":"Status","href":"/next/cards/status","docId":"cards/status"},{"type":"link","label":"Slider","href":"/next/cards/slider","docId":"cards/slider"},{"type":"link","label":"Text Input (Pro)","href":"/next/cards/text-input","docId":"cards/text-input"},{"type":"link","label":"Joystick (Pro)","href":"/next/cards/joystick","docId":"cards/joystick"},{"type":"link","label":"Dropdown (Pro)","href":"/next/cards/dropdown","docId":"cards/dropdown"},{"type":"link","label":"Image (Pro)","href":"/next/cards/image","docId":"cards/image"},{"type":"link","label":"Week Selector (Pro)","href":"/next/cards/week-selector","docId":"cards/week-selector"}]},{"type":"category","label":"Charts","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Bar","href":"/next/charts/bar","docId":"charts/bar"},{"type":"link","label":"Line (Pro)","href":"/next/charts/line","docId":"charts/line"},{"type":"link","label":"Area (Pro)","href":"/next/charts/area","docId":"charts/area"},{"type":"link","label":"Pie (Pro)","href":"/next/charts/pie","docId":"charts/pie"}]},{"type":"category","label":"Extra Features","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Custom URI","href":"/next/features/custom-uri","docId":"features/custom-uri"},{"type":"link","label":"User Authentication","href":"/next/features/authentication","docId":"features/authentication"},{"type":"link","label":"Disable Statistics","href":"/next/features/disable-stats","docId":"features/disable-stats"},{"type":"link","label":"Toggle Animation (Pro)","href":"/next/features/chartanimations","docId":"features/chartanimations"},{"type":"link","label":"Custom Title (Pro)","href":"/next/features/title","docId":"features/title"},{"type":"link","label":"Custom Logo (Pro)","href":"/next/features/custom-logo","docId":"features/custom-logo"},{"type":"link","label":"Card Indexing (Pro)","href":"/next/features/indexing","docId":"features/indexing"},{"type":"link","label":"Custom Card Size (Pro)","href":"/next/features/sizing","docId":"features/sizing"},{"type":"link","label":"Brotli Compression (Pro)","href":"/next/features/brotli-compression","docId":"features/brotli-compression"}]},{"type":"link","label":"Migration Guide","href":"/next/migrate","docId":"migrate"}]},"docs":{"cards/air":{"id":"cards/air","title":"Air Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"cards/button":{"id":"cards/button","title":"Toggle Button","description":"Preview:","sidebar":"tutorialSidebar"},"cards/dropdown":{"id":"cards/dropdown","title":"Dropdown Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"cards/energy":{"id":"cards/energy","title":"Energy Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"cards/generic":{"id":"cards/generic","title":"Generic Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/humidity":{"id":"cards/humidity","title":"Humidity Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/image":{"id":"cards/image","title":"Image Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"cards/joystick":{"id":"cards/joystick","title":"Joystick Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"cards/progress":{"id":"cards/progress","title":"Progress Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/push-button":{"id":"cards/push-button","title":"Push Button Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"cards/slider":{"id":"cards/slider","title":"Slider Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/status":{"id":"cards/status","title":"Status Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/temperature":{"id":"cards/temperature","title":"Temperature Card","description":"Preview:","sidebar":"tutorialSidebar"},"cards/text-input":{"id":"cards/text-input","title":"Text Input Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"cards/week-selector":{"id":"cards/week-selector","title":"Week Selector Card","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"charts/area":{"id":"charts/area","title":"Area Chart","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"charts/bar":{"id":"charts/bar","title":"Bar Chart","description":"Preview:","sidebar":"tutorialSidebar"},"charts/line":{"id":"charts/line","title":"Line Chart","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"charts/pie":{"id":"charts/pie","title":"Pie Chart","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"concept":{"id":"concept","title":"Concept of DASH","description":"In this article, we are going to look at how the internals of ESP-DASH are stacked up, as well as understand the how everything works with eachother inside the library.","sidebar":"tutorialSidebar"},"custom-statistics":{"id":"custom-statistics","title":"Statistics","description":"ESP-DASH has a dedicated page called \\"Statistics\\" on the dashboard which contain key-value pairs of system statistics ( heap, flash usage etc. ) by default. With the launch of ESP-DASH V4, user defined statistics are now also part of the library! You can now add your own statitics to this page. \ud83c\udf89","sidebar":"tutorialSidebar"},"features/authentication":{"id":"features/authentication","title":"User Authentication","description":"ESP-DASH comes with basic HTTP authentication support. You can enable basic HTTP based user authentication to control who can view your dashboard using setAuthentication function.","sidebar":"tutorialSidebar"},"features/brotli-compression":{"id":"features/brotli-compression","title":"Brotli Compression","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"features/chartanimations":{"id":"features/chartanimations","title":"Toggle Animation","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"features/custom-logo":{"id":"features/custom-logo","title":"Custom Logo","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"features/custom-uri":{"id":"features/custom-uri","title":"Custom URI","description":"If you want to serve ESPDash at a path other than \'root\' (ie. http:///) then you can use the constructor to supply the path of your choice.","sidebar":"tutorialSidebar"},"features/disable-stats":{"id":"features/disable-stats","title":"Disable Statistics","description":"You can disable system statistics by using setting false in ESPDash class constructor.","sidebar":"tutorialSidebar"},"features/indexing":{"id":"features/indexing","title":"Card Indexing","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"features/sizing":{"id":"features/sizing","title":"Custom Card Size","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"features/title":{"id":"features/title","title":"Custom Title","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"},"getting-started":{"id":"getting-started","title":"Getting Started","description":"To get started with ESP-DASH, we will be creating our basic example step by step and learn what each setup does:","sidebar":"tutorialSidebar"},"installation":{"id":"installation","title":"Installation","description":"ESP-DASH depends on the following open-source libraries/boards. Make sure to install them before you install ESP-DASH.","sidebar":"tutorialSidebar"},"intro":{"id":"intro","title":"Intro","description":" ","sidebar":"tutorialSidebar"},"migrate":{"id":"migrate","title":"Migration Guide","description":"Note: If you are currently using ESP-DASH V3 or ESP-DASH Pro ( previous releases <= v4.0.8 ), then this article is for you.","sidebar":"tutorialSidebar"},"more-examples":{"id":"more-examples","title":"Examples","description":"There are many example sketches in our repository. You can check those out to know more about what you can do with ESP-DASH. We have contructed every example with very clear documentation so there is less obstruction in your learning process.","sidebar":"tutorialSidebar"},"tabs":{"id":"tabs","title":"Tabs","description":"This feature is available in DASH Pro only.","sidebar":"tutorialSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/9495aadd.11cd0113.js b/assets/js/9495aadd.11cd0113.js new file mode 100644 index 00000000..4d7c997d --- /dev/null +++ b/assets/js/9495aadd.11cd0113.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[1528],{5788:(e,t,a)=>{a.d(t,{Iu:()=>h,yg:()=>g});var r=a(1504);function s(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?n(Object(a),!0).forEach((function(t){s(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):n(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function i(e,t){if(null==e)return{};var a,r,s=function(e,t){if(null==e)return{};var a,r,s={},n=Object.keys(e);for(r=0;r<n.length;r++)a=n[r],t.indexOf(a)>=0||(s[a]=e[a]);return s}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r<n.length;r++)a=n[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(s[a]=e[a])}return s}var l=r.createContext({}),c=function(e){var t=r.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},h=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,s=e.mdxType,n=e.originalType,l=e.parentName,h=i(e,["components","mdxType","originalType","parentName"]),u=c(a),d=s,g=u["".concat(l,".").concat(d)]||u[d]||p[d]||n;return a?r.createElement(g,o(o({ref:t},h),{},{components:a})):r.createElement(g,o({ref:t},h))}));function g(e,t){var a=arguments,s=t&&t.mdxType;if("string"==typeof e||s){var n=a.length,o=new Array(n);o[0]=d;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[u]="string"==typeof e?e:s,o[1]=i;for(var c=2;c<n;c++)o[c]=a[c];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}d.displayName="MDXCreateElement"},1892:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>p,frontMatter:()=>n,metadata:()=>i,toc:()=>c});var r=a(5072),s=(a(1504),a(5788));const n={title:"Concept of DASH",sidebar_label:"Concept",sidebar_position:2},o=void 0,i={unversionedId:"concept",id:"concept",title:"Concept of DASH",description:"In this article, we are going to look at how the internals of ESP-DASH are stacked up, as well as understand the how everything works with eachother inside the library.",source:"@site/docs/concept.md",sourceDirName:".",slug:"/concept",permalink:"/next/concept",draft:!1,tags:[],version:"current",sidebarPosition:2,frontMatter:{title:"Concept of DASH",sidebar_label:"Concept",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Introduction",permalink:"/next/"},next:{title:"Installation",permalink:"/next/installation"}},l={},c=[{value:"1. Networking Class (ESPDash.h)",id:"1-networking-class-espdashh",level:4},{value:"2. Card Class (Card.h)",id:"2-card-class-cardh",level:4},{value:"3. Chart Class (Chart.h)",id:"3-chart-class-charth",level:4},{value:"4. Statistic Class (Statistic.h)",id:"4-statistic-class-statistich",level:4},{value:"5. Tab Class (Tab.h) ( Pro )",id:"5-tab-class-tabh--pro-",level:4}],h={toc:c},u="wrapper";function p(e){let{components:t,...a}=e;return(0,s.yg)(u,(0,r.c)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,s.yg)("p",null,"In this article, we are going to look at how the internals of ESP-DASH are stacked up, as well as understand the how everything works with eachother inside the library."),(0,s.yg)("i",null,"Note: If you looking to get started with ESP-DASH quickly, you can skip this article."),(0,s.yg)("br",null),(0,s.yg)("br",null),(0,s.yg)("img",{src:"/img/v4/concept.svg",alt:"Concept Diagram",width:"800px"}),(0,s.yg)("br",null),(0,s.yg)("br",null),(0,s.yg)("p",null,"DASH contains the following classes which you will use in your application:"),(0,s.yg)("ul",null,(0,s.yg)("li",{parentName:"ul"},(0,s.yg)("b",null,"Networking Class")," (ESPDash.h)"),(0,s.yg)("li",{parentName:"ul"},(0,s.yg)("b",null,"Card Class")," (Card.h)"),(0,s.yg)("li",{parentName:"ul"},(0,s.yg)("b",null,"Chart Class")," (Chart.h)"),(0,s.yg)("li",{parentName:"ul"},(0,s.yg)("b",null,"Statistic Class")," (Statistic.h)"),(0,s.yg)("li",{parentName:"ul"},(0,s.yg)("b",null,"Tab Class")," (Tab.h) ( Pro Version Only )")),(0,s.yg)("p",null,"The whole idea of ESP-DASH is to make a complete dashboard by using data classes ( as shown in figure above ). The data classes connect with ESP-DASH main class using pointers which handles all the networking and relays realtime updates to the open dashboards."),(0,s.yg)("p",null,"Let's understand the purpose of each class:"),(0,s.yg)("h4",{id:"1-networking-class-espdashh"},"1. Networking Class (ESPDash.h)"),(0,s.yg)("p",null,'The networking class handles all the networking stuff including serving the DASH webpage from program memory of the microcontroller and also to maintain the WebSocket connection with every connected client. Apart from networking, with the release of V4, you can now also configure the webpage according to your application. This includes changing page title, logo etc. ( Go to "Extra Features" to know more ).'),(0,s.yg)("h4",{id:"2-card-class-cardh"},"2. Card Class (Card.h)"),(0,s.yg)("p",null,"The card class is a data storage class in ESP-DASH which is used to create various types of cards on the dashboard. The only purpose of this class is to store the data + configuration in stack or heap depending on your use case and to keep track of the changes in data for realtime updates."),(0,s.yg)("h4",{id:"3-chart-class-charth"},"3. Chart Class (Chart.h)"),(0,s.yg)("p",null,'The chart class is an data storage class which is used to store the X & Y axis arrays to create various types of charts on the dashboard. This class is a bit different from "card" class as to keep the memory footprint low, it doesn\'t stores the data in the class itself. Instead it smartly stores the pointer to arrays so that data can be read on demand without actually copying all the array in the memory.'),(0,s.yg)("small",null,(0,s.yg)("i",null,"Note: If you are migrating from V3, Please look at the migration guide to know more.")),(0,s.yg)("h4",{id:"4-statistic-class-statistich"},"4. Statistic Class (Statistic.h)"),(0,s.yg)("p",null,"The statistic class is used to create custom user defined statistics which will be displayed in the statistics page. Statistics in ESP-DASH's sense are simple key-value pairs which you can send to dashboard to report small but useful data."),(0,s.yg)("h4",{id:"5-tab-class-tabh--pro-"},"5. Tab Class (Tab.h) ( Pro )"),(0,s.yg)("p",null,"The tab class in ",(0,s.yg)("a",{href:"https://espdash.pro/",target:"_blank"},"DASH Pro"),' is also an data class which is used to create multiple pages. Therefore, you are now not limited to the "Overview" page and can create multiple pages to host different cards & charts.'))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/9495aadd.771773f2.js b/assets/js/9495aadd.771773f2.js deleted file mode 100644 index 03dce13e..00000000 --- a/assets/js/9495aadd.771773f2.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[5719],{3905:(t,e,a)=>{a.d(e,{Zo:()=>h,kt:()=>f});var r=a(7294);function s(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function n(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,r)}return a}function o(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?n(Object(a),!0).forEach((function(e){s(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):n(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function i(t,e){if(null==t)return{};var a,r,s=function(t,e){if(null==t)return{};var a,r,s={},n=Object.keys(t);for(r=0;r<n.length;r++)a=n[r],e.indexOf(a)>=0||(s[a]=t[a]);return s}(t,e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);for(r=0;r<n.length;r++)a=n[r],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(s[a]=t[a])}return s}var l=r.createContext({}),c=function(t){var e=r.useContext(l),a=e;return t&&(a="function"==typeof t?t(e):o(o({},e),t)),a},h=function(t){var e=c(t.components);return r.createElement(l.Provider,{value:e},t.children)},p="mdxType",u={inlineCode:"code",wrapper:function(t){var e=t.children;return r.createElement(r.Fragment,{},e)}},d=r.forwardRef((function(t,e){var a=t.components,s=t.mdxType,n=t.originalType,l=t.parentName,h=i(t,["components","mdxType","originalType","parentName"]),p=c(a),d=s,f=p["".concat(l,".").concat(d)]||p[d]||u[d]||n;return a?r.createElement(f,o(o({ref:e},h),{},{components:a})):r.createElement(f,o({ref:e},h))}));function f(t,e){var a=arguments,s=e&&e.mdxType;if("string"==typeof t||s){var n=a.length,o=new Array(n);o[0]=d;var i={};for(var l in e)hasOwnProperty.call(e,l)&&(i[l]=e[l]);i.originalType=t,i[p]="string"==typeof t?t:s,o[1]=i;for(var c=2;c<n;c++)o[c]=a[c];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}d.displayName="MDXCreateElement"},7574:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>n,metadata:()=>i,toc:()=>c});var r=a(7462),s=(a(7294),a(3905));const n={title:"Concept of DASH",sidebar_label:"Concept",sidebar_position:2},o=void 0,i={unversionedId:"concept",id:"concept",title:"Concept of DASH",description:"In this article, we are going to look at how the internals of ESP-DASH are stacked up, as well as understand the how everything works with eachother inside the library.",source:"@site/docs/concept.md",sourceDirName:".",slug:"/concept",permalink:"/next/concept",draft:!1,tags:[],version:"current",sidebarPosition:2,frontMatter:{title:"Concept of DASH",sidebar_label:"Concept",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Introduction",permalink:"/next/"},next:{title:"Installation",permalink:"/next/installation"}},l={},c=[{value:"1. Networking Class (ESPDash.h)",id:"1-networking-class-espdashh",level:4},{value:"2. Card Class (Card.h)",id:"2-card-class-cardh",level:4},{value:"3. Chart Class (Chart.h)",id:"3-chart-class-charth",level:4},{value:"4. Statistic Class (Statistic.h)",id:"4-statistic-class-statistich",level:4},{value:"5. Tab Class (Tab.h) ( Pro )",id:"5-tab-class-tabh--pro-",level:4}],h={toc:c},p="wrapper";function u(t){let{components:e,...a}=t;return(0,s.kt)(p,(0,r.Z)({},h,a,{components:e,mdxType:"MDXLayout"}),(0,s.kt)("p",null,"In this article, we are going to look at how the internals of ESP-DASH are stacked up, as well as understand the how everything works with eachother inside the library."),(0,s.kt)("i",null,"Note: If you looking to get started with ESP-DASH quickly, you can skip this article."),(0,s.kt)("br",null),(0,s.kt)("br",null),(0,s.kt)("img",{src:"/img/v4/concept.svg",alt:"Concept Diagram",width:"800px"}),(0,s.kt)("br",null),(0,s.kt)("br",null),(0,s.kt)("p",null,"DASH contains the following classes which you will use in your application:"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("b",null,"Networking Class")," (ESPDash.h)"),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("b",null,"Card Class")," (Card.h)"),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("b",null,"Chart Class")," (Chart.h)"),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("b",null,"Statistic Class")," (Statistic.h)"),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("b",null,"Tab Class")," (Tab.h) ( Pro Version Only )")),(0,s.kt)("p",null,"The whole idea of ESP-DASH is to make a complete dashboard by using data classes ( as shown in figure above ). The data classes connect with ESP-DASH main class using pointers which handles all the networking and relays realtime updates to the open dashboards."),(0,s.kt)("p",null,"Let's understand the purpose of each class:"),(0,s.kt)("h4",{id:"1-networking-class-espdashh"},"1. Networking Class (ESPDash.h)"),(0,s.kt)("p",null,'The networking class handles all the networking stuff including serving the DASH webpage from program memory of the microcontroller and also to maintain the WebSocket connection with every connected client. Apart from networking, with the release of V4, you can now also configure the webpage according to your application. This includes changing page title, logo etc. ( Go to "Extra Features" to know more ).'),(0,s.kt)("h4",{id:"2-card-class-cardh"},"2. Card Class (Card.h)"),(0,s.kt)("p",null,"The card class is a data storage class in ESP-DASH which is used to create various types of cards on the dashboard. The only purpose of this class is to store the data + configuration in stack or heap depending on your use case and to keep track of the changes in data for realtime updates."),(0,s.kt)("h4",{id:"3-chart-class-charth"},"3. Chart Class (Chart.h)"),(0,s.kt)("p",null,'The chart class is an data storage class which is used to store the X & Y axis arrays to create various types of charts on the dashboard. This class is a bit different from "card" class as to keep the memory footprint low, it doesn\'t stores the data in the class itself. Instead it smartly stores the pointer to arrays so that data can be read on demand without actually copying all the array in the memory.'),(0,s.kt)("small",null,(0,s.kt)("i",null,"Note: If you are migrating from V3, Please look at the migration guide to know more.")),(0,s.kt)("h4",{id:"4-statistic-class-statistich"},"4. Statistic Class (Statistic.h)"),(0,s.kt)("p",null,"The statistic class is used to create custom user defined statistics which will be displayed in the statistics page. Statistics in ESP-DASH's sense are simple key-value pairs which you can send to dashboard to report small but useful data."),(0,s.kt)("h4",{id:"5-tab-class-tabh--pro-"},"5. Tab Class (Tab.h) ( Pro )"),(0,s.kt)("p",null,"The tab class in ",(0,s.kt)("a",{href:"https://espdash.pro/",target:"_blank"},"DASH Pro"),' is also an data class which is used to create multiple pages. Therefore, you are now not limited to the "Overview" page and can create multiple pages to host different cards & charts.'))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/94c292bb.33451f53.js b/assets/js/94c292bb.33451f53.js deleted file mode 100644 index 6b13d2d4..00000000 --- a/assets/js/94c292bb.33451f53.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[2326],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>b});var o=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function a(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){n(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 l(e,t){if(null==e)return{};var r,o,n=function(e,t){if(null==e)return{};var r,o,n={},i=Object.keys(e);for(o=0;o<i.length;o++)r=i[o],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)r=i[o],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=o.createContext({}),p=function(e){var t=o.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},c=function(e){var t=p(e.components);return o.createElement(s.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},d=o.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=p(r),d=n,b=u["".concat(s,".").concat(d)]||u[d]||m[d]||i;return r?o.createElement(b,a(a({ref:t},c),{},{components:r})):o.createElement(b,a({ref:t},c))}));function b(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,a=new Array(i);a[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:n,a[1]=l;for(var p=2;p<i;p++)a[p]=r[p];return o.createElement.apply(null,a)}return o.createElement.apply(null,r)}d.displayName="MDXCreateElement"},671:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>m,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var o=r(7462),n=(r(7294),r(3905));const i={title:"Brotli Compression",sidebar_label:"Brotli Compression (Pro)",sidebar_position:6},a=void 0,l={unversionedId:"features/brotli-compression",id:"features/brotli-compression",title:"Brotli Compression",description:"This feature is available in DASH Pro only.",source:"@site/docs/features/brotli-compression.md",sourceDirName:"features",slug:"/features/brotli-compression",permalink:"/next/features/brotli-compression",draft:!1,tags:[],version:"current",sidebarPosition:6,frontMatter:{title:"Brotli Compression",sidebar_label:"Brotli Compression (Pro)",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"Custom Card Size (Pro)",permalink:"/next/features/sizing"},next:{title:"Migration Guide",permalink:"/next/migrate"}},s={},p=[{value:"How to enable:",id:"how-to-enable",level:4}],c={toc:p},u="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(u,(0,o.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("div",{className:"pro-label"},(0,n.kt)("i",null,(0,n.kt)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.kt)("br",null),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/brotli-compression.png",width:"280px",alt:"Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"With ESP-DASH Pro v4.3.0 or more, there is an option to enable Brotli compression to further reduce the size of webpage (dashboard) and provide you more space for your code. We've noticed 40% extra reduction in size over gzip compression (default)."),(0,n.kt)("p",null,"Please note that Brotli compression is only supported by Safari browser with unencrpyted HTTP protocol. Due to constraints set by other browsers ( Chrome, Edge, Firefox etc. ) you need to use HTTPS for brotli compression to work properly."),(0,n.kt)("p",null,(0,n.kt)("em",{parentName:"p"},"Note: Broti compression is disabled by default. It's up to user to enable brotli if the above conditions are fine for your use-case.")),(0,n.kt)("h4",{id:"how-to-enable"},"How to enable:"),(0,n.kt)("p",null,"You can switch to brotli compression by setting ",(0,n.kt)("inlineCode",{parentName:"p"},"DASH_USE_BROTLI_COMPRESSION")," to ",(0,n.kt)("inlineCode",{parentName:"p"},"1")," in ",(0,n.kt)("inlineCode",{parentName:"p"},"dash_webpage.h"),"."),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Open ",(0,n.kt)("inlineCode",{parentName:"li"},"dash_webpage.h")," in src directory of ESP-DASH Pro library."),(0,n.kt)("li",{parentName:"ol"},"Locate ",(0,n.kt)("inlineCode",{parentName:"li"},"DASH_USE_BROTLI_COMPRESSION")),(0,n.kt)("li",{parentName:"ol"},"Set it to ",(0,n.kt)("inlineCode",{parentName:"li"},"1")),(0,n.kt)("li",{parentName:"ol"},"That's it. Save, compile and upload again to your microcontroller.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/94c292bb.39915163.js b/assets/js/94c292bb.39915163.js new file mode 100644 index 00000000..e17d233a --- /dev/null +++ b/assets/js/94c292bb.39915163.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[682],{5788:(e,r,t)=>{t.d(r,{Iu:()=>c,yg:()=>d});var o=t(1504);function n(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function i(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,o)}return t}function a(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?i(Object(t),!0).forEach((function(r){n(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function l(e,r){if(null==e)return{};var t,o,n=function(e,r){if(null==e)return{};var t,o,n={},i=Object.keys(e);for(o=0;o<i.length;o++)t=i[o],r.indexOf(t)>=0||(n[t]=e[t]);return n}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)t=i[o],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}var s=o.createContext({}),p=function(e){var r=o.useContext(s),t=r;return e&&(t="function"==typeof e?e(r):a(a({},r),e)),t},c=function(e){var r=p(e.components);return o.createElement(s.Provider,{value:r},e.children)},u="mdxType",y={inlineCode:"code",wrapper:function(e){var r=e.children;return o.createElement(o.Fragment,{},r)}},m=o.forwardRef((function(e,r){var t=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=p(t),m=n,d=u["".concat(s,".").concat(m)]||u[m]||y[m]||i;return t?o.createElement(d,a(a({ref:r},c),{},{components:t})):o.createElement(d,a({ref:r},c))}));function d(e,r){var t=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var i=t.length,a=new Array(i);a[0]=m;var l={};for(var s in r)hasOwnProperty.call(r,s)&&(l[s]=r[s]);l.originalType=e,l[u]="string"==typeof e?e:n,a[1]=l;for(var p=2;p<i;p++)a[p]=t[p];return o.createElement.apply(null,a)}return o.createElement.apply(null,t)}m.displayName="MDXCreateElement"},9120:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>s,contentTitle:()=>a,default:()=>y,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var o=t(5072),n=(t(1504),t(5788));const i={title:"Brotli Compression",sidebar_label:"Brotli Compression (Pro)",sidebar_position:6},a=void 0,l={unversionedId:"features/brotli-compression",id:"features/brotli-compression",title:"Brotli Compression",description:"This feature is available in DASH Pro only.",source:"@site/docs/features/brotli-compression.md",sourceDirName:"features",slug:"/features/brotli-compression",permalink:"/next/features/brotli-compression",draft:!1,tags:[],version:"current",sidebarPosition:6,frontMatter:{title:"Brotli Compression",sidebar_label:"Brotli Compression (Pro)",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"Custom Card Size (Pro)",permalink:"/next/features/sizing"},next:{title:"Migration Guide",permalink:"/next/migrate"}},s={},p=[{value:"How to enable:",id:"how-to-enable",level:4}],c={toc:p},u="wrapper";function y(e){let{components:r,...t}=e;return(0,n.yg)(u,(0,o.c)({},c,t,{components:r,mdxType:"MDXLayout"}),(0,n.yg)("div",{className:"pro-label"},(0,n.yg)("i",null,(0,n.yg)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.yg)("br",null),(0,n.yg)("img",{className:"card-preview",src:"/img/v4/brotli-compression.png",width:"280px",alt:"Preview"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("p",null,"With ESP-DASH Pro v4.3.0 or more, there is an option to enable Brotli compression to further reduce the size of webpage (dashboard) and provide you more space for your code. We've noticed 40% extra reduction in size over gzip compression (default)."),(0,n.yg)("p",null,"Please note that Brotli compression is only supported by Safari browser with unencrpyted HTTP protocol. Due to constraints set by other browsers ( Chrome, Edge, Firefox etc. ) you need to use HTTPS for brotli compression to work properly."),(0,n.yg)("p",null,(0,n.yg)("em",{parentName:"p"},"Note: Broti compression is disabled by default. It's up to user to enable brotli if the above conditions are fine for your use-case.")),(0,n.yg)("h4",{id:"how-to-enable"},"How to enable:"),(0,n.yg)("p",null,"You can switch to brotli compression by setting ",(0,n.yg)("inlineCode",{parentName:"p"},"DASH_USE_BROTLI_COMPRESSION")," to ",(0,n.yg)("inlineCode",{parentName:"p"},"1")," in ",(0,n.yg)("inlineCode",{parentName:"p"},"dash_webpage.h"),"."),(0,n.yg)("ol",null,(0,n.yg)("li",{parentName:"ol"},"Open ",(0,n.yg)("inlineCode",{parentName:"li"},"dash_webpage.h")," in src directory of ESP-DASH Pro library."),(0,n.yg)("li",{parentName:"ol"},"Locate ",(0,n.yg)("inlineCode",{parentName:"li"},"DASH_USE_BROTLI_COMPRESSION")),(0,n.yg)("li",{parentName:"ol"},"Set it to ",(0,n.yg)("inlineCode",{parentName:"li"},"1")),(0,n.yg)("li",{parentName:"ol"},"That's it. Save, compile and upload again to your microcontroller.")))}y.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/972722f4.4685bc34.js b/assets/js/972722f4.4685bc34.js new file mode 100644 index 00000000..ed186f8e --- /dev/null +++ b/assets/js/972722f4.4685bc34.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[4148],{5788:(e,a,r)=>{r.d(a,{Iu:()=>s,yg:()=>g});var n=r(1504);function t(e,a,r){return a in e?Object.defineProperty(e,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[a]=r,e}function l(e,a){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var a=1;a<arguments.length;a++){var r=null!=arguments[a]?arguments[a]:{};a%2?l(Object(r),!0).forEach((function(a){t(e,a,r[a])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):l(Object(r)).forEach((function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(r,a))}))}return e}function o(e,a){if(null==e)return{};var r,n,t=function(e,a){if(null==e)return{};var r,n,t={},l=Object.keys(e);for(n=0;n<l.length;n++)r=l[n],a.indexOf(r)>=0||(t[r]=e[r]);return t}(e,a);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n<l.length;n++)r=l[n],a.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(t[r]=e[r])}return t}var d=n.createContext({}),c=function(e){var a=n.useContext(d),r=a;return e&&(r="function"==typeof e?e(a):i(i({},a),e)),r},s=function(e){var a=c(e.components);return n.createElement(d.Provider,{value:a},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var a=e.children;return n.createElement(n.Fragment,{},a)}},y=n.forwardRef((function(e,a){var r=e.components,t=e.mdxType,l=e.originalType,d=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),p=c(r),y=t,g=p["".concat(d,".").concat(y)]||p[y]||u[y]||l;return r?n.createElement(g,i(i({ref:a},s),{},{components:r})):n.createElement(g,i({ref:a},s))}));function g(e,a){var r=arguments,t=a&&a.mdxType;if("string"==typeof e||t){var l=r.length,i=new Array(l);i[0]=y;var o={};for(var d in a)hasOwnProperty.call(a,d)&&(o[d]=a[d]);o.originalType=e,o[p]="string"==typeof e?e:t,i[1]=o;for(var c=2;c<l;c++)i[c]=r[c];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}y.displayName="MDXCreateElement"},3952:(e,a,r)=>{r.r(a),r.d(a,{assets:()=>d,contentTitle:()=>i,default:()=>u,frontMatter:()=>l,metadata:()=>o,toc:()=>c});var n=r(5072),t=(r(1504),r(5788));const l={title:"Dropdown Card",sidebar_label:"Dropdown (Pro)",sidebar_position:8},i=void 0,o={unversionedId:"cards/dropdown",id:"cards/dropdown",title:"Dropdown Card",description:"This feature is available in DASH Pro only.",source:"@site/docs/cards/dropdown.md",sourceDirName:"cards",slug:"/cards/dropdown",permalink:"/next/cards/dropdown",draft:!1,tags:[],version:"current",sidebarPosition:8,frontMatter:{title:"Dropdown Card",sidebar_label:"Dropdown (Pro)",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"Joystick (Pro)",permalink:"/next/cards/joystick"},next:{title:"Image (Pro)",permalink:"/next/cards/image"}},d={},c=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Callback:",id:"callback",level:4},{value:"Updaters:",id:"updaters",level:4}],s={toc:c},p="wrapper";function u(e){let{components:a,...r}=e;return(0,t.yg)(p,(0,n.c)({},s,r,{components:a,mdxType:"MDXLayout"}),(0,t.yg)("div",{className:"pro-label"},(0,t.yg)("i",null,(0,t.yg)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,t.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,t.yg)("h4",{id:"preview"},"Preview:"),(0,t.yg)("img",{className:"card-preview",src:"/img/v4/dropdown-card.png",width:"280px",alt:"Preview"}),"\xa0",(0,t.yg)("img",{className:"card-preview",src:"/img/v4/dropdown-card-2.png",width:"280px",alt:"Preview"}),(0,t.yg)("br",null),(0,t.yg)("br",null),(0,t.yg)("p",null,'This card adds a dropdown selectable list on your dashboard. You can pass "," comma separated list as it\'s secondary value with unlimited number of choices.'),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"type"},"Type:"),(0,t.yg)("p",null,(0,t.yg)("inlineCode",{parentName:"p"},"DROPDOWN_CARD")),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,t.yg)("ul",null,(0,t.yg)("li",{parentName:"ul"},(0,t.yg)("inlineCode",{parentName:"li"},"String"))),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"initializer"},"Initializer:"),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Dropdown Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* choices )\n*/\nCard card1(&dashboard, DROPDOWN_CARD, "Test Dropdown", "Option1,Option2,Option3,Option4");\n')),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"callback"},"Callback:"),(0,t.yg)("p",null,"The Dropdown Card requires a callback function that will be invoked when input is received from the dashboard. This function should utilize the ",(0,t.yg)("inlineCode",{parentName:"p"},"attachCallback")," method and provide a lambda function with a ",(0,t.yg)("inlineCode",{parentName:"p"},"const char*")," parameter."),(0,t.yg)("p",null,(0,t.yg)("strong",{parentName:"p"},"Note:")," It's essential to immediately invoke the ",(0,t.yg)("inlineCode",{parentName:"p"},"update")," function and ",(0,t.yg)("inlineCode",{parentName:"p"},"sendUpdates")," after receiving a value in the callback. Failure to do so will result in the user's input not being registered on the dashboard."),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},'/*\n Here, we use a lambda function within attachCallback to handle incoming data.\n `value` represents the const char value sent from your dashboard which is equal to selected value.\n*/\ncard1.attachCallback([&](const char* value){\n Serial.println("[Card1] Dropdown Callback Triggered: "+String(value));\n card1.update(value);\n dashboard.sendUpdates();\n});\n')),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"updaters"},"Updaters:"),(0,t.yg)("p",null,"This will change the selected value of our dropdown:"),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(const char* value);\n")),(0,t.yg)("p",null,"Or you can also update the choices along with the value like this:"),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},"// This will change the selected value and update the choices as well\ncard1.update(const char* value, const char* choices);\n")),(0,t.yg)("br",null),(0,t.yg)("br",null))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/972722f4.e9ee21ec.js b/assets/js/972722f4.e9ee21ec.js deleted file mode 100644 index 3f4462a8..00000000 --- a/assets/js/972722f4.e9ee21ec.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[4242],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>m});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?l(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function i(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},l=Object.keys(e);for(r=0;r<l.length;r++)a=l[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r<l.length;r++)a=l[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var d=r.createContext({}),c=function(e){var t=r.useContext(d),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},s=function(e){var t=c(e.components);return r.createElement(d.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,d=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),p=c(a),h=n,m=p["".concat(d,".").concat(h)]||p[h]||u[h]||l;return a?r.createElement(m,o(o({ref:t},s),{},{components:a})):r.createElement(m,o({ref:t},s))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,o=new Array(l);o[0]=h;var i={};for(var d in t)hasOwnProperty.call(t,d)&&(i[d]=t[d]);i.originalType=e,i[p]="string"==typeof e?e:n,o[1]=i;for(var c=2;c<l;c++)o[c]=a[c];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}h.displayName="MDXCreateElement"},365:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>u,frontMatter:()=>l,metadata:()=>i,toc:()=>c});var r=a(7462),n=(a(7294),a(3905));const l={title:"Dropdown Card",sidebar_label:"Dropdown (Pro)",sidebar_position:8},o=void 0,i={unversionedId:"cards/dropdown",id:"cards/dropdown",title:"Dropdown Card",description:"This feature is available in DASH Pro only.",source:"@site/docs/cards/dropdown.md",sourceDirName:"cards",slug:"/cards/dropdown",permalink:"/next/cards/dropdown",draft:!1,tags:[],version:"current",sidebarPosition:8,frontMatter:{title:"Dropdown Card",sidebar_label:"Dropdown (Pro)",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"Joystick (Pro)",permalink:"/next/cards/joystick"},next:{title:"Image (Pro)",permalink:"/next/cards/image"}},d={},c=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Callback:",id:"callback",level:4},{value:"Updaters:",id:"updaters",level:4}],s={toc:c},p="wrapper";function u(e){let{components:t,...a}=e;return(0,n.kt)(p,(0,r.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("div",{className:"pro-label"},(0,n.kt)("i",null,(0,n.kt)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/dropdown-card.png",width:"280px",alt:"Preview"}),"\xa0",(0,n.kt)("img",{className:"card-preview",src:"/img/v4/dropdown-card-2.png",width:"280px",alt:"Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,'This card adds a dropdown selectable list on your dashboard. You can pass "," comma separated list as it\'s secondary value with unlimited number of choices.'),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"DROPDOWN_CARD")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"String"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Dropdown Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* choices )\n*/\nCard card1(&dashboard, DROPDOWN_CARD, "Test Dropdown", "Option1,Option2,Option3,Option4");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"callback"},"Callback:"),(0,n.kt)("p",null,"The Dropdown Card requires a callback function that will be invoked when input is received from the dashboard. This function should utilize the ",(0,n.kt)("inlineCode",{parentName:"p"},"attachCallback")," method and provide a lambda function with a ",(0,n.kt)("inlineCode",{parentName:"p"},"const char*")," parameter."),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Note:")," It's essential to immediately invoke the ",(0,n.kt)("inlineCode",{parentName:"p"},"update")," function and ",(0,n.kt)("inlineCode",{parentName:"p"},"sendUpdates")," after receiving a value in the callback. Failure to do so will result in the user's input not being registered on the dashboard."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/*\n Here, we use a lambda function within attachCallback to handle incoming data.\n `value` represents the const char value sent from your dashboard which is equal to selected value.\n*/\ncard1.attachCallback([&](const char* value){\n Serial.println("[Card1] Dropdown Callback Triggered: "+String(value));\n card1.update(value);\n dashboard.sendUpdates();\n});\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("p",null,"This will change the selected value of our dropdown:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(const char* value);\n")),(0,n.kt)("p",null,"Or you can also update the choices along with the value like this:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"// This will change the selected value and update the choices as well\ncard1.update(const char* value, const char* choices);\n")),(0,n.kt)("br",null),(0,n.kt)("br",null))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/9772.89bee490.js b/assets/js/9772.89bee490.js new file mode 100644 index 00000000..9682bd43 --- /dev/null +++ b/assets/js/9772.89bee490.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[9772],{9772:(e,t,a)=>{a.r(t),a.d(t,{default:()=>c});var n=a(1504),l=a(4357),o=a(5756),r=a(9632);function c(){return n.createElement(n.Fragment,null,n.createElement(o.U7,{title:(0,l.G)({id:"theme.NotFound.title",message:"Page Not Found"})}),n.createElement(r.c,null,n.createElement("main",{className:"container margin-vert--xl"},n.createElement("div",{className:"row"},n.createElement("div",{className:"col col--6 col--offset-3"},n.createElement("h1",{className:"hero__title"},n.createElement(l.c,{id:"theme.NotFound.title",description:"The title of the 404 page"},"Page Not Found")),n.createElement("p",null,n.createElement(l.c,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page"},"We could not find what you were looking for.")),n.createElement("p",null,n.createElement(l.c,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page"},"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/9a2f436b.1afd47c4.js b/assets/js/9a2f436b.1afd47c4.js new file mode 100644 index 00000000..44961e7d --- /dev/null +++ b/assets/js/9a2f436b.1afd47c4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[4576],{5788:(e,r,a)=>{a.d(r,{Iu:()=>d,yg:()=>g});var n=a(1504);function t(e,r,a){return r in e?Object.defineProperty(e,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[r]=a,e}function i(e,r){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var r=1;r<arguments.length;r++){var a=null!=arguments[r]?arguments[r]:{};r%2?i(Object(a),!0).forEach((function(r){t(e,r,a[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(a,r))}))}return e}function o(e,r){if(null==e)return{};var a,n,t=function(e,r){if(null==e)return{};var a,n,t={},i=Object.keys(e);for(n=0;n<i.length;n++)a=i[n],r.indexOf(a)>=0||(t[a]=e[a]);return t}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)a=i[n],r.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(t[a]=e[a])}return t}var s=n.createContext({}),p=function(e){var r=n.useContext(s),a=r;return e&&(a="function"==typeof e?e(r):l(l({},r),e)),a},d=function(e){var r=p(e.components);return n.createElement(s.Provider,{value:r},e.children)},y="mdxType",u={inlineCode:"code",wrapper:function(e){var r=e.children;return n.createElement(n.Fragment,{},r)}},c=n.forwardRef((function(e,r){var a=e.components,t=e.mdxType,i=e.originalType,s=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),y=p(a),c=t,g=y["".concat(s,".").concat(c)]||y[c]||u[c]||i;return a?n.createElement(g,l(l({ref:r},d),{},{components:a})):n.createElement(g,l({ref:r},d))}));function g(e,r){var a=arguments,t=r&&r.mdxType;if("string"==typeof e||t){var i=a.length,l=new Array(i);l[0]=c;var o={};for(var s in r)hasOwnProperty.call(r,s)&&(o[s]=r[s]);o.originalType=e,o[y]="string"==typeof e?e:t,l[1]=o;for(var p=2;p<i;p++)l[p]=a[p];return n.createElement.apply(null,l)}return n.createElement.apply(null,a)}c.displayName="MDXCreateElement"},4204:(e,r,a)=>{a.r(r),a.d(r,{assets:()=>s,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var n=a(5072),t=(a(1504),a(5788));const i={title:"Line Chart",sidebar_label:"Line (Pro)",sidebar_position:2},l=void 0,o={unversionedId:"charts/line",id:"version-v3.x.x/charts/line",title:"Line Chart",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v3.x.x/charts/line.md",sourceDirName:"charts",slug:"/charts/line",permalink:"/v3.x.x/charts/line",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:2,frontMatter:{title:"Line Chart",sidebar_label:"Line (Pro)",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Bar",permalink:"/v3.x.x/charts/bar"},next:{title:"Area (Pro)",permalink:"/v3.x.x/charts/area"}},s={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types for X-Axis:",id:"valid-data-types-for-x-axis",level:4},{value:"Valid Data Types for Y-Axis:",id:"valid-data-types-for-y-axis",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4},{value:"For X-Axis:",id:"for-x-axis",level:5},{value:"For Y-Axis:",id:"for-y-axis",level:5}],d={toc:p},y="wrapper";function u(e){let{components:r,...a}=e;return(0,t.yg)(y,(0,n.c)({},d,a,{components:r,mdxType:"MDXLayout"}),(0,t.yg)("div",{style:{border:"1px solid rgba(255,0,0, 0.03)",padding:20,borderRadius:14,backgroundColor:"rgba(255,0,0, 0.03)",maxWidth:600}},(0,t.yg)("h4",{style:{fontWeight:"500",marginBottom:5}}," This feature is available in ",(0,t.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only.")),(0,t.yg)("h4",{id:"preview"},"Preview:"),(0,t.yg)("img",{src:"/img//line-chart.png",width:"380px",alt:"Preview"}),(0,t.yg)("br",null),(0,t.yg)("br",null),(0,t.yg)("p",null,"Second form of chart in ESP-DASH is the line chart. It lets you have linear data displayed in form of a connected line istead of bars. You can aggregate large amount of data in form of arrays and display them in a line chart."),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"type"},"Type:"),(0,t.yg)("p",null,(0,t.yg)("inlineCode",{parentName:"p"},"LINE_CHART")),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"valid-data-types-for-x-axis"},"Valid Data Types for X-Axis:"),(0,t.yg)("ul",null,(0,t.yg)("li",{parentName:"ul"},(0,t.yg)("inlineCode",{parentName:"li"},"int")),(0,t.yg)("li",{parentName:"ul"},(0,t.yg)("inlineCode",{parentName:"li"},"float")),(0,t.yg)("li",{parentName:"ul"},(0,t.yg)("inlineCode",{parentName:"li"},"String"))),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"valid-data-types-for-y-axis"},"Valid Data Types for Y-Axis:"),(0,t.yg)("ul",null,(0,t.yg)("li",{parentName:"ul"},(0,t.yg)("inlineCode",{parentName:"li"},"int")),(0,t.yg)("li",{parentName:"ul"},(0,t.yg)("inlineCode",{parentName:"li"},"float"))),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"initializer"},"Initializer:"),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Line Chart\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name )\n*/\nChart chart1(&dashboard, LINE_CHART, "Chart Name");\n')),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"updaters"},"Updaters:"),(0,t.yg)("h5",{id:"for-x-axis"},"For X-Axis:"),(0,t.yg)("p",null,"X-Axis updater uses ",(0,t.yg)("inlineCode",{parentName:"p"},"updateX")," function."),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},'/*\n Data for X Axis of our Chart\n This array can be of: `int` / `float` or `String`\n*/\nString XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or\n (float array[], size_t array_size)\n or\n (String array[], size_t array_size)\n*/\nchart1.updateX(XAxis, 7);\n')),(0,t.yg)("h5",{id:"for-y-axis"},"For Y-Axis:"),(0,t.yg)("p",null,"Y-Axis updater uses ",(0,t.yg)("inlineCode",{parentName:"p"},"updateY")," function."),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},"/*\n Data for Y Axis of our Chart\n This array can be of: `int` or `float`\n*/\nint YAxis[] = {0, 0, 0, 0, 0, 0, 0};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or \n (float array[], size_t array_size)\n*/\nchart1.updateY(YAxis, 7);\n")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/9a2f436b.3fbb24cf.js b/assets/js/9a2f436b.3fbb24cf.js deleted file mode 100644 index aa5e0418..00000000 --- a/assets/js/9a2f436b.3fbb24cf.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[88],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>y});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(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){n(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 o(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=a.createContext({}),p=function(e){var t=a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},d=function(e){var t=p(e.components);return a.createElement(s.Provider,{value:t},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},f=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),u=p(r),f=n,y=u["".concat(s,".").concat(f)]||u[f]||c[f]||i;return r?a.createElement(y,l(l({ref:t},d),{},{components:r})):a.createElement(y,l({ref:t},d))}));function y(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,l=new Array(i);l[0]=f;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[u]="string"==typeof e?e:n,l[1]=o;for(var p=2;p<i;p++)l[p]=r[p];return a.createElement.apply(null,l)}return a.createElement.apply(null,r)}f.displayName="MDXCreateElement"},6241:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>c,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var a=r(7462),n=(r(7294),r(3905));const i={title:"Line Chart",sidebar_label:"Line (Pro)",sidebar_position:2},l=void 0,o={unversionedId:"charts/line",id:"version-v3.x.x/charts/line",title:"Line Chart",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v3.x.x/charts/line.md",sourceDirName:"charts",slug:"/charts/line",permalink:"/v3.x.x/charts/line",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:2,frontMatter:{title:"Line Chart",sidebar_label:"Line (Pro)",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Bar",permalink:"/v3.x.x/charts/bar"},next:{title:"Area (Pro)",permalink:"/v3.x.x/charts/area"}},s={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types for X-Axis:",id:"valid-data-types-for-x-axis",level:4},{value:"Valid Data Types for Y-Axis:",id:"valid-data-types-for-y-axis",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4},{value:"For X-Axis:",id:"for-x-axis",level:5},{value:"For Y-Axis:",id:"for-y-axis",level:5}],d={toc:p},u="wrapper";function c(e){let{components:t,...r}=e;return(0,n.kt)(u,(0,a.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("div",{style:{border:"1px solid rgba(255,0,0, 0.03)",padding:20,borderRadius:14,backgroundColor:"rgba(255,0,0, 0.03)",maxWidth:600}},(0,n.kt)("h4",{style:{fontWeight:"500",marginBottom:5}}," This feature is available in ",(0,n.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only.")),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{src:"/img//line-chart.png",width:"380px",alt:"Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"Second form of chart in ESP-DASH is the line chart. It lets you have linear data displayed in form of a connected line istead of bars. You can aggregate large amount of data in form of arrays and display them in a line chart."),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"LINE_CHART")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types-for-x-axis"},"Valid Data Types for X-Axis:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"String"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types-for-y-axis"},"Valid Data Types for Y-Axis:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Line Chart\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name )\n*/\nChart chart1(&dashboard, LINE_CHART, "Chart Name");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("h5",{id:"for-x-axis"},"For X-Axis:"),(0,n.kt)("p",null,"X-Axis updater uses ",(0,n.kt)("inlineCode",{parentName:"p"},"updateX")," function."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/*\n Data for X Axis of our Chart\n This array can be of: `int` / `float` or `String`\n*/\nString XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or\n (float array[], size_t array_size)\n or\n (String array[], size_t array_size)\n*/\nchart1.updateX(XAxis, 7);\n')),(0,n.kt)("h5",{id:"for-y-axis"},"For Y-Axis:"),(0,n.kt)("p",null,"Y-Axis updater uses ",(0,n.kt)("inlineCode",{parentName:"p"},"updateY")," function."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"/*\n Data for Y Axis of our Chart\n This array can be of: `int` or `float`\n*/\nint YAxis[] = {0, 0, 0, 0, 0, 0, 0};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or \n (float array[], size_t array_size)\n*/\nchart1.updateY(YAxis, 7);\n")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a39fba33.2edddd8d.js b/assets/js/a39fba33.2edddd8d.js deleted file mode 100644 index 9c93facf..00000000 --- a/assets/js/a39fba33.2edddd8d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[909],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>f});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function s(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},o=Object.keys(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var l=a.createContext({}),c=function(e){var t=a.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):s(s({},t),e)),r},p=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,l=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),d=c(r),h=n,f=d["".concat(l,".").concat(h)]||d[h]||u[h]||o;return r?a.createElement(f,s(s({ref:t},p),{},{components:r})):a.createElement(f,s({ref:t},p))}));function f(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,s=new Array(o);s[0]=h;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[d]="string"==typeof e?e:n,s[1]=i;for(var c=2;c<o;c++)s[c]=r[c];return a.createElement.apply(null,s)}return a.createElement.apply(null,r)}h.displayName="MDXCreateElement"},1230:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var a=r(7462),n=(r(7294),r(3905));const o={title:"Concept of DASH",sidebar_label:"Concept",sidebar_position:2},s=void 0,i={unversionedId:"concept",id:"version-v3.x.x/concept",title:"Concept of DASH",description:"The whole concept of ESP-DASH is around the idea of having 'Cards' and 'Charts' ( UI components ) on our dashboard. Therefore with V3, we divided the whole library into 3 separate classes:",source:"@site/versioned_docs/version-v3.x.x/concept.md",sourceDirName:".",slug:"/concept",permalink:"/v3.x.x/concept",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:2,frontMatter:{title:"Concept of DASH",sidebar_label:"Concept",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Introduction",permalink:"/v3.x.x/"},next:{title:"Installation",permalink:"/v3.x.x/installation"}},l={},c=[{value:"1. ESPDash Class",id:"1-espdash-class",level:4},{value:"2. Card Class",id:"2-card-class",level:4},{value:"3. Chart Class",id:"3-chart-class",level:4}],p={toc:c},d="wrapper";function u(e){let{components:t,...r}=e;return(0,n.kt)(d,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"The whole concept of ESP-DASH is around the idea of having 'Cards' and 'Charts' ( UI components ) on our dashboard. Therefore with V3, we divided the whole library into 3 separate classes:"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("strong",{parentName:"li"},"ESPDash")," ( ESPDash.h )"),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("strong",{parentName:"li"},"Card")," ( Card.h )"),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("strong",{parentName:"li"},"Chart")," ( Chart.h )")),(0,n.kt)("p",{align:"center"},(0,n.kt)("img",{src:"/img//concept-diagram.png",alt:"Concept Diagram",width:"400px"})),(0,n.kt)("p",null,"All of these classes serve their very own purpose and work harmoniously with a low heap footprint. Let's know more about the function of each class:"),(0,n.kt)("h4",{id:"1-espdash-class"},"1. ESPDash Class"),(0,n.kt)("p",null,"ESPDash class handles the networking part of our dashboard. It takes AsyncWebServer as a argument and connects itself to serve DASH V3 webpage from our MCU's program memory. This class is responsible for the transfer of card/chart data between webpage and your sketch."),(0,n.kt)("h4",{id:"2-card-class"},"2. Card Class"),(0,n.kt)("p",null,"Our dashboard comprises of 'Cards' & 'Charts' and in our library, these are primarly data handling classes. Their main purpose is just to store data in their relevant position."),(0,n.kt)("p",null,"Card comprises of many sub-types ( for example: generic, temperature, humidity etc. ) which provides you great data visiualization choices."),(0,n.kt)("h4",{id:"3-chart-class"},"3. Chart Class"),(0,n.kt)("p",null,"Similar to Card Class, Chart handles the data for creating charts on our dashboard."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a39fba33.7e0db7c6.js b/assets/js/a39fba33.7e0db7c6.js new file mode 100644 index 00000000..ebd7b883 --- /dev/null +++ b/assets/js/a39fba33.7e0db7c6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[7324],{5788:(e,r,t)=>{t.d(r,{Iu:()=>p,yg:()=>f});var a=t(1504);function n(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function o(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);r&&(a=a.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,a)}return t}function s(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?o(Object(t),!0).forEach((function(r){n(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):o(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function i(e,r){if(null==e)return{};var t,a,n=function(e,r){if(null==e)return{};var t,a,n={},o=Object.keys(e);for(a=0;a<o.length;a++)t=o[a],r.indexOf(t)>=0||(n[t]=e[t]);return n}(e,r);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)t=o[a],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}var l=a.createContext({}),c=function(e){var r=a.useContext(l),t=r;return e&&(t="function"==typeof e?e(r):s(s({},r),e)),t},p=function(e){var r=c(e.components);return a.createElement(l.Provider,{value:r},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var r=e.children;return a.createElement(a.Fragment,{},r)}},h=a.forwardRef((function(e,r){var t=e.components,n=e.mdxType,o=e.originalType,l=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),d=c(t),h=n,f=d["".concat(l,".").concat(h)]||d[h]||u[h]||o;return t?a.createElement(f,s(s({ref:r},p),{},{components:t})):a.createElement(f,s({ref:r},p))}));function f(e,r){var t=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var o=t.length,s=new Array(o);s[0]=h;var i={};for(var l in r)hasOwnProperty.call(r,l)&&(i[l]=r[l]);i.originalType=e,i[d]="string"==typeof e?e:n,s[1]=i;for(var c=2;c<o;c++)s[c]=t[c];return a.createElement.apply(null,s)}return a.createElement.apply(null,t)}h.displayName="MDXCreateElement"},7212:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>l,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var a=t(5072),n=(t(1504),t(5788));const o={title:"Concept of DASH",sidebar_label:"Concept",sidebar_position:2},s=void 0,i={unversionedId:"concept",id:"version-v3.x.x/concept",title:"Concept of DASH",description:"The whole concept of ESP-DASH is around the idea of having 'Cards' and 'Charts' ( UI components ) on our dashboard. Therefore with V3, we divided the whole library into 3 separate classes:",source:"@site/versioned_docs/version-v3.x.x/concept.md",sourceDirName:".",slug:"/concept",permalink:"/v3.x.x/concept",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:2,frontMatter:{title:"Concept of DASH",sidebar_label:"Concept",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Introduction",permalink:"/v3.x.x/"},next:{title:"Installation",permalink:"/v3.x.x/installation"}},l={},c=[{value:"1. ESPDash Class",id:"1-espdash-class",level:4},{value:"2. Card Class",id:"2-card-class",level:4},{value:"3. Chart Class",id:"3-chart-class",level:4}],p={toc:c},d="wrapper";function u(e){let{components:r,...t}=e;return(0,n.yg)(d,(0,a.c)({},p,t,{components:r,mdxType:"MDXLayout"}),(0,n.yg)("p",null,"The whole concept of ESP-DASH is around the idea of having 'Cards' and 'Charts' ( UI components ) on our dashboard. Therefore with V3, we divided the whole library into 3 separate classes:"),(0,n.yg)("ol",null,(0,n.yg)("li",{parentName:"ol"},(0,n.yg)("strong",{parentName:"li"},"ESPDash")," ( ESPDash.h )"),(0,n.yg)("li",{parentName:"ol"},(0,n.yg)("strong",{parentName:"li"},"Card")," ( Card.h )"),(0,n.yg)("li",{parentName:"ol"},(0,n.yg)("strong",{parentName:"li"},"Chart")," ( Chart.h )")),(0,n.yg)("p",{align:"center"},(0,n.yg)("img",{src:"/img//concept-diagram.png",alt:"Concept Diagram",width:"400px"})),(0,n.yg)("p",null,"All of these classes serve their very own purpose and work harmoniously with a low heap footprint. Let's know more about the function of each class:"),(0,n.yg)("h4",{id:"1-espdash-class"},"1. ESPDash Class"),(0,n.yg)("p",null,"ESPDash class handles the networking part of our dashboard. It takes AsyncWebServer as a argument and connects itself to serve DASH V3 webpage from our MCU's program memory. This class is responsible for the transfer of card/chart data between webpage and your sketch."),(0,n.yg)("h4",{id:"2-card-class"},"2. Card Class"),(0,n.yg)("p",null,"Our dashboard comprises of 'Cards' & 'Charts' and in our library, these are primarly data handling classes. Their main purpose is just to store data in their relevant position."),(0,n.yg)("p",null,"Card comprises of many sub-types ( for example: generic, temperature, humidity etc. ) which provides you great data visiualization choices."),(0,n.yg)("h4",{id:"3-chart-class"},"3. Chart Class"),(0,n.yg)("p",null,"Similar to Card Class, Chart handles the data for creating charts on our dashboard."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a608976b.5cee1e05.js b/assets/js/a608976b.5cee1e05.js deleted file mode 100644 index 6ae7be43..00000000 --- a/assets/js/a608976b.5cee1e05.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[5609],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>y});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}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 l(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 o(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(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)&&(a[r]=e[r])}return a}var c=n.createContext({}),p=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},s=function(e){var t=p(e.components);return n.createElement(c.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),u=p(r),m=a,y=u["".concat(c,".").concat(m)]||u[m]||d[m]||i;return r?n.createElement(y,l(l({ref:t},s),{},{components:r})):n.createElement(y,l({ref:t},s))}));function y(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,l=new Array(i);l[0]=m;var o={};for(var c in t)hasOwnProperty.call(t,c)&&(o[c]=t[c]);o.originalType=e,o[u]="string"==typeof e?e:a,l[1]=o;for(var p=2;p<i;p++)l[p]=r[p];return n.createElement.apply(null,l)}return n.createElement.apply(null,r)}m.displayName="MDXCreateElement"},1692:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>d,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var n=r(7462),a=(r(7294),r(3905));const i={title:"Generic Card",sidebar_label:"Generic",sidebar_position:1},l=void 0,o={unversionedId:"cards/generic",id:"version-v4.x.x/cards/generic",title:"Generic Card",description:"Preview:",source:"@site/versioned_docs/version-v4.x.x/cards/generic.md",sourceDirName:"cards",slug:"/cards/generic",permalink:"/cards/generic",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:1,frontMatter:{title:"Generic Card",sidebar_label:"Generic",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Statistics",permalink:"/custom-statistics"},next:{title:"Temperature",permalink:"/cards/temperature"}},c={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],s={toc:p},u="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(u,(0,n.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h4",{id:"preview"},"Preview:"),(0,a.kt)("img",{className:"card-preview",src:"/img/v4/generic-card.png",width:"280px",alt:"Preview"}),(0,a.kt)("br",null),(0,a.kt)("br",null),(0,a.kt)("p",null,"Generic card is the 'fits-all-types' card, which you can use to display any kind of value. It's mostly used when you want to display numbers, strings etc which don't relate to any other card in the list."),(0,a.kt)("small",null,(0,a.kt)("b",null,"Note:")," If you can't find the card which you are looking for, you can always raise request for more cards on the repository by creating an issue."),(0,a.kt)("br",null),(0,a.kt)("h4",{id:"type"},"Type:"),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"GENERIC_CARD")),(0,a.kt)("br",null),(0,a.kt)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"int")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"bool")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"float")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"String"))),(0,a.kt)("br",null),(0,a.kt)("h4",{id:"initializer"},"Initializer:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Generic Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )\n*/\nCard card1(&dashboard, GENERIC_CARD, "Generic1");\n')),(0,a.kt)("br",null),(0,a.kt)("h4",{id:"updaters"},"Updaters:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(bool value);\n")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(float value);\n")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")),(0,a.kt)("br",null),(0,a.kt)("br",null))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a608976b.63f627e2.js b/assets/js/a608976b.63f627e2.js new file mode 100644 index 00000000..47eda85d --- /dev/null +++ b/assets/js/a608976b.63f627e2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[402],{5788:(e,r,n)=>{n.d(r,{Iu:()=>s,yg:()=>g});var t=n(1504);function a(e,r,n){return r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}function i(e,r){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r&&(t=t.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),n.push.apply(n,t)}return n}function l(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?i(Object(n),!0).forEach((function(r){a(e,r,n[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))}))}return e}function o(e,r){if(null==e)return{};var n,t,a=function(e,r){if(null==e)return{};var n,t,a={},i=Object.keys(e);for(t=0;t<i.length;t++)n=i[t],r.indexOf(n)>=0||(a[n]=e[n]);return a}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t<i.length;t++)n=i[t],r.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=t.createContext({}),p=function(e){var r=t.useContext(c),n=r;return e&&(n="function"==typeof e?e(r):l(l({},r),e)),n},s=function(e){var r=p(e.components);return t.createElement(c.Provider,{value:r},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var r=e.children;return t.createElement(t.Fragment,{},r)}},y=t.forwardRef((function(e,r){var n=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),u=p(n),y=a,g=u["".concat(c,".").concat(y)]||u[y]||d[y]||i;return n?t.createElement(g,l(l({ref:r},s),{},{components:n})):t.createElement(g,l({ref:r},s))}));function g(e,r){var n=arguments,a=r&&r.mdxType;if("string"==typeof e||a){var i=n.length,l=new Array(i);l[0]=y;var o={};for(var c in r)hasOwnProperty.call(r,c)&&(o[c]=r[c]);o.originalType=e,o[u]="string"==typeof e?e:a,l[1]=o;for(var p=2;p<i;p++)l[p]=n[p];return t.createElement.apply(null,l)}return t.createElement.apply(null,n)}y.displayName="MDXCreateElement"},5240:(e,r,n)=>{n.r(r),n.d(r,{assets:()=>c,contentTitle:()=>l,default:()=>d,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var t=n(5072),a=(n(1504),n(5788));const i={title:"Generic Card",sidebar_label:"Generic",sidebar_position:1},l=void 0,o={unversionedId:"cards/generic",id:"version-v4.x.x/cards/generic",title:"Generic Card",description:"Preview:",source:"@site/versioned_docs/version-v4.x.x/cards/generic.md",sourceDirName:"cards",slug:"/cards/generic",permalink:"/cards/generic",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:1,frontMatter:{title:"Generic Card",sidebar_label:"Generic",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Statistics",permalink:"/custom-statistics"},next:{title:"Temperature",permalink:"/cards/temperature"}},c={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],s={toc:p},u="wrapper";function d(e){let{components:r,...n}=e;return(0,a.yg)(u,(0,t.c)({},s,n,{components:r,mdxType:"MDXLayout"}),(0,a.yg)("h4",{id:"preview"},"Preview:"),(0,a.yg)("img",{className:"card-preview",src:"/img/v4/generic-card.png",width:"280px",alt:"Preview"}),(0,a.yg)("br",null),(0,a.yg)("br",null),(0,a.yg)("p",null,"Generic card is the 'fits-all-types' card, which you can use to display any kind of value. It's mostly used when you want to display numbers, strings etc which don't relate to any other card in the list."),(0,a.yg)("small",null,(0,a.yg)("b",null,"Note:")," If you can't find the card which you are looking for, you can always raise request for more cards on the repository by creating an issue."),(0,a.yg)("br",null),(0,a.yg)("h4",{id:"type"},"Type:"),(0,a.yg)("p",null,(0,a.yg)("inlineCode",{parentName:"p"},"GENERIC_CARD")),(0,a.yg)("br",null),(0,a.yg)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("inlineCode",{parentName:"li"},"int")),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("inlineCode",{parentName:"li"},"bool")),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("inlineCode",{parentName:"li"},"float")),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("inlineCode",{parentName:"li"},"String"))),(0,a.yg)("br",null),(0,a.yg)("h4",{id:"initializer"},"Initializer:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Generic Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )\n*/\nCard card1(&dashboard, GENERIC_CARD, "Generic1");\n')),(0,a.yg)("br",null),(0,a.yg)("h4",{id:"updaters"},"Updaters:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(bool value);\n")),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(float value);\n")),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")),(0,a.yg)("br",null),(0,a.yg)("br",null))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a8d55bef.6b0a3df3.js b/assets/js/a8d55bef.6b0a3df3.js deleted file mode 100644 index 95327be2..00000000 --- a/assets/js/a8d55bef.6b0a3df3.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[8074],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>f});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=r.createContext({}),p=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),c=p(n),m=i,f=c["".concat(s,".").concat(m)]||c[m]||d[m]||a;return n?r.createElement(f,o(o({ref:t},u),{},{components:n})):r.createElement(f,o({ref:t},u))}));function f(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=n.length,o=new Array(a);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:i,o[1]=l;for(var p=2;p<a;p++)o[p]=n[p];return r.createElement.apply(null,o)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},8998:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>a,metadata:()=>l,toc:()=>p});var r=n(7462),i=(n(7294),n(3905));const a={title:"Custom Card Size",sidebar_label:"Custom Card Size (Pro)",sidebar_position:5},o=void 0,l={unversionedId:"features/sizing",id:"version-v4.x.x/features/sizing",title:"Custom Card Size",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v4.x.x/features/sizing.md",sourceDirName:"features",slug:"/features/sizing",permalink:"/features/sizing",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:5,frontMatter:{title:"Custom Card Size",sidebar_label:"Custom Card Size (Pro)",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Card Indexing (Pro)",permalink:"/features/indexing"},next:{title:"Brotli Compression (Pro)",permalink:"/features/brotli-compression"}},s={},p=[{value:"Reference",id:"reference",level:3},{value:"Option 1:",id:"option-1",level:5},{value:"Option 2:",id:"option-2",level:5},{value:"Example",id:"example",level:3},{value:"Option 1:",id:"option-1-1",level:5},{value:"Option 2:",id:"option-2-1",level:5}],u={toc:p},c="wrapper";function d(e){let{components:t,...n}=e;return(0,i.kt)(c,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("div",{className:"pro-label"},(0,i.kt)("i",null,(0,i.kt)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,i.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,i.kt)("br",null),(0,i.kt)("img",{src:"/img/v4/custom-size.png",width:"800px",alt:"Energy Card Preview"}),(0,i.kt)("br",null),(0,i.kt)("br",null),(0,i.kt)("p",null,"ESP-DASH Pro allows you to change the size of your cards & charts by providing you the ",(0,i.kt)("inlineCode",{parentName:"p"},"setSize")," function. This function allows you to set a responsive width for your widgets without actually modifying the whole webpage."),(0,i.kt)("h3",{id:"reference"},"Reference"),(0,i.kt)("p",null,"Card sizing consists of breakpoints for an responsive layout that scales up or down to every screen size. The valid value for each breakpoint is ",(0,i.kt)("inlineCode",{parentName:"p"},"1")," to ",(0,i.kt)("inlineCode",{parentName:"p"},"12"),"."),(0,i.kt)("p",null,"To understand better, the breakpoints are as follows:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"xs")," - Small Smartphone"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"sm")," - Normal Smartphone"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"md")," - Tablet"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"lg")," - HD laptop"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"xl")," - Full HD laptop"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"xxl")," - 2K display and above")),(0,i.kt)("h5",{id:"option-1"},"Option 1:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cpp"}," // This reference can be found in Card.h\n void setSize(const uint8_t xs, const uint8_t sm, const uint8_t md, const uint8_t lg, const uint8_t xl, const uint8_t xxl);\n")),(0,i.kt)("h5",{id:"option-2"},"Option 2:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cpp"}," // These references can be found in Card.h\n struct CardSize {\n uint8_t xs;\n uint8_t sm;\n uint8_t md;\n uint8_t lg;\n uint8_t xl;\n uint8_t xxl;\n };\n\n void setSize(const CardSize &size);\n")),(0,i.kt)("h3",{id:"example"},"Example"),(0,i.kt)("h5",{id:"option-1-1"},"Option 1:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.setSize(12, 12, 6, 4, 3, 2);\n")),(0,i.kt)("h5",{id:"option-2-1"},"Option 2:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.setSize({\n .xs = 12,\n .sm = 12,\n .md = 6,\n .lg = 4,\n .xl = 3,\n .xxl = 2\n});\n")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a8d55bef.c41a8fe3.js b/assets/js/a8d55bef.c41a8fe3.js new file mode 100644 index 00000000..2ec6a6e6 --- /dev/null +++ b/assets/js/a8d55bef.c41a8fe3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[1164],{5788:(e,n,t)=>{t.d(n,{Iu:()=>u,yg:()=>y});var r=t(1504);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function o(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?a(Object(t),!0).forEach((function(n){i(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):a(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function l(e,n){if(null==e)return{};var t,r,i=function(e,n){if(null==e)return{};var t,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)t=a[r],n.indexOf(t)>=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)t=a[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var s=r.createContext({}),p=function(e){var n=r.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},u=function(e){var n=p(e.components);return r.createElement(s.Provider,{value:n},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},g=r.forwardRef((function(e,n){var t=e.components,i=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),c=p(t),g=i,y=c["".concat(s,".").concat(g)]||c[g]||d[g]||a;return t?r.createElement(y,o(o({ref:n},u),{},{components:t})):r.createElement(y,o({ref:n},u))}));function y(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var a=t.length,o=new Array(a);o[0]=g;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l[c]="string"==typeof e?e:i,o[1]=l;for(var p=2;p<a;p++)o[p]=t[p];return r.createElement.apply(null,o)}return r.createElement.apply(null,t)}g.displayName="MDXCreateElement"},3108:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>a,metadata:()=>l,toc:()=>p});var r=t(5072),i=(t(1504),t(5788));const a={title:"Custom Card Size",sidebar_label:"Custom Card Size (Pro)",sidebar_position:5},o=void 0,l={unversionedId:"features/sizing",id:"version-v4.x.x/features/sizing",title:"Custom Card Size",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v4.x.x/features/sizing.md",sourceDirName:"features",slug:"/features/sizing",permalink:"/features/sizing",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:5,frontMatter:{title:"Custom Card Size",sidebar_label:"Custom Card Size (Pro)",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Card Indexing (Pro)",permalink:"/features/indexing"},next:{title:"Brotli Compression (Pro)",permalink:"/features/brotli-compression"}},s={},p=[{value:"Reference",id:"reference",level:3},{value:"Option 1:",id:"option-1",level:5},{value:"Option 2:",id:"option-2",level:5},{value:"Example",id:"example",level:3},{value:"Option 1:",id:"option-1-1",level:5},{value:"Option 2:",id:"option-2-1",level:5}],u={toc:p},c="wrapper";function d(e){let{components:n,...t}=e;return(0,i.yg)(c,(0,r.c)({},u,t,{components:n,mdxType:"MDXLayout"}),(0,i.yg)("div",{className:"pro-label"},(0,i.yg)("i",null,(0,i.yg)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,i.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,i.yg)("br",null),(0,i.yg)("img",{src:"/img/v4/custom-size.png",width:"800px",alt:"Energy Card Preview"}),(0,i.yg)("br",null),(0,i.yg)("br",null),(0,i.yg)("p",null,"ESP-DASH Pro allows you to change the size of your cards & charts by providing you the ",(0,i.yg)("inlineCode",{parentName:"p"},"setSize")," function. This function allows you to set a responsive width for your widgets without actually modifying the whole webpage."),(0,i.yg)("h3",{id:"reference"},"Reference"),(0,i.yg)("p",null,"Card sizing consists of breakpoints for an responsive layout that scales up or down to every screen size. The valid value for each breakpoint is ",(0,i.yg)("inlineCode",{parentName:"p"},"1")," to ",(0,i.yg)("inlineCode",{parentName:"p"},"12"),"."),(0,i.yg)("p",null,"To understand better, the breakpoints are as follows:"),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"xs")," - Small Smartphone"),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"sm")," - Normal Smartphone"),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"md")," - Tablet"),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"lg")," - HD laptop"),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"xl")," - Full HD laptop"),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"xxl")," - 2K display and above")),(0,i.yg)("h5",{id:"option-1"},"Option 1:"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-cpp"}," // This reference can be found in Card.h\n void setSize(const uint8_t xs, const uint8_t sm, const uint8_t md, const uint8_t lg, const uint8_t xl, const uint8_t xxl);\n")),(0,i.yg)("h5",{id:"option-2"},"Option 2:"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-cpp"}," // These references can be found in Card.h\n struct CardSize {\n uint8_t xs;\n uint8_t sm;\n uint8_t md;\n uint8_t lg;\n uint8_t xl;\n uint8_t xxl;\n };\n\n void setSize(const CardSize &size);\n")),(0,i.yg)("h3",{id:"example"},"Example"),(0,i.yg)("h5",{id:"option-1-1"},"Option 1:"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.setSize(12, 12, 6, 4, 3, 2);\n")),(0,i.yg)("h5",{id:"option-2-1"},"Option 2:"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.setSize({\n .xs = 12,\n .sm = 12,\n .md = 6,\n .lg = 4,\n .xl = 3,\n .xxl = 2\n});\n")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/aeef22cf.723f8a9d.js b/assets/js/aeef22cf.dd8d115d.js similarity index 84% rename from assets/js/aeef22cf.723f8a9d.js rename to assets/js/aeef22cf.dd8d115d.js index a6ca3565..5984fd9b 100644 --- a/assets/js/aeef22cf.723f8a9d.js +++ b/assets/js/aeef22cf.dd8d115d.js @@ -1 +1 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[3902],{3905:(e,t,n)=>{n.d(t,{Zo:()=>l,kt:()=>b});var r=n(7294);function a(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(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),u=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},l=function(e){var t=u(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,l=c(e,["components","mdxType","originalType","parentName"]),p=u(n),f=a,b=p["".concat(s,".").concat(f)]||p[f]||d[f]||i;return n?r.createElement(b,o(o({ref:t},l),{},{components:n})):r.createElement(b,o({ref:t},l))}));function b(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=f;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c[p]="string"==typeof e?e:a,o[1]=c;for(var u=2;u<i;u++)o[u]=n[u];return r.createElement.apply(null,o)}return r.createElement.apply(null,n)}f.displayName="MDXCreateElement"},7496:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>c,toc:()=>u});var r=n(7462),a=(n(7294),n(3905));const i={title:"User Authentication",sidebar_label:"User Authentication",sidebar_position:1},o=void 0,c={unversionedId:"features/authentication",id:"version-v4.x.x/features/authentication",title:"User Authentication",description:"ESP-DASH comes with basic HTTP authentication support. You can enable basic HTTP based user authentication to control who can view your dashboard using setAuthentication function.",source:"@site/versioned_docs/version-v4.x.x/features/authentication.md",sourceDirName:"features",slug:"/features/authentication",permalink:"/features/authentication",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:1,frontMatter:{title:"User Authentication",sidebar_label:"User Authentication",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Custom URI",permalink:"/features/custom-uri"},next:{title:"Disable Statistics",permalink:"/features/disable-stats"}},s={},u=[{value:"Example:",id:"example",level:4}],l={toc:u},p="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},l,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("img",{src:"/img/v4/authentication.png",width:"500px",alt:"Energy Card Preview"}),(0,a.kt)("br",null),(0,a.kt)("br",null),(0,a.kt)("p",null,"ESP-DASH comes with basic HTTP authentication support. You can enable basic HTTP based user authentication to control who can view your dashboard using ",(0,a.kt)("inlineCode",{parentName:"p"},"setAuthentication")," function."),(0,a.kt)("h4",{id:"example"},"Example:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cpp"},'dashboard.setAuthentication("username", "password");\n')))}d.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[5820],{5788:(e,t,n)=>{n.d(t,{Iu:()=>l,yg:()=>b});var r=n(1504);function a(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(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),u=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},l=function(e){var t=u(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,l=c(e,["components","mdxType","originalType","parentName"]),p=u(n),f=a,b=p["".concat(s,".").concat(f)]||p[f]||d[f]||i;return n?r.createElement(b,o(o({ref:t},l),{},{components:n})):r.createElement(b,o({ref:t},l))}));function b(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=f;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c[p]="string"==typeof e?e:a,o[1]=c;for(var u=2;u<i;u++)o[u]=n[u];return r.createElement.apply(null,o)}return r.createElement.apply(null,n)}f.displayName="MDXCreateElement"},4336:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>c,toc:()=>u});var r=n(5072),a=(n(1504),n(5788));const i={title:"User Authentication",sidebar_label:"User Authentication",sidebar_position:1},o=void 0,c={unversionedId:"features/authentication",id:"version-v4.x.x/features/authentication",title:"User Authentication",description:"ESP-DASH comes with basic HTTP authentication support. You can enable basic HTTP based user authentication to control who can view your dashboard using setAuthentication function.",source:"@site/versioned_docs/version-v4.x.x/features/authentication.md",sourceDirName:"features",slug:"/features/authentication",permalink:"/features/authentication",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:1,frontMatter:{title:"User Authentication",sidebar_label:"User Authentication",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Custom URI",permalink:"/features/custom-uri"},next:{title:"Disable Statistics",permalink:"/features/disable-stats"}},s={},u=[{value:"Example:",id:"example",level:4}],l={toc:u},p="wrapper";function d(e){let{components:t,...n}=e;return(0,a.yg)(p,(0,r.c)({},l,n,{components:t,mdxType:"MDXLayout"}),(0,a.yg)("img",{src:"/img/v4/authentication.png",width:"500px",alt:"Energy Card Preview"}),(0,a.yg)("br",null),(0,a.yg)("br",null),(0,a.yg)("p",null,"ESP-DASH comes with basic HTTP authentication support. You can enable basic HTTP based user authentication to control who can view your dashboard using ",(0,a.yg)("inlineCode",{parentName:"p"},"setAuthentication")," function."),(0,a.yg)("h4",{id:"example"},"Example:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-cpp"},'dashboard.setAuthentication("username", "password");\n')))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/af2b8099.6441350b.js b/assets/js/af2b8099.6441350b.js deleted file mode 100644 index 1b57c065..00000000 --- a/assets/js/af2b8099.6441350b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[8462],{3905:(e,r,t)=>{t.d(r,{Zo:()=>s,kt:()=>v});var a=t(7294);function n(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function i(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);r&&(a=a.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,a)}return t}function l(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?i(Object(t),!0).forEach((function(r){n(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function o(e,r){if(null==e)return{};var t,a,n=function(e,r){if(null==e)return{};var t,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)t=i[a],r.indexOf(t)>=0||(n[t]=e[t]);return n}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)t=i[a],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}var p=a.createContext({}),d=function(e){var r=a.useContext(p),t=r;return e&&(t="function"==typeof e?e(r):l(l({},r),e)),t},s=function(e){var r=d(e.components);return a.createElement(p.Provider,{value:r},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var r=e.children;return a.createElement(a.Fragment,{},r)}},m=a.forwardRef((function(e,r){var t=e.components,n=e.mdxType,i=e.originalType,p=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),c=d(t),m=n,v=c["".concat(p,".").concat(m)]||c[m]||u[m]||i;return t?a.createElement(v,l(l({ref:r},s),{},{components:t})):a.createElement(v,l({ref:r},s))}));function v(e,r){var t=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var i=t.length,l=new Array(i);l[0]=m;var o={};for(var p in r)hasOwnProperty.call(r,p)&&(o[p]=r[p]);o.originalType=e,o[c]="string"==typeof e?e:n,l[1]=o;for(var d=2;d<i;d++)l[d]=t[d];return a.createElement.apply(null,l)}return a.createElement.apply(null,t)}m.displayName="MDXCreateElement"},8584:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>p,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>d});var a=t(7462),n=(t(7294),t(3905));const i={title:"Air Card",sidebar_label:"Air (Pro)",sidebar_position:4},l=void 0,o={unversionedId:"cards/air",id:"version-v3.x.x/cards/air",title:"Air Card",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v3.x.x/cards/air.md",sourceDirName:"cards",slug:"/cards/air",permalink:"/v3.x.x/cards/air",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:4,frontMatter:{title:"Air Card",sidebar_label:"Air (Pro)",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Humidity",permalink:"/v3.x.x/cards/humidity"},next:{title:"Energy (Pro)",permalink:"/v3.x.x/cards/energy"}},p={},d=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],s={toc:d},c="wrapper";function u(e){let{components:r,...t}=e;return(0,n.kt)(c,(0,a.Z)({},s,t,{components:r,mdxType:"MDXLayout"}),(0,n.kt)("div",{style:{border:"1px solid rgba(255,0,0, 0.03)",padding:20,borderRadius:14,backgroundColor:"rgba(255,0,0, 0.03)",maxWidth:600}},(0,n.kt)("h4",{style:{fontWeight:"500",marginBottom:5}}," This feature is available in ",(0,n.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only.")),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{src:"/img//air-card-1.png",width:"280px",alt:"Preview"}),(0,n.kt)("br",null),(0,n.kt)("img",{src:"/img//air-card-2.png",width:"280px",alt:"Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"This card adds a distinctive air/wind icon, and just like generic card you can add a symbol which will be appended to your data. This card can be used to show something related to air pressure/wind speed etc."),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"AIR_CARD")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"String"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Air Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )\n*/\nCard card1(&dashboard, AIR_CARD, "Power Consumption", "kWh");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(float value);\n")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")),(0,n.kt)("p",null,"Or you can also update the symbol along with the value like this:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'card1.update(value, "kWh");\n')),(0,n.kt)("br",null),(0,n.kt)("br",null))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/af2b8099.878b9bde.js b/assets/js/af2b8099.878b9bde.js new file mode 100644 index 00000000..f113594c --- /dev/null +++ b/assets/js/af2b8099.878b9bde.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[136],{5788:(e,r,a)=>{a.d(r,{Iu:()=>s,yg:()=>g});var t=a(1504);function n(e,r,a){return r in e?Object.defineProperty(e,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[r]=a,e}function i(e,r){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r&&(t=t.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),a.push.apply(a,t)}return a}function l(e){for(var r=1;r<arguments.length;r++){var a=null!=arguments[r]?arguments[r]:{};r%2?i(Object(a),!0).forEach((function(r){n(e,r,a[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(a,r))}))}return e}function o(e,r){if(null==e)return{};var a,t,n=function(e,r){if(null==e)return{};var a,t,n={},i=Object.keys(e);for(t=0;t<i.length;t++)a=i[t],r.indexOf(a)>=0||(n[a]=e[a]);return n}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t<i.length;t++)a=i[t],r.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=t.createContext({}),d=function(e){var r=t.useContext(p),a=r;return e&&(a="function"==typeof e?e(r):l(l({},r),e)),a},s=function(e){var r=d(e.components);return t.createElement(p.Provider,{value:r},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var r=e.children;return t.createElement(t.Fragment,{},r)}},y=t.forwardRef((function(e,r){var a=e.components,n=e.mdxType,i=e.originalType,p=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),c=d(a),y=n,g=c["".concat(p,".").concat(y)]||c[y]||u[y]||i;return a?t.createElement(g,l(l({ref:r},s),{},{components:a})):t.createElement(g,l({ref:r},s))}));function g(e,r){var a=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var i=a.length,l=new Array(i);l[0]=y;var o={};for(var p in r)hasOwnProperty.call(r,p)&&(o[p]=r[p]);o.originalType=e,o[c]="string"==typeof e?e:n,l[1]=o;for(var d=2;d<i;d++)l[d]=a[d];return t.createElement.apply(null,l)}return t.createElement.apply(null,a)}y.displayName="MDXCreateElement"},3796:(e,r,a)=>{a.r(r),a.d(r,{assets:()=>p,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>d});var t=a(5072),n=(a(1504),a(5788));const i={title:"Air Card",sidebar_label:"Air (Pro)",sidebar_position:4},l=void 0,o={unversionedId:"cards/air",id:"version-v3.x.x/cards/air",title:"Air Card",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v3.x.x/cards/air.md",sourceDirName:"cards",slug:"/cards/air",permalink:"/v3.x.x/cards/air",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:4,frontMatter:{title:"Air Card",sidebar_label:"Air (Pro)",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Humidity",permalink:"/v3.x.x/cards/humidity"},next:{title:"Energy (Pro)",permalink:"/v3.x.x/cards/energy"}},p={},d=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],s={toc:d},c="wrapper";function u(e){let{components:r,...a}=e;return(0,n.yg)(c,(0,t.c)({},s,a,{components:r,mdxType:"MDXLayout"}),(0,n.yg)("div",{style:{border:"1px solid rgba(255,0,0, 0.03)",padding:20,borderRadius:14,backgroundColor:"rgba(255,0,0, 0.03)",maxWidth:600}},(0,n.yg)("h4",{style:{fontWeight:"500",marginBottom:5}}," This feature is available in ",(0,n.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only.")),(0,n.yg)("h4",{id:"preview"},"Preview:"),(0,n.yg)("img",{src:"/img//air-card-1.png",width:"280px",alt:"Preview"}),(0,n.yg)("br",null),(0,n.yg)("img",{src:"/img//air-card-2.png",width:"280px",alt:"Preview"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("p",null,"This card adds a distinctive air/wind icon, and just like generic card you can add a symbol which will be appended to your data. This card can be used to show something related to air pressure/wind speed etc."),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"type"},"Type:"),(0,n.yg)("p",null,(0,n.yg)("inlineCode",{parentName:"p"},"AIR_CARD")),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"int")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"float")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"String"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"initializer"},"Initializer:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Air Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )\n*/\nCard card1(&dashboard, AIR_CARD, "Power Consumption", "kWh");\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"updaters"},"Updaters:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(float value);\n")),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")),(0,n.yg)("p",null,"Or you can also update the symbol along with the value like this:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'card1.update(value, "kWh");\n')),(0,n.yg)("br",null),(0,n.yg)("br",null))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/afe7c26a.6559dce4.js b/assets/js/afe7c26a.6559dce4.js deleted file mode 100644 index adb958fe..00000000 --- a/assets/js/afe7c26a.6559dce4.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[7882],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>h});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(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){n(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 o(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=a.createContext({}),c=function(e){var t=a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},p=function(e){var t=c(e.components);return a.createElement(s.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),d=c(r),m=n,h=d["".concat(s,".").concat(m)]||d[m]||u[m]||i;return r?a.createElement(h,l(l({ref:t},p),{},{components:r})):a.createElement(h,l({ref:t},p))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,l=new Array(i);l[0]=m;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[d]="string"==typeof e?e:n,l[1]=o;for(var c=2;c<i;c++)l[c]=r[c];return a.createElement.apply(null,l)}return a.createElement.apply(null,r)}m.displayName="MDXCreateElement"},131:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>c});var a=r(7462),n=(r(7294),r(3905));const i={title:"Image Card",sidebar_label:"Image (Pro)",sidebar_position:9},l=void 0,o={unversionedId:"cards/image",id:"cards/image",title:"Image Card",description:"This feature is available in DASH Pro only.",source:"@site/docs/cards/image.md",sourceDirName:"cards",slug:"/cards/image",permalink:"/next/cards/image",draft:!1,tags:[],version:"current",sidebarPosition:9,frontMatter:{title:"Image Card",sidebar_label:"Image (Pro)",sidebar_position:9},sidebar:"tutorialSidebar",previous:{title:"Dropdown (Pro)",permalink:"/next/cards/dropdown"},next:{title:"Week Selector (Pro)",permalink:"/next/cards/week-selector"}},s={},c=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],p={toc:c},d="wrapper";function u(e){let{components:t,...r}=e;return(0,n.kt)(d,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("div",{className:"pro-label"},(0,n.kt)("i",null,(0,n.kt)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/image-card.png",width:"280px",alt:"Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"This card adds a image on your dashboard. You can pass a absolute URL to this card and it will load that image within this card on the dashboard. If the size is a bit small for you, then you can even make the card bigger by using the size value together with ",(0,n.kt)("inlineCode",{parentName:"p"},"setSize")," function."),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"IMAGE_CARD")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"String"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Image Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* size )\n*/\nCard card1(&dashboard, IMAGE_CARD, "Test Image", "lg");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("p",null,"After initialization, you will have to provide the URL of the image which you want to display."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(const char* url);\n")),(0,n.kt)("p",null,'Or you can also update the size of image using the second parameter. Supported sizes: "lg" and "xl"'),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"// This will change the selected value and update the choices as well\ncard1.update(const char* url, const char* size);\n")),(0,n.kt)("br",null),(0,n.kt)("br",null))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/afe7c26a.daec5bb8.js b/assets/js/afe7c26a.daec5bb8.js new file mode 100644 index 00000000..641cd8c6 --- /dev/null +++ b/assets/js/afe7c26a.daec5bb8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[4280],{5788:(e,r,a)=>{a.d(r,{Iu:()=>p,yg:()=>y});var t=a(1504);function n(e,r,a){return r in e?Object.defineProperty(e,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[r]=a,e}function i(e,r){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r&&(t=t.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),a.push.apply(a,t)}return a}function l(e){for(var r=1;r<arguments.length;r++){var a=null!=arguments[r]?arguments[r]:{};r%2?i(Object(a),!0).forEach((function(r){n(e,r,a[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(a,r))}))}return e}function o(e,r){if(null==e)return{};var a,t,n=function(e,r){if(null==e)return{};var a,t,n={},i=Object.keys(e);for(t=0;t<i.length;t++)a=i[t],r.indexOf(a)>=0||(n[a]=e[a]);return n}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t<i.length;t++)a=i[t],r.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=t.createContext({}),c=function(e){var r=t.useContext(s),a=r;return e&&(a="function"==typeof e?e(r):l(l({},r),e)),a},p=function(e){var r=c(e.components);return t.createElement(s.Provider,{value:r},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var r=e.children;return t.createElement(t.Fragment,{},r)}},g=t.forwardRef((function(e,r){var a=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),d=c(a),g=n,y=d["".concat(s,".").concat(g)]||d[g]||u[g]||i;return a?t.createElement(y,l(l({ref:r},p),{},{components:a})):t.createElement(y,l({ref:r},p))}));function y(e,r){var a=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var i=a.length,l=new Array(i);l[0]=g;var o={};for(var s in r)hasOwnProperty.call(r,s)&&(o[s]=r[s]);o.originalType=e,o[d]="string"==typeof e?e:n,l[1]=o;for(var c=2;c<i;c++)l[c]=a[c];return t.createElement.apply(null,l)}return t.createElement.apply(null,a)}g.displayName="MDXCreateElement"},4768:(e,r,a)=>{a.r(r),a.d(r,{assets:()=>s,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>c});var t=a(5072),n=(a(1504),a(5788));const i={title:"Image Card",sidebar_label:"Image (Pro)",sidebar_position:9},l=void 0,o={unversionedId:"cards/image",id:"cards/image",title:"Image Card",description:"This feature is available in DASH Pro only.",source:"@site/docs/cards/image.md",sourceDirName:"cards",slug:"/cards/image",permalink:"/next/cards/image",draft:!1,tags:[],version:"current",sidebarPosition:9,frontMatter:{title:"Image Card",sidebar_label:"Image (Pro)",sidebar_position:9},sidebar:"tutorialSidebar",previous:{title:"Dropdown (Pro)",permalink:"/next/cards/dropdown"},next:{title:"Week Selector (Pro)",permalink:"/next/cards/week-selector"}},s={},c=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],p={toc:c},d="wrapper";function u(e){let{components:r,...a}=e;return(0,n.yg)(d,(0,t.c)({},p,a,{components:r,mdxType:"MDXLayout"}),(0,n.yg)("div",{className:"pro-label"},(0,n.yg)("i",null,(0,n.yg)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.yg)("h4",{id:"preview"},"Preview:"),(0,n.yg)("img",{className:"card-preview",src:"/img/v4/image-card.png",width:"280px",alt:"Preview"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("p",null,"This card adds a image on your dashboard. You can pass a absolute URL to this card and it will load that image within this card on the dashboard. If the size is a bit small for you, then you can even make the card bigger by using the size value together with ",(0,n.yg)("inlineCode",{parentName:"p"},"setSize")," function."),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"type"},"Type:"),(0,n.yg)("p",null,(0,n.yg)("inlineCode",{parentName:"p"},"IMAGE_CARD")),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"String"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"initializer"},"Initializer:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Image Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* size )\n*/\nCard card1(&dashboard, IMAGE_CARD, "Test Image", "lg");\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"updaters"},"Updaters:"),(0,n.yg)("p",null,"After initialization, you will have to provide the URL of the image which you want to display."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(const char* url);\n")),(0,n.yg)("p",null,'Or you can also update the size of image using the second parameter. Supported sizes: "lg" and "xl"'),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"// This will change the selected value and update the choices as well\ncard1.update(const char* url, const char* size);\n")),(0,n.yg)("br",null),(0,n.yg)("br",null))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/bb019f97.5c2d68cf.js b/assets/js/bb019f97.5c2d68cf.js new file mode 100644 index 00000000..525f8189 --- /dev/null +++ b/assets/js/bb019f97.5c2d68cf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[1156],{5788:(e,r,a)=>{a.d(r,{Iu:()=>y,yg:()=>g});var t=a(1504);function n(e,r,a){return r in e?Object.defineProperty(e,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[r]=a,e}function i(e,r){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r&&(t=t.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),a.push.apply(a,t)}return a}function l(e){for(var r=1;r<arguments.length;r++){var a=null!=arguments[r]?arguments[r]:{};r%2?i(Object(a),!0).forEach((function(r){n(e,r,a[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(a,r))}))}return e}function o(e,r){if(null==e)return{};var a,t,n=function(e,r){if(null==e)return{};var a,t,n={},i=Object.keys(e);for(t=0;t<i.length;t++)a=i[t],r.indexOf(a)>=0||(n[a]=e[a]);return n}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t<i.length;t++)a=i[t],r.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=t.createContext({}),p=function(e){var r=t.useContext(s),a=r;return e&&(a="function"==typeof e?e(r):l(l({},r),e)),a},y=function(e){var r=p(e.components);return t.createElement(s.Provider,{value:r},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var r=e.children;return t.createElement(t.Fragment,{},r)}},d=t.forwardRef((function(e,r){var a=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,y=o(e,["components","mdxType","originalType","parentName"]),u=p(a),d=n,g=u["".concat(s,".").concat(d)]||u[d]||c[d]||i;return a?t.createElement(g,l(l({ref:r},y),{},{components:a})):t.createElement(g,l({ref:r},y))}));function g(e,r){var a=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var i=a.length,l=new Array(i);l[0]=d;var o={};for(var s in r)hasOwnProperty.call(r,s)&&(o[s]=r[s]);o.originalType=e,o[u]="string"==typeof e?e:n,l[1]=o;for(var p=2;p<i;p++)l[p]=a[p];return t.createElement.apply(null,l)}return t.createElement.apply(null,a)}d.displayName="MDXCreateElement"},4184:(e,r,a)=>{a.r(r),a.d(r,{assets:()=>s,contentTitle:()=>l,default:()=>c,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var t=a(5072),n=(a(1504),a(5788));const i={title:"Area Chart",sidebar_label:"Area (Pro)",sidebar_position:3},l=void 0,o={unversionedId:"charts/area",id:"version-v4.x.x/charts/area",title:"Area Chart",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v4.x.x/charts/area.md",sourceDirName:"charts",slug:"/charts/area",permalink:"/charts/area",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:3,frontMatter:{title:"Area Chart",sidebar_label:"Area (Pro)",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Line (Pro)",permalink:"/charts/line"},next:{title:"Pie (Pro)",permalink:"/charts/pie"}},s={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types for X-Axis:",id:"valid-data-types-for-x-axis",level:4},{value:"Valid Data Types for Y-Axis:",id:"valid-data-types-for-y-axis",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4},{value:"For X-Axis:",id:"for-x-axis",level:5},{value:"For Y-Axis:",id:"for-y-axis",level:5}],y={toc:p},u="wrapper";function c(e){let{components:r,...a}=e;return(0,n.yg)(u,(0,t.c)({},y,a,{components:r,mdxType:"MDXLayout"}),(0,n.yg)("div",{className:"pro-label"},(0,n.yg)("i",null,(0,n.yg)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.yg)("h4",{id:"preview"},"Preview:"),(0,n.yg)("img",{className:"card-preview",src:"/img/v4/area-chart.png",width:"500px",alt:"Preview"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"type"},"Type:"),(0,n.yg)("p",null,(0,n.yg)("inlineCode",{parentName:"p"},"AREA_CHART")),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types-for-x-axis"},"Valid Data Types for X-Axis:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"int")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"float")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"String"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types-for-y-axis"},"Valid Data Types for Y-Axis:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"int")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"float"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"initializer"},"Initializer:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Area Chart\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name )\n*/\nChart chart1(&dashboard, AREA_CHART, "Chart Name");\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"updaters"},"Updaters:"),(0,n.yg)("h5",{id:"for-x-axis"},"For X-Axis:"),(0,n.yg)("p",null,"X-Axis updater uses ",(0,n.yg)("inlineCode",{parentName:"p"},"updateX")," function."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/*\n Data for X Axis of our Chart\n This array can be of: `int` / `float` or `String`\n \n Note: this array should be kept in global scope. i.e. it should never be deleted from memory.\n*/\nString XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or\n (float array[], size_t array_size)\n or\n (String array[], size_t array_size)\n or\n (const char* array[], size_t array_size)\n*/\nchart1.updateX(XAxis, 7);\n')),(0,n.yg)("h5",{id:"for-y-axis"},"For Y-Axis:"),(0,n.yg)("p",null,"Y-Axis updater uses ",(0,n.yg)("inlineCode",{parentName:"p"},"updateY")," function."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"/*\n Data for Y Axis of our Chart\n This array can be of: `int` or `float`\n \n Note: this array should be kept in global scope. i.e. it should never be deleted from memory.\n*/\nint YAxis[] = {0, 0, 0, 0, 0, 0, 0};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or \n (float array[], size_t array_size)\n*/\nchart1.updateY(YAxis, 7);\n")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/bb019f97.fea5114a.js b/assets/js/bb019f97.fea5114a.js deleted file mode 100644 index 96959b42..00000000 --- a/assets/js/bb019f97.fea5114a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[1071],{3905:(e,r,t)=>{t.d(r,{Zo:()=>u,kt:()=>y});var a=t(7294);function n(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function i(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);r&&(a=a.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,a)}return t}function l(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?i(Object(t),!0).forEach((function(r){n(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function o(e,r){if(null==e)return{};var t,a,n=function(e,r){if(null==e)return{};var t,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)t=i[a],r.indexOf(t)>=0||(n[t]=e[t]);return n}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)t=i[a],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}var s=a.createContext({}),p=function(e){var r=a.useContext(s),t=r;return e&&(t="function"==typeof e?e(r):l(l({},r),e)),t},u=function(e){var r=p(e.components);return a.createElement(s.Provider,{value:r},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var r=e.children;return a.createElement(a.Fragment,{},r)}},f=a.forwardRef((function(e,r){var t=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),d=p(t),f=n,y=d["".concat(s,".").concat(f)]||d[f]||c[f]||i;return t?a.createElement(y,l(l({ref:r},u),{},{components:t})):a.createElement(y,l({ref:r},u))}));function y(e,r){var t=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var i=t.length,l=new Array(i);l[0]=f;var o={};for(var s in r)hasOwnProperty.call(r,s)&&(o[s]=r[s]);o.originalType=e,o[d]="string"==typeof e?e:n,l[1]=o;for(var p=2;p<i;p++)l[p]=t[p];return a.createElement.apply(null,l)}return a.createElement.apply(null,t)}f.displayName="MDXCreateElement"},6678:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>s,contentTitle:()=>l,default:()=>c,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var a=t(7462),n=(t(7294),t(3905));const i={title:"Area Chart",sidebar_label:"Area (Pro)",sidebar_position:3},l=void 0,o={unversionedId:"charts/area",id:"version-v4.x.x/charts/area",title:"Area Chart",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v4.x.x/charts/area.md",sourceDirName:"charts",slug:"/charts/area",permalink:"/charts/area",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:3,frontMatter:{title:"Area Chart",sidebar_label:"Area (Pro)",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Line (Pro)",permalink:"/charts/line"},next:{title:"Pie (Pro)",permalink:"/charts/pie"}},s={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types for X-Axis:",id:"valid-data-types-for-x-axis",level:4},{value:"Valid Data Types for Y-Axis:",id:"valid-data-types-for-y-axis",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4},{value:"For X-Axis:",id:"for-x-axis",level:5},{value:"For Y-Axis:",id:"for-y-axis",level:5}],u={toc:p},d="wrapper";function c(e){let{components:r,...t}=e;return(0,n.kt)(d,(0,a.Z)({},u,t,{components:r,mdxType:"MDXLayout"}),(0,n.kt)("div",{className:"pro-label"},(0,n.kt)("i",null,(0,n.kt)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/area-chart.png",width:"500px",alt:"Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"AREA_CHART")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types-for-x-axis"},"Valid Data Types for X-Axis:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"String"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types-for-y-axis"},"Valid Data Types for Y-Axis:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Area Chart\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name )\n*/\nChart chart1(&dashboard, AREA_CHART, "Chart Name");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("h5",{id:"for-x-axis"},"For X-Axis:"),(0,n.kt)("p",null,"X-Axis updater uses ",(0,n.kt)("inlineCode",{parentName:"p"},"updateX")," function."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/*\n Data for X Axis of our Chart\n This array can be of: `int` / `float` or `String`\n \n Note: this array should be kept in global scope. i.e. it should never be deleted from memory.\n*/\nString XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or\n (float array[], size_t array_size)\n or\n (String array[], size_t array_size)\n or\n (const char* array[], size_t array_size)\n*/\nchart1.updateX(XAxis, 7);\n')),(0,n.kt)("h5",{id:"for-y-axis"},"For Y-Axis:"),(0,n.kt)("p",null,"Y-Axis updater uses ",(0,n.kt)("inlineCode",{parentName:"p"},"updateY")," function."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"/*\n Data for Y Axis of our Chart\n This array can be of: `int` or `float`\n \n Note: this array should be kept in global scope. i.e. it should never be deleted from memory.\n*/\nint YAxis[] = {0, 0, 0, 0, 0, 0, 0};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or \n (float array[], size_t array_size)\n*/\nchart1.updateY(YAxis, 7);\n")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/bc9808f4.18b5cab6.js b/assets/js/bc9808f4.18b5cab6.js new file mode 100644 index 00000000..20a52e9b --- /dev/null +++ b/assets/js/bc9808f4.18b5cab6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[384],{5788:(e,t,n)=>{n.d(t,{Iu:()=>u,yg:()=>m});var r=n(1504);function a(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(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),c=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},y=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=c(n),y=a,m=p["".concat(s,".").concat(y)]||p[y]||f[y]||i;return n?r.createElement(m,o(o({ref:t},u),{},{components:n})):r.createElement(m,o({ref:t},u))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=y;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:a,o[1]=l;for(var c=2;c<i;c++)o[c]=n[c];return r.createElement.apply(null,o)}return r.createElement.apply(null,n)}y.displayName="MDXCreateElement"},6884:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>f,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var r=n(5072),a=(n(1504),n(5788));const i={title:"Toggle Animation",sidebar_label:"Toggle Animation (Pro)",sidebar_position:3},o=void 0,l={unversionedId:"features/chartanimations",id:"features/chartanimations",title:"Toggle Animation",description:"This feature is available in DASH Pro only.",source:"@site/docs/features/chartanimations.md",sourceDirName:"features",slug:"/features/chartanimations",permalink:"/next/features/chartanimations",draft:!1,tags:[],version:"current",sidebarPosition:3,frontMatter:{title:"Toggle Animation",sidebar_label:"Toggle Animation (Pro)",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Disable Statistics",permalink:"/next/features/disable-stats"},next:{title:"Custom Title (Pro)",permalink:"/next/features/title"}},s={},c=[{value:"Usage:",id:"usage",level:4},{value:"To Disble:",id:"to-disble",level:5},{value:"To Enable:",id:"to-enable",level:5}],u={toc:c},p="wrapper";function f(e){let{components:t,...n}=e;return(0,a.yg)(p,(0,r.c)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.yg)("div",{className:"pro-label"},(0,a.yg)("i",null,(0,a.yg)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,a.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,a.yg)("br",null),(0,a.yg)("p",null,"You can enable/disable chart animations with ease using the ",(0,a.yg)("inlineCode",{parentName:"p"},"setChartAnimations")," function of ESPDash class. This is particularly helpful if you are updating your charts at an very fast pace."),(0,a.yg)("p",null,(0,a.yg)("em",{parentName:"p"},"Note: Chart animations are enabled by default.")),(0,a.yg)("h4",{id:"usage"},"Usage:"),(0,a.yg)("p",null,"You can put this function anywhere in your setup block:"),(0,a.yg)("h5",{id:"to-disble"},"To Disble:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-cpp"},"dashboard.setChartAnimations(false); // Disable Chart Animations\n")),(0,a.yg)("h5",{id:"to-enable"},"To Enable:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-cpp"},"dashboard.setChartAnimations(true); // Enable Chart Animations\n")))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/bc9808f4.cc8f77d1.js b/assets/js/bc9808f4.cc8f77d1.js deleted file mode 100644 index 7b068b6d..00000000 --- a/assets/js/bc9808f4.cc8f77d1.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[1334],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>d});var r=n(7294);function a(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(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),c=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=c(n),m=a,d=p["".concat(s,".").concat(m)]||p[m]||f[m]||i;return n?r.createElement(d,o(o({ref:t},u),{},{components:n})):r.createElement(d,o({ref:t},u))}));function d(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:a,o[1]=l;for(var c=2;c<i;c++)o[c]=n[c];return r.createElement.apply(null,o)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},2435:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>f,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var r=n(7462),a=(n(7294),n(3905));const i={title:"Toggle Animation",sidebar_label:"Toggle Animation (Pro)",sidebar_position:3},o=void 0,l={unversionedId:"features/chartanimations",id:"features/chartanimations",title:"Toggle Animation",description:"This feature is available in DASH Pro only.",source:"@site/docs/features/chartanimations.md",sourceDirName:"features",slug:"/features/chartanimations",permalink:"/next/features/chartanimations",draft:!1,tags:[],version:"current",sidebarPosition:3,frontMatter:{title:"Toggle Animation",sidebar_label:"Toggle Animation (Pro)",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Disable Statistics",permalink:"/next/features/disable-stats"},next:{title:"Custom Title (Pro)",permalink:"/next/features/title"}},s={},c=[{value:"Usage:",id:"usage",level:4},{value:"To Disble:",id:"to-disble",level:5},{value:"To Enable:",id:"to-enable",level:5}],u={toc:c},p="wrapper";function f(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("div",{className:"pro-label"},(0,a.kt)("i",null,(0,a.kt)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,a.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,a.kt)("br",null),(0,a.kt)("p",null,"You can enable/disable chart animations with ease using the ",(0,a.kt)("inlineCode",{parentName:"p"},"setChartAnimations")," function of ESPDash class. This is particularly helpful if you are updating your charts at an very fast pace."),(0,a.kt)("p",null,(0,a.kt)("em",{parentName:"p"},"Note: Chart animations are enabled by default.")),(0,a.kt)("h4",{id:"usage"},"Usage:"),(0,a.kt)("p",null,"You can put this function anywhere in your setup block:"),(0,a.kt)("h5",{id:"to-disble"},"To Disble:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cpp"},"dashboard.setChartAnimations(false); // Disable Chart Animations\n")),(0,a.kt)("h5",{id:"to-enable"},"To Enable:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cpp"},"dashboard.setChartAnimations(true); // Enable Chart Animations\n")))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/bd9ddaf7.3c0827e1.js b/assets/js/bd9ddaf7.3c0827e1.js new file mode 100644 index 00000000..3f38963d --- /dev/null +++ b/assets/js/bd9ddaf7.3c0827e1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[8988],{5788:(e,r,a)=>{a.d(r,{Iu:()=>p,yg:()=>y});var t=a(1504);function n(e,r,a){return r in e?Object.defineProperty(e,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[r]=a,e}function i(e,r){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r&&(t=t.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),a.push.apply(a,t)}return a}function l(e){for(var r=1;r<arguments.length;r++){var a=null!=arguments[r]?arguments[r]:{};r%2?i(Object(a),!0).forEach((function(r){n(e,r,a[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(a,r))}))}return e}function o(e,r){if(null==e)return{};var a,t,n=function(e,r){if(null==e)return{};var a,t,n={},i=Object.keys(e);for(t=0;t<i.length;t++)a=i[t],r.indexOf(a)>=0||(n[a]=e[a]);return n}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t<i.length;t++)a=i[t],r.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=t.createContext({}),c=function(e){var r=t.useContext(s),a=r;return e&&(a="function"==typeof e?e(r):l(l({},r),e)),a},p=function(e){var r=c(e.components);return t.createElement(s.Provider,{value:r},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var r=e.children;return t.createElement(t.Fragment,{},r)}},g=t.forwardRef((function(e,r){var a=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),d=c(a),g=n,y=d["".concat(s,".").concat(g)]||d[g]||u[g]||i;return a?t.createElement(y,l(l({ref:r},p),{},{components:a})):t.createElement(y,l({ref:r},p))}));function y(e,r){var a=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var i=a.length,l=new Array(i);l[0]=g;var o={};for(var s in r)hasOwnProperty.call(r,s)&&(o[s]=r[s]);o.originalType=e,o[d]="string"==typeof e?e:n,l[1]=o;for(var c=2;c<i;c++)l[c]=a[c];return t.createElement.apply(null,l)}return t.createElement.apply(null,a)}g.displayName="MDXCreateElement"},2516:(e,r,a)=>{a.r(r),a.d(r,{assets:()=>s,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>c});var t=a(5072),n=(a(1504),a(5788));const i={title:"Image Card",sidebar_label:"Image (Pro)",sidebar_position:9},l=void 0,o={unversionedId:"cards/image",id:"version-v4.x.x/cards/image",title:"Image Card",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v4.x.x/cards/image.md",sourceDirName:"cards",slug:"/cards/image",permalink:"/cards/image",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:9,frontMatter:{title:"Image Card",sidebar_label:"Image (Pro)",sidebar_position:9},sidebar:"tutorialSidebar",previous:{title:"Dropdown (Pro)",permalink:"/cards/dropdown"},next:{title:"Week Selector (Pro)",permalink:"/cards/week-selector"}},s={},c=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],p={toc:c},d="wrapper";function u(e){let{components:r,...a}=e;return(0,n.yg)(d,(0,t.c)({},p,a,{components:r,mdxType:"MDXLayout"}),(0,n.yg)("div",{className:"pro-label"},(0,n.yg)("i",null,(0,n.yg)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.yg)("h4",{id:"preview"},"Preview:"),(0,n.yg)("img",{className:"card-preview",src:"/img/v4/image-card.png",width:"280px",alt:"Preview"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("p",null,"This card adds a image on your dashboard. You can pass a absolute URL to this card and it will load that image within this card on the dashboard. If the size is a bit small for you, then you can even make the card bigger by using the size value together with ",(0,n.yg)("inlineCode",{parentName:"p"},"setSize")," function."),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"type"},"Type:"),(0,n.yg)("p",null,(0,n.yg)("inlineCode",{parentName:"p"},"IMAGE_CARD")),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"String"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"initializer"},"Initializer:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Image Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* size )\n*/\nCard card1(&dashboard, IMAGE_CARD, "Test Image", "lg");\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"updaters"},"Updaters:"),(0,n.yg)("p",null,"After initialization, you will have to provide the URL of the image which you want to display."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(const char* url);\n")),(0,n.yg)("p",null,'Or you can also update the size of image using the second parameter. Supported sizes: "lg" and "xl"'),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"// This will change the selected value and update the choices as well\ncard1.update(const char* url, const char* size);\n")),(0,n.yg)("br",null),(0,n.yg)("br",null))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/bd9ddaf7.a943fa97.js b/assets/js/bd9ddaf7.a943fa97.js deleted file mode 100644 index 40848894..00000000 --- a/assets/js/bd9ddaf7.a943fa97.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[2354],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>h});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(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){n(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 o(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=a.createContext({}),c=function(e){var t=a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},p=function(e){var t=c(e.components);return a.createElement(s.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),d=c(r),m=n,h=d["".concat(s,".").concat(m)]||d[m]||u[m]||i;return r?a.createElement(h,l(l({ref:t},p),{},{components:r})):a.createElement(h,l({ref:t},p))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,l=new Array(i);l[0]=m;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[d]="string"==typeof e?e:n,l[1]=o;for(var c=2;c<i;c++)l[c]=r[c];return a.createElement.apply(null,l)}return a.createElement.apply(null,r)}m.displayName="MDXCreateElement"},9788:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>c});var a=r(7462),n=(r(7294),r(3905));const i={title:"Image Card",sidebar_label:"Image (Pro)",sidebar_position:9},l=void 0,o={unversionedId:"cards/image",id:"version-v4.x.x/cards/image",title:"Image Card",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v4.x.x/cards/image.md",sourceDirName:"cards",slug:"/cards/image",permalink:"/cards/image",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:9,frontMatter:{title:"Image Card",sidebar_label:"Image (Pro)",sidebar_position:9},sidebar:"tutorialSidebar",previous:{title:"Dropdown (Pro)",permalink:"/cards/dropdown"},next:{title:"Week Selector (Pro)",permalink:"/cards/week-selector"}},s={},c=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],p={toc:c},d="wrapper";function u(e){let{components:t,...r}=e;return(0,n.kt)(d,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("div",{className:"pro-label"},(0,n.kt)("i",null,(0,n.kt)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/image-card.png",width:"280px",alt:"Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"This card adds a image on your dashboard. You can pass a absolute URL to this card and it will load that image within this card on the dashboard. If the size is a bit small for you, then you can even make the card bigger by using the size value together with ",(0,n.kt)("inlineCode",{parentName:"p"},"setSize")," function."),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"IMAGE_CARD")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"String"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Image Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* size )\n*/\nCard card1(&dashboard, IMAGE_CARD, "Test Image", "lg");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("p",null,"After initialization, you will have to provide the URL of the image which you want to display."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(const char* url);\n")),(0,n.kt)("p",null,'Or you can also update the size of image using the second parameter. Supported sizes: "lg" and "xl"'),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"// This will change the selected value and update the choices as well\ncard1.update(const char* url, const char* size);\n")),(0,n.kt)("br",null),(0,n.kt)("br",null))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/beec482e.05793438.js b/assets/js/beec482e.05793438.js deleted file mode 100644 index 57c65276..00000000 --- a/assets/js/beec482e.05793438.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[6366],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>f});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function s(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function o(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var l=r.createContext({}),c=function(e){var t=r.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):s(s({},t),e)),a},p=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,l=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),u=c(a),m=n,f=u["".concat(l,".").concat(m)]||u[m]||d[m]||i;return a?r.createElement(f,s(s({ref:t},p),{},{components:a})):r.createElement(f,s({ref:t},p))}));function f(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,s=new Array(i);s[0]=m;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[u]="string"==typeof e?e:n,s[1]=o;for(var c=2;c<i;c++)s[c]=a[c];return r.createElement.apply(null,s)}return r.createElement.apply(null,a)}m.displayName="MDXCreateElement"},5317:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>d,frontMatter:()=>i,metadata:()=>o,toc:()=>c});var r=a(7462),n=(a(7294),a(3905));const i={title:"Statistics",sidebar_label:"Statistics",sidebar_position:8},s=void 0,o={unversionedId:"custom-statistics",id:"custom-statistics",title:"Statistics",description:'ESP-DASH has a dedicated page called "Statistics" on the dashboard which contain key-value pairs of system statistics ( heap, flash usage etc. ) by default. With the launch of ESP-DASH V4, user defined statistics are now also part of the library! You can now add your own statitics to this page. \ud83c\udf89',source:"@site/docs/custom-statistics.md",sourceDirName:".",slug:"/custom-statistics",permalink:"/next/custom-statistics",draft:!1,tags:[],version:"current",sidebarPosition:8,frontMatter:{title:"Statistics",sidebar_label:"Statistics",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"Tabs (Pro)",permalink:"/next/tabs"},next:{title:"Generic",permalink:"/next/cards/generic"}},l={},c=[{value:"Example",id:"example",level:3},{value:"Initializer:",id:"initializer",level:5},{value:"Update Value:",id:"update-value",level:5},{value:"Update both Key & Value:",id:"update-both-key--value",level:5}],p={toc:c},u="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(u,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("img",{src:"/img/v4/statistics.png",alt:"Concept Diagram",width:"940px"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,'ESP-DASH has a dedicated page called "Statistics" on the dashboard which contain key-value pairs of system statistics ( heap, flash usage etc. ) by default. With the launch of ESP-DASH V4, user defined statistics are now also part of the library! You can now add your own statitics to this page. \ud83c\udf89'),(0,n.kt)("p",null,(0,n.kt)("em",{parentName:"p"},"Note: System statistics can be turned off any time, you may look at ",(0,n.kt)("a",{parentName:"em",href:"/next/features/disable-stats"},"Disable Statistics")," page.")),(0,n.kt)("h3",{id:"example"},"Example"),(0,n.kt)("h5",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'Statistic stat1(&dashboard, "Key", "Value");\n')),(0,n.kt)("h5",{id:"update-value"},"Update Value:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'stat1.set("New Value");\n')),(0,n.kt)("h5",{id:"update-both-key--value"},"Update both Key & Value:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'stat1.set("New Key", "New Value");\n')))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/beec482e.e9f2cd16.js b/assets/js/beec482e.e9f2cd16.js new file mode 100644 index 00000000..9f6d0111 --- /dev/null +++ b/assets/js/beec482e.e9f2cd16.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[864],{5788:(e,t,a)=>{a.d(t,{Iu:()=>p,yg:()=>m});var r=a(1504);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function s(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function o(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var l=r.createContext({}),c=function(e){var t=r.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):s(s({},t),e)),a},p=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},y=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,l=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),u=c(a),y=n,m=u["".concat(l,".").concat(y)]||u[y]||d[y]||i;return a?r.createElement(m,s(s({ref:t},p),{},{components:a})):r.createElement(m,s({ref:t},p))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,s=new Array(i);s[0]=y;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[u]="string"==typeof e?e:n,s[1]=o;for(var c=2;c<i;c++)s[c]=a[c];return r.createElement.apply(null,s)}return r.createElement.apply(null,a)}y.displayName="MDXCreateElement"},6716:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>d,frontMatter:()=>i,metadata:()=>o,toc:()=>c});var r=a(5072),n=(a(1504),a(5788));const i={title:"Statistics",sidebar_label:"Statistics",sidebar_position:8},s=void 0,o={unversionedId:"custom-statistics",id:"custom-statistics",title:"Statistics",description:'ESP-DASH has a dedicated page called "Statistics" on the dashboard which contain key-value pairs of system statistics ( heap, flash usage etc. ) by default. With the launch of ESP-DASH V4, user defined statistics are now also part of the library! You can now add your own statitics to this page. \ud83c\udf89',source:"@site/docs/custom-statistics.md",sourceDirName:".",slug:"/custom-statistics",permalink:"/next/custom-statistics",draft:!1,tags:[],version:"current",sidebarPosition:8,frontMatter:{title:"Statistics",sidebar_label:"Statistics",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"Tabs (Pro)",permalink:"/next/tabs"},next:{title:"Generic",permalink:"/next/cards/generic"}},l={},c=[{value:"Example",id:"example",level:3},{value:"Initializer:",id:"initializer",level:5},{value:"Update Value:",id:"update-value",level:5},{value:"Update both Key & Value:",id:"update-both-key--value",level:5}],p={toc:c},u="wrapper";function d(e){let{components:t,...a}=e;return(0,n.yg)(u,(0,r.c)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.yg)("img",{src:"/img/v4/statistics.png",alt:"Concept Diagram",width:"940px"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("p",null,'ESP-DASH has a dedicated page called "Statistics" on the dashboard which contain key-value pairs of system statistics ( heap, flash usage etc. ) by default. With the launch of ESP-DASH V4, user defined statistics are now also part of the library! You can now add your own statitics to this page. \ud83c\udf89'),(0,n.yg)("p",null,(0,n.yg)("em",{parentName:"p"},"Note: System statistics can be turned off any time, you may look at ",(0,n.yg)("a",{parentName:"em",href:"/next/features/disable-stats"},"Disable Statistics")," page.")),(0,n.yg)("h3",{id:"example"},"Example"),(0,n.yg)("h5",{id:"initializer"},"Initializer:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'Statistic stat1(&dashboard, "Key", "Value");\n')),(0,n.yg)("h5",{id:"update-value"},"Update Value:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'stat1.set("New Value");\n')),(0,n.yg)("h5",{id:"update-both-key--value"},"Update both Key & Value:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'stat1.set("New Key", "New Value");\n')))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/bfca638c.22d33852.js b/assets/js/bfca638c.22d33852.js deleted file mode 100644 index 6cb9caff..00000000 --- a/assets/js/bfca638c.22d33852.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[7607],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>b});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?l(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):l(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function o(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},l=Object.keys(e);for(a=0;a<l.length;a++)r=l[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)r=l[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var d=a.createContext({}),c=function(e){var t=a.useContext(d),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=c(e.components);return a.createElement(d.Provider,{value:t},e.children)},s="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,l=e.originalType,d=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),s=c(r),m=n,b=s["".concat(d,".").concat(m)]||s[m]||u[m]||l;return r?a.createElement(b,i(i({ref:t},p),{},{components:r})):a.createElement(b,i({ref:t},p))}));function b(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=r.length,i=new Array(l);i[0]=m;var o={};for(var d in t)hasOwnProperty.call(t,d)&&(o[d]=t[d]);o.originalType=e,o[s]="string"==typeof e?e:n,i[1]=o;for(var c=2;c<l;c++)i[c]=r[c];return a.createElement.apply(null,i)}return a.createElement.apply(null,r)}m.displayName="MDXCreateElement"},7036:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>u,frontMatter:()=>l,metadata:()=>o,toc:()=>c});var a=r(7462),n=(r(7294),r(3905));const l={title:"Slider Card",sidebar_label:"Slider",sidebar_position:6},i=void 0,o={unversionedId:"cards/slider",id:"version-v4.x.x/cards/slider",title:"Slider Card",description:"Preview:",source:"@site/versioned_docs/version-v4.x.x/cards/slider.md",sourceDirName:"cards",slug:"/cards/slider",permalink:"/cards/slider",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:6,frontMatter:{title:"Slider Card",sidebar_label:"Slider",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"Status",permalink:"/cards/status"},next:{title:"Text Input (Pro)",permalink:"/cards/text-input"}},d={},c=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Callback:",id:"callback",level:4},{value:"Updaters:",id:"updaters",level:4}],p={toc:c},s="wrapper";function u(e){let{components:t,...r}=e;return(0,n.kt)(s,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/slider-card.png",width:"380px",alt:"Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"This card adds a interactive horizontal slider to your dashboard. Slider card is useful when you require a integer input within a certain range. ( Example use case: LED brightness control )"),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"SLIDER_CARD")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("p",null,"With slider card, Initializer requires ",(0,n.kt)("inlineCode",{parentName:"p"},"min")," & ",(0,n.kt)("inlineCode",{parentName:"p"},"max")," range."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Slider Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional), int min, int max)\n*/\nCard card1(&dashboard, SLIDER_CARD, "Test Slider", "", 0, 255);\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"callback"},"Callback:"),(0,n.kt)("p",null,"Slider Card requires a callback function which will be called when we receive a input from our dashboard. We will be calling our ",(0,n.kt)("inlineCode",{parentName:"p"},"attachCallback")," function and provide a lambda function with a ",(0,n.kt)("inlineCode",{parentName:"p"},"int")," argument."),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Note:")," You need to call the ",(0,n.kt)("inlineCode",{parentName:"p"},"update")," function and ",(0,n.kt)("inlineCode",{parentName:"p"},"sendUpdates")," immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/*\n We provide our attachCallback with a lambda function to handle incomming data\n `value` is the boolean sent from your dashboard\n*/\ncard1.attachCallback([&](int value){\n Serial.println("[Card1] Slider Callback Triggered: "+String(value));\n card1.update(value);\n dashboard.sendUpdates();\n});\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,n.kt)("p",null,"Or, update symbol along your value:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'card1.update(244, "%");\n')))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/bfca638c.79ead2a0.js b/assets/js/bfca638c.79ead2a0.js new file mode 100644 index 00000000..78dcd707 --- /dev/null +++ b/assets/js/bfca638c.79ead2a0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[2800],{5788:(e,r,a)=>{a.d(r,{Iu:()=>p,yg:()=>g});var n=a(1504);function t(e,r,a){return r in e?Object.defineProperty(e,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[r]=a,e}function l(e,r){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var r=1;r<arguments.length;r++){var a=null!=arguments[r]?arguments[r]:{};r%2?l(Object(a),!0).forEach((function(r){t(e,r,a[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(a,r))}))}return e}function o(e,r){if(null==e)return{};var a,n,t=function(e,r){if(null==e)return{};var a,n,t={},l=Object.keys(e);for(n=0;n<l.length;n++)a=l[n],r.indexOf(a)>=0||(t[a]=e[a]);return t}(e,r);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n<l.length;n++)a=l[n],r.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(t[a]=e[a])}return t}var d=n.createContext({}),c=function(e){var r=n.useContext(d),a=r;return e&&(a="function"==typeof e?e(r):i(i({},r),e)),a},p=function(e){var r=c(e.components);return n.createElement(d.Provider,{value:r},e.children)},s="mdxType",u={inlineCode:"code",wrapper:function(e){var r=e.children;return n.createElement(n.Fragment,{},r)}},y=n.forwardRef((function(e,r){var a=e.components,t=e.mdxType,l=e.originalType,d=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),s=c(a),y=t,g=s["".concat(d,".").concat(y)]||s[y]||u[y]||l;return a?n.createElement(g,i(i({ref:r},p),{},{components:a})):n.createElement(g,i({ref:r},p))}));function g(e,r){var a=arguments,t=r&&r.mdxType;if("string"==typeof e||t){var l=a.length,i=new Array(l);i[0]=y;var o={};for(var d in r)hasOwnProperty.call(r,d)&&(o[d]=r[d]);o.originalType=e,o[s]="string"==typeof e?e:t,i[1]=o;for(var c=2;c<l;c++)i[c]=a[c];return n.createElement.apply(null,i)}return n.createElement.apply(null,a)}y.displayName="MDXCreateElement"},8676:(e,r,a)=>{a.r(r),a.d(r,{assets:()=>d,contentTitle:()=>i,default:()=>u,frontMatter:()=>l,metadata:()=>o,toc:()=>c});var n=a(5072),t=(a(1504),a(5788));const l={title:"Slider Card",sidebar_label:"Slider",sidebar_position:6},i=void 0,o={unversionedId:"cards/slider",id:"version-v4.x.x/cards/slider",title:"Slider Card",description:"Preview:",source:"@site/versioned_docs/version-v4.x.x/cards/slider.md",sourceDirName:"cards",slug:"/cards/slider",permalink:"/cards/slider",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:6,frontMatter:{title:"Slider Card",sidebar_label:"Slider",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"Status",permalink:"/cards/status"},next:{title:"Text Input (Pro)",permalink:"/cards/text-input"}},d={},c=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Callback:",id:"callback",level:4},{value:"Updaters:",id:"updaters",level:4}],p={toc:c},s="wrapper";function u(e){let{components:r,...a}=e;return(0,t.yg)(s,(0,n.c)({},p,a,{components:r,mdxType:"MDXLayout"}),(0,t.yg)("h4",{id:"preview"},"Preview:"),(0,t.yg)("img",{className:"card-preview",src:"/img/v4/slider-card.png",width:"380px",alt:"Preview"}),(0,t.yg)("br",null),(0,t.yg)("br",null),(0,t.yg)("p",null,"This card adds a interactive horizontal slider to your dashboard. Slider card is useful when you require a integer input within a certain range. ( Example use case: LED brightness control )"),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"type"},"Type:"),(0,t.yg)("p",null,(0,t.yg)("inlineCode",{parentName:"p"},"SLIDER_CARD")),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,t.yg)("ul",null,(0,t.yg)("li",{parentName:"ul"},(0,t.yg)("inlineCode",{parentName:"li"},"int"))),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"initializer"},"Initializer:"),(0,t.yg)("p",null,"With slider card, Initializer requires ",(0,t.yg)("inlineCode",{parentName:"p"},"min")," & ",(0,t.yg)("inlineCode",{parentName:"p"},"max")," range."),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Slider Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional), int min, int max)\n*/\nCard card1(&dashboard, SLIDER_CARD, "Test Slider", "", 0, 255);\n')),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"callback"},"Callback:"),(0,t.yg)("p",null,"Slider Card requires a callback function which will be called when we receive a input from our dashboard. We will be calling our ",(0,t.yg)("inlineCode",{parentName:"p"},"attachCallback")," function and provide a lambda function with a ",(0,t.yg)("inlineCode",{parentName:"p"},"int")," argument."),(0,t.yg)("p",null,(0,t.yg)("strong",{parentName:"p"},"Note:")," You need to call the ",(0,t.yg)("inlineCode",{parentName:"p"},"update")," function and ",(0,t.yg)("inlineCode",{parentName:"p"},"sendUpdates")," immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard."),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},'/*\n We provide our attachCallback with a lambda function to handle incomming data\n `value` is the boolean sent from your dashboard\n*/\ncard1.attachCallback([&](int value){\n Serial.println("[Card1] Slider Callback Triggered: "+String(value));\n card1.update(value);\n dashboard.sendUpdates();\n});\n')),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"updaters"},"Updaters:"),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,t.yg)("p",null,"Or, update symbol along your value:"),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},'card1.update(244, "%");\n')))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c4432a16.d4f1a922.js b/assets/js/c4432a16.1512703b.js similarity index 59% rename from assets/js/c4432a16.d4f1a922.js rename to assets/js/c4432a16.1512703b.js index 72bb360e..1ed10f78 100644 --- a/assets/js/c4432a16.d4f1a922.js +++ b/assets/js/c4432a16.1512703b.js @@ -1 +1 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[7861],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>m});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?l(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):l(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},l=Object.keys(e);for(a=0;a<l.length;a++)r=l[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)r=l[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),p=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},d=function(e){var t=p(e.components);return a.createElement(u.Provider,{value:t},e.children)},c="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},b=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,l=e.originalType,u=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),c=p(r),b=n,m=c["".concat(u,".").concat(b)]||c[b]||s[b]||l;return r?a.createElement(m,o(o({ref:t},d),{},{components:r})):a.createElement(m,o({ref:t},d))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=r.length,o=new Array(l);o[0]=b;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[c]="string"==typeof e?e:n,o[1]=i;for(var p=2;p<l;p++)o[p]=r[p];return a.createElement.apply(null,o)}return a.createElement.apply(null,r)}b.displayName="MDXCreateElement"},2516:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>s,frontMatter:()=>l,metadata:()=>i,toc:()=>p});var a=r(7462),n=(r(7294),r(3905));const l={title:"Toggle Button",sidebar_label:"Toggle Button",sidebar_position:5},o=void 0,i={unversionedId:"cards/button",id:"version-v4.x.x/cards/button",title:"Toggle Button",description:"Preview:",source:"@site/versioned_docs/version-v4.x.x/cards/button.md",sourceDirName:"cards",slug:"/cards/button",permalink:"/cards/button",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:5,frontMatter:{title:"Toggle Button",sidebar_label:"Toggle Button",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Progress",permalink:"/cards/progress"},next:{title:"Push Button (Pro)",permalink:"/cards/push-button"}},u={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Callback:",id:"callback",level:4},{value:"Updaters:",id:"updaters",level:4}],d={toc:p},c="wrapper";function s(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/button-card-false.png",width:"280px",alt:"Button Card Preview"}),"\xa0",(0,n.kt)("img",{className:"card-preview",src:"/img/v4/button-card-true.png",width:"280px",alt:"Button Card Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"Button card adds a interactive toggle button to your dashboard. This provides you with a simple ",(0,n.kt)("inlineCode",{parentName:"p"},"1")," or ",(0,n.kt)("inlineCode",{parentName:"p"},"0")," input from your dashboard."),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"BUTTON_CARD")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Button Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name)\n*/\nCard card1(&dashboard, BUTTON_CARD, "Test Button");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"callback"},"Callback:"),(0,n.kt)("p",null,"Button card requires a callback function which will be executed when we receive a input from our dashboard. In this example, we will use the ",(0,n.kt)("inlineCode",{parentName:"p"},"attachCallback")," function and provide a lambda function with a boolean argument."),(0,n.kt)("p",null,"In the case of button card, the value sent by your dashboard will be opposite of your current value. For Example: If your button is set to ",(0,n.kt)("inlineCode",{parentName:"p"},"0"),", then clicking that button on dashboard will trigger this callback with ",(0,n.kt)("inlineCode",{parentName:"p"},"1"),"."),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Note:")," You need to call the ",(0,n.kt)("inlineCode",{parentName:"p"},"update")," function and ",(0,n.kt)("inlineCode",{parentName:"p"},"sendUpdates")," immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/*\n We provide our attachCallback with a lambda function to handle incomming data\n `value` is the boolean sent from your dashboard\n*/\ncard1.attachCallback([&](int value){\n Serial.println("[Card1] Button Callback Triggered: "+String((value == 1)?"true":"false"));\n card1.update(value);\n dashboard.sendUpdates();\n});\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(1);\n")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(0);\n")),(0,n.kt)("br",null),(0,n.kt)("br",null))}s.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[5238],{5788:(e,t,r)=>{r.d(t,{Iu:()=>d,yg:()=>y});var a=r(1504);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?l(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):l(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},l=Object.keys(e);for(a=0;a<l.length;a++)r=l[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)r=l[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),p=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},d=function(e){var t=p(e.components);return a.createElement(u.Provider,{value:t},e.children)},c="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},g=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,l=e.originalType,u=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),c=p(r),g=n,y=c["".concat(u,".").concat(g)]||c[g]||s[g]||l;return r?a.createElement(y,o(o({ref:t},d),{},{components:r})):a.createElement(y,o({ref:t},d))}));function y(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=r.length,o=new Array(l);o[0]=g;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[c]="string"==typeof e?e:n,o[1]=i;for(var p=2;p<l;p++)o[p]=r[p];return a.createElement.apply(null,o)}return a.createElement.apply(null,r)}g.displayName="MDXCreateElement"},2476:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>s,frontMatter:()=>l,metadata:()=>i,toc:()=>p});var a=r(5072),n=(r(1504),r(5788));const l={title:"Toggle Button",sidebar_label:"Toggle Button",sidebar_position:5},o=void 0,i={unversionedId:"cards/button",id:"version-v4.x.x/cards/button",title:"Toggle Button",description:"Preview:",source:"@site/versioned_docs/version-v4.x.x/cards/button.md",sourceDirName:"cards",slug:"/cards/button",permalink:"/cards/button",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:5,frontMatter:{title:"Toggle Button",sidebar_label:"Toggle Button",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Progress",permalink:"/cards/progress"},next:{title:"Push Button (Pro)",permalink:"/cards/push-button"}},u={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Callback:",id:"callback",level:4},{value:"Updaters:",id:"updaters",level:4}],d={toc:p},c="wrapper";function s(e){let{components:t,...r}=e;return(0,n.yg)(c,(0,a.c)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,n.yg)("h4",{id:"preview"},"Preview:"),(0,n.yg)("img",{className:"card-preview",src:"/img/v4/button-card-false.png",width:"280px",alt:"Button Card Preview"}),"\xa0",(0,n.yg)("img",{className:"card-preview",src:"/img/v4/button-card-true.png",width:"280px",alt:"Button Card Preview"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("p",null,"Button card adds a interactive toggle button to your dashboard. This provides you with a simple ",(0,n.yg)("inlineCode",{parentName:"p"},"1")," or ",(0,n.yg)("inlineCode",{parentName:"p"},"0")," input from your dashboard."),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"type"},"Type:"),(0,n.yg)("p",null,(0,n.yg)("inlineCode",{parentName:"p"},"BUTTON_CARD")),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"int"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"initializer"},"Initializer:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Button Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name)\n*/\nCard card1(&dashboard, BUTTON_CARD, "Test Button");\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"callback"},"Callback:"),(0,n.yg)("p",null,"Button card requires a callback function which will be executed when we receive a input from our dashboard. In this example, we will use the ",(0,n.yg)("inlineCode",{parentName:"p"},"attachCallback")," function and provide a lambda function with a boolean argument."),(0,n.yg)("p",null,"In the case of button card, the value sent by your dashboard will be opposite of your current value. For Example: If your button is set to ",(0,n.yg)("inlineCode",{parentName:"p"},"0"),", then clicking that button on dashboard will trigger this callback with ",(0,n.yg)("inlineCode",{parentName:"p"},"1"),"."),(0,n.yg)("p",null,(0,n.yg)("strong",{parentName:"p"},"Note:")," You need to call the ",(0,n.yg)("inlineCode",{parentName:"p"},"update")," function and ",(0,n.yg)("inlineCode",{parentName:"p"},"sendUpdates")," immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/*\n We provide our attachCallback with a lambda function to handle incomming data\n `value` is the boolean sent from your dashboard\n*/\ncard1.attachCallback([&](int value){\n Serial.println("[Card1] Button Callback Triggered: "+String((value == 1)?"true":"false"));\n card1.update(value);\n dashboard.sendUpdates();\n});\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"updaters"},"Updaters:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(1);\n")),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(0);\n")),(0,n.yg)("br",null),(0,n.yg)("br",null))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c5beed23.26e7c0bd.js b/assets/js/c5beed23.26e7c0bd.js deleted file mode 100644 index 5ecc9aab..00000000 --- a/assets/js/c5beed23.26e7c0bd.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[3881],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?l(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function i(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},l=Object.keys(e);for(r=0;r<l.length;r++)a=l[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r<l.length;r++)a=l[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),d=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},p=function(e){var t=d(e.components);return r.createElement(u.Provider,{value:t},e.children)},c="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},b=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,u=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),c=d(a),b=n,m=c["".concat(u,".").concat(b)]||c[b]||s[b]||l;return a?r.createElement(m,o(o({ref:t},p),{},{components:a})):r.createElement(m,o({ref:t},p))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,o=new Array(l);o[0]=b;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[c]="string"==typeof e?e:n,o[1]=i;for(var d=2;d<l;d++)o[d]=a[d];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}b.displayName="MDXCreateElement"},2654:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>s,frontMatter:()=>l,metadata:()=>i,toc:()=>d});var r=a(7462),n=(a(7294),a(3905));const l={title:"Button Card",sidebar_label:"Button",sidebar_position:5},o=void 0,i={unversionedId:"cards/button",id:"version-v3.x.x/cards/button",title:"Button Card",description:"Preview:",source:"@site/versioned_docs/version-v3.x.x/cards/button.md",sourceDirName:"cards",slug:"/cards/button",permalink:"/v3.x.x/cards/button",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:5,frontMatter:{title:"Button Card",sidebar_label:"Button",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Progress",permalink:"/v3.x.x/cards/progress"},next:{title:"Status",permalink:"/v3.x.x/cards/status"}},u={},d=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Callback:",id:"callback",level:4},{value:"Updaters:",id:"updaters",level:4}],p={toc:d},c="wrapper";function s(e){let{components:t,...a}=e;return(0,n.kt)(c,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{src:"/img//toggle-button-inactive.png",width:"280px",alt:"Button Card Preview"}),(0,n.kt)("br",null),(0,n.kt)("img",{src:"/img//toggle-button-active.png",width:"280px",alt:"Button Card Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"Button card adds a interactive toggle button to your dashboard. This provides you with a simple ",(0,n.kt)("inlineCode",{parentName:"p"},"true")," or ",(0,n.kt)("inlineCode",{parentName:"p"},"false")," input from your dashboard."),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"BUTTON_CARD")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"bool"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Button Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name)\n*/\nCard card1(&dashboard, BUTTON_CARD, "Test Button");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"callback"},"Callback:"),(0,n.kt)("p",null,"Button card requires a callback function which will be executed when we receive a input from our dashboard. In this example, we will use the ",(0,n.kt)("inlineCode",{parentName:"p"},"attachCallback")," function and provide a lambda function with a boolean argument."),(0,n.kt)("p",null,"In the case of button card, the value sent by your dashboard will be opposite of your current value. For Example: If your button is set to ",(0,n.kt)("inlineCode",{parentName:"p"},"false"),", then clicking that button on dashboard will trigger this callback with ",(0,n.kt)("inlineCode",{parentName:"p"},"true"),"."),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Note:")," You need to call the ",(0,n.kt)("inlineCode",{parentName:"p"},"update")," function and ",(0,n.kt)("inlineCode",{parentName:"p"},"sendUpdates")," immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/*\n We provide our attachCallback with a lambda function to handle incomming data\n `value` is the boolean sent from your dashboard\n*/\ncard1.attachCallback([&](bool value){\n Serial.println("[Card1] Button Callback Triggered: "+String((value)?"true":"false"));\n card1.update(value);\n dashboard.sendUpdates();\n});\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(true);\n")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(false);\n")),(0,n.kt)("br",null),(0,n.kt)("br",null))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c5beed23.6147c920.js b/assets/js/c5beed23.6147c920.js new file mode 100644 index 00000000..27765f49 --- /dev/null +++ b/assets/js/c5beed23.6147c920.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[1812],{5788:(e,t,a)=>{a.d(t,{Iu:()=>p,yg:()=>g});var r=a(1504);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?l(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function o(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},l=Object.keys(e);for(r=0;r<l.length;r++)a=l[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r<l.length;r++)a=l[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),d=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},p=function(e){var t=d(e.components);return r.createElement(u.Provider,{value:t},e.children)},c="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},y=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,u=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),c=d(a),y=n,g=c["".concat(u,".").concat(y)]||c[y]||s[y]||l;return a?r.createElement(g,i(i({ref:t},p),{},{components:a})):r.createElement(g,i({ref:t},p))}));function g(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,i=new Array(l);i[0]=y;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o[c]="string"==typeof e?e:n,i[1]=o;for(var d=2;d<l;d++)i[d]=a[d];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}y.displayName="MDXCreateElement"},8444:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>s,frontMatter:()=>l,metadata:()=>o,toc:()=>d});var r=a(5072),n=(a(1504),a(5788));const l={title:"Button Card",sidebar_label:"Button",sidebar_position:5},i=void 0,o={unversionedId:"cards/button",id:"version-v3.x.x/cards/button",title:"Button Card",description:"Preview:",source:"@site/versioned_docs/version-v3.x.x/cards/button.md",sourceDirName:"cards",slug:"/cards/button",permalink:"/v3.x.x/cards/button",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:5,frontMatter:{title:"Button Card",sidebar_label:"Button",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Progress",permalink:"/v3.x.x/cards/progress"},next:{title:"Status",permalink:"/v3.x.x/cards/status"}},u={},d=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Callback:",id:"callback",level:4},{value:"Updaters:",id:"updaters",level:4}],p={toc:d},c="wrapper";function s(e){let{components:t,...a}=e;return(0,n.yg)(c,(0,r.c)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.yg)("h4",{id:"preview"},"Preview:"),(0,n.yg)("img",{src:"/img//toggle-button-inactive.png",width:"280px",alt:"Button Card Preview"}),(0,n.yg)("br",null),(0,n.yg)("img",{src:"/img//toggle-button-active.png",width:"280px",alt:"Button Card Preview"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("p",null,"Button card adds a interactive toggle button to your dashboard. This provides you with a simple ",(0,n.yg)("inlineCode",{parentName:"p"},"true")," or ",(0,n.yg)("inlineCode",{parentName:"p"},"false")," input from your dashboard."),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"type"},"Type:"),(0,n.yg)("p",null,(0,n.yg)("inlineCode",{parentName:"p"},"BUTTON_CARD")),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"bool"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"initializer"},"Initializer:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Button Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name)\n*/\nCard card1(&dashboard, BUTTON_CARD, "Test Button");\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"callback"},"Callback:"),(0,n.yg)("p",null,"Button card requires a callback function which will be executed when we receive a input from our dashboard. In this example, we will use the ",(0,n.yg)("inlineCode",{parentName:"p"},"attachCallback")," function and provide a lambda function with a boolean argument."),(0,n.yg)("p",null,"In the case of button card, the value sent by your dashboard will be opposite of your current value. For Example: If your button is set to ",(0,n.yg)("inlineCode",{parentName:"p"},"false"),", then clicking that button on dashboard will trigger this callback with ",(0,n.yg)("inlineCode",{parentName:"p"},"true"),"."),(0,n.yg)("p",null,(0,n.yg)("strong",{parentName:"p"},"Note:")," You need to call the ",(0,n.yg)("inlineCode",{parentName:"p"},"update")," function and ",(0,n.yg)("inlineCode",{parentName:"p"},"sendUpdates")," immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/*\n We provide our attachCallback with a lambda function to handle incomming data\n `value` is the boolean sent from your dashboard\n*/\ncard1.attachCallback([&](bool value){\n Serial.println("[Card1] Button Callback Triggered: "+String((value)?"true":"false"));\n card1.update(value);\n dashboard.sendUpdates();\n});\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"updaters"},"Updaters:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(true);\n")),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(false);\n")),(0,n.yg)("br",null),(0,n.yg)("br",null))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c61243a5.102db904.js b/assets/js/c61243a5.102db904.js deleted file mode 100644 index 9d7ae28c..00000000 --- a/assets/js/c61243a5.102db904.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[1734],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>m});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?l(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function o(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},l=Object.keys(e);for(r=0;r<l.length;r++)a=l[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r<l.length;r++)a=l[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var c=r.createContext({}),s=function(e){var t=r.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},d=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},k=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,c=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),p=s(a),k=n,m=p["".concat(c,".").concat(k)]||p[k]||u[k]||l;return a?r.createElement(m,i(i({ref:t},d),{},{components:a})):r.createElement(m,i({ref:t},d))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,i=new Array(l);i[0]=k;var o={};for(var c in t)hasOwnProperty.call(t,c)&&(o[c]=t[c]);o.originalType=e,o[p]="string"==typeof e?e:n,i[1]=o;for(var s=2;s<l;s++)i[s]=a[s];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}k.displayName="MDXCreateElement"},9819:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>u,frontMatter:()=>l,metadata:()=>o,toc:()=>s});var r=a(7462),n=(a(7294),a(3905));const l={title:"Week Selector Card",sidebar_label:"Week Selector (Pro)",sidebar_position:10},i=void 0,o={unversionedId:"cards/week-selector",id:"cards/week-selector",title:"Week Selector Card",description:"This feature is available in DASH Pro only.",source:"@site/docs/cards/week-selector.md",sourceDirName:"cards",slug:"/cards/week-selector",permalink:"/next/cards/week-selector",draft:!1,tags:[],version:"current",sidebarPosition:10,frontMatter:{title:"Week Selector Card",sidebar_label:"Week Selector (Pro)",sidebar_position:10},sidebar:"tutorialSidebar",previous:{title:"Image (Pro)",permalink:"/next/cards/image"},next:{title:"Bar",permalink:"/next/charts/bar"}},c={},s=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Callback:",id:"callback",level:4},{value:"Updaters:",id:"updaters",level:4}],d={toc:s},p="wrapper";function u(e){let{components:t,...a}=e;return(0,n.kt)(p,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("div",{className:"pro-label"},(0,n.kt)("i",null,(0,n.kt)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/week-selector.png",width:"280px",alt:"Week Selector Card Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"Week selector card gives you a nice card in which days are selectable by users. This type of card is very useful in many scenarios. The output of the card is comma ",(0,n.kt)("inlineCode",{parentName:"p"},",")," separated string on days which were selected by the user."),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"WEEK_SELECTOR_CARD")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"String")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"char"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Energy Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name)\n*/\nCard card1(&dashboard, WEEK_SELECTOR_CARD, "Select Days");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"callback"},"Callback:"),(0,n.kt)("p",null,"Week selector card requires a callback function which will be called when we receive a input from our dashboard. In our setup block, we will be calling our ",(0,n.kt)("inlineCode",{parentName:"p"},"attachCallback")," function and provide a lambda (callback) function with a ",(0,n.kt)("inlineCode",{parentName:"p"},"const char*")," (character array) argument. Whenever a user selects a day, this callback will be triggered with a comma ",(0,n.kt)("inlineCode",{parentName:"p"},",")," separated list of days which indicate what was selected by user."),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Note:")," You need to call the ",(0,n.kt)("inlineCode",{parentName:"p"},"update")," function and ",(0,n.kt)("inlineCode",{parentName:"p"},"sendUpdates")," immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard and it will keep the card stuck in 'waiting' phase."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/*\n We provide our attachCallback with a lambda function to handle incomming data\n Example Value: mon,tue,wed,thu,fri,sat,sun\n*/\ncard1.attachCallback([&](const char* days){\n Serial.println("[Card1] Week Selector Triggered: "+String(days));\n card1.update(value);\n dashboard.sendUpdates();\n});\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("p",null,"You can also select or deselect values depending on your logic. You just need to supply the updater with a comma ",(0,n.kt)("inlineCode",{parentName:"p"},",")," separated list of days. Order of days in this string doesn't matter. Example: Supplying ",(0,n.kt)("inlineCode",{parentName:"p"},"tue,mon,thu")," will show ",(0,n.kt)("inlineCode",{parentName:"p"},"Monday, Tuesday & Thursday")," as selected on Week Selector Card."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(const char* value);\n")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c61243a5.8d1216f2.js b/assets/js/c61243a5.8d1216f2.js new file mode 100644 index 00000000..fb57c19b --- /dev/null +++ b/assets/js/c61243a5.8d1216f2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[6315],{5788:(e,a,r)=>{r.d(a,{Iu:()=>d,yg:()=>g});var t=r(1504);function n(e,a,r){return a in e?Object.defineProperty(e,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[a]=r,e}function l(e,a){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);a&&(t=t.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),r.push.apply(r,t)}return r}function i(e){for(var a=1;a<arguments.length;a++){var r=null!=arguments[a]?arguments[a]:{};a%2?l(Object(r),!0).forEach((function(a){n(e,a,r[a])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):l(Object(r)).forEach((function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(r,a))}))}return e}function o(e,a){if(null==e)return{};var r,t,n=function(e,a){if(null==e)return{};var r,t,n={},l=Object.keys(e);for(t=0;t<l.length;t++)r=l[t],a.indexOf(r)>=0||(n[r]=e[r]);return n}(e,a);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(t=0;t<l.length;t++)r=l[t],a.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var c=t.createContext({}),s=function(e){var a=t.useContext(c),r=a;return e&&(r="function"==typeof e?e(a):i(i({},a),e)),r},d=function(e){var a=s(e.components);return t.createElement(c.Provider,{value:a},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var a=e.children;return t.createElement(t.Fragment,{},a)}},y=t.forwardRef((function(e,a){var r=e.components,n=e.mdxType,l=e.originalType,c=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),p=s(r),y=n,g=p["".concat(c,".").concat(y)]||p[y]||u[y]||l;return r?t.createElement(g,i(i({ref:a},d),{},{components:r})):t.createElement(g,i({ref:a},d))}));function g(e,a){var r=arguments,n=a&&a.mdxType;if("string"==typeof e||n){var l=r.length,i=new Array(l);i[0]=y;var o={};for(var c in a)hasOwnProperty.call(a,c)&&(o[c]=a[c]);o.originalType=e,o[p]="string"==typeof e?e:n,i[1]=o;for(var s=2;s<l;s++)i[s]=r[s];return t.createElement.apply(null,i)}return t.createElement.apply(null,r)}y.displayName="MDXCreateElement"},4944:(e,a,r)=>{r.r(a),r.d(a,{assets:()=>c,contentTitle:()=>i,default:()=>u,frontMatter:()=>l,metadata:()=>o,toc:()=>s});var t=r(5072),n=(r(1504),r(5788));const l={title:"Week Selector Card",sidebar_label:"Week Selector (Pro)",sidebar_position:10},i=void 0,o={unversionedId:"cards/week-selector",id:"cards/week-selector",title:"Week Selector Card",description:"This feature is available in DASH Pro only.",source:"@site/docs/cards/week-selector.md",sourceDirName:"cards",slug:"/cards/week-selector",permalink:"/next/cards/week-selector",draft:!1,tags:[],version:"current",sidebarPosition:10,frontMatter:{title:"Week Selector Card",sidebar_label:"Week Selector (Pro)",sidebar_position:10},sidebar:"tutorialSidebar",previous:{title:"Image (Pro)",permalink:"/next/cards/image"},next:{title:"Bar",permalink:"/next/charts/bar"}},c={},s=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Callback:",id:"callback",level:4},{value:"Updaters:",id:"updaters",level:4}],d={toc:s},p="wrapper";function u(e){let{components:a,...r}=e;return(0,n.yg)(p,(0,t.c)({},d,r,{components:a,mdxType:"MDXLayout"}),(0,n.yg)("div",{className:"pro-label"},(0,n.yg)("i",null,(0,n.yg)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.yg)("h4",{id:"preview"},"Preview:"),(0,n.yg)("img",{className:"card-preview",src:"/img/v4/week-selector.png",width:"280px",alt:"Week Selector Card Preview"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("p",null,"Week selector card gives you a nice card in which days are selectable by users. This type of card is very useful in many scenarios. The output of the card is comma ",(0,n.yg)("inlineCode",{parentName:"p"},",")," separated string on days which were selected by the user."),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"type"},"Type:"),(0,n.yg)("p",null,(0,n.yg)("inlineCode",{parentName:"p"},"WEEK_SELECTOR_CARD")),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"String")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"char"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"initializer"},"Initializer:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Energy Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name)\n*/\nCard card1(&dashboard, WEEK_SELECTOR_CARD, "Select Days");\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"callback"},"Callback:"),(0,n.yg)("p",null,"Week selector card requires a callback function which will be called when we receive a input from our dashboard. In our setup block, we will be calling our ",(0,n.yg)("inlineCode",{parentName:"p"},"attachCallback")," function and provide a lambda (callback) function with a ",(0,n.yg)("inlineCode",{parentName:"p"},"const char*")," (character array) argument. Whenever a user selects a day, this callback will be triggered with a comma ",(0,n.yg)("inlineCode",{parentName:"p"},",")," separated list of days which indicate what was selected by user."),(0,n.yg)("p",null,(0,n.yg)("strong",{parentName:"p"},"Note:")," You need to call the ",(0,n.yg)("inlineCode",{parentName:"p"},"update")," function and ",(0,n.yg)("inlineCode",{parentName:"p"},"sendUpdates")," immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard and it will keep the card stuck in 'waiting' phase."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/*\n We provide our attachCallback with a lambda function to handle incomming data\n Example Value: mon,tue,wed,thu,fri,sat,sun\n*/\ncard1.attachCallback([&](const char* days){\n Serial.println("[Card1] Week Selector Triggered: "+String(days));\n card1.update(value);\n dashboard.sendUpdates();\n});\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"updaters"},"Updaters:"),(0,n.yg)("p",null,"You can also select or deselect values depending on your logic. You just need to supply the updater with a comma ",(0,n.yg)("inlineCode",{parentName:"p"},",")," separated list of days. Order of days in this string doesn't matter. Example: Supplying ",(0,n.yg)("inlineCode",{parentName:"p"},"tue,mon,thu")," will show ",(0,n.yg)("inlineCode",{parentName:"p"},"Monday, Tuesday & Thursday")," as selected on Week Selector Card."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(const char* value);\n")),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/cc0a2bf3.f7444807.js b/assets/js/cc0a2bf3.f6a1a6c8.js similarity index 51% rename from assets/js/cc0a2bf3.f7444807.js rename to assets/js/cc0a2bf3.f6a1a6c8.js index 6186eb5e..6d6843ed 100644 --- a/assets/js/cc0a2bf3.f7444807.js +++ b/assets/js/cc0a2bf3.f6a1a6c8.js @@ -1 +1 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[7789],{3905:(e,t,n)=>{n.d(t,{Zo:()=>l,kt:()=>b});var r=n(7294);function a(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(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),u=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},l=function(e){var t=u(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,l=c(e,["components","mdxType","originalType","parentName"]),p=u(n),d=a,b=p["".concat(s,".").concat(d)]||p[d]||f[d]||i;return n?r.createElement(b,o(o({ref:t},l),{},{components:n})):r.createElement(b,o({ref:t},l))}));function b(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=d;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c[p]="string"==typeof e?e:a,o[1]=c;for(var u=2;u<i;u++)o[u]=n[u];return r.createElement.apply(null,o)}return r.createElement.apply(null,n)}d.displayName="MDXCreateElement"},1765:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>f,frontMatter:()=>i,metadata:()=>c,toc:()=>u});var r=n(7462),a=(n(7294),n(3905));const i={title:"User Authentication",sidebar_label:"User Authentication",sidebar_position:1},o=void 0,c={unversionedId:"features/authentication",id:"features/authentication",title:"User Authentication",description:"ESP-DASH comes with basic HTTP authentication support. You can enable basic HTTP based user authentication to control who can view your dashboard using setAuthentication function.",source:"@site/docs/features/authentication.md",sourceDirName:"features",slug:"/features/authentication",permalink:"/next/features/authentication",draft:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"User Authentication",sidebar_label:"User Authentication",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Custom URI",permalink:"/next/features/custom-uri"},next:{title:"Disable Statistics",permalink:"/next/features/disable-stats"}},s={},u=[{value:"Example:",id:"example",level:4}],l={toc:u},p="wrapper";function f(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},l,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("img",{src:"/img/v4/authentication.png",width:"500px",alt:"Energy Card Preview"}),(0,a.kt)("br",null),(0,a.kt)("br",null),(0,a.kt)("p",null,"ESP-DASH comes with basic HTTP authentication support. You can enable basic HTTP based user authentication to control who can view your dashboard using ",(0,a.kt)("inlineCode",{parentName:"p"},"setAuthentication")," function."),(0,a.kt)("h4",{id:"example"},"Example:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cpp"},'dashboard.setAuthentication("username", "password");\n')))}f.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[7364],{5788:(e,t,n)=>{n.d(t,{Iu:()=>l,yg:()=>b});var r=n(1504);function a(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(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),u=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},l=function(e){var t=u(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,l=c(e,["components","mdxType","originalType","parentName"]),p=u(n),d=a,b=p["".concat(s,".").concat(d)]||p[d]||f[d]||i;return n?r.createElement(b,o(o({ref:t},l),{},{components:n})):r.createElement(b,o({ref:t},l))}));function b(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=d;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c[p]="string"==typeof e?e:a,o[1]=c;for(var u=2;u<i;u++)o[u]=n[u];return r.createElement.apply(null,o)}return r.createElement.apply(null,n)}d.displayName="MDXCreateElement"},228:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>f,frontMatter:()=>i,metadata:()=>c,toc:()=>u});var r=n(5072),a=(n(1504),n(5788));const i={title:"User Authentication",sidebar_label:"User Authentication",sidebar_position:1},o=void 0,c={unversionedId:"features/authentication",id:"features/authentication",title:"User Authentication",description:"ESP-DASH comes with basic HTTP authentication support. You can enable basic HTTP based user authentication to control who can view your dashboard using setAuthentication function.",source:"@site/docs/features/authentication.md",sourceDirName:"features",slug:"/features/authentication",permalink:"/next/features/authentication",draft:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"User Authentication",sidebar_label:"User Authentication",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Custom URI",permalink:"/next/features/custom-uri"},next:{title:"Disable Statistics",permalink:"/next/features/disable-stats"}},s={},u=[{value:"Example:",id:"example",level:4}],l={toc:u},p="wrapper";function f(e){let{components:t,...n}=e;return(0,a.yg)(p,(0,r.c)({},l,n,{components:t,mdxType:"MDXLayout"}),(0,a.yg)("img",{src:"/img/v4/authentication.png",width:"500px",alt:"Energy Card Preview"}),(0,a.yg)("br",null),(0,a.yg)("br",null),(0,a.yg)("p",null,"ESP-DASH comes with basic HTTP authentication support. You can enable basic HTTP based user authentication to control who can view your dashboard using ",(0,a.yg)("inlineCode",{parentName:"p"},"setAuthentication")," function."),(0,a.yg)("h4",{id:"example"},"Example:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-cpp"},'dashboard.setAuthentication("username", "password");\n')))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ccf30e44.8b9170a1.js b/assets/js/ccf30e44.2bc459af.js similarity index 69% rename from assets/js/ccf30e44.8b9170a1.js rename to assets/js/ccf30e44.2bc459af.js index 19d34811..9fd25a0d 100644 --- a/assets/js/ccf30e44.8b9170a1.js +++ b/assets/js/ccf30e44.2bc459af.js @@ -1 +1 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[9801],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>f});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function s(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function o(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var l=r.createContext({}),c=function(e){var t=r.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):s(s({},t),e)),a},p=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,l=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),u=c(a),m=n,f=u["".concat(l,".").concat(m)]||u[m]||d[m]||i;return a?r.createElement(f,s(s({ref:t},p),{},{components:a})):r.createElement(f,s({ref:t},p))}));function f(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,s=new Array(i);s[0]=m;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[u]="string"==typeof e?e:n,s[1]=o;for(var c=2;c<i;c++)s[c]=a[c];return r.createElement.apply(null,s)}return r.createElement.apply(null,a)}m.displayName="MDXCreateElement"},7244:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>d,frontMatter:()=>i,metadata:()=>o,toc:()=>c});var r=a(7462),n=(a(7294),a(3905));const i={title:"Statistics",sidebar_label:"Statistics",sidebar_position:8},s=void 0,o={unversionedId:"custom-statistics",id:"version-v4.x.x/custom-statistics",title:"Statistics",description:'ESP-DASH has a dedicated page called "Statistics" on the dashboard which contain key-value pairs of system statistics ( heap, flash usage etc. ) by default. With the launch of ESP-DASH V4, user defined statistics are now also part of the library! You can now add your own statitics to this page. \ud83c\udf89',source:"@site/versioned_docs/version-v4.x.x/custom-statistics.md",sourceDirName:".",slug:"/custom-statistics",permalink:"/custom-statistics",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:8,frontMatter:{title:"Statistics",sidebar_label:"Statistics",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"Tabs (Pro)",permalink:"/tabs"},next:{title:"Generic",permalink:"/cards/generic"}},l={},c=[{value:"Example",id:"example",level:3},{value:"Initializer:",id:"initializer",level:5},{value:"Update Value:",id:"update-value",level:5},{value:"Update both Key & Value:",id:"update-both-key--value",level:5}],p={toc:c},u="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(u,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("img",{src:"/img/v4/statistics.png",alt:"Concept Diagram",width:"940px"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,'ESP-DASH has a dedicated page called "Statistics" on the dashboard which contain key-value pairs of system statistics ( heap, flash usage etc. ) by default. With the launch of ESP-DASH V4, user defined statistics are now also part of the library! You can now add your own statitics to this page. \ud83c\udf89'),(0,n.kt)("p",null,(0,n.kt)("em",{parentName:"p"},"Note: System statistics can be turned off any time, you may look at ",(0,n.kt)("a",{parentName:"em",href:"/features/disable-stats"},"Disable Statistics")," page.")),(0,n.kt)("h3",{id:"example"},"Example"),(0,n.kt)("h5",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'Statistic stat1(&dashboard, "Key", "Value");\n')),(0,n.kt)("h5",{id:"update-value"},"Update Value:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'stat1.set("New Value");\n')),(0,n.kt)("h5",{id:"update-both-key--value"},"Update both Key & Value:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'stat1.set("New Key", "New Value");\n')))}d.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[3456],{5788:(e,t,a)=>{a.d(t,{Iu:()=>p,yg:()=>m});var r=a(1504);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function s(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function o(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var l=r.createContext({}),c=function(e){var t=r.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):s(s({},t),e)),a},p=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},y=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,l=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),u=c(a),y=n,m=u["".concat(l,".").concat(y)]||u[y]||d[y]||i;return a?r.createElement(m,s(s({ref:t},p),{},{components:a})):r.createElement(m,s({ref:t},p))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,s=new Array(i);s[0]=y;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[u]="string"==typeof e?e:n,s[1]=o;for(var c=2;c<i;c++)s[c]=a[c];return r.createElement.apply(null,s)}return r.createElement.apply(null,a)}y.displayName="MDXCreateElement"},1948:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>d,frontMatter:()=>i,metadata:()=>o,toc:()=>c});var r=a(5072),n=(a(1504),a(5788));const i={title:"Statistics",sidebar_label:"Statistics",sidebar_position:8},s=void 0,o={unversionedId:"custom-statistics",id:"version-v4.x.x/custom-statistics",title:"Statistics",description:'ESP-DASH has a dedicated page called "Statistics" on the dashboard which contain key-value pairs of system statistics ( heap, flash usage etc. ) by default. With the launch of ESP-DASH V4, user defined statistics are now also part of the library! You can now add your own statitics to this page. \ud83c\udf89',source:"@site/versioned_docs/version-v4.x.x/custom-statistics.md",sourceDirName:".",slug:"/custom-statistics",permalink:"/custom-statistics",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:8,frontMatter:{title:"Statistics",sidebar_label:"Statistics",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"Tabs (Pro)",permalink:"/tabs"},next:{title:"Generic",permalink:"/cards/generic"}},l={},c=[{value:"Example",id:"example",level:3},{value:"Initializer:",id:"initializer",level:5},{value:"Update Value:",id:"update-value",level:5},{value:"Update both Key & Value:",id:"update-both-key--value",level:5}],p={toc:c},u="wrapper";function d(e){let{components:t,...a}=e;return(0,n.yg)(u,(0,r.c)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.yg)("img",{src:"/img/v4/statistics.png",alt:"Concept Diagram",width:"940px"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("p",null,'ESP-DASH has a dedicated page called "Statistics" on the dashboard which contain key-value pairs of system statistics ( heap, flash usage etc. ) by default. With the launch of ESP-DASH V4, user defined statistics are now also part of the library! You can now add your own statitics to this page. \ud83c\udf89'),(0,n.yg)("p",null,(0,n.yg)("em",{parentName:"p"},"Note: System statistics can be turned off any time, you may look at ",(0,n.yg)("a",{parentName:"em",href:"/features/disable-stats"},"Disable Statistics")," page.")),(0,n.yg)("h3",{id:"example"},"Example"),(0,n.yg)("h5",{id:"initializer"},"Initializer:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'Statistic stat1(&dashboard, "Key", "Value");\n')),(0,n.yg)("h5",{id:"update-value"},"Update Value:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'stat1.set("New Value");\n')),(0,n.yg)("h5",{id:"update-both-key--value"},"Update both Key & Value:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'stat1.set("New Key", "New Value");\n')))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d1e64eb6.30c0cf76.js b/assets/js/d1e64eb6.a2903e62.js similarity index 63% rename from assets/js/d1e64eb6.30c0cf76.js rename to assets/js/d1e64eb6.a2903e62.js index 373b6b35..45860ea8 100644 --- a/assets/js/d1e64eb6.30c0cf76.js +++ b/assets/js/d1e64eb6.a2903e62.js @@ -1 +1 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[7166],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>m});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(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){n(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 l(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=a.createContext({}),c=function(e){var t=a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},p=function(e){var t=c(e.components);return a.createElement(s.Provider,{value:t},e.children)},u="mdxType",b={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=c(r),d=n,m=u["".concat(s,".").concat(d)]||u[d]||b[d]||i;return r?a.createElement(m,o(o({ref:t},p),{},{components:r})):a.createElement(m,o({ref:t},p))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,o=new Array(i);o[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:n,o[1]=l;for(var c=2;c<i;c++)o[c]=r[c];return a.createElement.apply(null,o)}return a.createElement.apply(null,r)}d.displayName="MDXCreateElement"},5699:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>b,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var a=r(7462),n=(r(7294),r(3905));const i={title:"Tabs",sidebar_label:"Tabs (Pro)",sidebar_position:7},o=void 0,l={unversionedId:"tabs",id:"version-v4.x.x/tabs",title:"Tabs",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v4.x.x/tabs.md",sourceDirName:".",slug:"/tabs",permalink:"/tabs",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:7,frontMatter:{title:"Tabs",sidebar_label:"Tabs (Pro)",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Examples",permalink:"/more-examples"},next:{title:"Statistics",permalink:"/custom-statistics"}},s={},c=[{value:"Example",id:"example",level:3},{value:"Initializer:",id:"initializer",level:5},{value:"Set Tab:",id:"set-tab",level:5}],p={toc:c},u="wrapper";function b(e){let{components:t,...r}=e;return(0,n.kt)(u,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("div",{className:"pro-label"},(0,n.kt)("i",null,(0,n.kt)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("img",{src:"/img/v4/tabs.png",alt:"Concept Diagram",width:"300px"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"Tabs in ESP-DASH allow you to create multiple pages to organize and sort your various cards & charts. This feature comes particularly useful when there are all a lot of widgets."),(0,n.kt)("p",null,"By default, ESP-DASH puts everything into 'Overview' Tab. If every card or chart is assigned a custom tab, then the dashboard will automatically hide the overview tab from sidebar."),(0,n.kt)("h3",{id:"example"},"Example"),(0,n.kt)("h5",{id:"initializer"},"Initializer:"),(0,n.kt)("p",null,"Initializer should be kept in global scope. ( ie. outside of any function in your sketch )"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'Tab tab1(&dashboard, "Custom Tab 1");\n')),(0,n.kt)("h5",{id:"set-tab"},"Set Tab:"),(0,n.kt)("p",null,"Once a tab has been created, you need to set the tab for relevant cards and charts using ",(0,n.kt)("inlineCode",{parentName:"p"},"setTab")," function of Card or Chart class. ",(0,n.kt)("inlineCode",{parentName:"p"},"setTab")," accepts a pointer to the tab which we just created."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.setTab(&tab1);\n")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"chart1.setTab(&tab1);\n")))}b.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[6736],{5788:(e,t,r)=>{r.d(t,{Iu:()=>p,yg:()=>y});var a=r(1504);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(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){n(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 l(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=a.createContext({}),c=function(e){var t=a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},p=function(e){var t=c(e.components);return a.createElement(s.Provider,{value:t},e.children)},u="mdxType",b={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=c(r),d=n,y=u["".concat(s,".").concat(d)]||u[d]||b[d]||i;return r?a.createElement(y,o(o({ref:t},p),{},{components:r})):a.createElement(y,o({ref:t},p))}));function y(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,o=new Array(i);o[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:n,o[1]=l;for(var c=2;c<i;c++)o[c]=r[c];return a.createElement.apply(null,o)}return a.createElement.apply(null,r)}d.displayName="MDXCreateElement"},2460:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>b,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var a=r(5072),n=(r(1504),r(5788));const i={title:"Tabs",sidebar_label:"Tabs (Pro)",sidebar_position:7},o=void 0,l={unversionedId:"tabs",id:"version-v4.x.x/tabs",title:"Tabs",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v4.x.x/tabs.md",sourceDirName:".",slug:"/tabs",permalink:"/tabs",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:7,frontMatter:{title:"Tabs",sidebar_label:"Tabs (Pro)",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Examples",permalink:"/more-examples"},next:{title:"Statistics",permalink:"/custom-statistics"}},s={},c=[{value:"Example",id:"example",level:3},{value:"Initializer:",id:"initializer",level:5},{value:"Set Tab:",id:"set-tab",level:5}],p={toc:c},u="wrapper";function b(e){let{components:t,...r}=e;return(0,n.yg)(u,(0,a.c)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,n.yg)("div",{className:"pro-label"},(0,n.yg)("i",null,(0,n.yg)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("img",{src:"/img/v4/tabs.png",alt:"Concept Diagram",width:"300px"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("p",null,"Tabs in ESP-DASH allow you to create multiple pages to organize and sort your various cards & charts. This feature comes particularly useful when there are all a lot of widgets."),(0,n.yg)("p",null,"By default, ESP-DASH puts everything into 'Overview' Tab. If every card or chart is assigned a custom tab, then the dashboard will automatically hide the overview tab from sidebar."),(0,n.yg)("h3",{id:"example"},"Example"),(0,n.yg)("h5",{id:"initializer"},"Initializer:"),(0,n.yg)("p",null,"Initializer should be kept in global scope. ( ie. outside of any function in your sketch )"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'Tab tab1(&dashboard, "Custom Tab 1");\n')),(0,n.yg)("h5",{id:"set-tab"},"Set Tab:"),(0,n.yg)("p",null,"Once a tab has been created, you need to set the tab for relevant cards and charts using ",(0,n.yg)("inlineCode",{parentName:"p"},"setTab")," function of Card or Chart class. ",(0,n.yg)("inlineCode",{parentName:"p"},"setTab")," accepts a pointer to the tab which we just created."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.setTab(&tab1);\n")),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"chart1.setTab(&tab1);\n")))}b.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d1f5632b.0050f615.js b/assets/js/d1f5632b.0050f615.js new file mode 100644 index 00000000..a4eecd66 --- /dev/null +++ b/assets/js/d1f5632b.0050f615.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[1336],{5788:(e,t,r)=>{r.d(t,{Iu:()=>c,yg:()=>b});var n=r(1504);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(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 o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?l(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):l(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},l=Object.keys(e);for(n=0;n<l.length;n++)r=l[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n<l.length;n++)r=l[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),u=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},c=function(e){var t=u(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},y=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,l=e.originalType,s=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),p=u(r),y=a,b=p["".concat(s,".").concat(y)]||p[y]||d[y]||l;return r?n.createElement(b,o(o({ref:t},c),{},{components:r})):n.createElement(b,o({ref:t},c))}));function b(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=r.length,o=new Array(l);o[0]=y;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[p]="string"==typeof e?e:a,o[1]=i;for(var u=2;u<l;u++)o[u]=r[u];return n.createElement.apply(null,o)}return n.createElement.apply(null,r)}y.displayName="MDXCreateElement"},7496:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>l,metadata:()=>i,toc:()=>u});var n=r(5072),a=(r(1504),r(5788));const l={title:"Push Button Card",sidebar_label:"Push Button (Pro)",sidebar_position:5},o=void 0,i={unversionedId:"cards/push-button",id:"cards/push-button",title:"Push Button Card",description:"This feature is available in DASH Pro only.",source:"@site/docs/cards/push-button.md",sourceDirName:"cards",slug:"/cards/push-button",permalink:"/next/cards/push-button",draft:!1,tags:[],version:"current",sidebarPosition:5,frontMatter:{title:"Push Button Card",sidebar_label:"Push Button (Pro)",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Toggle Button",permalink:"/next/cards/button"},next:{title:"Status",permalink:"/next/cards/status"}},s={},u=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Callback:",id:"callback",level:4}],c={toc:u},p="wrapper";function d(e){let{components:t,...r}=e;return(0,a.yg)(p,(0,n.c)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,a.yg)("div",{className:"pro-label"},(0,a.yg)("i",null,(0,a.yg)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,a.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,a.yg)("h4",{id:"preview"},"Preview:"),(0,a.yg)("img",{className:"card-preview",src:"/img/v4/push-button.png",width:"280px",alt:"Push Button Card Preview"}),(0,a.yg)("br",null),(0,a.yg)("br",null),(0,a.yg)("p",null,"Push button card adds a static button on your dashboard which has no state. Whenever a user clicks this button, it triggers a callback."),(0,a.yg)("br",null),(0,a.yg)("h4",{id:"type"},"Type:"),(0,a.yg)("p",null,(0,a.yg)("inlineCode",{parentName:"p"},"PUSH_BUTTON_CARD")),(0,a.yg)("br",null),(0,a.yg)("h4",{id:"initializer"},"Initializer:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Button Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name)\n*/\nCard card1(&dashboard, PUSH_BUTTON_CARD, "Push Button");\n')),(0,a.yg)("br",null),(0,a.yg)("h4",{id:"callback"},"Callback:"),(0,a.yg)("p",null,"Push button card will trigger a callback on every click by user, there is no need to update or ",(0,a.yg)("inlineCode",{parentName:"p"},"sendUpdates")," to dashboard because there is no state."),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-cpp"},'/*\n We provide our attachCallback with a lambda function to handle trigger\n*/\ncard1.attachCallback([&](){\n Serial.println("[Card1] Push Button Triggered");\n});\n')),(0,a.yg)("br",null),(0,a.yg)("br",null))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d1f5632b.c333653f.js b/assets/js/d1f5632b.c333653f.js deleted file mode 100644 index 772c4352..00000000 --- a/assets/js/d1f5632b.c333653f.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[727],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>h});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(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 l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),u=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},c=function(e){var t=u(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},b=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),p=u(r),b=a,h=p["".concat(s,".").concat(b)]||p[b]||d[b]||o;return r?n.createElement(h,l(l({ref:t},c),{},{components:r})):n.createElement(h,l({ref:t},c))}));function h(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,l=new Array(o);l[0]=b;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[p]="string"==typeof e?e:a,l[1]=i;for(var u=2;u<o;u++)l[u]=r[u];return n.createElement.apply(null,l)}return n.createElement.apply(null,r)}b.displayName="MDXCreateElement"},4726:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var n=r(7462),a=(r(7294),r(3905));const o={title:"Push Button Card",sidebar_label:"Push Button (Pro)",sidebar_position:5},l=void 0,i={unversionedId:"cards/push-button",id:"cards/push-button",title:"Push Button Card",description:"This feature is available in DASH Pro only.",source:"@site/docs/cards/push-button.md",sourceDirName:"cards",slug:"/cards/push-button",permalink:"/next/cards/push-button",draft:!1,tags:[],version:"current",sidebarPosition:5,frontMatter:{title:"Push Button Card",sidebar_label:"Push Button (Pro)",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Toggle Button",permalink:"/next/cards/button"},next:{title:"Status",permalink:"/next/cards/status"}},s={},u=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Callback:",id:"callback",level:4}],c={toc:u},p="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(p,(0,n.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("div",{className:"pro-label"},(0,a.kt)("i",null,(0,a.kt)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,a.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,a.kt)("h4",{id:"preview"},"Preview:"),(0,a.kt)("img",{className:"card-preview",src:"/img/v4/push-button.png",width:"280px",alt:"Push Button Card Preview"}),(0,a.kt)("br",null),(0,a.kt)("br",null),(0,a.kt)("p",null,"Push button card adds a static button on your dashboard which has no state. Whenever a user clicks this button, it triggers a callback."),(0,a.kt)("br",null),(0,a.kt)("h4",{id:"type"},"Type:"),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"PUSH_BUTTON_CARD")),(0,a.kt)("br",null),(0,a.kt)("h4",{id:"initializer"},"Initializer:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Button Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name)\n*/\nCard card1(&dashboard, PUSH_BUTTON_CARD, "Push Button");\n')),(0,a.kt)("br",null),(0,a.kt)("h4",{id:"callback"},"Callback:"),(0,a.kt)("p",null,"Push button card will trigger a callback on every click by user, there is no need to update or ",(0,a.kt)("inlineCode",{parentName:"p"},"sendUpdates")," to dashboard because there is no state."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cpp"},'/*\n We provide our attachCallback with a lambda function to handle trigger\n*/\ncard1.attachCallback([&](){\n Serial.println("[Card1] Push Button Triggered");\n});\n')),(0,a.kt)("br",null),(0,a.kt)("br",null))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d3c74fc5.b36b7d5b.js b/assets/js/d3c74fc5.45b630bb.js similarity index 78% rename from assets/js/d3c74fc5.b36b7d5b.js rename to assets/js/d3c74fc5.45b630bb.js index 501b5c1f..cb1026dc 100644 --- a/assets/js/d3c74fc5.b36b7d5b.js +++ b/assets/js/d3c74fc5.45b630bb.js @@ -1 +1 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[2599],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>m});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?s(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):s(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function o(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},s=Object.keys(e);for(a=0;a<s.length;a++)r=s[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(a=0;a<s.length;a++)r=s[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var l=a.createContext({}),c=function(e){var t=a.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},f=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,s=e.originalType,l=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),p=c(r),f=n,m=p["".concat(l,".").concat(f)]||p[f]||d[f]||s;return r?a.createElement(m,i(i({ref:t},u),{},{components:r})):a.createElement(m,i({ref:t},u))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var s=r.length,i=new Array(s);i[0]=f;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[p]="string"==typeof e?e:n,i[1]=o;for(var c=2;c<s;c++)i[c]=r[c];return a.createElement.apply(null,i)}return a.createElement.apply(null,r)}f.displayName="MDXCreateElement"},3808:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>s,metadata:()=>o,toc:()=>c});var a=r(7462),n=(r(7294),r(3905));const s={title:"Disable Statistics",sidebar_label:"Disable Statistics",sidebar_position:2},i=void 0,o={unversionedId:"features/disable-stats",id:"version-v4.x.x/features/disable-stats",title:"Disable Statistics",description:"You can disable system statistics by using setting false in ESPDash class constructor.",source:"@site/versioned_docs/version-v4.x.x/features/disable-stats.md",sourceDirName:"features",slug:"/features/disable-stats",permalink:"/features/disable-stats",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:2,frontMatter:{title:"Disable Statistics",sidebar_label:"Disable Statistics",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"User Authentication",permalink:"/features/authentication"},next:{title:"Toggle Animation (Pro)",permalink:"/features/chartanimations"}},l={},c=[{value:"Example:",id:"example",level:4},{value:"If no custom URI is defined (second parameter):",id:"if-no-custom-uri-is-defined-second-parameter",level:4},{value:"If using a using custom URI (third parameter):",id:"if-using-a-using-custom-uri-third-parameter",level:4}],u={toc:c},p="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(p,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"You can disable system statistics by using setting ",(0,n.kt)("inlineCode",{parentName:"p"},"false")," in ESPDash class constructor."),(0,n.kt)("h4",{id:"example"},"Example:"),(0,n.kt)("h4",{id:"if-no-custom-uri-is-defined-second-parameter"},"If no custom URI is defined (second parameter):"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"ESPDash dashboard(&server, false);\n")),(0,n.kt)("h4",{id:"if-using-a-using-custom-uri-third-parameter"},"If using a using custom URI (third parameter):"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'ESPDash dashbord(&server, "/", false);\n')),(0,n.kt)("p",null,"If you would like to completely disable and hide the statistics tab from the sidebar, please use the above example and make sure you don't have any ",(0,n.kt)("i",null,"custom statistics"),'. By doing so, it will automatically hide the "statistics" tab from sidebar.'))}d.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[3820],{5788:(e,t,r)=>{r.d(t,{Iu:()=>u,yg:()=>m});var a=r(1504);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?s(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):s(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function o(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},s=Object.keys(e);for(a=0;a<s.length;a++)r=s[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(a=0;a<s.length;a++)r=s[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var l=a.createContext({}),c=function(e){var t=a.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},f=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,s=e.originalType,l=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),p=c(r),f=n,m=p["".concat(l,".").concat(f)]||p[f]||d[f]||s;return r?a.createElement(m,i(i({ref:t},u),{},{components:r})):a.createElement(m,i({ref:t},u))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var s=r.length,i=new Array(s);i[0]=f;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[p]="string"==typeof e?e:n,i[1]=o;for(var c=2;c<s;c++)i[c]=r[c];return a.createElement.apply(null,i)}return a.createElement.apply(null,r)}f.displayName="MDXCreateElement"},1132:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>s,metadata:()=>o,toc:()=>c});var a=r(5072),n=(r(1504),r(5788));const s={title:"Disable Statistics",sidebar_label:"Disable Statistics",sidebar_position:2},i=void 0,o={unversionedId:"features/disable-stats",id:"version-v4.x.x/features/disable-stats",title:"Disable Statistics",description:"You can disable system statistics by using setting false in ESPDash class constructor.",source:"@site/versioned_docs/version-v4.x.x/features/disable-stats.md",sourceDirName:"features",slug:"/features/disable-stats",permalink:"/features/disable-stats",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:2,frontMatter:{title:"Disable Statistics",sidebar_label:"Disable Statistics",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"User Authentication",permalink:"/features/authentication"},next:{title:"Toggle Animation (Pro)",permalink:"/features/chartanimations"}},l={},c=[{value:"Example:",id:"example",level:4},{value:"If no custom URI is defined (second parameter):",id:"if-no-custom-uri-is-defined-second-parameter",level:4},{value:"If using a using custom URI (third parameter):",id:"if-using-a-using-custom-uri-third-parameter",level:4}],u={toc:c},p="wrapper";function d(e){let{components:t,...r}=e;return(0,n.yg)(p,(0,a.c)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.yg)("p",null,"You can disable system statistics by using setting ",(0,n.yg)("inlineCode",{parentName:"p"},"false")," in ESPDash class constructor."),(0,n.yg)("h4",{id:"example"},"Example:"),(0,n.yg)("h4",{id:"if-no-custom-uri-is-defined-second-parameter"},"If no custom URI is defined (second parameter):"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"ESPDash dashboard(&server, false);\n")),(0,n.yg)("h4",{id:"if-using-a-using-custom-uri-third-parameter"},"If using a using custom URI (third parameter):"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'ESPDash dashbord(&server, "/", false);\n')),(0,n.yg)("p",null,"If you would like to completely disable and hide the statistics tab from the sidebar, please use the above example and make sure you don't have any ",(0,n.yg)("i",null,"custom statistics"),'. By doing so, it will automatically hide the "statistics" tab from sidebar.'))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d4ae7331.011bf27f.js b/assets/js/d4ae7331.011bf27f.js new file mode 100644 index 00000000..00faeba7 --- /dev/null +++ b/assets/js/d4ae7331.011bf27f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[4292],{5788:(e,r,t)=>{t.d(r,{Iu:()=>s,yg:()=>g});var n=t(1504);function a(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function i(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function l(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?i(Object(t),!0).forEach((function(r){a(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function o(e,r){if(null==e)return{};var t,n,a=function(e,r){if(null==e)return{};var t,n,a={},i=Object.keys(e);for(n=0;n<i.length;n++)t=i[n],r.indexOf(t)>=0||(a[t]=e[t]);return a}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)t=i[n],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var c=n.createContext({}),p=function(e){var r=n.useContext(c),t=r;return e&&(t="function"==typeof e?e(r):l(l({},r),e)),t},s=function(e){var r=p(e.components);return n.createElement(c.Provider,{value:r},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var r=e.children;return n.createElement(n.Fragment,{},r)}},y=n.forwardRef((function(e,r){var t=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),u=p(t),y=a,g=u["".concat(c,".").concat(y)]||u[y]||d[y]||i;return t?n.createElement(g,l(l({ref:r},s),{},{components:t})):n.createElement(g,l({ref:r},s))}));function g(e,r){var t=arguments,a=r&&r.mdxType;if("string"==typeof e||a){var i=t.length,l=new Array(i);l[0]=y;var o={};for(var c in r)hasOwnProperty.call(r,c)&&(o[c]=r[c]);o.originalType=e,o[u]="string"==typeof e?e:a,l[1]=o;for(var p=2;p<i;p++)l[p]=t[p];return n.createElement.apply(null,l)}return n.createElement.apply(null,t)}y.displayName="MDXCreateElement"},468:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>c,contentTitle:()=>l,default:()=>d,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var n=t(5072),a=(t(1504),t(5788));const i={title:"Generic Card",sidebar_label:"Generic",sidebar_position:1},l=void 0,o={unversionedId:"cards/generic",id:"cards/generic",title:"Generic Card",description:"Preview:",source:"@site/docs/cards/generic.md",sourceDirName:"cards",slug:"/cards/generic",permalink:"/next/cards/generic",draft:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Generic Card",sidebar_label:"Generic",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Statistics",permalink:"/next/custom-statistics"},next:{title:"Temperature",permalink:"/next/cards/temperature"}},c={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],s={toc:p},u="wrapper";function d(e){let{components:r,...t}=e;return(0,a.yg)(u,(0,n.c)({},s,t,{components:r,mdxType:"MDXLayout"}),(0,a.yg)("h4",{id:"preview"},"Preview:"),(0,a.yg)("img",{className:"card-preview",src:"/img/v4/generic-card.png",width:"280px",alt:"Preview"}),(0,a.yg)("br",null),(0,a.yg)("br",null),(0,a.yg)("p",null,"Generic card is the 'fits-all-types' card, which you can use to display any kind of value. It's mostly used when you want to display numbers, strings etc which don't relate to any other card in the list."),(0,a.yg)("small",null,(0,a.yg)("b",null,"Note:")," If you can't find the card which you are looking for, you can always raise request for more cards on the repository by creating an issue."),(0,a.yg)("br",null),(0,a.yg)("h4",{id:"type"},"Type:"),(0,a.yg)("p",null,(0,a.yg)("inlineCode",{parentName:"p"},"GENERIC_CARD")),(0,a.yg)("br",null),(0,a.yg)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("inlineCode",{parentName:"li"},"int")),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("inlineCode",{parentName:"li"},"bool")),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("inlineCode",{parentName:"li"},"float")),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("inlineCode",{parentName:"li"},"String"))),(0,a.yg)("br",null),(0,a.yg)("h4",{id:"initializer"},"Initializer:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Generic Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )\n*/\nCard card1(&dashboard, GENERIC_CARD, "Generic1");\n')),(0,a.yg)("br",null),(0,a.yg)("h4",{id:"updaters"},"Updaters:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(bool value);\n")),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(float value);\n")),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")),(0,a.yg)("br",null),(0,a.yg)("br",null))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d4ae7331.c2ca3417.js b/assets/js/d4ae7331.c2ca3417.js deleted file mode 100644 index e303424d..00000000 --- a/assets/js/d4ae7331.c2ca3417.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[7522],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>y});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}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 l(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 o(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(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)&&(a[r]=e[r])}return a}var c=n.createContext({}),p=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},s=function(e){var t=p(e.components);return n.createElement(c.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),u=p(r),m=a,y=u["".concat(c,".").concat(m)]||u[m]||d[m]||i;return r?n.createElement(y,l(l({ref:t},s),{},{components:r})):n.createElement(y,l({ref:t},s))}));function y(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,l=new Array(i);l[0]=m;var o={};for(var c in t)hasOwnProperty.call(t,c)&&(o[c]=t[c]);o.originalType=e,o[u]="string"==typeof e?e:a,l[1]=o;for(var p=2;p<i;p++)l[p]=r[p];return n.createElement.apply(null,l)}return n.createElement.apply(null,r)}m.displayName="MDXCreateElement"},5632:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>d,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var n=r(7462),a=(r(7294),r(3905));const i={title:"Generic Card",sidebar_label:"Generic",sidebar_position:1},l=void 0,o={unversionedId:"cards/generic",id:"cards/generic",title:"Generic Card",description:"Preview:",source:"@site/docs/cards/generic.md",sourceDirName:"cards",slug:"/cards/generic",permalink:"/next/cards/generic",draft:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Generic Card",sidebar_label:"Generic",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Statistics",permalink:"/next/custom-statistics"},next:{title:"Temperature",permalink:"/next/cards/temperature"}},c={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],s={toc:p},u="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(u,(0,n.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h4",{id:"preview"},"Preview:"),(0,a.kt)("img",{className:"card-preview",src:"/img/v4/generic-card.png",width:"280px",alt:"Preview"}),(0,a.kt)("br",null),(0,a.kt)("br",null),(0,a.kt)("p",null,"Generic card is the 'fits-all-types' card, which you can use to display any kind of value. It's mostly used when you want to display numbers, strings etc which don't relate to any other card in the list."),(0,a.kt)("small",null,(0,a.kt)("b",null,"Note:")," If you can't find the card which you are looking for, you can always raise request for more cards on the repository by creating an issue."),(0,a.kt)("br",null),(0,a.kt)("h4",{id:"type"},"Type:"),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"GENERIC_CARD")),(0,a.kt)("br",null),(0,a.kt)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"int")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"bool")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"float")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"String"))),(0,a.kt)("br",null),(0,a.kt)("h4",{id:"initializer"},"Initializer:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Generic Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )\n*/\nCard card1(&dashboard, GENERIC_CARD, "Generic1");\n')),(0,a.kt)("br",null),(0,a.kt)("h4",{id:"updaters"},"Updaters:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(bool value);\n")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(float value);\n")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")),(0,a.kt)("br",null),(0,a.kt)("br",null))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d4f5e55a.1d38b655.js b/assets/js/d4f5e55a.7b59a5e0.js similarity index 56% rename from assets/js/d4f5e55a.1d38b655.js rename to assets/js/d4f5e55a.7b59a5e0.js index 8923e6a8..0a0e3d46 100644 --- a/assets/js/d4f5e55a.1d38b655.js +++ b/assets/js/d4f5e55a.7b59a5e0.js @@ -1 +1 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[3535],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>v});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?s(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):s(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},s=Object.keys(e);for(a=0;a<s.length;a++)r=s[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(a=0;a<s.length;a++)r=s[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var o=a.createContext({}),u=function(e){var t=a.useContext(o),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},d=function(e){var t=u(e.components);return a.createElement(o.Provider,{value:t},e.children)},p="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,s=e.originalType,o=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),p=u(r),m=n,v=p["".concat(o,".").concat(m)]||p[m]||c[m]||s;return r?a.createElement(v,i(i({ref:t},d),{},{components:r})):a.createElement(v,i({ref:t},d))}));function v(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var s=r.length,i=new Array(s);i[0]=m;var l={};for(var o in t)hasOwnProperty.call(t,o)&&(l[o]=t[o]);l.originalType=e,l[p]="string"==typeof e?e:n,i[1]=l;for(var u=2;u<s;u++)i[u]=r[u];return a.createElement.apply(null,i)}return a.createElement.apply(null,r)}m.displayName="MDXCreateElement"},1535:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>o,contentTitle:()=>i,default:()=>c,frontMatter:()=>s,metadata:()=>l,toc:()=>u});var a=r(7462),n=(r(7294),r(3905));const s={title:"Status Card",sidebar_label:"Status",sidebar_position:5},i=void 0,l={unversionedId:"cards/status",id:"version-v3.x.x/cards/status",title:"Status Card",description:"Preview:",source:"@site/versioned_docs/version-v3.x.x/cards/status.md",sourceDirName:"cards",slug:"/cards/status",permalink:"/v3.x.x/cards/status",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:5,frontMatter:{title:"Status Card",sidebar_label:"Status",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Button",permalink:"/v3.x.x/cards/button"},next:{title:"Slider",permalink:"/v3.x.x/cards/slider"}},o={},u=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Valid Statuses:",id:"valid-statuses",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],d={toc:u},p="wrapper";function c(e){let{components:t,...r}=e;return(0,n.kt)(p,(0,a.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{src:"/img//status-card-idle.png",width:"280px",alt:"Preview"}),(0,n.kt)("img",{src:"/img//status-card-success.png",width:"280px",alt:"Preview"}),(0,n.kt)("img",{src:"/img//status-card-warning.png",width:"280px",alt:"Preview"}),(0,n.kt)("img",{src:"/img//status-card-danger.png",width:"280px",alt:"Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"As it's name suggests, status card is used to display some kind of status on your dashboard. It can show 4 different kinds of status along with a short message."),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"STATUS_CARD")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"String"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-statuses"},"Valid Statuses:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},'"success"')," - Green"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},'"danger"')," - Red"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},'"warning"')," - Yellow"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},'"idle"')," - Grey")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Status Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* status (optional) )\n*/\nCard card1(&dashboard, STATUS_CARD, "Test Status", "success");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("p",null,"Status card updater allows you to set a message:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'card1.update("message");\n')),(0,n.kt)("p",null,"Or, message + status at the same time:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'card1.update("Message", "success");\n')))}c.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[7956],{5788:(e,t,r)=>{r.d(t,{Iu:()=>d,yg:()=>y});var a=r(1504);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?s(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):s(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},s=Object.keys(e);for(a=0;a<s.length;a++)r=s[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(a=0;a<s.length;a++)r=s[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var o=a.createContext({}),u=function(e){var t=a.useContext(o),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},d=function(e){var t=u(e.components);return a.createElement(o.Provider,{value:t},e.children)},p="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},g=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,s=e.originalType,o=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),p=u(r),g=n,y=p["".concat(o,".").concat(g)]||p[g]||c[g]||s;return r?a.createElement(y,i(i({ref:t},d),{},{components:r})):a.createElement(y,i({ref:t},d))}));function y(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var s=r.length,i=new Array(s);i[0]=g;var l={};for(var o in t)hasOwnProperty.call(t,o)&&(l[o]=t[o]);l.originalType=e,l[p]="string"==typeof e?e:n,i[1]=l;for(var u=2;u<s;u++)i[u]=r[u];return a.createElement.apply(null,i)}return a.createElement.apply(null,r)}g.displayName="MDXCreateElement"},2928:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>o,contentTitle:()=>i,default:()=>c,frontMatter:()=>s,metadata:()=>l,toc:()=>u});var a=r(5072),n=(r(1504),r(5788));const s={title:"Status Card",sidebar_label:"Status",sidebar_position:5},i=void 0,l={unversionedId:"cards/status",id:"version-v3.x.x/cards/status",title:"Status Card",description:"Preview:",source:"@site/versioned_docs/version-v3.x.x/cards/status.md",sourceDirName:"cards",slug:"/cards/status",permalink:"/v3.x.x/cards/status",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:5,frontMatter:{title:"Status Card",sidebar_label:"Status",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Button",permalink:"/v3.x.x/cards/button"},next:{title:"Slider",permalink:"/v3.x.x/cards/slider"}},o={},u=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Valid Statuses:",id:"valid-statuses",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],d={toc:u},p="wrapper";function c(e){let{components:t,...r}=e;return(0,n.yg)(p,(0,a.c)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,n.yg)("h4",{id:"preview"},"Preview:"),(0,n.yg)("img",{src:"/img//status-card-idle.png",width:"280px",alt:"Preview"}),(0,n.yg)("img",{src:"/img//status-card-success.png",width:"280px",alt:"Preview"}),(0,n.yg)("img",{src:"/img//status-card-warning.png",width:"280px",alt:"Preview"}),(0,n.yg)("img",{src:"/img//status-card-danger.png",width:"280px",alt:"Preview"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("p",null,"As it's name suggests, status card is used to display some kind of status on your dashboard. It can show 4 different kinds of status along with a short message."),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"type"},"Type:"),(0,n.yg)("p",null,(0,n.yg)("inlineCode",{parentName:"p"},"STATUS_CARD")),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"String"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-statuses"},"Valid Statuses:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},'"success"')," - Green"),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},'"danger"')," - Red"),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},'"warning"')," - Yellow"),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},'"idle"')," - Grey")),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"initializer"},"Initializer:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Status Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* status (optional) )\n*/\nCard card1(&dashboard, STATUS_CARD, "Test Status", "success");\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"updaters"},"Updaters:"),(0,n.yg)("p",null,"Status card updater allows you to set a message:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'card1.update("message");\n')),(0,n.yg)("p",null,"Or, message + status at the same time:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'card1.update("Message", "success");\n')))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d523083d.6925865b.js b/assets/js/d523083d.6925865b.js new file mode 100644 index 00000000..fb23babb --- /dev/null +++ b/assets/js/d523083d.6925865b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[516],{5788:(e,t,r)=>{r.d(t,{Iu:()=>u,yg:()=>d});var n=r(1504);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}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 o(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 l(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(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)&&(a[r]=e[r])}return a}var s=n.createContext({}),c=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=c(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},y=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=c(r),y=a,d=p["".concat(s,".").concat(y)]||p[y]||f[y]||i;return r?n.createElement(d,o(o({ref:t},u),{},{components:r})):n.createElement(d,o({ref:t},u))}));function d(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=y;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:a,o[1]=l;for(var c=2;c<i;c++)o[c]=r[c];return n.createElement.apply(null,o)}return n.createElement.apply(null,r)}y.displayName="MDXCreateElement"},8156:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>f,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var n=r(5072),a=(r(1504),r(5788));const i={title:"Toggle Animation",sidebar_label:"Toggle Animation (Pro)",sidebar_position:3},o=void 0,l={unversionedId:"features/chartanimations",id:"version-v4.x.x/features/chartanimations",title:"Toggle Animation",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v4.x.x/features/chartanimations.md",sourceDirName:"features",slug:"/features/chartanimations",permalink:"/features/chartanimations",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:3,frontMatter:{title:"Toggle Animation",sidebar_label:"Toggle Animation (Pro)",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Disable Statistics",permalink:"/features/disable-stats"},next:{title:"Custom Title (Pro)",permalink:"/features/title"}},s={},c=[{value:"Usage:",id:"usage",level:4},{value:"To Disble:",id:"to-disble",level:5},{value:"To Enable:",id:"to-enable",level:5}],u={toc:c},p="wrapper";function f(e){let{components:t,...r}=e;return(0,a.yg)(p,(0,n.c)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,a.yg)("div",{className:"pro-label"},(0,a.yg)("i",null,(0,a.yg)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,a.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,a.yg)("br",null),(0,a.yg)("p",null,"You can enable/disable chart animations with ease using the ",(0,a.yg)("inlineCode",{parentName:"p"},"setChartAnimations")," function of ESPDash class. This is particularly helpful if you are updating your charts at an very fast pace."),(0,a.yg)("p",null,(0,a.yg)("em",{parentName:"p"},"Note: Chart animations are enabled by default.")),(0,a.yg)("h4",{id:"usage"},"Usage:"),(0,a.yg)("p",null,"You can put this function anywhere in your setup block:"),(0,a.yg)("h5",{id:"to-disble"},"To Disble:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-cpp"},"dashboard.setChartAnimations(false); // Disable Chart Animations\n")),(0,a.yg)("h5",{id:"to-enable"},"To Enable:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-cpp"},"dashboard.setChartAnimations(true); // Enable Chart Animations\n")))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d523083d.6fa9b1dd.js b/assets/js/d523083d.6fa9b1dd.js deleted file mode 100644 index 81798611..00000000 --- a/assets/js/d523083d.6fa9b1dd.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[9094],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>m});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}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 o(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 l(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(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)&&(a[r]=e[r])}return a}var s=n.createContext({}),c=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=c(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=c(r),d=a,m=p["".concat(s,".").concat(d)]||p[d]||f[d]||i;return r?n.createElement(m,o(o({ref:t},u),{},{components:r})):n.createElement(m,o({ref:t},u))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:a,o[1]=l;for(var c=2;c<i;c++)o[c]=r[c];return n.createElement.apply(null,o)}return n.createElement.apply(null,r)}d.displayName="MDXCreateElement"},1741:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>f,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var n=r(7462),a=(r(7294),r(3905));const i={title:"Toggle Animation",sidebar_label:"Toggle Animation (Pro)",sidebar_position:3},o=void 0,l={unversionedId:"features/chartanimations",id:"version-v4.x.x/features/chartanimations",title:"Toggle Animation",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v4.x.x/features/chartanimations.md",sourceDirName:"features",slug:"/features/chartanimations",permalink:"/features/chartanimations",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:3,frontMatter:{title:"Toggle Animation",sidebar_label:"Toggle Animation (Pro)",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Disable Statistics",permalink:"/features/disable-stats"},next:{title:"Custom Title (Pro)",permalink:"/features/title"}},s={},c=[{value:"Usage:",id:"usage",level:4},{value:"To Disble:",id:"to-disble",level:5},{value:"To Enable:",id:"to-enable",level:5}],u={toc:c},p="wrapper";function f(e){let{components:t,...r}=e;return(0,a.kt)(p,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("div",{className:"pro-label"},(0,a.kt)("i",null,(0,a.kt)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,a.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,a.kt)("br",null),(0,a.kt)("p",null,"You can enable/disable chart animations with ease using the ",(0,a.kt)("inlineCode",{parentName:"p"},"setChartAnimations")," function of ESPDash class. This is particularly helpful if you are updating your charts at an very fast pace."),(0,a.kt)("p",null,(0,a.kt)("em",{parentName:"p"},"Note: Chart animations are enabled by default.")),(0,a.kt)("h4",{id:"usage"},"Usage:"),(0,a.kt)("p",null,"You can put this function anywhere in your setup block:"),(0,a.kt)("h5",{id:"to-disble"},"To Disble:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cpp"},"dashboard.setChartAnimations(false); // Disable Chart Animations\n")),(0,a.kt)("h5",{id:"to-enable"},"To Enable:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cpp"},"dashboard.setChartAnimations(true); // Enable Chart Animations\n")))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d589d3a7.0f7bf210.js b/assets/js/d589d3a7.658b36d3.js similarity index 57% rename from assets/js/d589d3a7.0f7bf210.js rename to assets/js/d589d3a7.658b36d3.js index 580d1d6f..0af42c79 100644 --- a/assets/js/d589d3a7.0f7bf210.js +++ b/assets/js/d589d3a7.658b36d3.js @@ -1 +1 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[7162],{3905:(e,n,t)=>{t.d(n,{Zo:()=>c,kt:()=>m});var a=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function l(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?i(Object(t),!0).forEach((function(n){r(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function s(e,n){if(null==e)return{};var t,a,r=function(e,n){if(null==e)return{};var t,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)t=i[a],n.indexOf(t)>=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)t=i[a],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var o=a.createContext({}),d=function(e){var n=a.useContext(o),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},c=function(e){var n=d(e.components);return a.createElement(o.Provider,{value:n},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},h=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,o=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),p=d(t),h=r,m=p["".concat(o,".").concat(h)]||p[h]||u[h]||i;return t?a.createElement(m,l(l({ref:n},c),{},{components:t})):a.createElement(m,l({ref:n},c))}));function m(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,l=new Array(i);l[0]=h;var s={};for(var o in n)hasOwnProperty.call(n,o)&&(s[o]=n[o]);s.originalType=e,s[p]="string"==typeof e?e:r,l[1]=s;for(var d=2;d<i;d++)l[d]=t[d];return a.createElement.apply(null,l)}return a.createElement.apply(null,t)}h.displayName="MDXCreateElement"},9390:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>o,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>d});var a=t(7462),r=(t(7294),t(3905));const i={title:"Getting Started",sidebar_label:"Getting Started",sidebar_position:4},l=void 0,s={unversionedId:"getting-started",id:"getting-started",title:"Getting Started",description:"To get started with ESP-DASH, we will be creating our basic example step by step and learn what each setup does:",source:"@site/docs/getting-started.md",sourceDirName:".",slug:"/getting-started",permalink:"/next/getting-started",draft:!1,tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Getting Started",sidebar_label:"Getting Started",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Installation",permalink:"/next/installation"},next:{title:"Examples",permalink:"/next/more-examples"}},o={},d=[{value:"Part 1: Include Dependencies",id:"part-1-include-dependencies",level:4},{value:"Part 2: Create AsyncWebServer Instance",id:"part-2-create-asyncwebserver-instance",level:4},{value:"Part 3: Attach ESP-DASH Instance",id:"part-3-attach-esp-dash-instance",level:4},{value:"Part 4: Create Cards",id:"part-4-create-cards",level:4},{value:"Part 5: Setup Block",id:"part-5-setup-block",level:4},{value:"Part 5: Loop Block",id:"part-5-loop-block",level:4},{value:"1. Updating Card Values",id:"1-updating-card-values",level:5},{value:"2. Sending updates to our Dashboard",id:"2-sending-updates-to-our-dashboard",level:5},{value:"Complete Loop Block:",id:"complete-loop-block",level:5},{value:"Final Code",id:"final-code",level:3}],c={toc:d},p="wrapper";function u(e){let{components:n,...t}=e;return(0,r.kt)(p,(0,a.Z)({},c,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"To get started with ESP-DASH, we will be creating our ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/ayushsharma82/ESP-DASH/tree/master/examples/Basic"},"basic")," example step by step and learn what each setup does:"),(0,r.kt)("br",null),(0,r.kt)("h4",{id:"part-1-include-dependencies"},"Part 1: Include Dependencies"),(0,r.kt)("p",null,"We have used conditional compilation in this part therefore the code will work for both ESP8266 & ESP32."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cpp"},"#include <Arduino.h>\n#if defined(ESP8266)\n /* ESP8266 Dependencies */\n #include <ESP8266WiFi.h>\n #include <ESPAsyncTCP.h>\n #include <ESPAsyncWebServer.h>\n#elif defined(ESP32)\n /* ESP32 Dependencies */\n #include <WiFi.h>\n #include <AsyncTCP.h>\n #include <ESPAsyncWebServer.h>\n#endif\n#include <ESPDash.h>\n")),(0,r.kt)("br",null),(0,r.kt)("h4",{id:"part-2-create-asyncwebserver-instance"},"Part 2: Create AsyncWebServer Instance"),(0,r.kt)("p",null,'Create an AsyncWebServer instance on default "80" port.'),(0,r.kt)("i",null,"Note: You are not restricted to a single dashboard. You can host as many dashboards as you want on multiple ports."),(0,r.kt)("br",null),(0,r.kt)("br",null),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cpp"},"/* Start Webserver */\nAsyncWebServer server(80);\n")),(0,r.kt)("br",null),(0,r.kt)("h4",{id:"part-3-attach-esp-dash-instance"},"Part 3: Attach ESP-DASH Instance"),(0,r.kt)("p",null,"Pass the AsyncWebServer instance to ESPDash's instance. Internally the ESPDash will hook to AsyncWebServer for handling all the networking tasks."),(0,r.kt)("i",null,"Note: You can still use the same AsyncWebServer instance for other tasks."),(0,r.kt)("br",null),(0,r.kt)("br",null),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cpp"},"/* Attach ESP-DASH to AsyncWebServer */\nESPDash dashboard(&server); \n")),(0,r.kt)("br",null),(0,r.kt)("h4",{id:"part-4-create-cards"},"Part 4: Create Cards"),(0,r.kt)("p",null,"In this step, we will creating ESP-DASH cards and passing our dasboard instance as a first argument so that they can add / remove themselves."),(0,r.kt)("p",null,(0,r.kt)("em",{parentName:"p"},"After we are done with this guide, Please take a look at Cards section to know more about the types of cards available to us.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Dashboard Cards \n Format - (Dashboard Instance, Card Type, Card Name, Card Symbol(optional) )\n*/\nCard temperature(&dashboard, TEMPERATURE_CARD, "Temperature", "\xb0C");\nCard humidity(&dashboard, HUMIDITY_CARD, "Humidity", "%");\n')),(0,r.kt)("br",null),(0,r.kt)("h4",{id:"part-5-setup-block"},"Part 5: Setup Block"),(0,r.kt)("p",null,"In our setup block, we will be adding the usual WiFi connectivity stuff and then start our AsyncWebServer with ",(0,r.kt)("inlineCode",{parentName:"p"},"server.begin();"),"."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cpp"},'void setup() {\n Serial.begin(115200);\n\n /* Connect WiFi */\n WiFi.mode(WIFI_STA);\n WiFi.begin("ssid", "password");\n if (WiFi.waitForConnectResult() != WL_CONNECTED) {\n Serial.printf("WiFi Failed!\\n");\n return;\n }\n Serial.print("IP Address: ");\n Serial.println(WiFi.localIP());\n\n /* Start AsyncWebServer */\n server.begin();\n}\n')),(0,r.kt)("br",null),(0,r.kt)("h4",{id:"part-5-loop-block"},"Part 5: Loop Block"),(0,r.kt)("p",null,"In our loop block, we will be doing 2 things:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Updating card values"),(0,r.kt)("li",{parentName:"ol"},"Sending updates to our dashboard")),(0,r.kt)("h5",{id:"1-updating-card-values"},"1. Updating Card Values"),(0,r.kt)("p",null,"Remember the 'Cards' we created in 4th part? We will now access those cards by their variable and update them using the ",(0,r.kt)("inlineCode",{parentName:"p"},"update")," function which is provided with our card's class:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cpp"},"temperature.update((int)random(0, 50));\n")),(0,r.kt)("h5",{id:"2-sending-updates-to-our-dashboard"},"2. Sending updates to our Dashboard"),(0,r.kt)("p",null,"Once we have updated values of our card(s), we will call the ",(0,r.kt)("inlineCode",{parentName:"p"},"sendUpdates()")," function of our dashboard instance and it will send new card values to every connected client in real time."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cpp"},"dashboard.sendUpdates();\n")),(0,r.kt)("p",null,(0,r.kt)("em",{parentName:"p"},"Technically speaking, You can call these functions anywhere in your sketch, but for demonstration purposes we have called them in our loop block.")),(0,r.kt)("h5",{id:"complete-loop-block"},"Complete Loop Block:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cpp"},"void loop() {\n /* Update Card Values */\n temperature.update((int)random(0, 50));\n humidity.update((int)random(0, 100));\n\n /* Send Updates to our Dashboard (realtime) */\n dashboard.sendUpdates();\n\n /* \n Delay is just for demonstration purposes in this example,\n Replace this code with 'millis interval' in your final project.\n */\n delay(3000);\n}\n")),(0,r.kt)("br",null),(0,r.kt)("h3",{id:"final-code"},"Final Code"),(0,r.kt)("p",null,"That's it! Now we can just upload this sketch to our MCU and access the dashboard via it's IP address. ( Make sure to change the ",(0,r.kt)("inlineCode",{parentName:"p"},"ssid")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"password")," in our sketch according to your Access Point )"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cpp"},'/*\n -----------------------\n ESPDASH - Basic Example\n -----------------------\n\n Skill Level: Intermediate\n\n In this example we will be creating a basic dashboard which consists \n of some cards and then update them in realtime ( at 3s interval ).\n\n Github: https://github.com/ayushsharma82/ESP-DASH\n WiKi: https://ayushsharma82.github.io/ESP-DASH/\n\n Works with both ESP8266 & ESP32\n*/\n\n#include <Arduino.h>\n#if defined(ESP8266)\n /* ESP8266 Dependencies */\n #include <ESP8266WiFi.h>\n #include <ESPAsyncTCP.h>\n #include <ESPAsyncWebServer.h>\n#elif defined(ESP32)\n /* ESP32 Dependencies */\n #include <WiFi.h>\n #include <AsyncTCP.h>\n #include <ESPAsyncWebServer.h>\n#endif\n#include <ESPDash.h>\n\n\n/* Your WiFi Credentials */\nconst char* ssid = ""; // SSID\nconst char* password = ""; // Password\n\n/* Start Webserver */\nAsyncWebServer server(80);\n\n/* Attach ESP-DASH to AsyncWebServer */\nESPDash dashboard(&server); \n\n/* \n Dashboard Cards \n Format - (Dashboard Instance, Card Type, Card Name, Card Symbol(optional) )\n*/\nCard temperature(&dashboard, TEMPERATURE_CARD, "Temperature", "\xb0C");\nCard humidity(&dashboard, HUMIDITY_CARD, "Humidity", "%");\n\n\nvoid setup() {\n Serial.begin(115200);\n\n /* Connect WiFi */\n WiFi.mode(WIFI_STA);\n WiFi.begin(ssid, password);\n if (WiFi.waitForConnectResult() != WL_CONNECTED) {\n Serial.printf("WiFi Failed!\\n");\n return;\n }\n Serial.print("IP Address: ");\n Serial.println(WiFi.localIP());\n\n /* Start AsyncWebServer */\n server.begin();\n}\n\nvoid loop() {\n /* Update Card Values */\n temperature.update((int)random(0, 50));\n humidity.update((int)random(0, 100));\n\n /* Send Updates to our Dashboard (realtime) */\n dashboard.sendUpdates();\n\n /* \n Delay is just for demonstration purposes in this example,\n Replace this code with \'millis interval\' in your final project.\n */\n delay(3000);\n}\n')))}u.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[4840],{5788:(e,n,a)=>{a.d(n,{Iu:()=>c,yg:()=>g});var t=a(1504);function r(e,n,a){return n in e?Object.defineProperty(e,n,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[n]=a,e}function i(e,n){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),a.push.apply(a,t)}return a}function l(e){for(var n=1;n<arguments.length;n++){var a=null!=arguments[n]?arguments[n]:{};n%2?i(Object(a),!0).forEach((function(n){r(e,n,a[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(a,n))}))}return e}function s(e,n){if(null==e)return{};var a,t,r=function(e,n){if(null==e)return{};var a,t,r={},i=Object.keys(e);for(t=0;t<i.length;t++)a=i[t],n.indexOf(a)>=0||(r[a]=e[a]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t<i.length;t++)a=i[t],n.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var o=t.createContext({}),d=function(e){var n=t.useContext(o),a=n;return e&&(a="function"==typeof e?e(n):l(l({},n),e)),a},c=function(e){var n=d(e.components);return t.createElement(o.Provider,{value:n},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var n=e.children;return t.createElement(t.Fragment,{},n)}},h=t.forwardRef((function(e,n){var a=e.components,r=e.mdxType,i=e.originalType,o=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),p=d(a),h=r,g=p["".concat(o,".").concat(h)]||p[h]||u[h]||i;return a?t.createElement(g,l(l({ref:n},c),{},{components:a})):t.createElement(g,l({ref:n},c))}));function g(e,n){var a=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=a.length,l=new Array(i);l[0]=h;var s={};for(var o in n)hasOwnProperty.call(n,o)&&(s[o]=n[o]);s.originalType=e,s[p]="string"==typeof e?e:r,l[1]=s;for(var d=2;d<i;d++)l[d]=a[d];return t.createElement.apply(null,l)}return t.createElement.apply(null,a)}h.displayName="MDXCreateElement"},1912:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>o,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>d});var t=a(5072),r=(a(1504),a(5788));const i={title:"Getting Started",sidebar_label:"Getting Started",sidebar_position:4},l=void 0,s={unversionedId:"getting-started",id:"getting-started",title:"Getting Started",description:"To get started with ESP-DASH, we will be creating our basic example step by step and learn what each setup does:",source:"@site/docs/getting-started.md",sourceDirName:".",slug:"/getting-started",permalink:"/next/getting-started",draft:!1,tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Getting Started",sidebar_label:"Getting Started",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Installation",permalink:"/next/installation"},next:{title:"Examples",permalink:"/next/more-examples"}},o={},d=[{value:"Part 1: Include Dependencies",id:"part-1-include-dependencies",level:4},{value:"Part 2: Create AsyncWebServer Instance",id:"part-2-create-asyncwebserver-instance",level:4},{value:"Part 3: Attach ESP-DASH Instance",id:"part-3-attach-esp-dash-instance",level:4},{value:"Part 4: Create Cards",id:"part-4-create-cards",level:4},{value:"Part 5: Setup Block",id:"part-5-setup-block",level:4},{value:"Part 5: Loop Block",id:"part-5-loop-block",level:4},{value:"1. Updating Card Values",id:"1-updating-card-values",level:5},{value:"2. Sending updates to our Dashboard",id:"2-sending-updates-to-our-dashboard",level:5},{value:"Complete Loop Block:",id:"complete-loop-block",level:5},{value:"Final Code",id:"final-code",level:3}],c={toc:d},p="wrapper";function u(e){let{components:n,...a}=e;return(0,r.yg)(p,(0,t.c)({},c,a,{components:n,mdxType:"MDXLayout"}),(0,r.yg)("p",null,"To get started with ESP-DASH, we will be creating our ",(0,r.yg)("a",{parentName:"p",href:"https://github.com/ayushsharma82/ESP-DASH/tree/master/examples/Basic"},"basic")," example step by step and learn what each setup does:"),(0,r.yg)("br",null),(0,r.yg)("h4",{id:"part-1-include-dependencies"},"Part 1: Include Dependencies"),(0,r.yg)("p",null,"We have used conditional compilation in this part therefore the code will work for both ESP8266 & ESP32."),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-cpp"},"#include <Arduino.h>\n#if defined(ESP8266)\n /* ESP8266 Dependencies */\n #include <ESP8266WiFi.h>\n #include <ESPAsyncTCP.h>\n #include <ESPAsyncWebServer.h>\n#elif defined(ESP32)\n /* ESP32 Dependencies */\n #include <WiFi.h>\n #include <AsyncTCP.h>\n #include <ESPAsyncWebServer.h>\n#endif\n#include <ESPDash.h>\n")),(0,r.yg)("br",null),(0,r.yg)("h4",{id:"part-2-create-asyncwebserver-instance"},"Part 2: Create AsyncWebServer Instance"),(0,r.yg)("p",null,'Create an AsyncWebServer instance on default "80" port.'),(0,r.yg)("i",null,"Note: You are not restricted to a single dashboard. You can host as many dashboards as you want on multiple ports."),(0,r.yg)("br",null),(0,r.yg)("br",null),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-cpp"},"/* Start Webserver */\nAsyncWebServer server(80);\n")),(0,r.yg)("br",null),(0,r.yg)("h4",{id:"part-3-attach-esp-dash-instance"},"Part 3: Attach ESP-DASH Instance"),(0,r.yg)("p",null,"Pass the AsyncWebServer instance to ESPDash's instance. Internally the ESPDash will hook to AsyncWebServer for handling all the networking tasks."),(0,r.yg)("i",null,"Note: You can still use the same AsyncWebServer instance for other tasks."),(0,r.yg)("br",null),(0,r.yg)("br",null),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-cpp"},"/* Attach ESP-DASH to AsyncWebServer */\nESPDash dashboard(&server); \n")),(0,r.yg)("br",null),(0,r.yg)("h4",{id:"part-4-create-cards"},"Part 4: Create Cards"),(0,r.yg)("p",null,"In this step, we will creating ESP-DASH cards and passing our dasboard instance as a first argument so that they can add / remove themselves."),(0,r.yg)("p",null,(0,r.yg)("em",{parentName:"p"},"After we are done with this guide, Please take a look at Cards section to know more about the types of cards available to us.")),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Dashboard Cards \n Format - (Dashboard Instance, Card Type, Card Name, Card Symbol(optional) )\n*/\nCard temperature(&dashboard, TEMPERATURE_CARD, "Temperature", "\xb0C");\nCard humidity(&dashboard, HUMIDITY_CARD, "Humidity", "%");\n')),(0,r.yg)("br",null),(0,r.yg)("h4",{id:"part-5-setup-block"},"Part 5: Setup Block"),(0,r.yg)("p",null,"In our setup block, we will be adding the usual WiFi connectivity stuff and then start our AsyncWebServer with ",(0,r.yg)("inlineCode",{parentName:"p"},"server.begin();"),"."),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-cpp"},'void setup() {\n Serial.begin(115200);\n\n /* Connect WiFi */\n WiFi.mode(WIFI_STA);\n WiFi.begin("ssid", "password");\n if (WiFi.waitForConnectResult() != WL_CONNECTED) {\n Serial.printf("WiFi Failed!\\n");\n return;\n }\n Serial.print("IP Address: ");\n Serial.println(WiFi.localIP());\n\n /* Start AsyncWebServer */\n server.begin();\n}\n')),(0,r.yg)("br",null),(0,r.yg)("h4",{id:"part-5-loop-block"},"Part 5: Loop Block"),(0,r.yg)("p",null,"In our loop block, we will be doing 2 things:"),(0,r.yg)("ol",null,(0,r.yg)("li",{parentName:"ol"},"Updating card values"),(0,r.yg)("li",{parentName:"ol"},"Sending updates to our dashboard")),(0,r.yg)("h5",{id:"1-updating-card-values"},"1. Updating Card Values"),(0,r.yg)("p",null,"Remember the 'Cards' we created in 4th part? We will now access those cards by their variable and update them using the ",(0,r.yg)("inlineCode",{parentName:"p"},"update")," function which is provided with our card's class:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-cpp"},"temperature.update((int)random(0, 50));\n")),(0,r.yg)("h5",{id:"2-sending-updates-to-our-dashboard"},"2. Sending updates to our Dashboard"),(0,r.yg)("p",null,"Once we have updated values of our card(s), we will call the ",(0,r.yg)("inlineCode",{parentName:"p"},"sendUpdates()")," function of our dashboard instance and it will send new card values to every connected client in real time."),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-cpp"},"dashboard.sendUpdates();\n")),(0,r.yg)("p",null,(0,r.yg)("em",{parentName:"p"},"Technically speaking, You can call these functions anywhere in your sketch, but for demonstration purposes we have called them in our loop block.")),(0,r.yg)("h5",{id:"complete-loop-block"},"Complete Loop Block:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-cpp"},"void loop() {\n /* Update Card Values */\n temperature.update((int)random(0, 50));\n humidity.update((int)random(0, 100));\n\n /* Send Updates to our Dashboard (realtime) */\n dashboard.sendUpdates();\n\n /* \n Delay is just for demonstration purposes in this example,\n Replace this code with 'millis interval' in your final project.\n */\n delay(3000);\n}\n")),(0,r.yg)("br",null),(0,r.yg)("h3",{id:"final-code"},"Final Code"),(0,r.yg)("p",null,"That's it! Now we can just upload this sketch to our MCU and access the dashboard via it's IP address. ( Make sure to change the ",(0,r.yg)("inlineCode",{parentName:"p"},"ssid")," and ",(0,r.yg)("inlineCode",{parentName:"p"},"password")," in our sketch according to your Access Point )"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-cpp"},'/*\n -----------------------\n ESPDASH - Basic Example\n -----------------------\n\n Skill Level: Intermediate\n\n In this example we will be creating a basic dashboard which consists \n of some cards and then update them in realtime ( at 3s interval ).\n\n Github: https://github.com/ayushsharma82/ESP-DASH\n WiKi: https://ayushsharma82.github.io/ESP-DASH/\n\n Works with both ESP8266 & ESP32\n*/\n\n#include <Arduino.h>\n#if defined(ESP8266)\n /* ESP8266 Dependencies */\n #include <ESP8266WiFi.h>\n #include <ESPAsyncTCP.h>\n #include <ESPAsyncWebServer.h>\n#elif defined(ESP32)\n /* ESP32 Dependencies */\n #include <WiFi.h>\n #include <AsyncTCP.h>\n #include <ESPAsyncWebServer.h>\n#endif\n#include <ESPDash.h>\n\n\n/* Your WiFi Credentials */\nconst char* ssid = ""; // SSID\nconst char* password = ""; // Password\n\n/* Start Webserver */\nAsyncWebServer server(80);\n\n/* Attach ESP-DASH to AsyncWebServer */\nESPDash dashboard(&server); \n\n/* \n Dashboard Cards \n Format - (Dashboard Instance, Card Type, Card Name, Card Symbol(optional) )\n*/\nCard temperature(&dashboard, TEMPERATURE_CARD, "Temperature", "\xb0C");\nCard humidity(&dashboard, HUMIDITY_CARD, "Humidity", "%");\n\n\nvoid setup() {\n Serial.begin(115200);\n\n /* Connect WiFi */\n WiFi.mode(WIFI_STA);\n WiFi.begin(ssid, password);\n if (WiFi.waitForConnectResult() != WL_CONNECTED) {\n Serial.printf("WiFi Failed!\\n");\n return;\n }\n Serial.print("IP Address: ");\n Serial.println(WiFi.localIP());\n\n /* Start AsyncWebServer */\n server.begin();\n}\n\nvoid loop() {\n /* Update Card Values */\n temperature.update((int)random(0, 50));\n humidity.update((int)random(0, 100));\n\n /* Send Updates to our Dashboard (realtime) */\n dashboard.sendUpdates();\n\n /* \n Delay is just for demonstration purposes in this example,\n Replace this code with \'millis interval\' in your final project.\n */\n delay(3000);\n}\n')))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ddf369fb.151cc4a4.js b/assets/js/ddf369fb.151cc4a4.js deleted file mode 100644 index f0feca72..00000000 --- a/assets/js/ddf369fb.151cc4a4.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[6022],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>y});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(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){n(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 o(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=a.createContext({}),p=function(e){var t=a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},u=function(e){var t=p(e.components);return a.createElement(s.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},f=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),c=p(r),f=n,y=c["".concat(s,".").concat(f)]||c[f]||d[f]||i;return r?a.createElement(y,l(l({ref:t},u),{},{components:r})):a.createElement(y,l({ref:t},u))}));function y(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,l=new Array(i);l[0]=f;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[c]="string"==typeof e?e:n,l[1]=o;for(var p=2;p<i;p++)l[p]=r[p];return a.createElement.apply(null,l)}return a.createElement.apply(null,r)}f.displayName="MDXCreateElement"},6810:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>d,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var a=r(7462),n=(r(7294),r(3905));const i={title:"Line Chart",sidebar_label:"Line (Pro)",sidebar_position:2},l=void 0,o={unversionedId:"charts/line",id:"version-v4.x.x/charts/line",title:"Line Chart",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v4.x.x/charts/line.md",sourceDirName:"charts",slug:"/charts/line",permalink:"/charts/line",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:2,frontMatter:{title:"Line Chart",sidebar_label:"Line (Pro)",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Bar",permalink:"/charts/bar"},next:{title:"Area (Pro)",permalink:"/charts/area"}},s={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types for X-Axis:",id:"valid-data-types-for-x-axis",level:4},{value:"Valid Data Types for Y-Axis:",id:"valid-data-types-for-y-axis",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4},{value:"For X-Axis:",id:"for-x-axis",level:5},{value:"For Y-Axis:",id:"for-y-axis",level:5}],u={toc:p},c="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("div",{className:"pro-label"},(0,n.kt)("i",null,(0,n.kt)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/line-chart.png",width:"500px",alt:"Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"LINE_CHART")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types-for-x-axis"},"Valid Data Types for X-Axis:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"String")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"const char*"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types-for-y-axis"},"Valid Data Types for Y-Axis:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Line Chart\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name )\n*/\nChart chart1(&dashboard, LINE_CHART, "Chart Name");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("h5",{id:"for-x-axis"},"For X-Axis:"),(0,n.kt)("p",null,"X-Axis updater uses ",(0,n.kt)("inlineCode",{parentName:"p"},"updateX")," function."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/*\n Data for X Axis of our Chart\n This array can be of: `int` / `float` or `String` \n\n Note: this array should be kept in global scope. i.e. it should never be deleted from memory.\n*/\nString XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or\n (float array[], size_t array_size)\n or\n (String array[], size_t array_size)\n or\n (const char* array[], size_t array_size)\n*/\nchart1.updateX(XAxis, 7);\n')),(0,n.kt)("h5",{id:"for-y-axis"},"For Y-Axis:"),(0,n.kt)("p",null,"Y-Axis updater uses ",(0,n.kt)("inlineCode",{parentName:"p"},"updateY")," function."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"/*\n Data for Y Axis of our Chart\n This array can be of: `int` or `float`\n \n Note: this array should be kept in global scope. i.e. it should never be deleted from memory.\n*/\nint YAxis[] = {0, 0, 0, 0, 0, 0, 0};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or \n (float array[], size_t array_size)\n*/\nchart1.updateY(YAxis, 7);\n")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ddf369fb.6226d626.js b/assets/js/ddf369fb.6226d626.js new file mode 100644 index 00000000..31270b9f --- /dev/null +++ b/assets/js/ddf369fb.6226d626.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[6624],{5788:(e,r,a)=>{a.d(r,{Iu:()=>y,yg:()=>g});var n=a(1504);function t(e,r,a){return r in e?Object.defineProperty(e,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[r]=a,e}function i(e,r){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var r=1;r<arguments.length;r++){var a=null!=arguments[r]?arguments[r]:{};r%2?i(Object(a),!0).forEach((function(r){t(e,r,a[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(a,r))}))}return e}function o(e,r){if(null==e)return{};var a,n,t=function(e,r){if(null==e)return{};var a,n,t={},i=Object.keys(e);for(n=0;n<i.length;n++)a=i[n],r.indexOf(a)>=0||(t[a]=e[a]);return t}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)a=i[n],r.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(t[a]=e[a])}return t}var s=n.createContext({}),p=function(e){var r=n.useContext(s),a=r;return e&&(a="function"==typeof e?e(r):l(l({},r),e)),a},y=function(e){var r=p(e.components);return n.createElement(s.Provider,{value:r},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var r=e.children;return n.createElement(n.Fragment,{},r)}},d=n.forwardRef((function(e,r){var a=e.components,t=e.mdxType,i=e.originalType,s=e.parentName,y=o(e,["components","mdxType","originalType","parentName"]),u=p(a),d=t,g=u["".concat(s,".").concat(d)]||u[d]||c[d]||i;return a?n.createElement(g,l(l({ref:r},y),{},{components:a})):n.createElement(g,l({ref:r},y))}));function g(e,r){var a=arguments,t=r&&r.mdxType;if("string"==typeof e||t){var i=a.length,l=new Array(i);l[0]=d;var o={};for(var s in r)hasOwnProperty.call(r,s)&&(o[s]=r[s]);o.originalType=e,o[u]="string"==typeof e?e:t,l[1]=o;for(var p=2;p<i;p++)l[p]=a[p];return n.createElement.apply(null,l)}return n.createElement.apply(null,a)}d.displayName="MDXCreateElement"},2208:(e,r,a)=>{a.r(r),a.d(r,{assets:()=>s,contentTitle:()=>l,default:()=>c,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var n=a(5072),t=(a(1504),a(5788));const i={title:"Line Chart",sidebar_label:"Line (Pro)",sidebar_position:2},l=void 0,o={unversionedId:"charts/line",id:"version-v4.x.x/charts/line",title:"Line Chart",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v4.x.x/charts/line.md",sourceDirName:"charts",slug:"/charts/line",permalink:"/charts/line",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:2,frontMatter:{title:"Line Chart",sidebar_label:"Line (Pro)",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Bar",permalink:"/charts/bar"},next:{title:"Area (Pro)",permalink:"/charts/area"}},s={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types for X-Axis:",id:"valid-data-types-for-x-axis",level:4},{value:"Valid Data Types for Y-Axis:",id:"valid-data-types-for-y-axis",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4},{value:"For X-Axis:",id:"for-x-axis",level:5},{value:"For Y-Axis:",id:"for-y-axis",level:5}],y={toc:p},u="wrapper";function c(e){let{components:r,...a}=e;return(0,t.yg)(u,(0,n.c)({},y,a,{components:r,mdxType:"MDXLayout"}),(0,t.yg)("div",{className:"pro-label"},(0,t.yg)("i",null,(0,t.yg)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,t.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,t.yg)("h4",{id:"preview"},"Preview:"),(0,t.yg)("img",{className:"card-preview",src:"/img/v4/line-chart.png",width:"500px",alt:"Preview"}),(0,t.yg)("br",null),(0,t.yg)("br",null),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"type"},"Type:"),(0,t.yg)("p",null,(0,t.yg)("inlineCode",{parentName:"p"},"LINE_CHART")),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"valid-data-types-for-x-axis"},"Valid Data Types for X-Axis:"),(0,t.yg)("ul",null,(0,t.yg)("li",{parentName:"ul"},(0,t.yg)("inlineCode",{parentName:"li"},"int")),(0,t.yg)("li",{parentName:"ul"},(0,t.yg)("inlineCode",{parentName:"li"},"float")),(0,t.yg)("li",{parentName:"ul"},(0,t.yg)("inlineCode",{parentName:"li"},"String")),(0,t.yg)("li",{parentName:"ul"},(0,t.yg)("inlineCode",{parentName:"li"},"const char*"))),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"valid-data-types-for-y-axis"},"Valid Data Types for Y-Axis:"),(0,t.yg)("ul",null,(0,t.yg)("li",{parentName:"ul"},(0,t.yg)("inlineCode",{parentName:"li"},"int")),(0,t.yg)("li",{parentName:"ul"},(0,t.yg)("inlineCode",{parentName:"li"},"float"))),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"initializer"},"Initializer:"),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Line Chart\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name )\n*/\nChart chart1(&dashboard, LINE_CHART, "Chart Name");\n')),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"updaters"},"Updaters:"),(0,t.yg)("h5",{id:"for-x-axis"},"For X-Axis:"),(0,t.yg)("p",null,"X-Axis updater uses ",(0,t.yg)("inlineCode",{parentName:"p"},"updateX")," function."),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},'/*\n Data for X Axis of our Chart\n This array can be of: `int` / `float` or `String` \n\n Note: this array should be kept in global scope. i.e. it should never be deleted from memory.\n*/\nString XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or\n (float array[], size_t array_size)\n or\n (String array[], size_t array_size)\n or\n (const char* array[], size_t array_size)\n*/\nchart1.updateX(XAxis, 7);\n')),(0,t.yg)("h5",{id:"for-y-axis"},"For Y-Axis:"),(0,t.yg)("p",null,"Y-Axis updater uses ",(0,t.yg)("inlineCode",{parentName:"p"},"updateY")," function."),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},"/*\n Data for Y Axis of our Chart\n This array can be of: `int` or `float`\n \n Note: this array should be kept in global scope. i.e. it should never be deleted from memory.\n*/\nint YAxis[] = {0, 0, 0, 0, 0, 0, 0};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or \n (float array[], size_t array_size)\n*/\nchart1.updateY(YAxis, 7);\n")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/de4274db.2c8fba66.js b/assets/js/de4274db.2c8fba66.js new file mode 100644 index 00000000..95f55402 --- /dev/null +++ b/assets/js/de4274db.2c8fba66.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[5656],{5788:(e,a,t)=>{t.d(a,{Iu:()=>d,yg:()=>g});var r=t(1504);function n(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function i(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);a&&(r=r.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,r)}return t}function l(e){for(var a=1;a<arguments.length;a++){var t=null!=arguments[a]?arguments[a]:{};a%2?i(Object(t),!0).forEach((function(a){n(e,a,t[a])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(t,a))}))}return e}function o(e,a){if(null==e)return{};var t,r,n=function(e,a){if(null==e)return{};var t,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)t=i[r],a.indexOf(t)>=0||(n[t]=e[t]);return n}(e,a);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)t=i[r],a.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}var p=r.createContext({}),c=function(e){var a=r.useContext(p),t=a;return e&&(t="function"==typeof e?e(a):l(l({},a),e)),t},d=function(e){var a=c(e.components);return r.createElement(p.Provider,{value:a},e.children)},s="mdxType",u={inlineCode:"code",wrapper:function(e){var a=e.children;return r.createElement(r.Fragment,{},a)}},y=r.forwardRef((function(e,a){var t=e.components,n=e.mdxType,i=e.originalType,p=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),s=c(t),y=n,g=s["".concat(p,".").concat(y)]||s[y]||u[y]||i;return t?r.createElement(g,l(l({ref:a},d),{},{components:t})):r.createElement(g,l({ref:a},d))}));function g(e,a){var t=arguments,n=a&&a.mdxType;if("string"==typeof e||n){var i=t.length,l=new Array(i);l[0]=y;var o={};for(var p in a)hasOwnProperty.call(a,p)&&(o[p]=a[p]);o.originalType=e,o[s]="string"==typeof e?e:n,l[1]=o;for(var c=2;c<i;c++)l[c]=t[c];return r.createElement.apply(null,l)}return r.createElement.apply(null,t)}y.displayName="MDXCreateElement"},1784:(e,a,t)=>{t.r(a),t.d(a,{assets:()=>p,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>c});var r=t(5072),n=(t(1504),t(5788));const i={title:"Text Input Card",sidebar_label:"Text Input (Pro)",sidebar_position:6},l=void 0,o={unversionedId:"cards/text-input",id:"version-v4.x.x/cards/text-input",title:"Text Input Card",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v4.x.x/cards/text-input.md",sourceDirName:"cards",slug:"/cards/text-input",permalink:"/cards/text-input",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:6,frontMatter:{title:"Text Input Card",sidebar_label:"Text Input (Pro)",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"Slider",permalink:"/cards/slider"},next:{title:"Joystick (Pro)",permalink:"/cards/joystick"}},p={},c=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Callback:",id:"callback",level:4},{value:"Updaters:",id:"updaters",level:4}],d={toc:c},s="wrapper";function u(e){let{components:a,...t}=e;return(0,n.yg)(s,(0,r.c)({},d,t,{components:a,mdxType:"MDXLayout"}),(0,n.yg)("div",{className:"pro-label"},(0,n.yg)("i",null,(0,n.yg)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.yg)("h4",{id:"preview"},"Preview:"),(0,n.yg)("img",{className:"card-preview",src:"/img/v4/text-input-card.png",width:"280px",alt:"Text Input Card Preview"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("p",null,"Text Input Card gives you the ability to take String input from user and save them in your application. It provides you with a input box on the dashboard where user can send back text to your application. "),(0,n.yg)("p",null,"This card is very useful for saving WiFi credentials, passwords and general information."),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"type"},"Type:"),(0,n.yg)("p",null,(0,n.yg)("inlineCode",{parentName:"p"},"TEXT_INPUT_CARD")),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"String")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"char"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"initializer"},"Initializer:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Energy Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name)\n*/\nCard card1(&dashboard, TEXT_INPUT_CARD, "User Email");\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"callback"},"Callback:"),(0,n.yg)("p",null,"Text Input Card requires a callback function which will be called when we receive a input from our dashboard. In setup block, we will be calling our ",(0,n.yg)("inlineCode",{parentName:"p"},"attachCallback")," function and provide a lambda (callback) function with a ",(0,n.yg)("inlineCode",{parentName:"p"},"const char*")," (character array) argument."),(0,n.yg)("p",null,(0,n.yg)("strong",{parentName:"p"},"Note:")," You need to call the ",(0,n.yg)("inlineCode",{parentName:"p"},"update")," function and ",(0,n.yg)("inlineCode",{parentName:"p"},"sendUpdates")," immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard and it will keep the card stuck in 'waiting' phase."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/*\n We provide our attachCallback with a lambda function to handle incomming data\n*/\ncard1.attachCallback([&](const char* value){\n Serial.println("[Card1] Text Input Callback Triggered: "+String(value));\n card1.update(value);\n dashboard.sendUpdates();\n});\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"updaters"},"Updaters:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(const char* value);\n")),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/de4274db.65be6ecf.js b/assets/js/de4274db.65be6ecf.js deleted file mode 100644 index 3b4ac56a..00000000 --- a/assets/js/de4274db.65be6ecf.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[9854],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>b});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function o(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),c=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},d=function(e){var t=c(e.components);return r.createElement(p.Provider,{value:t},e.children)},s="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,p=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),s=c(a),m=n,b=s["".concat(p,".").concat(m)]||s[m]||u[m]||i;return a?r.createElement(b,l(l({ref:t},d),{},{components:a})):r.createElement(b,l({ref:t},d))}));function b(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,l=new Array(i);l[0]=m;var o={};for(var p in t)hasOwnProperty.call(t,p)&&(o[p]=t[p]);o.originalType=e,o[s]="string"==typeof e?e:n,l[1]=o;for(var c=2;c<i;c++)l[c]=a[c];return r.createElement.apply(null,l)}return r.createElement.apply(null,a)}m.displayName="MDXCreateElement"},8343:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>c});var r=a(7462),n=(a(7294),a(3905));const i={title:"Text Input Card",sidebar_label:"Text Input (Pro)",sidebar_position:6},l=void 0,o={unversionedId:"cards/text-input",id:"version-v4.x.x/cards/text-input",title:"Text Input Card",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v4.x.x/cards/text-input.md",sourceDirName:"cards",slug:"/cards/text-input",permalink:"/cards/text-input",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:6,frontMatter:{title:"Text Input Card",sidebar_label:"Text Input (Pro)",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"Slider",permalink:"/cards/slider"},next:{title:"Joystick (Pro)",permalink:"/cards/joystick"}},p={},c=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Callback:",id:"callback",level:4},{value:"Updaters:",id:"updaters",level:4}],d={toc:c},s="wrapper";function u(e){let{components:t,...a}=e;return(0,n.kt)(s,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("div",{className:"pro-label"},(0,n.kt)("i",null,(0,n.kt)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/text-input-card.png",width:"280px",alt:"Text Input Card Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"Text Input Card gives you the ability to take String input from user and save them in your application. It provides you with a input box on the dashboard where user can send back text to your application. "),(0,n.kt)("p",null,"This card is very useful for saving WiFi credentials, passwords and general information."),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"TEXT_INPUT_CARD")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"String")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"char"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Energy Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name)\n*/\nCard card1(&dashboard, TEXT_INPUT_CARD, "User Email");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"callback"},"Callback:"),(0,n.kt)("p",null,"Text Input Card requires a callback function which will be called when we receive a input from our dashboard. In setup block, we will be calling our ",(0,n.kt)("inlineCode",{parentName:"p"},"attachCallback")," function and provide a lambda (callback) function with a ",(0,n.kt)("inlineCode",{parentName:"p"},"const char*")," (character array) argument."),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Note:")," You need to call the ",(0,n.kt)("inlineCode",{parentName:"p"},"update")," function and ",(0,n.kt)("inlineCode",{parentName:"p"},"sendUpdates")," immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard and it will keep the card stuck in 'waiting' phase."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/*\n We provide our attachCallback with a lambda function to handle incomming data\n*/\ncard1.attachCallback([&](const char* value){\n Serial.println("[Card1] Text Input Callback Triggered: "+String(value));\n card1.update(value);\n dashboard.sendUpdates();\n});\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(const char* value);\n")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e5af0a5c.c2f13713.js b/assets/js/e5af0a5c.c2f13713.js deleted file mode 100644 index 92eff800..00000000 --- a/assets/js/e5af0a5c.c2f13713.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[908],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>d});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(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 i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function s(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var c=n.createContext({}),l=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},y=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=l(r),y=o,d=u["".concat(c,".").concat(y)]||u[y]||m[y]||a;return r?n.createElement(d,i(i({ref:t},p),{},{components:r})):n.createElement(d,i({ref:t},p))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=y;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[u]="string"==typeof e?e:o,i[1]=s;for(var l=2;l<a;l++)i[l]=r[l];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}y.displayName="MDXCreateElement"},7865:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>m,frontMatter:()=>a,metadata:()=>s,toc:()=>l});var n=r(7462),o=(r(7294),r(3905));const a={title:"Examples",sidebar_label:"Examples",sidebar_position:5},i=void 0,s={unversionedId:"more-examples",id:"more-examples",title:"Examples",description:"There are many example sketches in our repository. You can check those out to know more about what you can do with ESP-DASH. We have contructed every example with very clear documentation so there is less obstruction in your learning process.",source:"@site/docs/more-examples.md",sourceDirName:".",slug:"/more-examples",permalink:"/next/more-examples",draft:!1,tags:[],version:"current",sidebarPosition:5,frontMatter:{title:"Examples",sidebar_label:"Examples",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Getting Started",permalink:"/next/getting-started"},next:{title:"Tabs (Pro)",permalink:"/next/tabs"}},c={},l=[],p={toc:l},u="wrapper";function m(e){let{components:t,...r}=e;return(0,o.kt)(u,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"There are many example sketches in our repository. You can check those out to know more about what you can do with ESP-DASH. We have contructed every example with very clear documentation so there is less obstruction in your learning process."),(0,o.kt)("p",null,"You can find those examples in the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/ayushsharma82/ESP-DASH/tree/master/examples"},"repository"),"."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e5af0a5c.e0c5d4d6.js b/assets/js/e5af0a5c.e0c5d4d6.js new file mode 100644 index 00000000..a7433884 --- /dev/null +++ b/assets/js/e5af0a5c.e0c5d4d6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[7944],{5788:(e,t,r)=>{r.d(t,{Iu:()=>p,yg:()=>d});var n=r(1504);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(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 i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function s(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var c=n.createContext({}),l=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},y=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=l(r),y=o,d=u["".concat(c,".").concat(y)]||u[y]||m[y]||a;return r?n.createElement(d,i(i({ref:t},p),{},{components:r})):n.createElement(d,i({ref:t},p))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=y;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[u]="string"==typeof e?e:o,i[1]=s;for(var l=2;l<a;l++)i[l]=r[l];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}y.displayName="MDXCreateElement"},7200:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>m,frontMatter:()=>a,metadata:()=>s,toc:()=>l});var n=r(5072),o=(r(1504),r(5788));const a={title:"Examples",sidebar_label:"Examples",sidebar_position:5},i=void 0,s={unversionedId:"more-examples",id:"more-examples",title:"Examples",description:"There are many example sketches in our repository. You can check those out to know more about what you can do with ESP-DASH. We have contructed every example with very clear documentation so there is less obstruction in your learning process.",source:"@site/docs/more-examples.md",sourceDirName:".",slug:"/more-examples",permalink:"/next/more-examples",draft:!1,tags:[],version:"current",sidebarPosition:5,frontMatter:{title:"Examples",sidebar_label:"Examples",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Getting Started",permalink:"/next/getting-started"},next:{title:"Tabs (Pro)",permalink:"/next/tabs"}},c={},l=[],p={toc:l},u="wrapper";function m(e){let{components:t,...r}=e;return(0,o.yg)(u,(0,n.c)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,o.yg)("p",null,"There are many example sketches in our repository. You can check those out to know more about what you can do with ESP-DASH. We have contructed every example with very clear documentation so there is less obstruction in your learning process."),(0,o.yg)("p",null,"You can find those examples in the ",(0,o.yg)("a",{parentName:"p",href:"https://github.com/ayushsharma82/ESP-DASH/tree/master/examples"},"repository"),"."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e8eea433.39684bbb.js b/assets/js/e8eea433.57f16954.js similarity index 65% rename from assets/js/e8eea433.39684bbb.js rename to assets/js/e8eea433.57f16954.js index a7b16a1b..41f9294a 100644 --- a/assets/js/e8eea433.39684bbb.js +++ b/assets/js/e8eea433.57f16954.js @@ -1 +1 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[4087],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>m});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(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){n(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 l(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=a.createContext({}),c=function(e){var t=a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},p=function(e){var t=c(e.components);return a.createElement(s.Provider,{value:t},e.children)},u="mdxType",b={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=c(r),d=n,m=u["".concat(s,".").concat(d)]||u[d]||b[d]||i;return r?a.createElement(m,o(o({ref:t},p),{},{components:r})):a.createElement(m,o({ref:t},p))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,o=new Array(i);o[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:n,o[1]=l;for(var c=2;c<i;c++)o[c]=r[c];return a.createElement.apply(null,o)}return a.createElement.apply(null,r)}d.displayName="MDXCreateElement"},7330:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>b,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var a=r(7462),n=(r(7294),r(3905));const i={title:"Tabs",sidebar_label:"Tabs (Pro)",sidebar_position:7},o=void 0,l={unversionedId:"tabs",id:"tabs",title:"Tabs",description:"This feature is available in DASH Pro only.",source:"@site/docs/tabs.md",sourceDirName:".",slug:"/tabs",permalink:"/next/tabs",draft:!1,tags:[],version:"current",sidebarPosition:7,frontMatter:{title:"Tabs",sidebar_label:"Tabs (Pro)",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Examples",permalink:"/next/more-examples"},next:{title:"Statistics",permalink:"/next/custom-statistics"}},s={},c=[{value:"Example",id:"example",level:3},{value:"Initializer:",id:"initializer",level:5},{value:"Set Tab:",id:"set-tab",level:5}],p={toc:c},u="wrapper";function b(e){let{components:t,...r}=e;return(0,n.kt)(u,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("div",{className:"pro-label"},(0,n.kt)("i",null,(0,n.kt)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("img",{src:"/img/v4/tabs.png",alt:"Concept Diagram",width:"300px"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"Tabs in ESP-DASH allow you to create multiple pages to organize and sort your various cards & charts. This feature comes particularly useful when there are all a lot of widgets."),(0,n.kt)("p",null,"By default, ESP-DASH puts everything into 'Overview' Tab. If every card or chart is assigned a custom tab, then the dashboard will automatically hide the overview tab from sidebar."),(0,n.kt)("h3",{id:"example"},"Example"),(0,n.kt)("h5",{id:"initializer"},"Initializer:"),(0,n.kt)("p",null,"Initializer should be kept in global scope. ( ie. outside of any function in your sketch )"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'Tab tab1(&dashboard, "Custom Tab 1");\n')),(0,n.kt)("h5",{id:"set-tab"},"Set Tab:"),(0,n.kt)("p",null,"Once a tab has been created, you need to set the tab for relevant cards and charts using ",(0,n.kt)("inlineCode",{parentName:"p"},"setTab")," function of Card or Chart class. ",(0,n.kt)("inlineCode",{parentName:"p"},"setTab")," accepts a pointer to the tab which we just created."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.setTab(&tab1);\n")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"chart1.setTab(&tab1);\n")))}b.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[1595],{5788:(e,t,r)=>{r.d(t,{Iu:()=>p,yg:()=>y});var a=r(1504);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(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){n(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 l(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=a.createContext({}),c=function(e){var t=a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},p=function(e){var t=c(e.components);return a.createElement(s.Provider,{value:t},e.children)},u="mdxType",b={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=c(r),d=n,y=u["".concat(s,".").concat(d)]||u[d]||b[d]||i;return r?a.createElement(y,o(o({ref:t},p),{},{components:r})):a.createElement(y,o({ref:t},p))}));function y(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,o=new Array(i);o[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:n,o[1]=l;for(var c=2;c<i;c++)o[c]=r[c];return a.createElement.apply(null,o)}return a.createElement.apply(null,r)}d.displayName="MDXCreateElement"},1828:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>b,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var a=r(5072),n=(r(1504),r(5788));const i={title:"Tabs",sidebar_label:"Tabs (Pro)",sidebar_position:7},o=void 0,l={unversionedId:"tabs",id:"tabs",title:"Tabs",description:"This feature is available in DASH Pro only.",source:"@site/docs/tabs.md",sourceDirName:".",slug:"/tabs",permalink:"/next/tabs",draft:!1,tags:[],version:"current",sidebarPosition:7,frontMatter:{title:"Tabs",sidebar_label:"Tabs (Pro)",sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Examples",permalink:"/next/more-examples"},next:{title:"Statistics",permalink:"/next/custom-statistics"}},s={},c=[{value:"Example",id:"example",level:3},{value:"Initializer:",id:"initializer",level:5},{value:"Set Tab:",id:"set-tab",level:5}],p={toc:c},u="wrapper";function b(e){let{components:t,...r}=e;return(0,n.yg)(u,(0,a.c)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,n.yg)("div",{className:"pro-label"},(0,n.yg)("i",null,(0,n.yg)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("img",{src:"/img/v4/tabs.png",alt:"Concept Diagram",width:"300px"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("p",null,"Tabs in ESP-DASH allow you to create multiple pages to organize and sort your various cards & charts. This feature comes particularly useful when there are all a lot of widgets."),(0,n.yg)("p",null,"By default, ESP-DASH puts everything into 'Overview' Tab. If every card or chart is assigned a custom tab, then the dashboard will automatically hide the overview tab from sidebar."),(0,n.yg)("h3",{id:"example"},"Example"),(0,n.yg)("h5",{id:"initializer"},"Initializer:"),(0,n.yg)("p",null,"Initializer should be kept in global scope. ( ie. outside of any function in your sketch )"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'Tab tab1(&dashboard, "Custom Tab 1");\n')),(0,n.yg)("h5",{id:"set-tab"},"Set Tab:"),(0,n.yg)("p",null,"Once a tab has been created, you need to set the tab for relevant cards and charts using ",(0,n.yg)("inlineCode",{parentName:"p"},"setTab")," function of Card or Chart class. ",(0,n.yg)("inlineCode",{parentName:"p"},"setTab")," accepts a pointer to the tab which we just created."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.setTab(&tab1);\n")),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"chart1.setTab(&tab1);\n")))}b.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ebe4a411.0ae4a65d.js b/assets/js/ebe4a411.0ae4a65d.js deleted file mode 100644 index fbeef9ff..00000000 --- a/assets/js/ebe4a411.0ae4a65d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[5838],{3905:(e,r,t)=>{t.d(r,{Zo:()=>d,kt:()=>m});var a=t(7294);function n(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function l(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);r&&(a=a.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,a)}return t}function i(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?l(Object(t),!0).forEach((function(r){n(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):l(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function o(e,r){if(null==e)return{};var t,a,n=function(e,r){if(null==e)return{};var t,a,n={},l=Object.keys(e);for(a=0;a<l.length;a++)t=l[a],r.indexOf(t)>=0||(n[t]=e[t]);return n}(e,r);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)t=l[a],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}var p=a.createContext({}),s=function(e){var r=a.useContext(p),t=r;return e&&(t="function"==typeof e?e(r):i(i({},r),e)),t},d=function(e){var r=s(e.components);return a.createElement(p.Provider,{value:r},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var r=e.children;return a.createElement(a.Fragment,{},r)}},y=a.forwardRef((function(e,r){var t=e.components,n=e.mdxType,l=e.originalType,p=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),c=s(t),y=n,m=c["".concat(p,".").concat(y)]||c[y]||u[y]||l;return t?a.createElement(m,i(i({ref:r},d),{},{components:t})):a.createElement(m,i({ref:r},d))}));function m(e,r){var t=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var l=t.length,i=new Array(l);i[0]=y;var o={};for(var p in r)hasOwnProperty.call(r,p)&&(o[p]=r[p]);o.originalType=e,o[c]="string"==typeof e?e:n,i[1]=o;for(var s=2;s<l;s++)i[s]=t[s];return a.createElement.apply(null,i)}return a.createElement.apply(null,t)}y.displayName="MDXCreateElement"},7550:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>p,contentTitle:()=>i,default:()=>u,frontMatter:()=>l,metadata:()=>o,toc:()=>s});var a=t(7462),n=(t(7294),t(3905));const l={title:"Energy Card",sidebar_label:"Energy (Pro)",sidebar_position:4},i=void 0,o={unversionedId:"cards/energy",id:"version-v3.x.x/cards/energy",title:"Energy Card",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v3.x.x/cards/energy.md",sourceDirName:"cards",slug:"/cards/energy",permalink:"/v3.x.x/cards/energy",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:4,frontMatter:{title:"Energy Card",sidebar_label:"Energy (Pro)",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Air (Pro)",permalink:"/v3.x.x/cards/air"},next:{title:"Progress",permalink:"/v3.x.x/cards/progress"}},p={},s=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],d={toc:s},c="wrapper";function u(e){let{components:r,...t}=e;return(0,n.kt)(c,(0,a.Z)({},d,t,{components:r,mdxType:"MDXLayout"}),(0,n.kt)("div",{style:{border:"1px solid rgba(255,0,0, 0.03)",padding:20,borderRadius:14,backgroundColor:"rgba(255,0,0, 0.03)",maxWidth:600}},(0,n.kt)("h4",{style:{fontWeight:"500",marginBottom:5}}," This feature is available in ",(0,n.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only.")),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{src:"/img//energy-card.png",width:"280px",alt:"Energy Card Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"This card adds a distinctive energy/power icon, and just like generic card you can add a symbol which will be appended to your data. This card can be used to show something related to power consumption and usage etc."),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"ENERGY_CARD")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"String"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Energy Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )\n*/\nCard card1(&dashboard, ENERGY_CARD, "Power Consumption", "kWh");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(float value);\n")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")),(0,n.kt)("p",null,"Or you can also update the symbol along with the value like this:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'card1.update(value, "kWh");\n')),(0,n.kt)("br",null),(0,n.kt)("br",null))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ebe4a411.0e7226c6.js b/assets/js/ebe4a411.0e7226c6.js new file mode 100644 index 00000000..7b48cb6f --- /dev/null +++ b/assets/js/ebe4a411.0e7226c6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[9504],{5788:(e,r,a)=>{a.d(r,{Iu:()=>d,yg:()=>g});var n=a(1504);function t(e,r,a){return r in e?Object.defineProperty(e,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[r]=a,e}function l(e,r){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var r=1;r<arguments.length;r++){var a=null!=arguments[r]?arguments[r]:{};r%2?l(Object(a),!0).forEach((function(r){t(e,r,a[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(a,r))}))}return e}function o(e,r){if(null==e)return{};var a,n,t=function(e,r){if(null==e)return{};var a,n,t={},l=Object.keys(e);for(n=0;n<l.length;n++)a=l[n],r.indexOf(a)>=0||(t[a]=e[a]);return t}(e,r);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n<l.length;n++)a=l[n],r.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(t[a]=e[a])}return t}var p=n.createContext({}),s=function(e){var r=n.useContext(p),a=r;return e&&(a="function"==typeof e?e(r):i(i({},r),e)),a},d=function(e){var r=s(e.components);return n.createElement(p.Provider,{value:r},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var r=e.children;return n.createElement(n.Fragment,{},r)}},y=n.forwardRef((function(e,r){var a=e.components,t=e.mdxType,l=e.originalType,p=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),c=s(a),y=t,g=c["".concat(p,".").concat(y)]||c[y]||u[y]||l;return a?n.createElement(g,i(i({ref:r},d),{},{components:a})):n.createElement(g,i({ref:r},d))}));function g(e,r){var a=arguments,t=r&&r.mdxType;if("string"==typeof e||t){var l=a.length,i=new Array(l);i[0]=y;var o={};for(var p in r)hasOwnProperty.call(r,p)&&(o[p]=r[p]);o.originalType=e,o[c]="string"==typeof e?e:t,i[1]=o;for(var s=2;s<l;s++)i[s]=a[s];return n.createElement.apply(null,i)}return n.createElement.apply(null,a)}y.displayName="MDXCreateElement"},7880:(e,r,a)=>{a.r(r),a.d(r,{assets:()=>p,contentTitle:()=>i,default:()=>u,frontMatter:()=>l,metadata:()=>o,toc:()=>s});var n=a(5072),t=(a(1504),a(5788));const l={title:"Energy Card",sidebar_label:"Energy (Pro)",sidebar_position:4},i=void 0,o={unversionedId:"cards/energy",id:"version-v3.x.x/cards/energy",title:"Energy Card",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v3.x.x/cards/energy.md",sourceDirName:"cards",slug:"/cards/energy",permalink:"/v3.x.x/cards/energy",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:4,frontMatter:{title:"Energy Card",sidebar_label:"Energy (Pro)",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Air (Pro)",permalink:"/v3.x.x/cards/air"},next:{title:"Progress",permalink:"/v3.x.x/cards/progress"}},p={},s=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],d={toc:s},c="wrapper";function u(e){let{components:r,...a}=e;return(0,t.yg)(c,(0,n.c)({},d,a,{components:r,mdxType:"MDXLayout"}),(0,t.yg)("div",{style:{border:"1px solid rgba(255,0,0, 0.03)",padding:20,borderRadius:14,backgroundColor:"rgba(255,0,0, 0.03)",maxWidth:600}},(0,t.yg)("h4",{style:{fontWeight:"500",marginBottom:5}}," This feature is available in ",(0,t.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only.")),(0,t.yg)("h4",{id:"preview"},"Preview:"),(0,t.yg)("img",{src:"/img//energy-card.png",width:"280px",alt:"Energy Card Preview"}),(0,t.yg)("br",null),(0,t.yg)("br",null),(0,t.yg)("p",null,"This card adds a distinctive energy/power icon, and just like generic card you can add a symbol which will be appended to your data. This card can be used to show something related to power consumption and usage etc."),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"type"},"Type:"),(0,t.yg)("p",null,(0,t.yg)("inlineCode",{parentName:"p"},"ENERGY_CARD")),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,t.yg)("ul",null,(0,t.yg)("li",{parentName:"ul"},(0,t.yg)("inlineCode",{parentName:"li"},"int")),(0,t.yg)("li",{parentName:"ul"},(0,t.yg)("inlineCode",{parentName:"li"},"float")),(0,t.yg)("li",{parentName:"ul"},(0,t.yg)("inlineCode",{parentName:"li"},"String"))),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"initializer"},"Initializer:"),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Energy Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )\n*/\nCard card1(&dashboard, ENERGY_CARD, "Power Consumption", "kWh");\n')),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"updaters"},"Updaters:"),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(float value);\n")),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")),(0,t.yg)("p",null,"Or you can also update the symbol along with the value like this:"),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},'card1.update(value, "kWh");\n')),(0,t.yg)("br",null),(0,t.yg)("br",null))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ec123d05.0511bd77.js b/assets/js/ec123d05.0511bd77.js new file mode 100644 index 00000000..e6d31242 --- /dev/null +++ b/assets/js/ec123d05.0511bd77.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[2964],{5788:(e,t,r)=>{r.d(t,{Iu:()=>c,yg:()=>b});var n=r(1504);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(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 l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),u=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},c=function(e){var t=u(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},y=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),p=u(r),y=a,b=p["".concat(s,".").concat(y)]||p[y]||d[y]||o;return r?n.createElement(b,l(l({ref:t},c),{},{components:r})):n.createElement(b,l({ref:t},c))}));function b(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,l=new Array(o);l[0]=y;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[p]="string"==typeof e?e:a,l[1]=i;for(var u=2;u<o;u++)l[u]=r[u];return n.createElement.apply(null,l)}return n.createElement.apply(null,r)}y.displayName="MDXCreateElement"},6852:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var n=r(5072),a=(r(1504),r(5788));const o={title:"Push Button Card",sidebar_label:"Push Button (Pro)",sidebar_position:5},l=void 0,i={unversionedId:"cards/push-button",id:"version-v4.x.x/cards/push-button",title:"Push Button Card",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v4.x.x/cards/push-button.md",sourceDirName:"cards",slug:"/cards/push-button",permalink:"/cards/push-button",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:5,frontMatter:{title:"Push Button Card",sidebar_label:"Push Button (Pro)",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Toggle Button",permalink:"/cards/button"},next:{title:"Status",permalink:"/cards/status"}},s={},u=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Callback:",id:"callback",level:4}],c={toc:u},p="wrapper";function d(e){let{components:t,...r}=e;return(0,a.yg)(p,(0,n.c)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,a.yg)("div",{className:"pro-label"},(0,a.yg)("i",null,(0,a.yg)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,a.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,a.yg)("h4",{id:"preview"},"Preview:"),(0,a.yg)("img",{className:"card-preview",src:"/img/v4/push-button.png",width:"280px",alt:"Push Button Card Preview"}),(0,a.yg)("br",null),(0,a.yg)("br",null),(0,a.yg)("p",null,"Push button card adds a static button on your dashboard which has no state. Whenever a user clicks this button, it triggers a callback."),(0,a.yg)("br",null),(0,a.yg)("h4",{id:"type"},"Type:"),(0,a.yg)("p",null,(0,a.yg)("inlineCode",{parentName:"p"},"PUSH_BUTTON_CARD")),(0,a.yg)("br",null),(0,a.yg)("h4",{id:"initializer"},"Initializer:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Button Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name)\n*/\nCard card1(&dashboard, PUSH_BUTTON_CARD, "Push Button");\n')),(0,a.yg)("br",null),(0,a.yg)("h4",{id:"callback"},"Callback:"),(0,a.yg)("p",null,"Push button card will trigger a callback on every click by user, there is no need to update or ",(0,a.yg)("inlineCode",{parentName:"p"},"sendUpdates")," to dashboard because there is no state."),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-cpp"},'/*\n We provide our attachCallback with a lambda function to handle trigger\n*/\ncard1.attachCallback([&](){\n Serial.println("[Card1] Push Button Triggered");\n});\n')),(0,a.yg)("br",null),(0,a.yg)("br",null))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ec123d05.2b6be804.js b/assets/js/ec123d05.2b6be804.js deleted file mode 100644 index 035e37b2..00000000 --- a/assets/js/ec123d05.2b6be804.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[2446],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>h});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(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 l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),u=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},c=function(e){var t=u(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},b=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),p=u(r),b=a,h=p["".concat(s,".").concat(b)]||p[b]||d[b]||o;return r?n.createElement(h,l(l({ref:t},c),{},{components:r})):n.createElement(h,l({ref:t},c))}));function h(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,l=new Array(o);l[0]=b;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[p]="string"==typeof e?e:a,l[1]=i;for(var u=2;u<o;u++)l[u]=r[u];return n.createElement.apply(null,l)}return n.createElement.apply(null,r)}b.displayName="MDXCreateElement"},390:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var n=r(7462),a=(r(7294),r(3905));const o={title:"Push Button Card",sidebar_label:"Push Button (Pro)",sidebar_position:5},l=void 0,i={unversionedId:"cards/push-button",id:"version-v4.x.x/cards/push-button",title:"Push Button Card",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v4.x.x/cards/push-button.md",sourceDirName:"cards",slug:"/cards/push-button",permalink:"/cards/push-button",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:5,frontMatter:{title:"Push Button Card",sidebar_label:"Push Button (Pro)",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Toggle Button",permalink:"/cards/button"},next:{title:"Status",permalink:"/cards/status"}},s={},u=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Callback:",id:"callback",level:4}],c={toc:u},p="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(p,(0,n.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("div",{className:"pro-label"},(0,a.kt)("i",null,(0,a.kt)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,a.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,a.kt)("h4",{id:"preview"},"Preview:"),(0,a.kt)("img",{className:"card-preview",src:"/img/v4/push-button.png",width:"280px",alt:"Push Button Card Preview"}),(0,a.kt)("br",null),(0,a.kt)("br",null),(0,a.kt)("p",null,"Push button card adds a static button on your dashboard which has no state. Whenever a user clicks this button, it triggers a callback."),(0,a.kt)("br",null),(0,a.kt)("h4",{id:"type"},"Type:"),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"PUSH_BUTTON_CARD")),(0,a.kt)("br",null),(0,a.kt)("h4",{id:"initializer"},"Initializer:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Button Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name)\n*/\nCard card1(&dashboard, PUSH_BUTTON_CARD, "Push Button");\n')),(0,a.kt)("br",null),(0,a.kt)("h4",{id:"callback"},"Callback:"),(0,a.kt)("p",null,"Push button card will trigger a callback on every click by user, there is no need to update or ",(0,a.kt)("inlineCode",{parentName:"p"},"sendUpdates")," to dashboard because there is no state."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cpp"},'/*\n We provide our attachCallback with a lambda function to handle trigger\n*/\ncard1.attachCallback([&](){\n Serial.println("[Card1] Push Button Triggered");\n});\n')),(0,a.kt)("br",null),(0,a.kt)("br",null))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ec57d471.86e8f9b0.js b/assets/js/ec57d471.86e8f9b0.js deleted file mode 100644 index c759e451..00000000 --- a/assets/js/ec57d471.86e8f9b0.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[2917],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>y});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(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){n(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 o(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=a.createContext({}),p=function(e){var t=a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},u=function(e){var t=p(e.components);return a.createElement(s.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},f=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),c=p(r),f=n,y=c["".concat(s,".").concat(f)]||c[f]||d[f]||i;return r?a.createElement(y,l(l({ref:t},u),{},{components:r})):a.createElement(y,l({ref:t},u))}));function y(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,l=new Array(i);l[0]=f;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[c]="string"==typeof e?e:n,l[1]=o;for(var p=2;p<i;p++)l[p]=r[p];return a.createElement.apply(null,l)}return a.createElement.apply(null,r)}f.displayName="MDXCreateElement"},4284:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>d,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var a=r(7462),n=(r(7294),r(3905));const i={title:"Line Chart",sidebar_label:"Line (Pro)",sidebar_position:2},l=void 0,o={unversionedId:"charts/line",id:"charts/line",title:"Line Chart",description:"This feature is available in DASH Pro only.",source:"@site/docs/charts/line.md",sourceDirName:"charts",slug:"/charts/line",permalink:"/next/charts/line",draft:!1,tags:[],version:"current",sidebarPosition:2,frontMatter:{title:"Line Chart",sidebar_label:"Line (Pro)",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Bar",permalink:"/next/charts/bar"},next:{title:"Area (Pro)",permalink:"/next/charts/area"}},s={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types for X-Axis:",id:"valid-data-types-for-x-axis",level:4},{value:"Valid Data Types for Y-Axis:",id:"valid-data-types-for-y-axis",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4},{value:"For X-Axis:",id:"for-x-axis",level:5},{value:"For Y-Axis:",id:"for-y-axis",level:5}],u={toc:p},c="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("div",{className:"pro-label"},(0,n.kt)("i",null,(0,n.kt)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/line-chart.png",width:"500px",alt:"Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"LINE_CHART")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types-for-x-axis"},"Valid Data Types for X-Axis:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"String")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"const char*"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types-for-y-axis"},"Valid Data Types for Y-Axis:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Line Chart\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name )\n*/\nChart chart1(&dashboard, LINE_CHART, "Chart Name");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("h5",{id:"for-x-axis"},"For X-Axis:"),(0,n.kt)("p",null,"X-Axis updater uses ",(0,n.kt)("inlineCode",{parentName:"p"},"updateX")," function."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/*\n Data for X Axis of our Chart\n This array can be of: `int` / `float` or `String` \n\n Note: this array should be kept in global scope. i.e. it should never be deleted from memory.\n*/\nString XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or\n (float array[], size_t array_size)\n or\n (String array[], size_t array_size)\n or\n (const char* array[], size_t array_size)\n*/\nchart1.updateX(XAxis, 7);\n')),(0,n.kt)("h5",{id:"for-y-axis"},"For Y-Axis:"),(0,n.kt)("p",null,"Y-Axis updater uses ",(0,n.kt)("inlineCode",{parentName:"p"},"updateY")," function."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"/*\n Data for Y Axis of our Chart\n This array can be of: `int` or `float`\n \n Note: this array should be kept in global scope. i.e. it should never be deleted from memory.\n*/\nint YAxis[] = {0, 0, 0, 0, 0, 0, 0};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or \n (float array[], size_t array_size)\n*/\nchart1.updateY(YAxis, 7);\n")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ec57d471.8c7b269a.js b/assets/js/ec57d471.8c7b269a.js new file mode 100644 index 00000000..cdb94ef7 --- /dev/null +++ b/assets/js/ec57d471.8c7b269a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[4864],{5788:(e,r,a)=>{a.d(r,{Iu:()=>y,yg:()=>g});var t=a(1504);function n(e,r,a){return r in e?Object.defineProperty(e,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[r]=a,e}function i(e,r){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r&&(t=t.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),a.push.apply(a,t)}return a}function l(e){for(var r=1;r<arguments.length;r++){var a=null!=arguments[r]?arguments[r]:{};r%2?i(Object(a),!0).forEach((function(r){n(e,r,a[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(a,r))}))}return e}function o(e,r){if(null==e)return{};var a,t,n=function(e,r){if(null==e)return{};var a,t,n={},i=Object.keys(e);for(t=0;t<i.length;t++)a=i[t],r.indexOf(a)>=0||(n[a]=e[a]);return n}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t<i.length;t++)a=i[t],r.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=t.createContext({}),p=function(e){var r=t.useContext(s),a=r;return e&&(a="function"==typeof e?e(r):l(l({},r),e)),a},y=function(e){var r=p(e.components);return t.createElement(s.Provider,{value:r},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var r=e.children;return t.createElement(t.Fragment,{},r)}},d=t.forwardRef((function(e,r){var a=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,y=o(e,["components","mdxType","originalType","parentName"]),u=p(a),d=n,g=u["".concat(s,".").concat(d)]||u[d]||c[d]||i;return a?t.createElement(g,l(l({ref:r},y),{},{components:a})):t.createElement(g,l({ref:r},y))}));function g(e,r){var a=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var i=a.length,l=new Array(i);l[0]=d;var o={};for(var s in r)hasOwnProperty.call(r,s)&&(o[s]=r[s]);o.originalType=e,o[u]="string"==typeof e?e:n,l[1]=o;for(var p=2;p<i;p++)l[p]=a[p];return t.createElement.apply(null,l)}return t.createElement.apply(null,a)}d.displayName="MDXCreateElement"},9608:(e,r,a)=>{a.r(r),a.d(r,{assets:()=>s,contentTitle:()=>l,default:()=>c,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var t=a(5072),n=(a(1504),a(5788));const i={title:"Line Chart",sidebar_label:"Line (Pro)",sidebar_position:2},l=void 0,o={unversionedId:"charts/line",id:"charts/line",title:"Line Chart",description:"This feature is available in DASH Pro only.",source:"@site/docs/charts/line.md",sourceDirName:"charts",slug:"/charts/line",permalink:"/next/charts/line",draft:!1,tags:[],version:"current",sidebarPosition:2,frontMatter:{title:"Line Chart",sidebar_label:"Line (Pro)",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Bar",permalink:"/next/charts/bar"},next:{title:"Area (Pro)",permalink:"/next/charts/area"}},s={},p=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types for X-Axis:",id:"valid-data-types-for-x-axis",level:4},{value:"Valid Data Types for Y-Axis:",id:"valid-data-types-for-y-axis",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4},{value:"For X-Axis:",id:"for-x-axis",level:5},{value:"For Y-Axis:",id:"for-y-axis",level:5}],y={toc:p},u="wrapper";function c(e){let{components:r,...a}=e;return(0,n.yg)(u,(0,t.c)({},y,a,{components:r,mdxType:"MDXLayout"}),(0,n.yg)("div",{className:"pro-label"},(0,n.yg)("i",null,(0,n.yg)("h4",{style:{fontWeight:"500",marginBottom:5}},"This feature is available in ",(0,n.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only."))),(0,n.yg)("h4",{id:"preview"},"Preview:"),(0,n.yg)("img",{className:"card-preview",src:"/img/v4/line-chart.png",width:"500px",alt:"Preview"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"type"},"Type:"),(0,n.yg)("p",null,(0,n.yg)("inlineCode",{parentName:"p"},"LINE_CHART")),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types-for-x-axis"},"Valid Data Types for X-Axis:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"int")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"float")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"String")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"const char*"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types-for-y-axis"},"Valid Data Types for Y-Axis:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"int")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"float"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"initializer"},"Initializer:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Line Chart\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name )\n*/\nChart chart1(&dashboard, LINE_CHART, "Chart Name");\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"updaters"},"Updaters:"),(0,n.yg)("h5",{id:"for-x-axis"},"For X-Axis:"),(0,n.yg)("p",null,"X-Axis updater uses ",(0,n.yg)("inlineCode",{parentName:"p"},"updateX")," function."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/*\n Data for X Axis of our Chart\n This array can be of: `int` / `float` or `String` \n\n Note: this array should be kept in global scope. i.e. it should never be deleted from memory.\n*/\nString XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or\n (float array[], size_t array_size)\n or\n (String array[], size_t array_size)\n or\n (const char* array[], size_t array_size)\n*/\nchart1.updateX(XAxis, 7);\n')),(0,n.yg)("h5",{id:"for-y-axis"},"For Y-Axis:"),(0,n.yg)("p",null,"Y-Axis updater uses ",(0,n.yg)("inlineCode",{parentName:"p"},"updateY")," function."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"/*\n Data for Y Axis of our Chart\n This array can be of: `int` or `float`\n \n Note: this array should be kept in global scope. i.e. it should never be deleted from memory.\n*/\nint YAxis[] = {0, 0, 0, 0, 0, 0, 0};\n\n/*\n Update Function for Chart is as follows:\n --------\n (int array[], size_t array_size)\n or \n (float array[], size_t array_size)\n*/\nchart1.updateY(YAxis, 7);\n")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ee622a22.c25444fe.js b/assets/js/ee622a22.fa20dec3.js similarity index 78% rename from assets/js/ee622a22.c25444fe.js rename to assets/js/ee622a22.fa20dec3.js index 8dab9fce..d50ca3d1 100644 --- a/assets/js/ee622a22.c25444fe.js +++ b/assets/js/ee622a22.fa20dec3.js @@ -1 +1 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[9466],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>y});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(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 i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function s(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var c=n.createContext({}),l=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=l(r),d=o,y=u["".concat(c,".").concat(d)]||u[d]||m[d]||a;return r?n.createElement(y,i(i({ref:t},p),{},{components:r})):n.createElement(y,i({ref:t},p))}));function y(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=d;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[u]="string"==typeof e?e:o,i[1]=s;for(var l=2;l<a;l++)i[l]=r[l];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}d.displayName="MDXCreateElement"},5001:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>m,frontMatter:()=>a,metadata:()=>s,toc:()=>l});var n=r(7462),o=(r(7294),r(3905));const a={title:"Examples",sidebar_label:"Examples",sidebar_position:5},i=void 0,s={unversionedId:"more-examples",id:"version-v4.x.x/more-examples",title:"Examples",description:"There are many example sketches in our repository. You can check those out to know more about what you can do with ESP-DASH. We have contructed every example with very clear documentation so there is less obstruction in your learning process.",source:"@site/versioned_docs/version-v4.x.x/more-examples.md",sourceDirName:".",slug:"/more-examples",permalink:"/more-examples",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:5,frontMatter:{title:"Examples",sidebar_label:"Examples",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Getting Started",permalink:"/getting-started"},next:{title:"Tabs (Pro)",permalink:"/tabs"}},c={},l=[],p={toc:l},u="wrapper";function m(e){let{components:t,...r}=e;return(0,o.kt)(u,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"There are many example sketches in our repository. You can check those out to know more about what you can do with ESP-DASH. We have contructed every example with very clear documentation so there is less obstruction in your learning process."),(0,o.kt)("p",null,"You can find those examples in the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/ayushsharma82/ESP-DASH/tree/master/examples"},"repository"),"."))}m.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[2840],{5788:(e,t,r)=>{r.d(t,{Iu:()=>p,yg:()=>d});var n=r(1504);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(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 i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function s(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var c=n.createContext({}),l=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},y=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=l(r),y=o,d=u["".concat(c,".").concat(y)]||u[y]||m[y]||a;return r?n.createElement(d,i(i({ref:t},p),{},{components:r})):n.createElement(d,i({ref:t},p))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=y;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[u]="string"==typeof e?e:o,i[1]=s;for(var l=2;l<a;l++)i[l]=r[l];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}y.displayName="MDXCreateElement"},3012:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>m,frontMatter:()=>a,metadata:()=>s,toc:()=>l});var n=r(5072),o=(r(1504),r(5788));const a={title:"Examples",sidebar_label:"Examples",sidebar_position:5},i=void 0,s={unversionedId:"more-examples",id:"version-v4.x.x/more-examples",title:"Examples",description:"There are many example sketches in our repository. You can check those out to know more about what you can do with ESP-DASH. We have contructed every example with very clear documentation so there is less obstruction in your learning process.",source:"@site/versioned_docs/version-v4.x.x/more-examples.md",sourceDirName:".",slug:"/more-examples",permalink:"/more-examples",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:5,frontMatter:{title:"Examples",sidebar_label:"Examples",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Getting Started",permalink:"/getting-started"},next:{title:"Tabs (Pro)",permalink:"/tabs"}},c={},l=[],p={toc:l},u="wrapper";function m(e){let{components:t,...r}=e;return(0,o.yg)(u,(0,n.c)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,o.yg)("p",null,"There are many example sketches in our repository. You can check those out to know more about what you can do with ESP-DASH. We have contructed every example with very clear documentation so there is less obstruction in your learning process."),(0,o.yg)("p",null,"You can find those examples in the ",(0,o.yg)("a",{parentName:"p",href:"https://github.com/ayushsharma82/ESP-DASH/tree/master/examples"},"repository"),"."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f1c3c228.87de908b.js b/assets/js/f1c3c228.87de908b.js deleted file mode 100644 index 0deec886..00000000 --- a/assets/js/f1c3c228.87de908b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[6313],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>y});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(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){n(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 p(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var o=a.createContext({}),d=function(e){var t=a.useContext(o),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},u=function(e){var t=d(e.components);return a.createElement(o.Provider,{value:t},e.children)},c="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,o=e.parentName,u=p(e,["components","mdxType","originalType","parentName"]),c=d(r),m=n,y=c["".concat(o,".").concat(m)]||c[m]||s[m]||i;return r?a.createElement(y,l(l({ref:t},u),{},{components:r})):a.createElement(y,l({ref:t},u))}));function y(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,l=new Array(i);l[0]=m;var p={};for(var o in t)hasOwnProperty.call(t,o)&&(p[o]=t[o]);p.originalType=e,p[c]="string"==typeof e?e:n,l[1]=p;for(var d=2;d<i;d++)l[d]=r[d];return a.createElement.apply(null,l)}return a.createElement.apply(null,r)}m.displayName="MDXCreateElement"},22:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>o,contentTitle:()=>l,default:()=>s,frontMatter:()=>i,metadata:()=>p,toc:()=>d});var a=r(7462),n=(r(7294),r(3905));const i={title:"Humidity Card",sidebar_label:"Humidity",sidebar_position:3},l=void 0,p={unversionedId:"cards/humidity",id:"cards/humidity",title:"Humidity Card",description:"Preview:",source:"@site/docs/cards/humidity.md",sourceDirName:"cards",slug:"/cards/humidity",permalink:"/next/cards/humidity",draft:!1,tags:[],version:"current",sidebarPosition:3,frontMatter:{title:"Humidity Card",sidebar_label:"Humidity",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Temperature",permalink:"/next/cards/temperature"},next:{title:"Air (Pro)",permalink:"/next/cards/air"}},o={},d=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],u={toc:d},c="wrapper";function s(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{className:"card-preview",src:"/img/v4/humidity-card.png",width:"280px",alt:"Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"This card adds a distinctive humidity icon, and just like generic card you can add a symbol which will be appended to your data."),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"HUMIDITY_CARD")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"int")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"float")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"String"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Humidity Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )\n*/\nCard card1(&dashboard, HUMIDITY_CARD, "Humidity1", "%");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(float value);\n")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")),(0,n.kt)("p",null,"Or you can also update the symbol along with the value like this:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'card1.update(value, "RH");\n')),(0,n.kt)("br",null),(0,n.kt)("br",null))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f1c3c228.b3a67e68.js b/assets/js/f1c3c228.b3a67e68.js new file mode 100644 index 00000000..2c01a501 --- /dev/null +++ b/assets/js/f1c3c228.b3a67e68.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[168],{5788:(e,r,t)=>{t.d(r,{Iu:()=>u,yg:()=>m});var a=t(1504);function n(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function i(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);r&&(a=a.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,a)}return t}function l(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?i(Object(t),!0).forEach((function(r){n(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function p(e,r){if(null==e)return{};var t,a,n=function(e,r){if(null==e)return{};var t,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)t=i[a],r.indexOf(t)>=0||(n[t]=e[t]);return n}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)t=i[a],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}var d=a.createContext({}),o=function(e){var r=a.useContext(d),t=r;return e&&(t="function"==typeof e?e(r):l(l({},r),e)),t},u=function(e){var r=o(e.components);return a.createElement(d.Provider,{value:r},e.children)},c="mdxType",s={inlineCode:"code",wrapper:function(e){var r=e.children;return a.createElement(a.Fragment,{},r)}},y=a.forwardRef((function(e,r){var t=e.components,n=e.mdxType,i=e.originalType,d=e.parentName,u=p(e,["components","mdxType","originalType","parentName"]),c=o(t),y=n,m=c["".concat(d,".").concat(y)]||c[y]||s[y]||i;return t?a.createElement(m,l(l({ref:r},u),{},{components:t})):a.createElement(m,l({ref:r},u))}));function m(e,r){var t=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var i=t.length,l=new Array(i);l[0]=y;var p={};for(var d in r)hasOwnProperty.call(r,d)&&(p[d]=r[d]);p.originalType=e,p[c]="string"==typeof e?e:n,l[1]=p;for(var o=2;o<i;o++)l[o]=t[o];return a.createElement.apply(null,l)}return a.createElement.apply(null,t)}y.displayName="MDXCreateElement"},4960:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>d,contentTitle:()=>l,default:()=>s,frontMatter:()=>i,metadata:()=>p,toc:()=>o});var a=t(5072),n=(t(1504),t(5788));const i={title:"Humidity Card",sidebar_label:"Humidity",sidebar_position:3},l=void 0,p={unversionedId:"cards/humidity",id:"cards/humidity",title:"Humidity Card",description:"Preview:",source:"@site/docs/cards/humidity.md",sourceDirName:"cards",slug:"/cards/humidity",permalink:"/next/cards/humidity",draft:!1,tags:[],version:"current",sidebarPosition:3,frontMatter:{title:"Humidity Card",sidebar_label:"Humidity",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Temperature",permalink:"/next/cards/temperature"},next:{title:"Air (Pro)",permalink:"/next/cards/air"}},d={},o=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],u={toc:o},c="wrapper";function s(e){let{components:r,...t}=e;return(0,n.yg)(c,(0,a.c)({},u,t,{components:r,mdxType:"MDXLayout"}),(0,n.yg)("h4",{id:"preview"},"Preview:"),(0,n.yg)("img",{className:"card-preview",src:"/img/v4/humidity-card.png",width:"280px",alt:"Preview"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("p",null,"This card adds a distinctive humidity icon, and just like generic card you can add a symbol which will be appended to your data."),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"type"},"Type:"),(0,n.yg)("p",null,(0,n.yg)("inlineCode",{parentName:"p"},"HUMIDITY_CARD")),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"int")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"float")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"String"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"initializer"},"Initializer:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Humidity Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )\n*/\nCard card1(&dashboard, HUMIDITY_CARD, "Humidity1", "%");\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"updaters"},"Updaters:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(float value);\n")),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")),(0,n.yg)("p",null,"Or you can also update the symbol along with the value like this:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'card1.update(value, "RH");\n')),(0,n.yg)("br",null),(0,n.yg)("br",null))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f43a06cf.70adbdc1.js b/assets/js/f43a06cf.e70df596.js similarity index 60% rename from assets/js/f43a06cf.70adbdc1.js rename to assets/js/f43a06cf.e70df596.js index 98bf00ea..95d88e9a 100644 --- a/assets/js/f43a06cf.70adbdc1.js +++ b/assets/js/f43a06cf.e70df596.js @@ -1 +1 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[4052],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>b});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}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 a(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){o(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 l(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 s=n.createContext({}),c=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},u=function(e){var t=c(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=c(r),f=o,b=p["".concat(s,".").concat(f)]||p[f]||d[f]||i;return r?n.createElement(b,a(a({ref:t},u),{},{components:r})):n.createElement(b,a({ref:t},u))}));function b(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,a=new Array(i);a[0]=f;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:o,a[1]=l;for(var c=2;c<i;c++)a[c]=r[c];return n.createElement.apply(null,a)}return n.createElement.apply(null,r)}f.displayName="MDXCreateElement"},5012:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var n=r(7462),o=(r(7294),r(3905));const i={title:"Intro",hide_title:!0,sidebar_label:"Introduction",sidebar_position:1,slug:"/"},a=void 0,l={unversionedId:"intro",id:"version-v3.x.x/intro",title:"Intro",description:" ",source:"@site/versioned_docs/version-v3.x.x/intro.md",sourceDirName:".",slug:"/",permalink:"/v3.x.x/",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:1,frontMatter:{title:"Intro",hide_title:!0,sidebar_label:"Introduction",sidebar_position:1,slug:"/"},sidebar:"tutorialSidebar",next:{title:"Concept",permalink:"/v3.x.x/concept"}},s={},c=[],u={toc:c},p="wrapper";function d(e){let{components:t,...r}=e;return(0,o.kt)(p,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("p",{align:"center"},(0,o.kt)("img",{src:"/img//logo-docs.png",width:"300px"})),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("p",{align:"center"},(0,o.kt)("img",{src:"https://img.shields.io/github/last-commit/ayushsharma82/ESP-DASH?style=for-the-badge"}),"\xa0",(0,o.kt)("img",{src:"https://img.shields.io/travis/com/ayushsharma82/ESP-DASH?style=for-the-badge"}),"\xa0",(0,o.kt)("a",{href:"https://www.buymeacoffee.com/6QGVpSj",target:"_blank"},(0,o.kt)("img",{src:"https://img.shields.io/badge/Buy%20me%20a%20coffee-%245-orange?style=for-the-badge&logo=buy-me-a-coffee"}))),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("p",null,"ESP-DASH is a C++ library for creating functional & real-time dashboards for ESP8266 & ESP32 microcontrollers. It provides you with easy to use functions and lets you create a dashboard accessible on your module's IP address."))}d.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[5392],{5788:(e,t,r)=>{r.d(t,{Iu:()=>u,yg:()=>g});var n=r(1504);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}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 a(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){o(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 l(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 s=n.createContext({}),c=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},u=function(e){var t=c(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",y={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=c(r),d=o,g=p["".concat(s,".").concat(d)]||p[d]||y[d]||i;return r?n.createElement(g,a(a({ref:t},u),{},{components:r})):n.createElement(g,a({ref:t},u))}));function g(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,a=new Array(i);a[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:o,a[1]=l;for(var c=2;c<i;c++)a[c]=r[c];return n.createElement.apply(null,a)}return n.createElement.apply(null,r)}d.displayName="MDXCreateElement"},4240:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>y,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var n=r(5072),o=(r(1504),r(5788));const i={title:"Intro",hide_title:!0,sidebar_label:"Introduction",sidebar_position:1,slug:"/"},a=void 0,l={unversionedId:"intro",id:"version-v3.x.x/intro",title:"Intro",description:" ",source:"@site/versioned_docs/version-v3.x.x/intro.md",sourceDirName:".",slug:"/",permalink:"/v3.x.x/",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:1,frontMatter:{title:"Intro",hide_title:!0,sidebar_label:"Introduction",sidebar_position:1,slug:"/"},sidebar:"tutorialSidebar",next:{title:"Concept",permalink:"/v3.x.x/concept"}},s={},c=[],u={toc:c},p="wrapper";function y(e){let{components:t,...r}=e;return(0,o.yg)(p,(0,n.c)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,o.yg)("br",null),(0,o.yg)("br",null),(0,o.yg)("br",null),(0,o.yg)("br",null),(0,o.yg)("p",{align:"center"},(0,o.yg)("img",{src:"/img//logo-docs.png",width:"300px"})),(0,o.yg)("br",null),(0,o.yg)("br",null),(0,o.yg)("p",{align:"center"},(0,o.yg)("img",{src:"https://img.shields.io/github/last-commit/ayushsharma82/ESP-DASH?style=for-the-badge"}),"\xa0",(0,o.yg)("img",{src:"https://img.shields.io/travis/com/ayushsharma82/ESP-DASH?style=for-the-badge"}),"\xa0",(0,o.yg)("a",{href:"https://www.buymeacoffee.com/6QGVpSj",target:"_blank"},(0,o.yg)("img",{src:"https://img.shields.io/badge/Buy%20me%20a%20coffee-%245-orange?style=for-the-badge&logo=buy-me-a-coffee"}))),(0,o.yg)("br",null),(0,o.yg)("br",null),(0,o.yg)("p",null,"ESP-DASH is a C++ library for creating functional & real-time dashboards for ESP8266 & ESP32 microcontrollers. It provides you with easy to use functions and lets you create a dashboard accessible on your module's IP address."))}y.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f4d79f1d.0d84bf45.js b/assets/js/f4d79f1d.0d84bf45.js deleted file mode 100644 index 29de068a..00000000 --- a/assets/js/f4d79f1d.0d84bf45.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[9653],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>v});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function o(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),d=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},c=function(e){var t=d(e.components);return r.createElement(p.Provider,{value:t},e.children)},s="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},b=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,p=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),s=d(a),b=n,v=s["".concat(p,".").concat(b)]||s[b]||u[b]||i;return a?r.createElement(v,l(l({ref:t},c),{},{components:a})):r.createElement(v,l({ref:t},c))}));function v(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,l=new Array(i);l[0]=b;var o={};for(var p in t)hasOwnProperty.call(t,p)&&(o[p]=t[p]);o.originalType=e,o[s]="string"==typeof e?e:n,l[1]=o;for(var d=2;d<i;d++)l[d]=a[d];return r.createElement.apply(null,l)}return r.createElement.apply(null,a)}b.displayName="MDXCreateElement"},2106:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>d});var r=a(7462),n=(a(7294),a(3905));const i={title:"Text Input Card",sidebar_label:"Text Input (Pro)",sidebar_position:6},l=void 0,o={unversionedId:"cards/text-input",id:"version-v3.x.x/cards/text-input",title:"Text Input Card",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v3.x.x/cards/text-input.md",sourceDirName:"cards",slug:"/cards/text-input",permalink:"/v3.x.x/cards/text-input",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:6,frontMatter:{title:"Text Input Card",sidebar_label:"Text Input (Pro)",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"Slider",permalink:"/v3.x.x/cards/slider"},next:{title:"Joystick (Pro)",permalink:"/v3.x.x/cards/joystick"}},p={},d=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Callback:",id:"callback",level:4},{value:"Updaters:",id:"updaters",level:4}],c={toc:d},s="wrapper";function u(e){let{components:t,...a}=e;return(0,n.kt)(s,(0,r.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("div",{style:{border:"1px solid rgba(255,0,0, 0.03)",padding:20,borderRadius:14,backgroundColor:"rgba(255,0,0, 0.03)",maxWidth:600}},(0,n.kt)("h4",{style:{fontWeight:"500",marginBottom:5}}," This feature is available in ",(0,n.kt)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only.")),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{src:"/img//text-input-card.png",width:"280px",alt:"Energy Card Preview"}),(0,n.kt)("br",null),(0,n.kt)("br",null),(0,n.kt)("p",null,"Text Input Card gives you the ability to take String input from user and save them in your application. It provides you with a input box on the dashboard where user can send back text to your application. "),(0,n.kt)("p",null,"This card is very useful for saving WiFi credentials, passwords and general information."),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"type"},"Type:"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"TEXT_INPUT_CARD")),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"String"))),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"initializer"},"Initializer:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Energy Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name)\n*/\nCard card1(&dashboard, TEXT_INPUT_CARD, "User Email");\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"callback"},"Callback:"),(0,n.kt)("p",null,"Text Input Card requires a callback function which will be called when we receive a input from our dashboard. In setup block, we will be calling our ",(0,n.kt)("inlineCode",{parentName:"p"},"attachCallback")," function and provide a lambda (callback) function with a ",(0,n.kt)("inlineCode",{parentName:"p"},"const char*")," (character array) argument."),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Note:")," You need to call the ",(0,n.kt)("inlineCode",{parentName:"p"},"update")," function and ",(0,n.kt)("inlineCode",{parentName:"p"},"sendUpdates")," immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard and it will keep the card stuck in 'waiting' phase."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},'/*\n We provide our attachCallback with a lambda function to handle incomming data\n `value` is the boolean sent from your dashboard\n*/\ncard1.attachCallback([&](const char* value){\n Serial.println("[Card1] Text Input Callback Triggered: "+String(value));\n card1.update(value);\n dashboard.sendUpdates();\n});\n')),(0,n.kt)("br",null),(0,n.kt)("h4",{id:"updaters"},"Updaters:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(const char* value);\n")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f4d79f1d.22822662.js b/assets/js/f4d79f1d.22822662.js new file mode 100644 index 00000000..456d017e --- /dev/null +++ b/assets/js/f4d79f1d.22822662.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[3088],{5788:(e,a,r)=>{r.d(a,{Iu:()=>d,yg:()=>g});var t=r(1504);function n(e,a,r){return a in e?Object.defineProperty(e,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[a]=r,e}function i(e,a){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);a&&(t=t.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),r.push.apply(r,t)}return r}function l(e){for(var a=1;a<arguments.length;a++){var r=null!=arguments[a]?arguments[a]:{};a%2?i(Object(r),!0).forEach((function(a){n(e,a,r[a])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(r,a))}))}return e}function o(e,a){if(null==e)return{};var r,t,n=function(e,a){if(null==e)return{};var r,t,n={},i=Object.keys(e);for(t=0;t<i.length;t++)r=i[t],a.indexOf(r)>=0||(n[r]=e[r]);return n}(e,a);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t<i.length;t++)r=i[t],a.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=t.createContext({}),c=function(e){var a=t.useContext(p),r=a;return e&&(r="function"==typeof e?e(a):l(l({},a),e)),r},d=function(e){var a=c(e.components);return t.createElement(p.Provider,{value:a},e.children)},s="mdxType",u={inlineCode:"code",wrapper:function(e){var a=e.children;return t.createElement(t.Fragment,{},a)}},y=t.forwardRef((function(e,a){var r=e.components,n=e.mdxType,i=e.originalType,p=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),s=c(r),y=n,g=s["".concat(p,".").concat(y)]||s[y]||u[y]||i;return r?t.createElement(g,l(l({ref:a},d),{},{components:r})):t.createElement(g,l({ref:a},d))}));function g(e,a){var r=arguments,n=a&&a.mdxType;if("string"==typeof e||n){var i=r.length,l=new Array(i);l[0]=y;var o={};for(var p in a)hasOwnProperty.call(a,p)&&(o[p]=a[p]);o.originalType=e,o[s]="string"==typeof e?e:n,l[1]=o;for(var c=2;c<i;c++)l[c]=r[c];return t.createElement.apply(null,l)}return t.createElement.apply(null,r)}y.displayName="MDXCreateElement"},484:(e,a,r)=>{r.r(a),r.d(a,{assets:()=>p,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>c});var t=r(5072),n=(r(1504),r(5788));const i={title:"Text Input Card",sidebar_label:"Text Input (Pro)",sidebar_position:6},l=void 0,o={unversionedId:"cards/text-input",id:"version-v3.x.x/cards/text-input",title:"Text Input Card",description:"This feature is available in DASH Pro only.",source:"@site/versioned_docs/version-v3.x.x/cards/text-input.md",sourceDirName:"cards",slug:"/cards/text-input",permalink:"/v3.x.x/cards/text-input",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:6,frontMatter:{title:"Text Input Card",sidebar_label:"Text Input (Pro)",sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"Slider",permalink:"/v3.x.x/cards/slider"},next:{title:"Joystick (Pro)",permalink:"/v3.x.x/cards/joystick"}},p={},c=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Callback:",id:"callback",level:4},{value:"Updaters:",id:"updaters",level:4}],d={toc:c},s="wrapper";function u(e){let{components:a,...r}=e;return(0,n.yg)(s,(0,t.c)({},d,r,{components:a,mdxType:"MDXLayout"}),(0,n.yg)("div",{style:{border:"1px solid rgba(255,0,0, 0.03)",padding:20,borderRadius:14,backgroundColor:"rgba(255,0,0, 0.03)",maxWidth:600}},(0,n.yg)("h4",{style:{fontWeight:"500",marginBottom:5}}," This feature is available in ",(0,n.yg)("a",{target:"_blank",style:{color:"red"},href:"https://espdash.pro"},"DASH Pro")," only.")),(0,n.yg)("h4",{id:"preview"},"Preview:"),(0,n.yg)("img",{src:"/img//text-input-card.png",width:"280px",alt:"Energy Card Preview"}),(0,n.yg)("br",null),(0,n.yg)("br",null),(0,n.yg)("p",null,"Text Input Card gives you the ability to take String input from user and save them in your application. It provides you with a input box on the dashboard where user can send back text to your application. "),(0,n.yg)("p",null,"This card is very useful for saving WiFi credentials, passwords and general information."),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"type"},"Type:"),(0,n.yg)("p",null,(0,n.yg)("inlineCode",{parentName:"p"},"TEXT_INPUT_CARD")),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("inlineCode",{parentName:"li"},"String"))),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"initializer"},"Initializer:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Energy Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name)\n*/\nCard card1(&dashboard, TEXT_INPUT_CARD, "User Email");\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"callback"},"Callback:"),(0,n.yg)("p",null,"Text Input Card requires a callback function which will be called when we receive a input from our dashboard. In setup block, we will be calling our ",(0,n.yg)("inlineCode",{parentName:"p"},"attachCallback")," function and provide a lambda (callback) function with a ",(0,n.yg)("inlineCode",{parentName:"p"},"const char*")," (character array) argument."),(0,n.yg)("p",null,(0,n.yg)("strong",{parentName:"p"},"Note:")," You need to call the ",(0,n.yg)("inlineCode",{parentName:"p"},"update")," function and ",(0,n.yg)("inlineCode",{parentName:"p"},"sendUpdates")," immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard and it will keep the card stuck in 'waiting' phase."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},'/*\n We provide our attachCallback with a lambda function to handle incomming data\n `value` is the boolean sent from your dashboard\n*/\ncard1.attachCallback([&](const char* value){\n Serial.println("[Card1] Text Input Callback Triggered: "+String(value));\n card1.update(value);\n dashboard.sendUpdates();\n});\n')),(0,n.yg)("br",null),(0,n.yg)("h4",{id:"updaters"},"Updaters:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(const char* value);\n")),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(String value);\n")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f62b367a.4fafd803.js b/assets/js/f62b367a.d3f39be1.js similarity index 58% rename from assets/js/f62b367a.4fafd803.js rename to assets/js/f62b367a.d3f39be1.js index 77a43a49..fc1946b9 100644 --- a/assets/js/f62b367a.4fafd803.js +++ b/assets/js/f62b367a.d3f39be1.js @@ -1 +1 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[5280],{3905:(e,n,t)=>{t.d(n,{Zo:()=>c,kt:()=>m});var a=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function s(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?i(Object(t),!0).forEach((function(n){r(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function l(e,n){if(null==e)return{};var t,a,r=function(e,n){if(null==e)return{};var t,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)t=i[a],n.indexOf(t)>=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)t=i[a],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var o=a.createContext({}),d=function(e){var n=a.useContext(o),t=n;return e&&(t="function"==typeof e?e(n):s(s({},n),e)),t},c=function(e){var n=d(e.components);return a.createElement(o.Provider,{value:n},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},h=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,o=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),p=d(t),h=r,m=p["".concat(o,".").concat(h)]||p[h]||u[h]||i;return t?a.createElement(m,s(s({ref:n},c),{},{components:t})):a.createElement(m,s({ref:n},c))}));function m(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,s=new Array(i);s[0]=h;var l={};for(var o in n)hasOwnProperty.call(n,o)&&(l[o]=n[o]);l.originalType=e,l[p]="string"==typeof e?e:r,s[1]=l;for(var d=2;d<i;d++)s[d]=t[d];return a.createElement.apply(null,s)}return a.createElement.apply(null,t)}h.displayName="MDXCreateElement"},5225:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>o,contentTitle:()=>s,default:()=>u,frontMatter:()=>i,metadata:()=>l,toc:()=>d});var a=t(7462),r=(t(7294),t(3905));const i={title:"Getting Started",sidebar_label:"Getting Started",sidebar_position:4},s=void 0,l={unversionedId:"getting-started",id:"version-v4.x.x/getting-started",title:"Getting Started",description:"To get started with ESP-DASH, we will be creating our basic example step by step and learn what each setup does:",source:"@site/versioned_docs/version-v4.x.x/getting-started.md",sourceDirName:".",slug:"/getting-started",permalink:"/getting-started",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:4,frontMatter:{title:"Getting Started",sidebar_label:"Getting Started",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Installation",permalink:"/installation"},next:{title:"Examples",permalink:"/more-examples"}},o={},d=[{value:"Part 1: Include Dependencies",id:"part-1-include-dependencies",level:4},{value:"Part 2: Create AsyncWebServer Instance",id:"part-2-create-asyncwebserver-instance",level:4},{value:"Part 3: Attach ESP-DASH Instance",id:"part-3-attach-esp-dash-instance",level:4},{value:"Part 4: Create Cards",id:"part-4-create-cards",level:4},{value:"Part 5: Setup Block",id:"part-5-setup-block",level:4},{value:"Part 5: Loop Block",id:"part-5-loop-block",level:4},{value:"1. Updating Card Values",id:"1-updating-card-values",level:5},{value:"2. Sending updates to our Dashboard",id:"2-sending-updates-to-our-dashboard",level:5},{value:"Complete Loop Block:",id:"complete-loop-block",level:5},{value:"Final Code",id:"final-code",level:3}],c={toc:d},p="wrapper";function u(e){let{components:n,...t}=e;return(0,r.kt)(p,(0,a.Z)({},c,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"To get started with ESP-DASH, we will be creating our ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/ayushsharma82/ESP-DASH/tree/master/examples/Basic"},"basic")," example step by step and learn what each setup does:"),(0,r.kt)("br",null),(0,r.kt)("h4",{id:"part-1-include-dependencies"},"Part 1: Include Dependencies"),(0,r.kt)("p",null,"We have used conditional compilation in this part therefore the code will work for both ESP8266 & ESP32."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cpp"},"#include <Arduino.h>\n#if defined(ESP8266)\n /* ESP8266 Dependencies */\n #include <ESP8266WiFi.h>\n #include <ESPAsyncTCP.h>\n #include <ESPAsyncWebServer.h>\n#elif defined(ESP32)\n /* ESP32 Dependencies */\n #include <WiFi.h>\n #include <AsyncTCP.h>\n #include <ESPAsyncWebServer.h>\n#endif\n#include <ESPDash.h>\n")),(0,r.kt)("br",null),(0,r.kt)("h4",{id:"part-2-create-asyncwebserver-instance"},"Part 2: Create AsyncWebServer Instance"),(0,r.kt)("p",null,'Create an AsyncWebServer instance on default "80" port.'),(0,r.kt)("i",null,"Note: You are not restricted to a single dashboard. You can host as many dashboards as you want on multiple ports."),(0,r.kt)("br",null),(0,r.kt)("br",null),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cpp"},"/* Start Webserver */\nAsyncWebServer server(80);\n")),(0,r.kt)("br",null),(0,r.kt)("h4",{id:"part-3-attach-esp-dash-instance"},"Part 3: Attach ESP-DASH Instance"),(0,r.kt)("p",null,"Pass the AsyncWebServer instance to ESPDash's instance. Internally the ESPDash will hook to AsyncWebServer for handling all the networking tasks."),(0,r.kt)("i",null,"Note: You can still use the same AsyncWebServer instance for other tasks."),(0,r.kt)("br",null),(0,r.kt)("br",null),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cpp"},"/* Attach ESP-DASH to AsyncWebServer */\nESPDash dashboard(&server); \n")),(0,r.kt)("br",null),(0,r.kt)("h4",{id:"part-4-create-cards"},"Part 4: Create Cards"),(0,r.kt)("p",null,"In this step, we will creating ESP-DASH cards and passing our dasboard instance as a first argument so that they can add / remove themselves."),(0,r.kt)("p",null,(0,r.kt)("em",{parentName:"p"},"After we are done with this guide, Please take a look at Cards section to know more about the types of cards available to us.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Dashboard Cards \n Format - (Dashboard Instance, Card Type, Card Name, Card Symbol(optional) )\n*/\nCard temperature(&dashboard, TEMPERATURE_CARD, "Temperature", "\xb0C");\nCard humidity(&dashboard, HUMIDITY_CARD, "Humidity", "%");\n')),(0,r.kt)("br",null),(0,r.kt)("h4",{id:"part-5-setup-block"},"Part 5: Setup Block"),(0,r.kt)("p",null,"In our setup block, we will be adding the usual WiFi connectivity stuff and then start our AsyncWebServer with ",(0,r.kt)("inlineCode",{parentName:"p"},"server.begin();"),"."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cpp"},'void setup() {\n Serial.begin(115200);\n\n /* Connect WiFi */\n WiFi.mode(WIFI_STA);\n WiFi.begin("ssid", "password");\n if (WiFi.waitForConnectResult() != WL_CONNECTED) {\n Serial.printf("WiFi Failed!\\n");\n return;\n }\n Serial.print("IP Address: ");\n Serial.println(WiFi.localIP());\n\n /* Start AsyncWebServer */\n server.begin();\n}\n')),(0,r.kt)("br",null),(0,r.kt)("h4",{id:"part-5-loop-block"},"Part 5: Loop Block"),(0,r.kt)("p",null,"In our loop block, we will be doing 2 things:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Updating card values"),(0,r.kt)("li",{parentName:"ol"},"Sending updates to our dashboard")),(0,r.kt)("h5",{id:"1-updating-card-values"},"1. Updating Card Values"),(0,r.kt)("p",null,"Remember the 'Cards' we created in 4th part? We will now access those cards by their variable and update them using the ",(0,r.kt)("inlineCode",{parentName:"p"},"update")," function which is provided with our card's class:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cpp"},"temperature.update((int)random(0, 50));\n")),(0,r.kt)("h5",{id:"2-sending-updates-to-our-dashboard"},"2. Sending updates to our Dashboard"),(0,r.kt)("p",null,"Once we have updated values of our card(s), we will call the ",(0,r.kt)("inlineCode",{parentName:"p"},"sendUpdates()")," function of our dashboard instance and it will send new card values to every connected client in real time."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cpp"},"dashboard.sendUpdates();\n")),(0,r.kt)("p",null,(0,r.kt)("em",{parentName:"p"},"Technically speaking, You can call these functions anywhere in your sketch, but for demonstration purposes we have called them in our loop block.")),(0,r.kt)("h5",{id:"complete-loop-block"},"Complete Loop Block:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cpp"},"void loop() {\n /* Update Card Values */\n temperature.update((int)random(0, 50));\n humidity.update((int)random(0, 100));\n\n /* Send Updates to our Dashboard (realtime) */\n dashboard.sendUpdates();\n\n /* \n Delay is just for demonstration purposes in this example,\n Replace this code with 'millis interval' in your final project.\n */\n delay(3000);\n}\n")),(0,r.kt)("br",null),(0,r.kt)("h3",{id:"final-code"},"Final Code"),(0,r.kt)("p",null,"That's it! Now we can just upload this sketch to our MCU and access the dashboard via it's IP address. ( Make sure to change the ",(0,r.kt)("inlineCode",{parentName:"p"},"ssid")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"password")," in our sketch according to your Access Point )"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cpp"},'/*\n -----------------------\n ESPDASH - Basic Example\n -----------------------\n\n Skill Level: Intermediate\n\n In this example we will be creating a basic dashboard which consists \n of some cards and then update them in realtime ( at 3s interval ).\n\n Github: https://github.com/ayushsharma82/ESP-DASH\n WiKi: https://ayushsharma82.github.io/ESP-DASH/\n\n Works with both ESP8266 & ESP32\n*/\n\n#include <Arduino.h>\n#if defined(ESP8266)\n /* ESP8266 Dependencies */\n #include <ESP8266WiFi.h>\n #include <ESPAsyncTCP.h>\n #include <ESPAsyncWebServer.h>\n#elif defined(ESP32)\n /* ESP32 Dependencies */\n #include <WiFi.h>\n #include <AsyncTCP.h>\n #include <ESPAsyncWebServer.h>\n#endif\n#include <ESPDash.h>\n\n\n/* Your WiFi Credentials */\nconst char* ssid = ""; // SSID\nconst char* password = ""; // Password\n\n/* Start Webserver */\nAsyncWebServer server(80);\n\n/* Attach ESP-DASH to AsyncWebServer */\nESPDash dashboard(&server); \n\n/* \n Dashboard Cards \n Format - (Dashboard Instance, Card Type, Card Name, Card Symbol(optional) )\n*/\nCard temperature(&dashboard, TEMPERATURE_CARD, "Temperature", "\xb0C");\nCard humidity(&dashboard, HUMIDITY_CARD, "Humidity", "%");\n\n\nvoid setup() {\n Serial.begin(115200);\n\n /* Connect WiFi */\n WiFi.mode(WIFI_STA);\n WiFi.begin(ssid, password);\n if (WiFi.waitForConnectResult() != WL_CONNECTED) {\n Serial.printf("WiFi Failed!\\n");\n return;\n }\n Serial.print("IP Address: ");\n Serial.println(WiFi.localIP());\n\n /* Start AsyncWebServer */\n server.begin();\n}\n\nvoid loop() {\n /* Update Card Values */\n temperature.update((int)random(0, 50));\n humidity.update((int)random(0, 100));\n\n /* Send Updates to our Dashboard (realtime) */\n dashboard.sendUpdates();\n\n /* \n Delay is just for demonstration purposes in this example,\n Replace this code with \'millis interval\' in your final project.\n */\n delay(3000);\n}\n')))}u.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[8904],{5788:(e,n,a)=>{a.d(n,{Iu:()=>c,yg:()=>g});var t=a(1504);function r(e,n,a){return n in e?Object.defineProperty(e,n,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[n]=a,e}function i(e,n){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),a.push.apply(a,t)}return a}function s(e){for(var n=1;n<arguments.length;n++){var a=null!=arguments[n]?arguments[n]:{};n%2?i(Object(a),!0).forEach((function(n){r(e,n,a[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(a,n))}))}return e}function l(e,n){if(null==e)return{};var a,t,r=function(e,n){if(null==e)return{};var a,t,r={},i=Object.keys(e);for(t=0;t<i.length;t++)a=i[t],n.indexOf(a)>=0||(r[a]=e[a]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t<i.length;t++)a=i[t],n.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var o=t.createContext({}),d=function(e){var n=t.useContext(o),a=n;return e&&(a="function"==typeof e?e(n):s(s({},n),e)),a},c=function(e){var n=d(e.components);return t.createElement(o.Provider,{value:n},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var n=e.children;return t.createElement(t.Fragment,{},n)}},h=t.forwardRef((function(e,n){var a=e.components,r=e.mdxType,i=e.originalType,o=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),p=d(a),h=r,g=p["".concat(o,".").concat(h)]||p[h]||u[h]||i;return a?t.createElement(g,s(s({ref:n},c),{},{components:a})):t.createElement(g,s({ref:n},c))}));function g(e,n){var a=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=a.length,s=new Array(i);s[0]=h;var l={};for(var o in n)hasOwnProperty.call(n,o)&&(l[o]=n[o]);l.originalType=e,l[p]="string"==typeof e?e:r,s[1]=l;for(var d=2;d<i;d++)s[d]=a[d];return t.createElement.apply(null,s)}return t.createElement.apply(null,a)}h.displayName="MDXCreateElement"},8108:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>o,contentTitle:()=>s,default:()=>u,frontMatter:()=>i,metadata:()=>l,toc:()=>d});var t=a(5072),r=(a(1504),a(5788));const i={title:"Getting Started",sidebar_label:"Getting Started",sidebar_position:4},s=void 0,l={unversionedId:"getting-started",id:"version-v4.x.x/getting-started",title:"Getting Started",description:"To get started with ESP-DASH, we will be creating our basic example step by step and learn what each setup does:",source:"@site/versioned_docs/version-v4.x.x/getting-started.md",sourceDirName:".",slug:"/getting-started",permalink:"/getting-started",draft:!1,tags:[],version:"v4.x.x",sidebarPosition:4,frontMatter:{title:"Getting Started",sidebar_label:"Getting Started",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Installation",permalink:"/installation"},next:{title:"Examples",permalink:"/more-examples"}},o={},d=[{value:"Part 1: Include Dependencies",id:"part-1-include-dependencies",level:4},{value:"Part 2: Create AsyncWebServer Instance",id:"part-2-create-asyncwebserver-instance",level:4},{value:"Part 3: Attach ESP-DASH Instance",id:"part-3-attach-esp-dash-instance",level:4},{value:"Part 4: Create Cards",id:"part-4-create-cards",level:4},{value:"Part 5: Setup Block",id:"part-5-setup-block",level:4},{value:"Part 5: Loop Block",id:"part-5-loop-block",level:4},{value:"1. Updating Card Values",id:"1-updating-card-values",level:5},{value:"2. Sending updates to our Dashboard",id:"2-sending-updates-to-our-dashboard",level:5},{value:"Complete Loop Block:",id:"complete-loop-block",level:5},{value:"Final Code",id:"final-code",level:3}],c={toc:d},p="wrapper";function u(e){let{components:n,...a}=e;return(0,r.yg)(p,(0,t.c)({},c,a,{components:n,mdxType:"MDXLayout"}),(0,r.yg)("p",null,"To get started with ESP-DASH, we will be creating our ",(0,r.yg)("a",{parentName:"p",href:"https://github.com/ayushsharma82/ESP-DASH/tree/master/examples/Basic"},"basic")," example step by step and learn what each setup does:"),(0,r.yg)("br",null),(0,r.yg)("h4",{id:"part-1-include-dependencies"},"Part 1: Include Dependencies"),(0,r.yg)("p",null,"We have used conditional compilation in this part therefore the code will work for both ESP8266 & ESP32."),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-cpp"},"#include <Arduino.h>\n#if defined(ESP8266)\n /* ESP8266 Dependencies */\n #include <ESP8266WiFi.h>\n #include <ESPAsyncTCP.h>\n #include <ESPAsyncWebServer.h>\n#elif defined(ESP32)\n /* ESP32 Dependencies */\n #include <WiFi.h>\n #include <AsyncTCP.h>\n #include <ESPAsyncWebServer.h>\n#endif\n#include <ESPDash.h>\n")),(0,r.yg)("br",null),(0,r.yg)("h4",{id:"part-2-create-asyncwebserver-instance"},"Part 2: Create AsyncWebServer Instance"),(0,r.yg)("p",null,'Create an AsyncWebServer instance on default "80" port.'),(0,r.yg)("i",null,"Note: You are not restricted to a single dashboard. You can host as many dashboards as you want on multiple ports."),(0,r.yg)("br",null),(0,r.yg)("br",null),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-cpp"},"/* Start Webserver */\nAsyncWebServer server(80);\n")),(0,r.yg)("br",null),(0,r.yg)("h4",{id:"part-3-attach-esp-dash-instance"},"Part 3: Attach ESP-DASH Instance"),(0,r.yg)("p",null,"Pass the AsyncWebServer instance to ESPDash's instance. Internally the ESPDash will hook to AsyncWebServer for handling all the networking tasks."),(0,r.yg)("i",null,"Note: You can still use the same AsyncWebServer instance for other tasks."),(0,r.yg)("br",null),(0,r.yg)("br",null),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-cpp"},"/* Attach ESP-DASH to AsyncWebServer */\nESPDash dashboard(&server); \n")),(0,r.yg)("br",null),(0,r.yg)("h4",{id:"part-4-create-cards"},"Part 4: Create Cards"),(0,r.yg)("p",null,"In this step, we will creating ESP-DASH cards and passing our dasboard instance as a first argument so that they can add / remove themselves."),(0,r.yg)("p",null,(0,r.yg)("em",{parentName:"p"},"After we are done with this guide, Please take a look at Cards section to know more about the types of cards available to us.")),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Dashboard Cards \n Format - (Dashboard Instance, Card Type, Card Name, Card Symbol(optional) )\n*/\nCard temperature(&dashboard, TEMPERATURE_CARD, "Temperature", "\xb0C");\nCard humidity(&dashboard, HUMIDITY_CARD, "Humidity", "%");\n')),(0,r.yg)("br",null),(0,r.yg)("h4",{id:"part-5-setup-block"},"Part 5: Setup Block"),(0,r.yg)("p",null,"In our setup block, we will be adding the usual WiFi connectivity stuff and then start our AsyncWebServer with ",(0,r.yg)("inlineCode",{parentName:"p"},"server.begin();"),"."),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-cpp"},'void setup() {\n Serial.begin(115200);\n\n /* Connect WiFi */\n WiFi.mode(WIFI_STA);\n WiFi.begin("ssid", "password");\n if (WiFi.waitForConnectResult() != WL_CONNECTED) {\n Serial.printf("WiFi Failed!\\n");\n return;\n }\n Serial.print("IP Address: ");\n Serial.println(WiFi.localIP());\n\n /* Start AsyncWebServer */\n server.begin();\n}\n')),(0,r.yg)("br",null),(0,r.yg)("h4",{id:"part-5-loop-block"},"Part 5: Loop Block"),(0,r.yg)("p",null,"In our loop block, we will be doing 2 things:"),(0,r.yg)("ol",null,(0,r.yg)("li",{parentName:"ol"},"Updating card values"),(0,r.yg)("li",{parentName:"ol"},"Sending updates to our dashboard")),(0,r.yg)("h5",{id:"1-updating-card-values"},"1. Updating Card Values"),(0,r.yg)("p",null,"Remember the 'Cards' we created in 4th part? We will now access those cards by their variable and update them using the ",(0,r.yg)("inlineCode",{parentName:"p"},"update")," function which is provided with our card's class:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-cpp"},"temperature.update((int)random(0, 50));\n")),(0,r.yg)("h5",{id:"2-sending-updates-to-our-dashboard"},"2. Sending updates to our Dashboard"),(0,r.yg)("p",null,"Once we have updated values of our card(s), we will call the ",(0,r.yg)("inlineCode",{parentName:"p"},"sendUpdates()")," function of our dashboard instance and it will send new card values to every connected client in real time."),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-cpp"},"dashboard.sendUpdates();\n")),(0,r.yg)("p",null,(0,r.yg)("em",{parentName:"p"},"Technically speaking, You can call these functions anywhere in your sketch, but for demonstration purposes we have called them in our loop block.")),(0,r.yg)("h5",{id:"complete-loop-block"},"Complete Loop Block:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-cpp"},"void loop() {\n /* Update Card Values */\n temperature.update((int)random(0, 50));\n humidity.update((int)random(0, 100));\n\n /* Send Updates to our Dashboard (realtime) */\n dashboard.sendUpdates();\n\n /* \n Delay is just for demonstration purposes in this example,\n Replace this code with 'millis interval' in your final project.\n */\n delay(3000);\n}\n")),(0,r.yg)("br",null),(0,r.yg)("h3",{id:"final-code"},"Final Code"),(0,r.yg)("p",null,"That's it! Now we can just upload this sketch to our MCU and access the dashboard via it's IP address. ( Make sure to change the ",(0,r.yg)("inlineCode",{parentName:"p"},"ssid")," and ",(0,r.yg)("inlineCode",{parentName:"p"},"password")," in our sketch according to your Access Point )"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-cpp"},'/*\n -----------------------\n ESPDASH - Basic Example\n -----------------------\n\n Skill Level: Intermediate\n\n In this example we will be creating a basic dashboard which consists \n of some cards and then update them in realtime ( at 3s interval ).\n\n Github: https://github.com/ayushsharma82/ESP-DASH\n WiKi: https://ayushsharma82.github.io/ESP-DASH/\n\n Works with both ESP8266 & ESP32\n*/\n\n#include <Arduino.h>\n#if defined(ESP8266)\n /* ESP8266 Dependencies */\n #include <ESP8266WiFi.h>\n #include <ESPAsyncTCP.h>\n #include <ESPAsyncWebServer.h>\n#elif defined(ESP32)\n /* ESP32 Dependencies */\n #include <WiFi.h>\n #include <AsyncTCP.h>\n #include <ESPAsyncWebServer.h>\n#endif\n#include <ESPDash.h>\n\n\n/* Your WiFi Credentials */\nconst char* ssid = ""; // SSID\nconst char* password = ""; // Password\n\n/* Start Webserver */\nAsyncWebServer server(80);\n\n/* Attach ESP-DASH to AsyncWebServer */\nESPDash dashboard(&server); \n\n/* \n Dashboard Cards \n Format - (Dashboard Instance, Card Type, Card Name, Card Symbol(optional) )\n*/\nCard temperature(&dashboard, TEMPERATURE_CARD, "Temperature", "\xb0C");\nCard humidity(&dashboard, HUMIDITY_CARD, "Humidity", "%");\n\n\nvoid setup() {\n Serial.begin(115200);\n\n /* Connect WiFi */\n WiFi.mode(WIFI_STA);\n WiFi.begin(ssid, password);\n if (WiFi.waitForConnectResult() != WL_CONNECTED) {\n Serial.printf("WiFi Failed!\\n");\n return;\n }\n Serial.print("IP Address: ");\n Serial.println(WiFi.localIP());\n\n /* Start AsyncWebServer */\n server.begin();\n}\n\nvoid loop() {\n /* Update Card Values */\n temperature.update((int)random(0, 50));\n humidity.update((int)random(0, 100));\n\n /* Send Updates to our Dashboard (realtime) */\n dashboard.sendUpdates();\n\n /* \n Delay is just for demonstration purposes in this example,\n Replace this code with \'millis interval\' in your final project.\n */\n delay(3000);\n}\n')))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f736db6d.44951e3f.js b/assets/js/f736db6d.44951e3f.js new file mode 100644 index 00000000..a49a48bd --- /dev/null +++ b/assets/js/f736db6d.44951e3f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[7772],{5788:(e,r,n)=>{n.d(r,{Iu:()=>c,yg:()=>y});var a=n(1504);function t(e,r,n){return r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}function l(e,r){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);r&&(a=a.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?l(Object(n),!0).forEach((function(r){t(e,r,n[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))}))}return e}function o(e,r){if(null==e)return{};var n,a,t=function(e,r){if(null==e)return{};var n,a,t={},l=Object.keys(e);for(a=0;a<l.length;a++)n=l[a],r.indexOf(n)>=0||(t[n]=e[n]);return t}(e,r);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)n=l[a],r.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(t[n]=e[n])}return t}var p=a.createContext({}),s=function(e){var r=a.useContext(p),n=r;return e&&(n="function"==typeof e?e(r):i(i({},r),e)),n},c=function(e){var r=s(e.components);return a.createElement(p.Provider,{value:r},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var r=e.children;return a.createElement(a.Fragment,{},r)}},g=a.forwardRef((function(e,r){var n=e.components,t=e.mdxType,l=e.originalType,p=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),d=s(n),g=t,y=d["".concat(p,".").concat(g)]||d[g]||u[g]||l;return n?a.createElement(y,i(i({ref:r},c),{},{components:n})):a.createElement(y,i({ref:r},c))}));function y(e,r){var n=arguments,t=r&&r.mdxType;if("string"==typeof e||t){var l=n.length,i=new Array(l);i[0]=g;var o={};for(var p in r)hasOwnProperty.call(r,p)&&(o[p]=r[p]);o.originalType=e,o[d]="string"==typeof e?e:t,i[1]=o;for(var s=2;s<l;s++)i[s]=n[s];return a.createElement.apply(null,i)}return a.createElement.apply(null,n)}g.displayName="MDXCreateElement"},8612:(e,r,n)=>{n.r(r),n.d(r,{assets:()=>p,contentTitle:()=>i,default:()=>u,frontMatter:()=>l,metadata:()=>o,toc:()=>s});var a=n(5072),t=(n(1504),n(5788));const l={title:"Progress Card",sidebar_label:"Progress",sidebar_position:4},i=void 0,o={unversionedId:"cards/progress",id:"cards/progress",title:"Progress Card",description:"Preview:",source:"@site/docs/cards/progress.md",sourceDirName:"cards",slug:"/cards/progress",permalink:"/next/cards/progress",draft:!1,tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Progress Card",sidebar_label:"Progress",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Energy (Pro)",permalink:"/next/cards/energy"},next:{title:"Toggle Button",permalink:"/next/cards/button"}},p={},s=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],c={toc:s},d="wrapper";function u(e){let{components:r,...n}=e;return(0,t.yg)(d,(0,a.c)({},c,n,{components:r,mdxType:"MDXLayout"}),(0,t.yg)("h4",{id:"preview"},"Preview:"),(0,t.yg)("img",{className:"card-preview",src:"/img/v4/progress-card.png",width:"280px",alt:"Preview"}),(0,t.yg)("br",null),(0,t.yg)("br",null),(0,t.yg)("p",null,"This card displays a horizontal range based on a ",(0,t.yg)("inlineCode",{parentName:"p"},"integer")," or a ",(0,t.yg)("inlineCode",{parentName:"p"},"float")," value. It makes data visualization user friendly."),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"type"},"Type:"),(0,t.yg)("p",null,(0,t.yg)("inlineCode",{parentName:"p"},"PROGRESS_CARD")),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,t.yg)("ul",null,(0,t.yg)("li",{parentName:"ul"},(0,t.yg)("inlineCode",{parentName:"li"},"int")),(0,t.yg)("li",{parentName:"ul"},(0,t.yg)("inlineCode",{parentName:"li"},"float"))),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"initializer"},"Initializer:"),(0,t.yg)("p",null,"With progress card, Initializer requires ",(0,t.yg)("inlineCode",{parentName:"p"},"min")," & ",(0,t.yg)("inlineCode",{parentName:"p"},"max")," range."),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},'/* \n Progress Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional), int min, int max)\n*/\nCard card1(&dashboard, PROGRESS_CARD, "Progress1", "", 0, 255);\n')),(0,t.yg)("br",null),(0,t.yg)("h4",{id:"updaters"},"Updaters:"),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},"card1.update(float value);\n")),(0,t.yg)("p",null,"Or, update symbol along your value:"),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre",className:"language-cpp"},'card1.update(244, "%");\n')))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f736db6d.b140e08d.js b/assets/js/f736db6d.b140e08d.js deleted file mode 100644 index b1a706f9..00000000 --- a/assets/js/f736db6d.b140e08d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[3575],{3905:(e,r,t)=>{t.d(r,{Zo:()=>c,kt:()=>g});var n=t(7294);function a(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function l(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function i(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?l(Object(t),!0).forEach((function(r){a(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):l(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function o(e,r){if(null==e)return{};var t,n,a=function(e,r){if(null==e)return{};var t,n,a={},l=Object.keys(e);for(n=0;n<l.length;n++)t=l[n],r.indexOf(t)>=0||(a[t]=e[t]);return a}(e,r);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n<l.length;n++)t=l[n],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var p=n.createContext({}),s=function(e){var r=n.useContext(p),t=r;return e&&(t="function"==typeof e?e(r):i(i({},r),e)),t},c=function(e){var r=s(e.components);return n.createElement(p.Provider,{value:r},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var r=e.children;return n.createElement(n.Fragment,{},r)}},m=n.forwardRef((function(e,r){var t=e.components,a=e.mdxType,l=e.originalType,p=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),d=s(t),m=a,g=d["".concat(p,".").concat(m)]||d[m]||u[m]||l;return t?n.createElement(g,i(i({ref:r},c),{},{components:t})):n.createElement(g,i({ref:r},c))}));function g(e,r){var t=arguments,a=r&&r.mdxType;if("string"==typeof e||a){var l=t.length,i=new Array(l);i[0]=m;var o={};for(var p in r)hasOwnProperty.call(r,p)&&(o[p]=r[p]);o.originalType=e,o[d]="string"==typeof e?e:a,i[1]=o;for(var s=2;s<l;s++)i[s]=t[s];return n.createElement.apply(null,i)}return n.createElement.apply(null,t)}m.displayName="MDXCreateElement"},1512:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>p,contentTitle:()=>i,default:()=>u,frontMatter:()=>l,metadata:()=>o,toc:()=>s});var n=t(7462),a=(t(7294),t(3905));const l={title:"Progress Card",sidebar_label:"Progress",sidebar_position:4},i=void 0,o={unversionedId:"cards/progress",id:"cards/progress",title:"Progress Card",description:"Preview:",source:"@site/docs/cards/progress.md",sourceDirName:"cards",slug:"/cards/progress",permalink:"/next/cards/progress",draft:!1,tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Progress Card",sidebar_label:"Progress",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Energy (Pro)",permalink:"/next/cards/energy"},next:{title:"Toggle Button",permalink:"/next/cards/button"}},p={},s=[{value:"Preview:",id:"preview",level:4},{value:"Type:",id:"type",level:4},{value:"Valid Data Types:",id:"valid-data-types",level:4},{value:"Initializer:",id:"initializer",level:4},{value:"Updaters:",id:"updaters",level:4}],c={toc:s},d="wrapper";function u(e){let{components:r,...t}=e;return(0,a.kt)(d,(0,n.Z)({},c,t,{components:r,mdxType:"MDXLayout"}),(0,a.kt)("h4",{id:"preview"},"Preview:"),(0,a.kt)("img",{className:"card-preview",src:"/img/v4/progress-card.png",width:"280px",alt:"Preview"}),(0,a.kt)("br",null),(0,a.kt)("br",null),(0,a.kt)("p",null,"This card displays a horizontal range based on a ",(0,a.kt)("inlineCode",{parentName:"p"},"integer")," or a ",(0,a.kt)("inlineCode",{parentName:"p"},"float")," value. It makes data visualization user friendly."),(0,a.kt)("br",null),(0,a.kt)("h4",{id:"type"},"Type:"),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"PROGRESS_CARD")),(0,a.kt)("br",null),(0,a.kt)("h4",{id:"valid-data-types"},"Valid Data Types:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"int")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"float"))),(0,a.kt)("br",null),(0,a.kt)("h4",{id:"initializer"},"Initializer:"),(0,a.kt)("p",null,"With progress card, Initializer requires ",(0,a.kt)("inlineCode",{parentName:"p"},"min")," & ",(0,a.kt)("inlineCode",{parentName:"p"},"max")," range."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cpp"},'/* \n Progress Card\n Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional), int min, int max)\n*/\nCard card1(&dashboard, PROGRESS_CARD, "Progress1", "", 0, 255);\n')),(0,a.kt)("br",null),(0,a.kt)("h4",{id:"updaters"},"Updaters:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(int value);\n")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cpp"},"card1.update(float value);\n")),(0,a.kt)("p",null,"Or, update symbol along your value:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cpp"},'card1.update(244, "%");\n')))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f8edec0b.5d58b3f6.js b/assets/js/f8edec0b.af1213f7.js similarity index 75% rename from assets/js/f8edec0b.5d58b3f6.js rename to assets/js/f8edec0b.af1213f7.js index d8336c7e..250c5c2a 100644 --- a/assets/js/f8edec0b.5d58b3f6.js +++ b/assets/js/f8edec0b.af1213f7.js @@ -1 +1 @@ -"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[8198],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>f});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(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 i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function s(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var c=n.createContext({}),l=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=l(r),d=o,f=u["".concat(c,".").concat(d)]||u[d]||m[d]||a;return r?n.createElement(f,i(i({ref:t},p),{},{components:r})):n.createElement(f,i({ref:t},p))}));function f(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=d;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[u]="string"==typeof e?e:o,i[1]=s;for(var l=2;l<a;l++)i[l]=r[l];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}d.displayName="MDXCreateElement"},1096:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>m,frontMatter:()=>a,metadata:()=>s,toc:()=>l});var n=r(7462),o=(r(7294),r(3905));const a={title:"Examples",sidebar_label:"Examples",sidebar_position:5},i=void 0,s={unversionedId:"more-examples",id:"version-v3.x.x/more-examples",title:"Examples",description:"There are many example sketches in our repository. You can check those out to know more about what you can do with ESP-DASH.",source:"@site/versioned_docs/version-v3.x.x/more-examples.md",sourceDirName:".",slug:"/more-examples",permalink:"/v3.x.x/more-examples",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:5,frontMatter:{title:"Examples",sidebar_label:"Examples",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Getting Started",permalink:"/v3.x.x/getting-started"},next:{title:"Card Indexing (Pro)",permalink:"/v3.x.x/indexing"}},c={},l=[],p={toc:l},u="wrapper";function m(e){let{components:t,...r}=e;return(0,o.kt)(u,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"There are many example sketches in our repository. You can check those out to know more about what you can do with ESP-DASH."),(0,o.kt)("p",null,"We have contructed every example with very clear documentation so there is less obstruction in your learning process."),(0,o.kt)("p",null,"You can find those examples ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/ayushsharma82/ESP-DASH/tree/master/examples"},"here"),"."))}m.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[4368],{5788:(e,t,r)=>{r.d(t,{Iu:()=>p,yg:()=>d});var n=r(1504);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(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 i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function s(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var c=n.createContext({}),l=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},y=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=l(r),y=o,d=u["".concat(c,".").concat(y)]||u[y]||m[y]||a;return r?n.createElement(d,i(i({ref:t},p),{},{components:r})):n.createElement(d,i({ref:t},p))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=y;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[u]="string"==typeof e?e:o,i[1]=s;for(var l=2;l<a;l++)i[l]=r[l];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}y.displayName="MDXCreateElement"},2148:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>m,frontMatter:()=>a,metadata:()=>s,toc:()=>l});var n=r(5072),o=(r(1504),r(5788));const a={title:"Examples",sidebar_label:"Examples",sidebar_position:5},i=void 0,s={unversionedId:"more-examples",id:"version-v3.x.x/more-examples",title:"Examples",description:"There are many example sketches in our repository. You can check those out to know more about what you can do with ESP-DASH.",source:"@site/versioned_docs/version-v3.x.x/more-examples.md",sourceDirName:".",slug:"/more-examples",permalink:"/v3.x.x/more-examples",draft:!1,tags:[],version:"v3.x.x",sidebarPosition:5,frontMatter:{title:"Examples",sidebar_label:"Examples",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Getting Started",permalink:"/v3.x.x/getting-started"},next:{title:"Card Indexing (Pro)",permalink:"/v3.x.x/indexing"}},c={},l=[],p={toc:l},u="wrapper";function m(e){let{components:t,...r}=e;return(0,o.yg)(u,(0,n.c)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,o.yg)("p",null,"There are many example sketches in our repository. You can check those out to know more about what you can do with ESP-DASH."),(0,o.yg)("p",null,"We have contructed every example with very clear documentation so there is less obstruction in your learning process."),(0,o.yg)("p",null,"You can find those examples ",(0,o.yg)("a",{parentName:"p",href:"https://github.com/ayushsharma82/ESP-DASH/tree/master/examples"},"here"),"."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/main.aa90755b.js b/assets/js/main.aa90755b.js deleted file mode 100644 index 9f202a7f..00000000 --- a/assets/js/main.aa90755b.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see main.aa90755b.js.LICENSE.txt */ -(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[179],{723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7294),a=n(7462),o=n(8356),i=n.n(o),l=n(6887);const s={"01c2b708":[()=>n.e(8089).then(n.t.bind(n,2845,19)),"~docs/default/category-v-3-xx-tutorialsidebar-category-charts-930.json",2845],"021dfd6a":[()=>n.e(2639).then(n.bind(n,3590)),"@site/versioned_docs/version-v4.x.x/cards/temperature.md",3590],"0487f087":[()=>n.e(5258).then(n.bind(n,5991)),"@site/docs/cards/status.md",5991],"0b5c9aa2":[()=>n.e(6693).then(n.bind(n,5457)),"@site/docs/features/custom-uri.md",5457],"0e384e19":[()=>n.e(9671).then(n.bind(n,9881)),"@site/docs/intro.md",9881],"0f34283b":[()=>n.e(174).then(n.bind(n,830)),"@site/versioned_docs/version-v3.x.x/cards/humidity.md",830],10703425:[()=>n.e(6972).then(n.bind(n,698)),"@site/versioned_docs/version-v4.x.x/features/title.md",698],"14eb3368":[()=>Promise.all([n.e(532),n.e(9817)]).then(n.bind(n,4228)),"@theme/DocCategoryGeneratedIndexPage",4228],"166ccb0c":[()=>n.e(2608).then(n.bind(n,3560)),"@site/docs/charts/bar.md",3560],17896441:[()=>Promise.all([n.e(532),n.e(7957),n.e(7918)]).then(n.bind(n,6176)),"@theme/DocItem",6176],"1be78505":[()=>Promise.all([n.e(532),n.e(9514)]).then(n.bind(n,2528)),"@theme/DocPage",2528],"1c361767":[()=>n.e(5729).then(n.bind(n,3829)),"@site/versioned_docs/version-v4.x.x/cards/status.md",3829],"1d06bd5e":[()=>n.e(7457).then(n.bind(n,5772)),"@site/docs/cards/energy.md",5772],"1d798de6":[()=>n.e(4147).then(n.t.bind(n,3769,19)),"/home/runner/work/ESP-DASH/ESP-DASH/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",3769],"1de66f17":[()=>n.e(6633).then(n.bind(n,7895)),"@site/versioned_docs/version-v4.x.x/charts/bar.md",7895],"1eaa7d1e":[()=>n.e(3178).then(n.bind(n,9952)),"@site/docs/cards/button.md",9952],"24a4b54e":[()=>n.e(7511).then(n.bind(n,64)),"@site/versioned_docs/version-v4.x.x/features/custom-logo.md",64],"2a51f6ab":[()=>n.e(4889).then(n.bind(n,1278)),"@site/docs/features/title.md",1278],"2bf59882":[()=>n.e(3117).then(n.bind(n,4661)),"@site/docs/migrate.md",4661],"2c8f7a48":[()=>n.e(3276).then(n.bind(n,8297)),"@site/versioned_docs/version-v4.x.x/installation.md",8297],"34e9d761":[()=>n.e(5725).then(n.bind(n,2777)),"@site/versioned_docs/version-v4.x.x/cards/air.md",2777],"37c80295":[()=>n.e(9530).then(n.bind(n,732)),"@site/versioned_docs/version-v3.x.x/charts/bar.md",732],"3b62c223":[()=>n.e(8201).then(n.bind(n,4308)),"@site/versioned_docs/version-v4.x.x/cards/progress.md",4308],"3b8c55ea":[()=>n.e(3217).then(n.bind(n,9803)),"@site/docs/installation.md",9803],"3cd533c2":[()=>n.e(3431).then(n.bind(n,8447)),"@site/versioned_docs/version-v4.x.x/cards/joystick.md",8447],"402bfe77":[()=>n.e(9805).then(n.bind(n,6767)),"@site/docs/charts/area.md",6767],"44a65385":[()=>n.e(3148).then(n.bind(n,3717)),"@site/docs/cards/text-input.md",3717],"4649c564":[()=>n.e(5227).then(n.bind(n,1462)),"@site/versioned_docs/version-v4.x.x/features/brotli-compression.md",1462],"49146ea8":[()=>n.e(6874).then(n.bind(n,1872)),"@site/versioned_docs/version-v4.x.x/migrate.md",1872],"49d6c00f":[()=>n.e(2512).then(n.bind(n,1742)),"@site/docs/cards/slider.md",1742],"4c3f1b83":[()=>n.e(6278).then(n.bind(n,4312)),"@site/versioned_docs/version-v4.x.x/cards/dropdown.md",4312],"4c4e1a30":[()=>n.e(9761).then(n.t.bind(n,348,19)),"~docs/default/version-v-4-x-x-metadata-prop-a4e.json",348],"4ca68d7b":[()=>n.e(9445).then(n.bind(n,9289)),"@site/versioned_docs/version-v4.x.x/cards/week-selector.md",9289],"4df0a92e":[()=>n.e(3272).then(n.bind(n,5475)),"@site/versioned_docs/version-v4.x.x/concept.md",5475],"50198c52":[()=>n.e(3792).then(n.bind(n,4520)),"@site/docs/features/indexing.md",4520],"51ce7319":[()=>n.e(6147).then(n.bind(n,1821)),"@site/docs/features/custom-logo.md",1821],52044914:[()=>n.e(3818).then(n.bind(n,2396)),"@site/versioned_docs/version-v3.x.x/cards/slider.md",2396],"5327fe66":[()=>n.e(8582).then(n.bind(n,8144)),"@site/versioned_docs/version-v4.x.x/features/custom-uri.md",8144],"5554be2c":[()=>n.e(2817).then(n.bind(n,4407)),"@site/versioned_docs/version-v4.x.x/charts/pie.md",4407],"55c57bd6":[()=>n.e(8411).then(n.bind(n,7122)),"@site/versioned_docs/version-v3.x.x/cards/joystick.md",7122],56927624:[()=>n.e(6160).then(n.bind(n,3075)),"@site/docs/cards/joystick.md",3075],"5942c4f9":[()=>n.e(6637).then(n.bind(n,1343)),"@site/versioned_docs/version-v3.x.x/cards/progress.md",1343],"5acd1b26":[()=>n.e(4412).then(n.bind(n,5696)),"@site/versioned_docs/version-v3.x.x/charts/area.md",5696],"5b27bca1":[()=>n.e(4360).then(n.bind(n,7989)),"@site/docs/charts/pie.md",7989],"5c2cce4e":[()=>n.e(1890).then(n.bind(n,5053)),"@site/versioned_docs/version-v3.x.x/getting-started.md",5053],"5fde1817":[()=>n.e(2757).then(n.bind(n,4851)),"@site/docs/cards/air.md",4851],"641f1acd":[()=>n.e(2900).then(n.bind(n,8049)),"@site/versioned_docs/version-v3.x.x/cards/temperature.md",8049],"652d9580":[()=>n.e(6913).then(n.bind(n,9011)),"@site/docs/features/disable-stats.md",9011],"6944cb31":[()=>n.e(9184).then(n.t.bind(n,2446,19)),"~docs/default/version-v-3-x-x-metadata-prop-1ed.json",2446],"6bf84c41":[()=>n.e(3979).then(n.bind(n,6364)),"@site/versioned_docs/version-v3.x.x/installation.md",6364],"6d50d705":[()=>n.e(9630).then(n.bind(n,6207)),"@site/versioned_docs/version-v3.x.x/cards/generic.md",6207],"6fb081b8":[()=>n.e(5983).then(n.bind(n,1292)),"@site/versioned_docs/version-v4.x.x/cards/energy.md",1292],"78c63844":[()=>n.e(7190).then(n.bind(n,9220)),"@site/docs/cards/temperature.md",9220],"82dc478c":[()=>n.e(3569).then(n.bind(n,2323)),"@site/versioned_docs/version-v4.x.x/intro.md",2323],"849d26d9":[()=>n.e(9214).then(n.bind(n,1364)),"@site/docs/features/sizing.md",1364],"85d52a4f":[()=>n.e(9758).then(n.t.bind(n,6863,19)),"~docs/default/category-v-3-xx-tutorialsidebar-category-cards-293.json",6863],"87b1afb5":[()=>n.e(4744).then(n.bind(n,6908)),"@site/versioned_docs/version-v3.x.x/charts/pie.md",6908],"88f14c76":[()=>n.e(3739).then(n.bind(n,8113)),"@site/versioned_docs/version-v4.x.x/features/indexing.md",8113],"900bf023":[()=>n.e(7998).then(n.bind(n,1084)),"@site/versioned_docs/version-v4.x.x/cards/humidity.md",1084],"91e7212c":[()=>n.e(4684).then(n.bind(n,617)),"@site/versioned_docs/version-v3.x.x/indexing.md",617],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"9495aadd":[()=>n.e(5719).then(n.bind(n,7574)),"@site/docs/concept.md",7574],"94c292bb":[()=>n.e(2326).then(n.bind(n,671)),"@site/docs/features/brotli-compression.md",671],"972722f4":[()=>n.e(4242).then(n.bind(n,365)),"@site/docs/cards/dropdown.md",365],"9a2f436b":[()=>n.e(88).then(n.bind(n,6241)),"@site/versioned_docs/version-v3.x.x/charts/line.md",6241],a39fba33:[()=>n.e(909).then(n.bind(n,1230)),"@site/versioned_docs/version-v3.x.x/concept.md",1230],a608976b:[()=>n.e(5609).then(n.bind(n,1692)),"@site/versioned_docs/version-v4.x.x/cards/generic.md",1692],a8d55bef:[()=>n.e(8074).then(n.bind(n,8998)),"@site/versioned_docs/version-v4.x.x/features/sizing.md",8998],aeef22cf:[()=>n.e(3902).then(n.bind(n,7496)),"@site/versioned_docs/version-v4.x.x/features/authentication.md",7496],af2b8099:[()=>n.e(8462).then(n.bind(n,8584)),"@site/versioned_docs/version-v3.x.x/cards/air.md",8584],afe7c26a:[()=>n.e(7882).then(n.bind(n,131)),"@site/docs/cards/image.md",131],bb019f97:[()=>n.e(1071).then(n.bind(n,6678)),"@site/versioned_docs/version-v4.x.x/charts/area.md",6678],bc9808f4:[()=>n.e(1334).then(n.bind(n,2435)),"@site/docs/features/chartanimations.md",2435],bd9ddaf7:[()=>n.e(2354).then(n.bind(n,9788)),"@site/versioned_docs/version-v4.x.x/cards/image.md",9788],beec482e:[()=>n.e(6366).then(n.bind(n,5317)),"@site/docs/custom-statistics.md",5317],bfca638c:[()=>n.e(7607).then(n.bind(n,7036)),"@site/versioned_docs/version-v4.x.x/cards/slider.md",7036],c4432a16:[()=>n.e(7861).then(n.bind(n,2516)),"@site/versioned_docs/version-v4.x.x/cards/button.md",2516],c5beed23:[()=>n.e(3881).then(n.bind(n,2654)),"@site/versioned_docs/version-v3.x.x/cards/button.md",2654],c61243a5:[()=>n.e(1734).then(n.bind(n,9819)),"@site/docs/cards/week-selector.md",9819],cc0a2bf3:[()=>n.e(7789).then(n.bind(n,1765)),"@site/docs/features/authentication.md",1765],ccf30e44:[()=>n.e(9801).then(n.bind(n,7244)),"@site/versioned_docs/version-v4.x.x/custom-statistics.md",7244],d1e64eb6:[()=>n.e(7166).then(n.bind(n,5699)),"@site/versioned_docs/version-v4.x.x/tabs.md",5699],d1f5632b:[()=>n.e(727).then(n.bind(n,4726)),"@site/docs/cards/push-button.md",4726],d3c74fc5:[()=>n.e(2599).then(n.bind(n,3808)),"@site/versioned_docs/version-v4.x.x/features/disable-stats.md",3808],d4ae7331:[()=>n.e(7522).then(n.bind(n,5632)),"@site/docs/cards/generic.md",5632],d4f5e55a:[()=>n.e(3535).then(n.bind(n,1535)),"@site/versioned_docs/version-v3.x.x/cards/status.md",1535],d523083d:[()=>n.e(9094).then(n.bind(n,1741)),"@site/versioned_docs/version-v4.x.x/features/chartanimations.md",1741],d589d3a7:[()=>n.e(7162).then(n.bind(n,9390)),"@site/docs/getting-started.md",9390],ddf369fb:[()=>n.e(6022).then(n.bind(n,6810)),"@site/versioned_docs/version-v4.x.x/charts/line.md",6810],de4274db:[()=>n.e(9854).then(n.bind(n,8343)),"@site/versioned_docs/version-v4.x.x/cards/text-input.md",8343],e5af0a5c:[()=>n.e(908).then(n.bind(n,7865)),"@site/docs/more-examples.md",7865],e8eea433:[()=>n.e(4087).then(n.bind(n,7330)),"@site/docs/tabs.md",7330],ebe4a411:[()=>n.e(5838).then(n.bind(n,7550)),"@site/versioned_docs/version-v3.x.x/cards/energy.md",7550],ec123d05:[()=>n.e(2446).then(n.bind(n,390)),"@site/versioned_docs/version-v4.x.x/cards/push-button.md",390],ec57d471:[()=>n.e(2917).then(n.bind(n,4284)),"@site/docs/charts/line.md",4284],ee622a22:[()=>n.e(9466).then(n.bind(n,5001)),"@site/versioned_docs/version-v4.x.x/more-examples.md",5001],f1c3c228:[()=>n.e(6313).then(n.bind(n,22)),"@site/docs/cards/humidity.md",22],f43a06cf:[()=>n.e(4052).then(n.bind(n,5012)),"@site/versioned_docs/version-v3.x.x/intro.md",5012],f4d79f1d:[()=>n.e(9653).then(n.bind(n,2106)),"@site/versioned_docs/version-v3.x.x/cards/text-input.md",2106],f62b367a:[()=>n.e(5280).then(n.bind(n,5225)),"@site/versioned_docs/version-v4.x.x/getting-started.md",5225],f736db6d:[()=>n.e(3575).then(n.bind(n,1512)),"@site/docs/cards/progress.md",1512],f8edec0b:[()=>n.e(8198).then(n.bind(n,1096)),"@site/versioned_docs/version-v3.x.x/more-examples.md",1096]};function c(e){let{error:t,retry:n,pastDelay:a}=e;return t?r.createElement("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%"}},r.createElement("p",null,String(t)),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},"Retry"))):a?r.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},r.createElement("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"},r.createElement("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2"},r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"8"},r.createElement("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"}))))):null}var u=n(9670),d=n(226);function p(e,t){if("*"===e)return i()({loading:c,loader:()=>n.e(4972).then(n.bind(n,4972)),modules:["@theme/NotFound"],webpack:()=>[4972],render(e,t){const n=e.default;return r.createElement(d.z,{value:{plugin:{name:"native",id:"default"}}},r.createElement(n,t))}});const o=l[`${e}-${t}`],p={},f=[],m=[],h=(0,u.Z)(o);return Object.entries(h).forEach((e=>{let[t,n]=e;const r=s[n];r&&(p[t]=r[0],f.push(r[1]),m.push(r[2]))})),i().Map({loading:c,loader:p,modules:f,webpack:()=>m,render(t,n){const i=JSON.parse(JSON.stringify(o));Object.entries(t).forEach((t=>{let[n,r]=t;const a=r.default;if(!a)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 a&&"function"!=typeof a||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{a[e]=r[e]}));let o=i;const l=n.split(".");l.slice(0,-1).forEach((e=>{o=o[e]})),o[l[l.length-1]]=a}));const l=i.__comp;delete i.__comp;const s=i.__context;return delete i.__context,r.createElement(d.z,{value:s},r.createElement(l,(0,a.Z)({},i,n)))}})}const f=[{path:"/next/",component:p("/next/","172"),routes:[{path:"/next/",component:p("/next/","f7b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/cards/air/",component:p("/next/cards/air/","38c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/cards/button/",component:p("/next/cards/button/","2e0"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/cards/dropdown/",component:p("/next/cards/dropdown/","ca2"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/cards/energy/",component:p("/next/cards/energy/","025"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/cards/generic/",component:p("/next/cards/generic/","e08"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/cards/humidity/",component:p("/next/cards/humidity/","aa3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/cards/image/",component:p("/next/cards/image/","537"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/cards/joystick/",component:p("/next/cards/joystick/","4f7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/cards/progress/",component:p("/next/cards/progress/","8c1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/cards/push-button/",component:p("/next/cards/push-button/","136"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/cards/slider/",component:p("/next/cards/slider/","ed2"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/cards/status/",component:p("/next/cards/status/","62e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/cards/temperature/",component:p("/next/cards/temperature/","d33"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/cards/text-input/",component:p("/next/cards/text-input/","8de"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/cards/week-selector/",component:p("/next/cards/week-selector/","c0e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/charts/area/",component:p("/next/charts/area/","379"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/charts/bar/",component:p("/next/charts/bar/","1c8"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/charts/line/",component:p("/next/charts/line/","674"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/charts/pie/",component:p("/next/charts/pie/","886"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/concept/",component:p("/next/concept/","ec6"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/custom-statistics/",component:p("/next/custom-statistics/","b8f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/features/authentication/",component:p("/next/features/authentication/","ad6"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/features/brotli-compression/",component:p("/next/features/brotli-compression/","6e3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/features/chartanimations/",component:p("/next/features/chartanimations/","14a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/features/custom-logo/",component:p("/next/features/custom-logo/","3c7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/features/custom-uri/",component:p("/next/features/custom-uri/","257"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/features/disable-stats/",component:p("/next/features/disable-stats/","9ae"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/features/indexing/",component:p("/next/features/indexing/","8b3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/features/sizing/",component:p("/next/features/sizing/","35f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/features/title/",component:p("/next/features/title/","886"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/getting-started/",component:p("/next/getting-started/","7ef"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/installation/",component:p("/next/installation/","4b4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/migrate/",component:p("/next/migrate/","a21"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/more-examples/",component:p("/next/more-examples/","56a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/tabs/",component:p("/next/tabs/","b91"),exact:!0,sidebar:"tutorialSidebar"}]},{path:"/v3.x.x/",component:p("/v3.x.x/","aa1"),routes:[{path:"/v3.x.x/",component:p("/v3.x.x/","d29"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/cards/air/",component:p("/v3.x.x/cards/air/","bdb"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/cards/button/",component:p("/v3.x.x/cards/button/","26e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/cards/energy/",component:p("/v3.x.x/cards/energy/","0c5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/cards/generic/",component:p("/v3.x.x/cards/generic/","ed4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/cards/humidity/",component:p("/v3.x.x/cards/humidity/","524"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/cards/joystick/",component:p("/v3.x.x/cards/joystick/","e05"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/cards/progress/",component:p("/v3.x.x/cards/progress/","bb3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/cards/slider/",component:p("/v3.x.x/cards/slider/","489"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/cards/status/",component:p("/v3.x.x/cards/status/","e7d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/cards/temperature/",component:p("/v3.x.x/cards/temperature/","56c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/cards/text-input/",component:p("/v3.x.x/cards/text-input/","2bb"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/category/cards/",component:p("/v3.x.x/category/cards/","be2"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/category/charts/",component:p("/v3.x.x/category/charts/","433"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/charts/area/",component:p("/v3.x.x/charts/area/","196"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/charts/bar/",component:p("/v3.x.x/charts/bar/","7d2"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/charts/line/",component:p("/v3.x.x/charts/line/","65f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/charts/pie/",component:p("/v3.x.x/charts/pie/","921"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/concept/",component:p("/v3.x.x/concept/","a3e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/getting-started/",component:p("/v3.x.x/getting-started/","153"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/indexing/",component:p("/v3.x.x/indexing/","f71"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/installation/",component:p("/v3.x.x/installation/","1eb"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/more-examples/",component:p("/v3.x.x/more-examples/","c1e"),exact:!0,sidebar:"tutorialSidebar"}]},{path:"/",component:p("/","677"),routes:[{path:"/",component:p("/","157"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cards/air/",component:p("/cards/air/","3ca"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cards/button/",component:p("/cards/button/","65b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cards/dropdown/",component:p("/cards/dropdown/","2b8"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cards/energy/",component:p("/cards/energy/","321"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cards/generic/",component:p("/cards/generic/","dd3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cards/humidity/",component:p("/cards/humidity/","f13"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cards/image/",component:p("/cards/image/","c49"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cards/joystick/",component:p("/cards/joystick/","0c3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cards/progress/",component:p("/cards/progress/","55f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cards/push-button/",component:p("/cards/push-button/","349"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cards/slider/",component:p("/cards/slider/","469"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cards/status/",component:p("/cards/status/","0af"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cards/temperature/",component:p("/cards/temperature/","6c0"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cards/text-input/",component:p("/cards/text-input/","704"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cards/week-selector/",component:p("/cards/week-selector/","ef8"),exact:!0,sidebar:"tutorialSidebar"},{path:"/charts/area/",component:p("/charts/area/","42f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/charts/bar/",component:p("/charts/bar/","bbd"),exact:!0,sidebar:"tutorialSidebar"},{path:"/charts/line/",component:p("/charts/line/","bc5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/charts/pie/",component:p("/charts/pie/","b77"),exact:!0,sidebar:"tutorialSidebar"},{path:"/concept/",component:p("/concept/","a73"),exact:!0,sidebar:"tutorialSidebar"},{path:"/custom-statistics/",component:p("/custom-statistics/","5b3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/features/authentication/",component:p("/features/authentication/","d87"),exact:!0,sidebar:"tutorialSidebar"},{path:"/features/brotli-compression/",component:p("/features/brotli-compression/","ab1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/features/chartanimations/",component:p("/features/chartanimations/","c64"),exact:!0,sidebar:"tutorialSidebar"},{path:"/features/custom-logo/",component:p("/features/custom-logo/","d35"),exact:!0,sidebar:"tutorialSidebar"},{path:"/features/custom-uri/",component:p("/features/custom-uri/","0d9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/features/disable-stats/",component:p("/features/disable-stats/","e9b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/features/indexing/",component:p("/features/indexing/","7af"),exact:!0,sidebar:"tutorialSidebar"},{path:"/features/sizing/",component:p("/features/sizing/","e10"),exact:!0,sidebar:"tutorialSidebar"},{path:"/features/title/",component:p("/features/title/","2c6"),exact:!0,sidebar:"tutorialSidebar"},{path:"/getting-started/",component:p("/getting-started/","d88"),exact:!0,sidebar:"tutorialSidebar"},{path:"/installation/",component:p("/installation/","0a4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/migrate/",component:p("/migrate/","32c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/more-examples/",component:p("/more-examples/","270"),exact:!0,sidebar:"tutorialSidebar"},{path:"/tabs/",component:p("/tabs/","1b7"),exact:!0,sidebar:"tutorialSidebar"}]},{path:"*",component:p("*")}]},8934:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,t:()=>o});var r=n(7294);const a=r.createContext(!1);function o(e){let{children:t}=e;const[n,o]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{o(!0)}),[]),r.createElement(a.Provider,{value:n},t)}},7221:(e,t,n)=>{"use strict";var r=n(7294),a=n(3935),o=n(3727),i=n(405),l=n(412);const s=[n(6657),n(2497),n(3310),n(8320),n(2295)];var c=n(723),u=n(6550),d=n(8790);function p(e){let{children:t}=e;return r.createElement(r.Fragment,null,t)}var f=n(7462),m=n(5742),h=n(2263),g=n(4996),b=n(6668),v=n(1944),y=n(4711),w=n(9727),x=n(3320),k=n(8780),S=n(197);function E(){const{i18n:{defaultLocale:e,localeConfigs:t}}=(0,h.Z)(),n=(0,y.l)();return r.createElement(m.Z,null,Object.entries(t).map((e=>{let[t,{htmlLang:a}]=e;return r.createElement("link",{key:t,rel:"alternate",href:n.createUrl({locale:t,fullyQualified:!0}),hrefLang:a})})),r.createElement("link",{rel:"alternate",href:n.createUrl({locale:e,fullyQualified:!0}),hrefLang:"x-default"}))}function _(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,h.Z)(),a=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,h.Z)(),{pathname:r}=(0,u.TH)();return e+(0,k.applyTrailingSlash)((0,g.Z)(r),{trailingSlash:n,baseUrl:t})}(),o=t?`${n}${t}`:a;return r.createElement(m.Z,null,r.createElement("meta",{property:"og:url",content:o}),r.createElement("link",{rel:"canonical",href:o}))}function C(){const{i18n:{currentLocale:e}}=(0,h.Z)(),{metadata:t,image:n}=(0,b.L)();return r.createElement(r.Fragment,null,r.createElement(m.Z,null,r.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),r.createElement("body",{className:w.h})),n&&r.createElement(v.d,{image:n}),r.createElement(_,null),r.createElement(E,null),r.createElement(S.Z,{tag:x.HX,locale:e}),r.createElement(m.Z,null,t.map(((e,t)=>r.createElement("meta",(0,f.Z)({key:t},e))))))}const T=new Map;function A(e){if(T.has(e.pathname))return{...e,pathname:T.get(e.pathname)};if((0,d.f)(c.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return T.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return T.set(e.pathname,t),{...e,pathname:t}}var L=n(8934),N=n(8940);function R(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=s.map((t=>{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>a.forEach((e=>e?.()))}const P=function(e){let{children:t,location:n,previousLocation:a}=e;return(0,r.useLayoutEffect)((()=>{a!==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:a}),R("onRouteDidUpdate",{previousLocation:a,location:n}))}),[a,n]),t};function O(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(c.Z,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class D extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=l.Z.canUseDOM?R("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=R("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),O(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 r.createElement(P,{previousLocation:this.previousLocation,location:t},r.createElement(u.AW,{location:t,render:()=>e}))}}const I=D,M="__docusaurus-base-url-issue-banner-container",F="__docusaurus-base-url-issue-banner",B="__docusaurus-base-url-issue-banner-suggestion-container",j="__DOCUSAURUS_INSERT_BASEURL_BANNER";function z(e){return`\nwindow['${j}'] = true;\n\ndocument.addEventListener('DOMContentLoaded', maybeInsertBanner);\n\nfunction maybeInsertBanner() {\n var shouldInsert = window['${j}'];\n shouldInsert && insertBanner();\n}\n\nfunction insertBanner() {\n var bannerContainer = document.getElementById('${M}');\n if (!bannerContainer) {\n return;\n }\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="${B}" style="font-weight: bold; color: green;"></span></p>\n</div>\n`}(e)).replace(/</g,"\\<")};\n bannerContainer.innerHTML = bannerHtml;\n var suggestionContainer = document.getElementById('${B}');\n var actualHomePagePath = window.location.pathname;\n var suggestedBaseUrl = actualHomePagePath.substr(-1) === '/'\n ? actualHomePagePath\n : actualHomePagePath + '/';\n suggestionContainer.innerHTML = suggestedBaseUrl;\n}\n`}function U(){const{siteConfig:{baseUrl:e}}=(0,h.Z)();return(0,r.useLayoutEffect)((()=>{window[j]=!1}),[]),r.createElement(r.Fragment,null,!l.Z.canUseDOM&&r.createElement(m.Z,null,r.createElement("script",null,z(e))),r.createElement("div",{id:M}))}function $(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,h.Z)(),{pathname:n}=(0,u.TH)();return t&&n===e?r.createElement(U,null):null}function H(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:a,localeConfigs:o}}=(0,h.Z)(),i=(0,g.Z)(e),{htmlLang:l,direction:s}=o[a];return r.createElement(m.Z,null,r.createElement("html",{lang:l,dir:s}),r.createElement("title",null,t),r.createElement("meta",{property:"og:title",content:t}),r.createElement("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&r.createElement("meta",{name:"robots",content:"noindex, nofollow"}),e&&r.createElement("link",{rel:"icon",href:i}))}var q=n(4763),G=n(2389);function Z(){const e=(0,G.Z)();return r.createElement(m.Z,null,r.createElement("html",{"data-has-hydrated":e}))}function V(){const e=(0,d.H)(c.Z),t=(0,u.TH)();return r.createElement(q.Z,null,r.createElement(N.M,null,r.createElement(L.t,null,r.createElement(p,null,r.createElement(H,null),r.createElement(C,null),r.createElement($,null),r.createElement(I,{location:A(t)},e)),r.createElement(Z,null))))}var W=n(6887);const Y=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 K=n(9670);const Q=new Set,X=new Set,J=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,ee={prefetch(e){if(!(e=>!J()&&!X.has(e)&&!Q.has(e))(e))return!1;Q.add(e);const t=(0,d.f)(c.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(W).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,K.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?Y(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!J()&&!X.has(e))(e)&&(X.add(e),O(e))},te=Object.freeze(ee);if(l.Z.canUseDOM){window.docusaurus=te;const e=a.hydrate;O(window.location.pathname).then((()=>{e(r.createElement(i.B6,null,r.createElement(o.VK,null,r.createElement(V,null))),document.getElementById("__docusaurus"))}))}},8940:(e,t,n)=>{"use strict";n.d(t,{_:()=>u,M:()=>d});var r=n(7294),a=n(6809);const o=JSON.parse('{"docusaurus-plugin-google-gtag":{"default":{"trackingID":["G-H1X62VMQNV"],"anonymizeIP":true,"id":"default"}},"docusaurus-plugin-content-docs":{"default":{"path":"/","versions":[{"name":"current","label":"Next","isLast":false,"path":"/next","mainDocId":"intro","docs":[{"id":"cards/air","path":"/next/cards/air","sidebar":"tutorialSidebar"},{"id":"cards/button","path":"/next/cards/button","sidebar":"tutorialSidebar"},{"id":"cards/dropdown","path":"/next/cards/dropdown","sidebar":"tutorialSidebar"},{"id":"cards/energy","path":"/next/cards/energy","sidebar":"tutorialSidebar"},{"id":"cards/generic","path":"/next/cards/generic","sidebar":"tutorialSidebar"},{"id":"cards/humidity","path":"/next/cards/humidity","sidebar":"tutorialSidebar"},{"id":"cards/image","path":"/next/cards/image","sidebar":"tutorialSidebar"},{"id":"cards/joystick","path":"/next/cards/joystick","sidebar":"tutorialSidebar"},{"id":"cards/progress","path":"/next/cards/progress","sidebar":"tutorialSidebar"},{"id":"cards/push-button","path":"/next/cards/push-button","sidebar":"tutorialSidebar"},{"id":"cards/slider","path":"/next/cards/slider","sidebar":"tutorialSidebar"},{"id":"cards/status","path":"/next/cards/status","sidebar":"tutorialSidebar"},{"id":"cards/temperature","path":"/next/cards/temperature","sidebar":"tutorialSidebar"},{"id":"cards/text-input","path":"/next/cards/text-input","sidebar":"tutorialSidebar"},{"id":"cards/week-selector","path":"/next/cards/week-selector","sidebar":"tutorialSidebar"},{"id":"charts/area","path":"/next/charts/area","sidebar":"tutorialSidebar"},{"id":"charts/bar","path":"/next/charts/bar","sidebar":"tutorialSidebar"},{"id":"charts/line","path":"/next/charts/line","sidebar":"tutorialSidebar"},{"id":"charts/pie","path":"/next/charts/pie","sidebar":"tutorialSidebar"},{"id":"concept","path":"/next/concept","sidebar":"tutorialSidebar"},{"id":"custom-statistics","path":"/next/custom-statistics","sidebar":"tutorialSidebar"},{"id":"features/authentication","path":"/next/features/authentication","sidebar":"tutorialSidebar"},{"id":"features/brotli-compression","path":"/next/features/brotli-compression","sidebar":"tutorialSidebar"},{"id":"features/chartanimations","path":"/next/features/chartanimations","sidebar":"tutorialSidebar"},{"id":"features/custom-logo","path":"/next/features/custom-logo","sidebar":"tutorialSidebar"},{"id":"features/custom-uri","path":"/next/features/custom-uri","sidebar":"tutorialSidebar"},{"id":"features/disable-stats","path":"/next/features/disable-stats","sidebar":"tutorialSidebar"},{"id":"features/indexing","path":"/next/features/indexing","sidebar":"tutorialSidebar"},{"id":"features/sizing","path":"/next/features/sizing","sidebar":"tutorialSidebar"},{"id":"features/title","path":"/next/features/title","sidebar":"tutorialSidebar"},{"id":"getting-started","path":"/next/getting-started","sidebar":"tutorialSidebar"},{"id":"installation","path":"/next/installation","sidebar":"tutorialSidebar"},{"id":"intro","path":"/next/","sidebar":"tutorialSidebar"},{"id":"migrate","path":"/next/migrate","sidebar":"tutorialSidebar"},{"id":"more-examples","path":"/next/more-examples","sidebar":"tutorialSidebar"},{"id":"tabs","path":"/next/tabs","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/next/","label":"Introduction"}}}},{"name":"v4.x.x","label":"v4.x.x","isLast":true,"path":"/","mainDocId":"intro","docs":[{"id":"cards/air","path":"/cards/air","sidebar":"tutorialSidebar"},{"id":"cards/button","path":"/cards/button","sidebar":"tutorialSidebar"},{"id":"cards/dropdown","path":"/cards/dropdown","sidebar":"tutorialSidebar"},{"id":"cards/energy","path":"/cards/energy","sidebar":"tutorialSidebar"},{"id":"cards/generic","path":"/cards/generic","sidebar":"tutorialSidebar"},{"id":"cards/humidity","path":"/cards/humidity","sidebar":"tutorialSidebar"},{"id":"cards/image","path":"/cards/image","sidebar":"tutorialSidebar"},{"id":"cards/joystick","path":"/cards/joystick","sidebar":"tutorialSidebar"},{"id":"cards/progress","path":"/cards/progress","sidebar":"tutorialSidebar"},{"id":"cards/push-button","path":"/cards/push-button","sidebar":"tutorialSidebar"},{"id":"cards/slider","path":"/cards/slider","sidebar":"tutorialSidebar"},{"id":"cards/status","path":"/cards/status","sidebar":"tutorialSidebar"},{"id":"cards/temperature","path":"/cards/temperature","sidebar":"tutorialSidebar"},{"id":"cards/text-input","path":"/cards/text-input","sidebar":"tutorialSidebar"},{"id":"cards/week-selector","path":"/cards/week-selector","sidebar":"tutorialSidebar"},{"id":"charts/area","path":"/charts/area","sidebar":"tutorialSidebar"},{"id":"charts/bar","path":"/charts/bar","sidebar":"tutorialSidebar"},{"id":"charts/line","path":"/charts/line","sidebar":"tutorialSidebar"},{"id":"charts/pie","path":"/charts/pie","sidebar":"tutorialSidebar"},{"id":"concept","path":"/concept","sidebar":"tutorialSidebar"},{"id":"custom-statistics","path":"/custom-statistics","sidebar":"tutorialSidebar"},{"id":"features/authentication","path":"/features/authentication","sidebar":"tutorialSidebar"},{"id":"features/brotli-compression","path":"/features/brotli-compression","sidebar":"tutorialSidebar"},{"id":"features/chartanimations","path":"/features/chartanimations","sidebar":"tutorialSidebar"},{"id":"features/custom-logo","path":"/features/custom-logo","sidebar":"tutorialSidebar"},{"id":"features/custom-uri","path":"/features/custom-uri","sidebar":"tutorialSidebar"},{"id":"features/disable-stats","path":"/features/disable-stats","sidebar":"tutorialSidebar"},{"id":"features/indexing","path":"/features/indexing","sidebar":"tutorialSidebar"},{"id":"features/sizing","path":"/features/sizing","sidebar":"tutorialSidebar"},{"id":"features/title","path":"/features/title","sidebar":"tutorialSidebar"},{"id":"getting-started","path":"/getting-started","sidebar":"tutorialSidebar"},{"id":"installation","path":"/installation","sidebar":"tutorialSidebar"},{"id":"intro","path":"/","sidebar":"tutorialSidebar"},{"id":"migrate","path":"/migrate","sidebar":"tutorialSidebar"},{"id":"more-examples","path":"/more-examples","sidebar":"tutorialSidebar"},{"id":"tabs","path":"/tabs","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/","label":"Introduction"}}}},{"name":"v3.x.x","label":"v3.x.x","isLast":false,"path":"/v3.x.x","mainDocId":"intro","docs":[{"id":"cards/air","path":"/v3.x.x/cards/air","sidebar":"tutorialSidebar"},{"id":"cards/button","path":"/v3.x.x/cards/button","sidebar":"tutorialSidebar"},{"id":"cards/energy","path":"/v3.x.x/cards/energy","sidebar":"tutorialSidebar"},{"id":"cards/generic","path":"/v3.x.x/cards/generic","sidebar":"tutorialSidebar"},{"id":"cards/humidity","path":"/v3.x.x/cards/humidity","sidebar":"tutorialSidebar"},{"id":"cards/joystick","path":"/v3.x.x/cards/joystick","sidebar":"tutorialSidebar"},{"id":"cards/progress","path":"/v3.x.x/cards/progress","sidebar":"tutorialSidebar"},{"id":"cards/slider","path":"/v3.x.x/cards/slider","sidebar":"tutorialSidebar"},{"id":"cards/status","path":"/v3.x.x/cards/status","sidebar":"tutorialSidebar"},{"id":"cards/temperature","path":"/v3.x.x/cards/temperature","sidebar":"tutorialSidebar"},{"id":"cards/text-input","path":"/v3.x.x/cards/text-input","sidebar":"tutorialSidebar"},{"id":"charts/area","path":"/v3.x.x/charts/area","sidebar":"tutorialSidebar"},{"id":"charts/bar","path":"/v3.x.x/charts/bar","sidebar":"tutorialSidebar"},{"id":"charts/line","path":"/v3.x.x/charts/line","sidebar":"tutorialSidebar"},{"id":"charts/pie","path":"/v3.x.x/charts/pie","sidebar":"tutorialSidebar"},{"id":"concept","path":"/v3.x.x/concept","sidebar":"tutorialSidebar"},{"id":"getting-started","path":"/v3.x.x/getting-started","sidebar":"tutorialSidebar"},{"id":"indexing","path":"/v3.x.x/indexing","sidebar":"tutorialSidebar"},{"id":"installation","path":"/v3.x.x/installation","sidebar":"tutorialSidebar"},{"id":"intro","path":"/v3.x.x/","sidebar":"tutorialSidebar"},{"id":"more-examples","path":"/v3.x.x/more-examples","sidebar":"tutorialSidebar"},{"id":"/category/cards","path":"/v3.x.x/category/cards","sidebar":"tutorialSidebar"},{"id":"/category/charts","path":"/v3.x.x/category/charts","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/v3.x.x/","label":"Introduction"}}}}],"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":"2.4.3","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.4.3"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.4.3"},"docusaurus-plugin-google-gtag":{"type":"package","name":"@docusaurus/plugin-google-gtag","version":"2.4.3"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.4.3"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.4.3"}}}'),c={siteConfig:a.default,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},u=r.createContext(c);function d(e){let{children:t}=e;return r.createElement(u.Provider,{value:c},t)}},4763:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(7294),a=n(412),o=n(5742),i=n(8780),l=n(2760);function s(e){let{error:t,tryAgain:n}=e;return r.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"}},r.createElement("h1",{style:{fontSize:"3rem"}},"This page crashed"),r.createElement("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"}},"Try again"),r.createElement(c,{error:t}))}function c(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{style:{whiteSpace:"pre-wrap"}},n)}function u(e){let{error:t,tryAgain:n}=e;return r.createElement(p,{fallback:()=>r.createElement(s,{error:t,tryAgain:n})},r.createElement(o.Z,null,r.createElement("title",null,"Page Error")),r.createElement(l.Z,null,r.createElement(s,{error:t,tryAgain:n})))}const d=e=>r.createElement(u,e);class p 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??d)(e)}return e??null}}},412:(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}},5742:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(405);function o(e){return r.createElement(a.ql,e)}},9960:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7462),a=n(7294),o=n(3727),i=n(8780),l=n(2263),s=n(3919),c=n(412);const u=a.createContext({collectLink:()=>{}});var d=n(4996);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:m,isActive:h,"data-noBrokenLinkCheck":g,autoAddBaseUrl:b=!0,...v}=e;const{siteConfig:{trailingSlash:y,baseUrl:w}}=(0,l.Z)(),{withBaseUrl:x}=(0,d.C)(),k=(0,a.useContext)(u),S=(0,a.useRef)(null);(0,a.useImperativeHandle)(t,(()=>S.current));const E=p||f;const _=(0,s.Z)(E),C=E?.replace("pathname://","");let T=void 0!==C?(A=C,b&&(e=>e.startsWith("/"))(A)?x(A):A):void 0;var A;T&&_&&(T=(0,i.applyTrailingSlash)(T,{trailingSlash:y,baseUrl:w}));const L=(0,a.useRef)(!1),N=n?o.OL:o.rU,R=c.Z.canUseIntersectionObserver,P=(0,a.useRef)(),O=()=>{L.current||null==T||(window.docusaurus.preload(T),L.current=!0)};(0,a.useEffect)((()=>(!R&&_&&null!=T&&window.docusaurus.prefetch(T),()=>{R&&P.current&&P.current.disconnect()})),[P,T,R,_]);const D=T?.startsWith("#")??!1,I=!T||!_||D;return I||g||k.collectLink(T),I?a.createElement("a",(0,r.Z)({ref:S,href:T},E&&!_&&{target:"_blank",rel:"noopener noreferrer"},v)):a.createElement(N,(0,r.Z)({},v,{onMouseEnter:O,onTouchStart:O,innerRef:e=>{S.current=e,R&&e&&_&&(P.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(P.current.unobserve(e),P.current.disconnect(),null!=T&&window.docusaurus.prefetch(T))}))})),P.current.observe(e))},to:T},n&&{isActive:h,activeClassName:m}))}const f=a.forwardRef(p)},1875:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r=()=>null},5999:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s,I:()=>l});var r=n(7294);function a(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 o=n(7529);function i(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 o[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return a(i({message:n,id:r}),t)}function s(e){let{children:t,id:n,values:o}=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 l=i({message:t,id:n});return r.createElement(r.Fragment,null,a(l,o))}},9935:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},3919:(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})},4996:(e,t,n)=>{"use strict";n.d(t,{C:()=>i,Z:()=>l});var r=n(7294),a=n(2263),o=n(3919);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,a.Z)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:a=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,o.b)(n))return n;if(a)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const l=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+l:l}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function l(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},2263:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(8940);function o(){return(0,r.useContext)(a._)}},2389:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(8934);function o(){return(0,r.useContext)(a._)}},9670:(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}},226:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,z:()=>o});var r=n(7294);const a=r.createContext(null);function o(e){let{children:t,value:n}=e;const o=r.useContext(a),i=(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:o,value:n})),[o,n]);return r.createElement(a.Provider,{value:i},t)}},143:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>h,gA:()=>p,_r:()=>u,Jo:()=>g,zh:()=>d,yW:()=>m,gB:()=>f});var r=n(6550),a=n(2263),o=n(9935);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=function(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})))}(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={},u=()=>i("docusaurus-plugin-content-docs")??c,d=e=>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});function p(e){void 0===e&&(e={});const t=u(),{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 f(e){return d(e).versions}function m(e){const t=d(e);return l(t)}function h(e){const t=d(e),{pathname:n}=(0,r.TH)();return s(t,n)}function g(e){const t=d(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=l(e);return{latestDocSuggestion:s(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},6657:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={onRouteDidUpdate(e){let{location:t,previousLocation:n}=e;!n||t.pathname===n.pathname&&t.search===n.search&&t.hash===n.hash||setTimeout((()=>{window.gtag("event","page_view",{page_title:document.title,page_location:window.location.href,page_path:t.pathname+t.search+t.hash})}))}}},8320:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(4865),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()}}},3310:(e,t,n)=>{"use strict";n.r(t);var r=n(7410),a=n(6809);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{n(6726)(`./prism-${e}`)})),delete globalThis.Prism}(r.Z)},9471:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294);const a={iconExternalLink:"iconExternalLink_nPIU"};function o(e){let{width:t=13.5,height:n=13.5}=e;return r.createElement("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:a.iconExternalLink},r.createElement("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"}))}},2760:(e,t,n)=>{"use strict";n.d(t,{Z:()=>ut});var r=n(7294),a=n(6010),o=n(4763),i=n(1944),l=n(7462),s=n(6550),c=n(5999),u=n(5936);const d="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,s.k6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)}),[]);return(0,u.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const m=(0,c.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 h(e){const t=e.children??m,{containerRef:n,onClick:a}=f();return r.createElement("div",{ref:n,role:"region","aria-label":m},r.createElement("a",(0,l.Z)({},e,{href:`#${d}`,onClick:a}),t))}var g=n(5281),b=n(9727);const v={skipToContent:"skipToContent_fXgn"};function y(){return r.createElement(h,{className:v.skipToContent})}var w=n(6668),x=n(9689);function k(e){let{width:t=21,height:n=21,color:a="currentColor",strokeWidth:o=1.2,className:i,...s}=e;return r.createElement("svg",(0,l.Z)({viewBox:"0 0 15 15",width:t,height:n},s),r.createElement("g",{stroke:a,strokeWidth:o},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const S={closeButton:"closeButton_CVFx"};function E(e){return r.createElement("button",(0,l.Z)({type:"button","aria-label":(0,c.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)}),r.createElement(k,{width:14,height:14,strokeWidth:3.1}))}const _={content:"content_knG7"};function C(e){const{announcementBar:t}=(0,w.L)(),{content:n}=t;return r.createElement("div",(0,l.Z)({},e,{className:(0,a.Z)(_.content,e.className),dangerouslySetInnerHTML:{__html:n}}))}const T={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function A(){const{announcementBar:e}=(0,w.L)(),{isActive:t,close:n}=(0,x.nT)();if(!t)return null;const{backgroundColor:a,textColor:o,isCloseable:i}=e;return r.createElement("div",{className:T.announcementBar,style:{backgroundColor:a,color:o},role:"banner"},i&&r.createElement("div",{className:T.announcementBarPlaceholder}),r.createElement(C,{className:T.announcementBarContent}),i&&r.createElement(E,{onClick:n,className:T.announcementBarClose}))}var L=n(2961),N=n(2466);var R=n(902),P=n(3102);const O=r.createContext(null);function D(e){let{children:t}=e;const n=function(){const e=(0,L.e)(),t=(0,P.HY)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,R.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 r.createElement(O.Provider,{value:n},t)}function I(e){if(e.component){const t=e.component;return r.createElement(t,e.props)}}function M(){const e=(0,r.useContext)(O);if(!e)throw new R.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,P.HY)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:I(o)})),[a,o,t])}function F(e){let{header:t,primaryMenu:n,secondaryMenu:o}=e;const{shown:i}=M();return r.createElement("div",{className:"navbar-sidebar"},t,r.createElement("div",{className:(0,a.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":i})},r.createElement("div",{className:"navbar-sidebar__item menu"},n),r.createElement("div",{className:"navbar-sidebar__item menu"},o)))}var B=n(2949),j=n(2389);function z(e){return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("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 U(e){return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("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 $={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function H(e){let{className:t,buttonClassName:n,value:o,onChange:i}=e;const l=(0,j.Z)(),s=(0,c.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"===o?(0,c.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,c.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return r.createElement("div",{className:(0,a.Z)($.toggle,t)},r.createElement("button",{className:(0,a.Z)("clean-btn",$.toggleButton,!l&&$.toggleButtonDisabled,n),type:"button",onClick:()=>i("dark"===o?"light":"dark"),disabled:!l,title:s,"aria-label":s,"aria-live":"polite"},r.createElement(z,{className:(0,a.Z)($.toggleIcon,$.lightToggleIcon)}),r.createElement(U,{className:(0,a.Z)($.toggleIcon,$.darkToggleIcon)})))}const q=r.memo(H),G={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function Z(e){let{className:t}=e;const n=(0,w.L)().navbar.style,a=(0,w.L)().colorMode.disableSwitch,{colorMode:o,setColorMode:i}=(0,B.I)();return a?null:r.createElement(q,{className:t,buttonClassName:"dark"===n?G.darkNavbarColorModeToggle:void 0,value:o,onChange:i})}var V=n(1327);function W(){return r.createElement(V.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function Y(){const e=(0,L.e)();return r.createElement("button",{type:"button","aria-label":(0,c.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()},r.createElement(k,{color:"var(--ifm-color-emphasis-600)"}))}function K(){return r.createElement("div",{className:"navbar-sidebar__brand"},r.createElement(W,null),r.createElement(Z,{className:"margin-right--md"}),r.createElement(Y,null))}var Q=n(9960),X=n(4996),J=n(3919);function ee(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var te=n(9471);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:a,href:o,label:i,html:s,isDropdownLink:c,prependBaseUrlToHref:u,...d}=e;const p=(0,X.Z)(a),f=(0,X.Z)(t),m=(0,X.Z)(o,{forcePrependBaseUrl:!0}),h=i&&o&&!(0,J.Z)(o),g=s?{dangerouslySetInnerHTML:{__html:s}}:{children:r.createElement(r.Fragment,null,i,h&&r.createElement(te.Z,c&&{width:12,height:12}))};return o?r.createElement(Q.Z,(0,l.Z)({href:u?m:o},d,g)):r.createElement(Q.Z,(0,l.Z)({to:p,isNavLink:!0},(t||n)&&{isActive:(e,t)=>n?ee(n,t.pathname):t.pathname.startsWith(f)},d,g))}function re(e){let{className:t,isDropdownItem:n=!1,...o}=e;const i=r.createElement(ne,(0,l.Z)({className:(0,a.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n},o));return n?r.createElement("li",null,i):i}function ae(e){let{className:t,isDropdownItem:n,...o}=e;return r.createElement("li",{className:"menu__list-item"},r.createElement(ne,(0,l.Z)({className:(0,a.Z)("menu__link",t)},o)))}function oe(e){let{mobile:t=!1,position:n,...a}=e;const o=t?ae:re;return r.createElement(o,(0,l.Z)({},a,{activeClassName:a.activeClassName??(t?"menu__link--active":"navbar__link--active")}))}var ie=n(6043),le=n(8596),se=n(2263);function ce(e,t){return e.some((e=>function(e,t){return!!(0,le.Mg)(e.to,t)||!!ee(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function ue(e){let{items:t,position:n,className:o,onClick:i,...s}=e;const c=(0,r.useRef)(null),[u,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{c.current&&!c.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e)}}),[c]),r.createElement("div",{ref:c,className:(0,a.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":u})},r.createElement(ne,(0,l.Z)({"aria-haspopup":"true","aria-expanded":u,role:"button",href:s.to?void 0:"#",className:(0,a.Z)("navbar__link",o)},s,{onClick:s.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!u))}}),s.children??s.label),r.createElement("ul",{className:"dropdown__menu"},t.map(((e,n)=>r.createElement(Ee,(0,l.Z)({isDropdownItem:!0,onKeyDown:e=>{if(n===t.length-1&&"Tab"===e.key){e.preventDefault(),d(!1);const t=c.current.nextElementSibling;if(t){(t instanceof HTMLAnchorElement?t:t.querySelector("a")).focus()}}},activeClassName:"dropdown__link--active"},e,{key:n}))))))}function de(e){let{items:t,className:n,position:o,onClick:i,...c}=e;const u=function(){const{siteConfig:{baseUrl:e}}=(0,se.Z)(),{pathname:t}=(0,s.TH)();return t.replace(e,"/")}(),d=ce(t,u),{collapsed:p,toggleCollapsed:f,setCollapsed:m}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[u,d,m]),r.createElement("li",{className:(0,a.Z)("menu__list-item",{"menu__list-item--collapsed":p})},r.createElement(ne,(0,l.Z)({role:"button",className:(0,a.Z)("menu__link menu__link--sublist menu__link--sublist-caret",n)},c,{onClick:e=>{e.preventDefault(),f()}}),c.children??c.label),r.createElement(ie.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:p},t.map(((e,t)=>r.createElement(Ee,(0,l.Z)({mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active"},e,{key:t}))))))}function pe(e){let{mobile:t=!1,...n}=e;const a=t?de:ue;return r.createElement(a,n)}var fe=n(4711);function me(e){let{width:t=20,height:n=20,...a}=e;return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0},a),r.createElement("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 he="iconLanguage_nlXk";var ge=n(1875);const be={searchBox:"searchBox_ZlJk"};function ve(e){let{children:t,className:n}=e;return r.createElement("div",{className:(0,a.Z)(n,be.searchBox)},t)}var ye=n(143),we=n(2802);var xe=n(373);const ke=e=>e.docs.find((t=>t.id===e.mainDocId));const Se={default:oe,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:a,...o}=e;const{i18n:{currentLocale:i,locales:u,localeConfigs:d}}=(0,se.Z)(),p=(0,fe.l)(),{search:f,hash:m}=(0,s.TH)(),h=[...n,...u.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${m}`;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":""}})),...a],g=t?(0,c.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return r.createElement(pe,(0,l.Z)({},o,{mobile:t,label:r.createElement(r.Fragment,null,r.createElement(me,{className:he}),g),items:h}))},search:function(e){let{mobile:t,className:n}=e;return t?null:r.createElement(ve,{className:n},r.createElement(ge.Z,null))},dropdown:pe,html:function(e){let{value:t,className:n,mobile:o=!1,isDropdownItem:i=!1}=e;const l=i?"li":"div";return r.createElement(l,{className:(0,a.Z)({navbar__item:!o&&!i,"menu__list-item":o},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:i}=(0,ye.Iw)(a),s=(0,we.vY)(t,a);return null===s?null:r.createElement(oe,(0,l.Z)({exact:!0},o,{isActive:()=>i?.path===s.path||!!i?.sidebar&&i.sidebar===s.sidebar,label:n??s.id,to:s.path}))},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:i}=(0,ye.Iw)(a),s=(0,we.oz)(t,a).link;if(!s)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return r.createElement(oe,(0,l.Z)({exact:!0},o,{isActive:()=>i?.sidebar===t,label:n??s.label,to:s.path}))},docsVersion:function(e){let{label:t,to:n,docsPluginId:a,...o}=e;const i=(0,we.lO)(a)[0],s=t??i.label,c=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(i).path;return r.createElement(oe,(0,l.Z)({},o,{label:s,to:c}))},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:a,dropdownItemsBefore:o,dropdownItemsAfter:i,...u}=e;const{search:d,hash:p}=(0,s.TH)(),f=(0,ye.Iw)(n),m=(0,ye.gB)(n),{savePreferredVersionName:h}=(0,xe.J)(n),g=[...o,...m.map((e=>{const t=f.alternateDocVersions[e.name]??ke(e);return{label:e.label,to:`${t.path}${d}${p}`,isActive:()=>e===f.activeVersion,onClick:()=>h(e.name)}})),...i],b=(0,we.lO)(n)[0],v=t&&g.length>1?(0,c.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):b.label,y=t&&g.length>1?void 0:ke(b).path;return g.length<=1?r.createElement(oe,(0,l.Z)({},u,{mobile:t,label:v,to:y,isActive:a?()=>!1:void 0})):r.createElement(pe,(0,l.Z)({},u,{mobile:t,label:v,to:y,items:g,isActive:a?()=>!1:void 0}))}};function Ee(e){let{type:t,...n}=e;const a=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=Se[a];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return r.createElement(o,n)}function _e(){const e=(0,L.e)(),t=(0,w.L)().navbar.items;return r.createElement("ul",{className:"menu__list"},t.map(((t,n)=>r.createElement(Ee,(0,l.Z)({mobile:!0},t,{onClick:()=>e.toggle(),key:n})))))}function Ce(e){return r.createElement("button",(0,l.Z)({},e,{type:"button",className:"clean-btn navbar-sidebar__back"}),r.createElement(c.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)"},"\u2190 Back to main menu"))}function Te(){const e=0===(0,w.L)().navbar.items.length,t=M();return r.createElement(r.Fragment,null,!e&&r.createElement(Ce,{onClick:()=>t.hide()}),t.content)}function Ae(){const e=(0,L.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?r.createElement(F,{header:r.createElement(K,null),primaryMenu:r.createElement(_e,null),secondaryMenu:r.createElement(Te,null)}):null}const Le={navbarHideable:"navbarHideable_jvwV",navbarHidden:"navbarHidden_nLSi"};function Ne(e){return r.createElement("div",(0,l.Z)({role:"presentation"},e,{className:(0,a.Z)("navbar-sidebar__backdrop",e.className)}))}function Re(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,w.L)(),i=(0,L.e)(),{navbarRef:l,isNavbarVisible:s}=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,N.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,c=window.innerHeight;l&&i>=l?n(!1):i+c<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 r.createElement("nav",{ref:l,className:(0,a.Z)("navbar","navbar--fixed-top",n&&[Le.navbarHideable,!s&&Le.navbarHidden],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown})},t,r.createElement(Ne,{onClick:i.toggle}),r.createElement(Ae,null))}const Pe="right";function Oe(e){let{width:t=30,height:n=30,className:a,...o}=e;return r.createElement("svg",(0,l.Z)({className:a,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true"},o),r.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}function De(){const{toggle:e,shown:t}=(0,L.e)();return r.createElement("button",{onClick:e,"aria-label":(0,c.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"},r.createElement(Oe,null))}const Ie={colorModeToggle:"colorModeToggle_x44X"};function Me(e){let{items:t}=e;return r.createElement(r.Fragment,null,t.map(((e,t)=>r.createElement(Ee,(0,l.Z)({},e,{key:t})))))}function Fe(e){let{left:t,right:n}=e;return r.createElement("div",{className:"navbar__inner"},r.createElement("div",{className:"navbar__items"},t),r.createElement("div",{className:"navbar__items navbar__items--right"},n))}function Be(){const e=(0,L.e)(),t=(0,w.L)().navbar.items,[n,a]=function(e){function t(e){return"left"===(e.position??Pe)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),o=t.find((e=>"search"===e.type));return r.createElement(Fe,{left:r.createElement(r.Fragment,null,!e.disabled&&r.createElement(De,null),r.createElement(W,null),r.createElement(Me,{items:n})),right:r.createElement(r.Fragment,null,r.createElement(Me,{items:a}),r.createElement(Z,{className:Ie.colorModeToggle}),!o&&r.createElement(ve,null,r.createElement(ge.Z,null)))})}function je(){return r.createElement(Re,null,r.createElement(Be,null))}function ze(e){let{item:t}=e;const{to:n,href:a,label:o,prependBaseUrlToHref:i,...s}=t,c=(0,X.Z)(n),u=(0,X.Z)(a,{forcePrependBaseUrl:!0});return r.createElement(Q.Z,(0,l.Z)({className:"footer__link-item"},a?{href:i?u:a}:{to:c},s),o,a&&!(0,J.Z)(a)&&r.createElement(te.Z,null))}function Ue(e){let{item:t}=e;return t.html?r.createElement("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement("li",{key:t.href??t.to,className:"footer__item"},r.createElement(ze,{item:t}))}function $e(e){let{column:t}=e;return r.createElement("div",{className:"col footer__col"},r.createElement("div",{className:"footer__title"},t.title),r.createElement("ul",{className:"footer__items clean-list"},t.items.map(((e,t)=>r.createElement(Ue,{key:t,item:e})))))}function He(e){let{columns:t}=e;return r.createElement("div",{className:"row footer__links"},t.map(((e,t)=>r.createElement($e,{key:t,column:e}))))}function qe(){return r.createElement("span",{className:"footer__link-separator"},"\xb7")}function Ge(e){let{item:t}=e;return t.html?r.createElement("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement(ze,{item:t})}function Ze(e){let{links:t}=e;return r.createElement("div",{className:"footer__links text--center"},r.createElement("div",{className:"footer__links"},t.map(((e,n)=>r.createElement(r.Fragment,{key:n},r.createElement(Ge,{item:e}),t.length!==n+1&&r.createElement(qe,null))))))}function Ve(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?r.createElement(He,{columns:t}):r.createElement(Ze,{links:t})}var We=n(941);const Ye={footerLogoLink:"footerLogoLink_BH7S"};function Ke(e){let{logo:t}=e;const{withBaseUrl:n}=(0,X.C)(),o={light:n(t.src),dark:n(t.srcDark??t.src)};return r.createElement(We.Z,{className:(0,a.Z)("footer__logo",t.className),alt:t.alt,sources:o,width:t.width,height:t.height,style:t.style})}function Qe(e){let{logo:t}=e;return t.href?r.createElement(Q.Z,{href:t.href,className:Ye.footerLogoLink,target:t.target},r.createElement(Ke,{logo:t})):r.createElement(Ke,{logo:t})}function Xe(e){let{copyright:t}=e;return r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function Je(e){let{style:t,links:n,logo:o,copyright:i}=e;return r.createElement("footer",{className:(0,a.Z)("footer",{"footer--dark":"dark"===t})},r.createElement("div",{className:"container container-fluid"},n,(o||i)&&r.createElement("div",{className:"footer__bottom text--center"},o&&r.createElement("div",{className:"margin-bottom--sm"},o),i)))}function et(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:a,style:o}=e;return r.createElement(Je,{style:o,links:n&&n.length>0&&r.createElement(Ve,{links:n}),logo:a&&r.createElement(Qe,{logo:a}),copyright:t&&r.createElement(Xe,{copyright:t})})}const tt=r.memo(et),nt=(0,R.Qc)([B.S,x.pl,N.OC,xe.L5,i.VC,function(e){let{children:t}=e;return r.createElement(P.n2,null,r.createElement(L.M,null,r.createElement(D,null,t)))}]);function rt(e){let{children:t}=e;return r.createElement(nt,null,t)}var at=n(8780);const ot={errorBoundaryError:"errorBoundaryError_a6uf"};function it(e){return r.createElement("button",(0,l.Z)({type:"button"},e),r.createElement(c.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error"},"Try again"))}function lt(e){let{error:t}=e;const n=(0,at.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{className:ot.errorBoundaryError},n)}r.Component;function st(e){let{error:t,tryAgain:n}=e;return r.createElement("main",{className:"container margin-vert--xl"},r.createElement("div",{className:"row"},r.createElement("div",{className:"col col--6 col--offset-3"},r.createElement("h1",{className:"hero__title"},r.createElement(c.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),r.createElement("div",{className:"margin-vert--lg"},r.createElement(it,{onClick:n,className:"button button--primary shadow--lw"})),r.createElement("hr",null),r.createElement("div",{className:"margin-vert--md"},r.createElement(lt,{error:t})))))}const ct={mainWrapper:"mainWrapper_z2l0"};function ut(e){const{children:t,noFooter:n,wrapperClassName:l,title:s,description:c}=e;return(0,b.t)(),r.createElement(rt,null,r.createElement(i.d,{title:s,description:c}),r.createElement(y,null),r.createElement(A,null),r.createElement(je,null),r.createElement("div",{id:d,className:(0,a.Z)(g.k.wrapper.main,ct.mainWrapper,l)},r.createElement(o.Z,{fallback:e=>r.createElement(st,e)},t)),!n&&r.createElement(tt,null))}},1327:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var r=n(7462),a=n(7294),o=n(9960),i=n(4996),l=n(2263),s=n(6668),c=n(941);function u(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,i.Z)(t.src),dark:(0,i.Z)(t.srcDark||t.src)},l=a.createElement(c.Z,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?a.createElement("div",{className:r},l):l}function d(e){const{siteConfig:{title:t}}=(0,l.Z)(),{navbar:{title:n,logo:c}}=(0,s.L)(),{imageClassName:d,titleClassName:p,...f}=e,m=(0,i.Z)(c?.href||"/"),h=n?"":t,g=c?.alt??h;return a.createElement(o.Z,(0,r.Z)({to:m},f,c?.target&&{target:c.target}),c&&a.createElement(u,{logo:c,alt:g,imageClassName:d}),null!=n&&a.createElement("b",{className:p},n))}},197:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(5742);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return r.createElement(a.Z,null,t&&r.createElement("meta",{name:"docusaurus_locale",content:t}),n&&r.createElement("meta",{name:"docusaurus_version",content:n}),o&&r.createElement("meta",{name:"docusaurus_tag",content:o}),i&&r.createElement("meta",{name:"docsearch:language",content:i}),n&&r.createElement("meta",{name:"docsearch:version",content:n}),o&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:o}))}},941:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7462),a=n(7294),o=n(6010),i=n(2389),l=n(2949);const s={themedImage:"themedImage_ToTc","themedImage--light":"themedImage--light_HNdA","themedImage--dark":"themedImage--dark_i4oU"};function c(e){const t=(0,i.Z)(),{colorMode:n}=(0,l.I)(),{sources:c,className:u,alt:d,...p}=e,f=t?"dark"===n?["dark"]:["light"]:["light","dark"];return a.createElement(a.Fragment,null,f.map((e=>a.createElement("img",(0,r.Z)({key:e,src:c[e],alt:d,className:(0,o.Z)(s.themedImage,s[`themedImage--${e}`],u)},p)))))}},6043:(e,t,n)=>{"use strict";n.d(t,{u:()=>s,z:()=>g});var r=n(7462),a=n(7294),o=n(412),i=n(1442);const l="ease-in-out";function s(e){let{initialState:t}=e;const[n,r]=(0,a.useState)(t??!1),o=(0,a.useCallback)((()=>{r((e=>!e))}),[]);return{collapsed:n,setCollapsed:r,toggleCollapsed:o}}const c={display:"none",overflow:"hidden",height:"0px"},u={display:"block",overflow:"visible",height:"auto"};function d(e,t){const n=t?c:u;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function p(e){let{collapsibleRef:t,collapsed:n,animation:r}=e;const o=(0,a.useRef)(!1);(0,a.useEffect)((()=>{const e=t.current;function a(){const t=e.scrollHeight,n=r?.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 ${r?.easing??l}`,height:`${t}px`}}function s(){const t=a();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return d(e,n),void(o.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(s(),requestAnimationFrame((()=>{e.style.height=c.height,e.style.overflow=c.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{s()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,r])}function f(e){if(!o.Z.canUseDOM)return e?c:u}function m(e){let{as:t="div",collapsed:n,children:r,animation:o,onCollapseTransitionEnd:i,className:l,disableSSRStyle:s}=e;const c=(0,a.useRef)(null);return p({collapsibleRef:c,collapsed:n,animation:o}),a.createElement(t,{ref:c,style:s?void 0:f(n),onTransitionEnd:e=>{"height"===e.propertyName&&(d(c.current,n),i?.(n))},className:l},r)}function h(e){let{collapsed:t,...n}=e;const[o,i]=(0,a.useState)(!t),[l,s]=(0,a.useState)(t);return(0,a.useLayoutEffect)((()=>{t||i(!0)}),[t]),(0,a.useLayoutEffect)((()=>{o&&s(t)}),[o,t]),o?a.createElement(m,(0,r.Z)({},n,{collapsed:l})):null}function g(e){let{lazy:t,...n}=e;const r=t?h:m;return a.createElement(r,n)}},9689:(e,t,n)=>{"use strict";n.d(t,{nT:()=>m,pl:()=>f});var r=n(7294),a=n(2389),o=n(12),i=n(902),l=n(6668);const s=(0,o.WA)("docusaurus.announcement.dismiss"),c=(0,o.WA)("docusaurus.announcement.id"),u=()=>"true"===s.get(),d=e=>s.set(String(e)),p=r.createContext(null);function f(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.L)(),t=(0,a.Z)(),[n,o]=(0,r.useState)((()=>!!t&&u()));(0,r.useEffect)((()=>{o(u())}),[]);const i=(0,r.useCallback)((()=>{d(!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&&d(!1),!r&&u()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return r.createElement(p.Provider,{value:n},t)}function m(){const e=(0,r.useContext)(p);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},2949:(e,t,n)=>{"use strict";n.d(t,{I:()=>g,S:()=>h});var r=n(7294),a=n(412),o=n(902),i=n(12),l=n(6668);const s=r.createContext(void 0),c="theme",u=(0,i.WA)(c),d={light:"light",dark:"dark"},p=e=>e===d.dark?d.dark:d.light,f=e=>a.Z.canUseDOM?p(document.documentElement.getAttribute("data-theme")):p(e),m=e=>{u.set(p(e))};function h(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.L)(),[a,o]=(0,r.useState)(f(e));(0,r.useEffect)((()=>{t&&u.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(o(t),a&&m(t)):(o(n?window.matchMedia("(prefers-color-scheme: dark)").matches?d.dark:d.light:e),u.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=u.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===d.dark},setLightTheme(){i(d.light)},setDarkTheme(){i(d.dark)}})),[a,i])}();return r.createElement(s.Provider,{value:n},t)}function g(){const e=(0,r.useContext)(s);if(null==e)throw new o.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},373:(e,t,n)=>{"use strict";n.d(t,{J:()=>v,L5:()=>g});var r=n(7294),a=n(143),o=n(9935),i=n(6668),l=n(2802),s=n(902),c=n(12);const u=e=>`docs-preferred-version-${e}`,d={save:(e,t,n)=>{(0,c.WA)(u(e),{persistence:t}).set(n)},read:(e,t)=>(0,c.WA)(u(e),{persistence:t}).get(),clear:(e,t)=>{(0,c.WA)(u(e),{persistence:t}).del()}},p=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const f=r.createContext(null);function m(){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=d.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(d.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){d.save(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function h(e){let{children:t}=e;const n=m();return r.createElement(f.Provider,{value:n},t)}function g(e){let{children:t}=e;return l.cE?r.createElement(h,null,t):r.createElement(r.Fragment,null,t)}function b(){const e=(0,r.useContext)(f);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])}}},1116:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,b:()=>l});var r=n(7294),a=n(902);const o=Symbol("EmptyContext"),i=r.createContext(o);function l(e){let{children:t,name:n,items:a}=e;const o=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return r.createElement(i.Provider,{value:o},t)}function s(){const e=(0,r.useContext)(i);if(e===o)throw new a.i6("DocsSidebarProvider");return e}},4477:(e,t,n)=>{"use strict";n.d(t,{E:()=>l,q:()=>i});var r=n(7294),a=n(902);const o=r.createContext(null);function i(e){let{children:t,version:n}=e;return r.createElement(o.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(o);if(null===e)throw new a.i6("DocsVersionProvider");return e}},2961:(e,t,n)=>{"use strict";n.d(t,{M:()=>p,e:()=>f});var r=n(7294),a=n(3102),o=n(7524),i=n(6550),l=(n(1688),n(902));function s(e){!function(e){const t=(0,i.k6)(),n=(0,l.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}var c=n(6668);const u=r.createContext(void 0);function d(){const e=function(){const e=(0,a.HY)(),{items:t}=(0,c.L)().navbar;return 0===t.length&&!e.component}(),t=(0,o.i)(),n=!e&&"mobile"===t,[i,l]=(0,r.useState)(!1);s((()=>{if(i)return l(!1),!1}));const u=(0,r.useCallback)((()=>{l((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&l(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:u,shown:i})),[e,n,u,i])}function p(e){let{children:t}=e;const n=d();return r.createElement(u.Provider,{value:n},t)}function f(){const e=r.useContext(u);if(void 0===e)throw new l.i6("NavbarMobileSidebarProvider");return e}},3102:(e,t,n)=>{"use strict";n.d(t,{HY:()=>l,Zo:()=>s,n2:()=>i});var r=n(7294),a=n(902);const o=r.createContext(null);function i(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return r.createElement(o.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(o);if(!e)throw new a.i6("NavbarSecondaryMenuContentProvider");return e[0]}function s(e){let{component:t,props:n}=e;const i=(0,r.useContext)(o);if(!i)throw new a.i6("NavbarSecondaryMenuContentProvider");const[,l]=i,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}},9727:(e,t,n)=>{"use strict";n.d(t,{h:()=>a,t:()=>o});var r=n(7294);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)}}),[])}},7524:(e,t,n)=>{"use strict";n.d(t,{i:()=>c});var r=n(7294),a=n(412);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function l(){return a.Z.canUseDOM?window.innerWidth>i?o.desktop:o.mobile:o.ssr}const s=!1;function c(){const[e,t]=(0,r.useState)((()=>s?"ssr":l()));return(0,r.useEffect)((()=>{function e(){t(l())}const n=s?window.setTimeout(e,1e3):void 0;return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e),clearTimeout(n)}}),[]),e}},5281:(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",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:{}}},1442:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{n:()=>r})},2802:(e,t,n)=>{"use strict";n.d(t,{MN:()=>_,Wl:()=>m,_F:()=>v,cE:()=>p,jA:()=>h,xz:()=>f,hI:()=>E,lO:()=>x,vY:()=>S,oz:()=>k,s1:()=>w});var r=n(7294),a=n(6550),o=n(8790),i=n(143),l=n(373),s=n(4477),c=n(1116);function u(e){return Array.from(new Set(e))}var d=n(8596);const p=!!i._r;function f(e){const t=(0,s.E)();if(!e)return;const n=t.docs[e];if(!n)throw new Error(`no version doc found by id=${e}`);return n}function m(e){if(e.href)return e.href;for(const t of e.items){if("link"===t.type)return t.href;if("category"===t.type){const e=m(t);if(e)return e}}}function h(){const{pathname:e}=(0,a.TH)(),t=(0,c.V)();if(!t)throw new Error("Unexpected: cant find current sidebar in context");const n=y({sidebarItems:t.items,pathname:e,onlyCategories:!0}).slice(-1)[0];if(!n)throw new Error(`${e} is not associated with a category. useCurrentSidebarCategory() should only be used on category index pages.`);return n}const g=(e,t)=>void 0!==e&&(0,d.Mg)(e,t),b=(e,t)=>e.some((e=>v(e,t)));function v(e,t){return"link"===e.type?g(e.href,t):"category"===e.type&&(g(e.href,t)||b(e.items,t))}function y(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,c.V)(),{pathname:t}=(0,a.TH)(),n=(0,i.gA)()?.pluginData.breadcrumbs;return!1!==n&&e?y({sidebarItems:e.items,pathname:t}):null}function x(e){const{activeVersion:t}=(0,i.Iw)(e),{preferredVersion:n}=(0,l.J)(e),a=(0,i.yW)(e);return(0,r.useMemo)((()=>u([t,n,a].filter(Boolean))),[t,n,a])}function k(e,t){const n=x(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=x(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- ${u(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function E(e){let{route:t,versionMetadata:n}=e;const r=(0,a.TH)(),i=t.routes,l=i.find((e=>(0,a.LX)(r.pathname,e)));if(!l)return null;const s=l.sidebar,c=s?n.docsSidebars[s]:void 0;return{docElement:(0,o.H)(i),sidebarName:s,sidebarItems:c}}function _(e){return e.filter((e=>"category"!==e.type||!!m(e)))}},1944:(e,t,n)=>{"use strict";n.d(t,{FG:()=>p,d:()=>u,VC:()=>f});var r=n(7294),a=n(6010),o=n(5742),i=n(226);function l(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(4996),c=n(2263);function u(e){let{title:t,description:n,keywords:a,image:i,children:l}=e;const u=function(e){const{siteConfig:t}=(0,c.Z)(),{title:n,titleDelimiter:r}=t;return e?.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,s.C)(),p=i?d(i,{absolute:!0}):void 0;return r.createElement(o.Z,null,t&&r.createElement("title",null,u),t&&r.createElement("meta",{property:"og:title",content:u}),n&&r.createElement("meta",{name:"description",content:n}),n&&r.createElement("meta",{property:"og:description",content:n}),a&&r.createElement("meta",{name:"keywords",content:Array.isArray(a)?a.join(","):a}),p&&r.createElement("meta",{property:"og:image",content:p}),p&&r.createElement("meta",{name:"twitter:image",content:p}),l)}const d=r.createContext(void 0);function p(e){let{className:t,children:n}=e;const i=r.useContext(d),l=(0,a.Z)(i,t);return r.createElement(d.Provider,{value:l},r.createElement(o.Z,null,r.createElement("html",{className:l})),n)}function f(e){let{children:t}=e;const n=l(),o=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const i=`plugin-id-${n.plugin.id}`;return r.createElement(p,{className:(0,a.Z)(o,i)},t)}},902:(e,t,n)=>{"use strict";n.d(t,{D9:()=>i,Qc:()=>c,Ql:()=>s,i6:()=>l,zX:()=>o});var r=n(7294);const a=n(412).Z.canUseDOM?r.useLayoutEffect:r.useEffect;function o(e){const t=(0,r.useRef)(e);return a((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function i(e){const t=(0,r.useRef)();return a((()=>{t.current=e})),t.current}class l 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 s(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 r.createElement(r.Fragment,null,e.reduceRight(((e,t)=>r.createElement(t,null,e)),n))}}},8596:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>l});var r=n(7294),a=n(723),o=n(2263);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])}},2466:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>p,OC:()=>s,RF:()=>d});var r=n(7294),a=n(412),o=n(2389),i=n(902);const l=r.createContext(void 0);function s(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 r.createElement(l.Provider,{value:n},t)}function c(){const e=(0,r.useContext)(l);if(null==e)throw new i.i6("ScrollControllerProvider");return e}const u=()=>a.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function d(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=c(),a=(0,r.useRef)(u()),o=(0,i.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=u();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 p(){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?.()}}},3320:(e,t,n)=>{"use strict";n.d(t,{HX:()=>r,os:()=>a});n(2263);const r="default";function a(e,t){return`docs-${e}-${t}`}},12:(e,t,n)=>{"use strict";n.d(t,{WA:()=>s});n(7294),n(1688);const r="localStorage";function a(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 o(e){if(void 0===e&&(e=r),"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,i||(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),i=!0),null}var t}let i=!1;const l={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function s(e,t){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}}(e);const n=o(t?.persistence);return null===n?l:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),a({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),a({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,r),()=>{}}}}}},4711:(e,t,n)=>{"use strict";n.d(t,{l:()=>i});var r=n(2263),a=n(6550),o=n(8780);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:l}}=(0,r.Z)(),{pathname:s}=(0,a.TH)(),c=(0,o.applyTrailingSlash)(s,{trailingSlash:n,baseUrl:e}),u=l===i?e:e.replace(`/${l}/`,"/"),d=c.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:r}=e;return`${r?t:""}${function(e){return e===i?`${u}`:`${u}${e}/`}(n)}${d}`}}}},5936:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var r=n(7294),a=n(6550),o=n(902);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])}},6668:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(2263);function a(){return(0,r.Z)().siteConfig.themeConfig}},8802:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[a]=e.split(/[#?]/),o="/"===a||a===r?a:(i=a,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(a,o)}},4143:(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]}},8780: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.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var a=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}});var o=n(4143);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return o.getErrorCausalChain}})},6010:(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}},9318:(e,t,n)=>{"use strict";n.d(t,{lX:()=>w,q_:()=>C,ob:()=>f,PP:()=>A,Ep:()=>p});var r=n(7462);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),c=l||s;if(e&&a(e)?i=r:r.length&&(i.pop(),i=i.concat(r)),!i.length)return"/";if(i.length){var u=i[i.length-1];n="."===u||".."===u||""===u}else n=!1;for(var d=0,p=i.length;p>=0;p--){var f=i[p];"."===f?o(i,p):".."===f?(o(i,p),d++):d&&(o(i,p),d--)}if(!c)for(;d--;d)i.unshift("..");!c||""===i[0]||i[0]&&a(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var l=n(8776);function s(e){return"/"===e.charAt(0)?e:"/"+e}function c(e){return"/"===e.charAt(0)?e.substr(1):e}function u(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 p(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 f(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 m(){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 h=!("undefined"==typeof window||!window.document||!window.document.createElement);function g(e,t){t(window.confirm(e))}var b="popstate",v="hashchange";function y(){try{return window.history.state||{}}catch(e){return{}}}function w(e){void 0===e&&(e={}),h||(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,c=i.forceRefresh,w=void 0!==c&&c,x=i.getUserConfirmation,k=void 0===x?g:x,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=u(o,_)),f(o,r,n)}function T(){return Math.random().toString(36).substr(2,E)}var A=m();function L(e){(0,r.Z)(U,e),U.length=n.length,A.notifyListeners(U.location,U.action)}function N(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||O(C(e.state))}function R(){O(C(y()))}var P=!1;function O(e){if(P)P=!1,L();else{A.confirmTransitionTo(e,"POP",k,(function(t){t?L({action:"POP",location:e}):function(e){var t=U.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&&(P=!0,F(a))}(e)}))}}var D=C(y()),I=[D.key];function M(e){return _+p(e)}function F(e){n.go(e)}var B=0;function j(e){1===(B+=e)&&1===e?(window.addEventListener(b,N),o&&window.addEventListener(v,R)):0===B&&(window.removeEventListener(b,N),o&&window.removeEventListener(v,R))}var z=!1;var U={length:n.length,action:"POP",location:D,createHref:M,push:function(e,t){var r="PUSH",o=f(e,t,T(),U.location);A.confirmTransitionTo(o,r,k,(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(U.location.key),c=I.slice(0,s+1);c.push(o.key),I=c,L({action:r,location:o})}else window.location.href=t}}))},replace:function(e,t){var r="REPLACE",o=f(e,t,T(),U.location);A.confirmTransitionTo(o,r,k,(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(U.location.key);-1!==s&&(I[s]=o.key),L({action:r,location:o})}else window.location.replace(t)}}))},go:F,goBack:function(){F(-1)},goForward:function(){F(1)},block:function(e){void 0===e&&(e=!1);var t=A.setPrompt(e);return z||(j(1),z=!0),function(){return z&&(z=!1,j(-1)),t()}},listen:function(e){var t=A.appendListener(e);return j(1),function(){j(-1),t()}}};return U}var x="hashchange",k={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+c(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:c,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={}),h||(0,l.Z)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),a=n.getUserConfirmation,o=void 0===a?g:a,i=n.hashType,c=void 0===i?"slash":i,b=e.basename?d(s(e.basename)):"",v=k[c],y=v.encodePath,w=v.decodePath;function C(){var e=w(E());return b&&(e=u(e,b)),f(e)}var T=m();function A(e){(0,r.Z)(z,e),z.length=t.length,T.notifyListeners(z.location,z.action)}var L=!1,N=null;function R(){var e,t,n=E(),r=y(n);if(n!==r)_(r);else{var a=C(),i=z.location;if(!L&&(t=a,(e=i).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(N===p(a))return;N=null,function(e){if(L)L=!1,A();else{var t="POP";T.confirmTransitionTo(e,t,o,(function(n){n?A({action:t,location:e}):function(e){var t=z.location,n=I.lastIndexOf(p(t));-1===n&&(n=0);var r=I.lastIndexOf(p(e));-1===r&&(r=0);var a=n-r;a&&(L=!0,M(a))}(e)}))}}(a)}}var P=E(),O=y(P);P!==O&&_(O);var D=C(),I=[p(D)];function M(e){t.go(e)}var F=0;function B(e){1===(F+=e)&&1===e?window.addEventListener(x,R):0===F&&window.removeEventListener(x,R)}var j=!1;var z={length:t.length,action:"POP",location:D,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=S(window.location.href)),n+"#"+y(b+p(e))},push:function(e,t){var n="PUSH",r=f(e,void 0,void 0,z.location);T.confirmTransitionTo(r,n,o,(function(e){if(e){var t=p(r),a=y(b+t);if(E()!==a){N=t,function(e){window.location.hash=e}(a);var o=I.lastIndexOf(p(z.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=f(e,void 0,void 0,z.location);T.confirmTransitionTo(r,n,o,(function(e){if(e){var t=p(r),a=y(b+t);E()!==a&&(N=t,_(a));var o=I.indexOf(p(z.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 j||(B(1),j=!0),function(){return j&&(j=!1,B(-1)),t()}},listen:function(e){var t=T.appendListener(e);return B(1),function(){B(-1),t()}}};return z}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,c=void 0===s?6:s,u=m();function d(e){(0,r.Z)(w,e),w.length=w.entries.length,u.notifyListeners(w.location,w.action)}function h(){return Math.random().toString(36).substr(2,c)}var g=T(l,0,o.length-1),b=o.map((function(e){return f(e,void 0,"string"==typeof e?h():e.key||h())})),v=p;function y(e){var t=T(w.index+e,0,w.entries.length-1),r=w.entries[t];u.confirmTransitionTo(r,"POP",n,(function(e){e?d({action:"POP",location:r,index:t}):d()}))}var w={length:b.length,action:"POP",location:b[g],index:g,entries:b,createHref:v,push:function(e,t){var r="PUSH",a=f(e,t,h(),w.location);u.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=f(e,t,h(),w.location);u.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(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),u.setPrompt(e)},listen:function(e){return u.appendListener(e)}};return w}},8679:(e,t,n)=>{"use strict";var r=n(9864),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 c=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var a=f(n);a&&a!==m&&e(t,a,r)}var i=u(n);d&&(i=i.concat(d(n)));for(var l=s(t),h=s(n),g=0;g<i.length;++g){var b=i[g];if(!(o[b]||r&&r[b]||h&&h[b]||l&&l[b])){var v=p(n,b);try{c(t,b,v)}catch(y){}}}}return t}},1143: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 c=[n,r,a,o,i,l],u=0;(s=new Error(t.replace(/%s/g,(function(){return c[u++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},2497:(e,t,n)=>{"use strict";n.r(t)},2295:(e,t,n)=>{"use strict";n.r(t)},4865: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),c=o.querySelector(r.barSelector),u=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(c,i(e,u,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(o,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),u)}),u)):setTimeout(t,u)})),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");u(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),c=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&f(a),c!=document.body&&u(c,"nprogress-custom-parent"),c.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&&f(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 c(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function u(e,t){var n=p(e),r=n+t;c(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);c(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(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)},7418:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(a){return!1}}()?Object.assign:function(e,a){for(var o,i,l=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),s=1;s<arguments.length;s++){for(var c in o=Object(arguments[s]))n.call(o,c)&&(l[c]=o[c]);if(t){i=t(o);for(var u=0;u<i.length;u++)r.call(o,i[u])&&(l[i[u]]=o[i[u]])}}return l}},7410:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=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 c=a[e];return a[e]=i,r.languages.DFS(r.languages,(function(t,n){n===c&&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],c=r.util.type(s);"Object"!==c||o[i(s)]?"Array"!==c||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};return r.hooks.run("before-tokenize",o),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){var t=[],n=e.head.next;for(;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,u,d){for(var p in n)if(n.hasOwnProperty(p)&&n[p]){var f=n[p];f=Array.isArray(f)?f:[f];for(var m=0;m<f.length;++m){if(d&&d.cause==p+","+m)return;var h=f[m],g=h.inside,b=!!h.lookbehind,v=!!h.greedy,y=h.alias;if(v&&!h.pattern.global){var w=h.pattern.toString().match(/[imsuy]*$/)[0];h.pattern=RegExp(h.pattern.source,w+"g")}for(var x=h.pattern||h,k=l.next,S=u;k!==t.tail&&!(d&&S>=d.reach);S+=k.value.length,k=k.next){var E=k.value;if(t.length>e.length)return;if(!(E instanceof a)){var _,C=1;if(v){if(!(_=o(x,S,e,b))||_.index>=e.length)break;var T=_.index,A=_.index+_[0].length,L=S;for(L+=k.value.length;T>=L;)L+=(k=k.next).value.length;if(S=L-=k.value.length,k.value instanceof a)continue;for(var N=k;N!==t.tail&&(L<A||"string"==typeof N.value);N=N.next)C++,L+=N.value.length;C--,E=e.slice(S,L),_.index-=S}else if(!(_=o(x,0,E,b)))continue;T=_.index;var R=_[0],P=E.slice(0,T),O=E.slice(T+R.length),D=S+E.length;d&&D>d.reach&&(d.reach=D);var I=k.prev;if(P&&(I=s(t,I,P),S+=P.length),c(t,I,C),k=s(t,I,new a(p,g?r.tokenize(R,g):R,y,R)),O&&s(t,k,O),C>1){var M={cause:p+","+m,reach:D};i(e,t,n,k.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 c(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}(),a=r;r.default=r,a.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"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.languages.markup.doctype.inside["internal-subset"].inside=a.languages.markup,a.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(a.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:a.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i;var r={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:a.languages[t]};var o={};o[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},a.languages.insertBefore("markup","cdata",o)}}),Object.defineProperty(a.languages.markup.tag,"addAttribute",{value:function(e,t){a.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:a.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.xml=a.languages.extend("markup",{}),a.languages.ssml=a.languages.xml,a.languages.atom=a.languages.xml,a.languages.rss=a.languages.xml,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+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},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|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|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|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","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.shell=e.languages.bash}(a),a.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:/[{}[\];(),.:]/},a.languages.c=a.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|[?:~]|[-+*/%&|^!=<>]=?/}),a.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),a.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},a.languages.c.string],char:a.languages.c.char,comment:a.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:a.languages.c}}}}),a.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 a.languages.c.boolean,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"])}(a),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,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;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(a),function(e){var t,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;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("\\[(?:[^[\\]\"']|"+n.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":[n,{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}});var r={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},a={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|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:r,number:a,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:a})}(a),a.languages.javascript=a.languages.extend("clike",{"class-name":[a.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}|\?\?=?|\?\.?|[~:]/}),a.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,a.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:a.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:a.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:a.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:a.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:a.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),a.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:a.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"}}),a.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),a.languages.markup&&(a.languages.markup.tag.addInlined("script","javascript"),a.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")),a.languages.js=a.languages.javascript,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}(a),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}(a),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;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=t[n];if("code"===a.type){var o=a.content[1],i=a.content[3];if(o&&i&&"code-language"===o.type&&"code-block"===i.type&&"string"==typeof o.content){var l=o.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp"),s="language-"+(l=(/[a-z][\w-]*/i.exec(l)||[""])[0].toLowerCase());i.alias?"string"==typeof i.alias?i.alias=[i.alias,s]:i.alias.push(s):i.alias=[s]}}else e(a.content)}}(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],c=/language-(.+)/.exec(o);if(c){n=c[1];break}}var u,d=e.languages[n];if(d)t.content=e.highlight((u=t.content,u.replace(i,"").replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,(function(e,t){var n;if("#"===(t=t.toLowerCase())[0])return n="x"===t[1]?parseInt(t.slice(2),16):Number(t.slice(1)),s(n);var r=l[t];return r||e}))),d,n);else if(n&&"none"!==n&&e.plugins.autoloader){var p="md-"+(new Date).valueOf()+"-"+Math.floor(1e16*Math.random());t.attributes.id=p,e.plugins.autoloader.loadLanguages(n,(function(){var t=document.getElementById(p);t&&(t.innerHTML=e.highlight(t.textContent,e.languages[n],n))}))}}}));var i=RegExp(e.languages.markup.tag.pattern.source,"gi"),l={amp:"&",lt:"<",gt:">",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(a),a.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:a.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+/},a.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"])&&"("===u(1).content){n+=2;var o=p(/^\($/,/^\)$/);if(-1===o)continue;for(;n<o;n++){var i=u(0);"variable"===i.type&&(f(i,"variable-input"),a.push(i.content))}n=o+1}if(d(["punctuation","property-query"])&&"{"===u(0).content&&(n++,f(u(0),"property-mutation"),a.length>0)){var l=p(/^\{$/,/^\}$/);if(-1===l)continue;for(var s=n;s<l;s++){var c=t[s];"variable"===c.type&&a.indexOf(c.content)>=0&&f(c,"variable-input")}}}}function u(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n<e.length;n++){var r=u(n+t);if(!r||r.type!==e[n])return!1}return!0}function p(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 f(e,t){var n=e.alias;n?Array.isArray(n)||(e.alias=n=[n]):e.alias=n=[],n.push(t)}})),a.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(e,t){return"___"+t.toUpperCase()+"_"+e+"___"}function s(t,n,r){var a={code:t,grammar:n,language:r};return e.hooks.run("before-tokenize",a),a.tokens=e.tokenize(a.code,a.grammar),e.hooks.run("after-tokenize",a),a.tokens}function c(t){var n={};n["interpolation-punctuation"]=a;var o=e.tokenize(t,n);if(3===o.length){var i=[1,1];i.push.apply(i,s(o[1],e.languages.javascript,"javascript")),o.splice.apply(o,i)}return new e.Token("interpolation",o,r.alias,t)}function u(t,n,r){var a=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),i=0,u={},d=s(a.map((function(e){if("string"==typeof e)return e;for(var n,a=e.content;-1!==t.indexOf(n=l(i++,r)););return u[n]=a,n})).join(""),n,r),p=Object.keys(u);return i=0,function e(t){for(var n=0;n<t.length;n++){if(i>=p.length)return;var r=t[n];if("string"==typeof r||"string"==typeof r.content){var a=p[i],o="string"==typeof r?r:r.content,l=o.indexOf(a);if(-1!==l){++i;var s=o.substring(0,l),d=c(u[a]),f=o.substring(l+a.length),m=[];if(s&&m.push(s),m.push(d),f){var h=[f];e(h),m.push.apply(m,h)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(m)),n+=m.length-1):r.content=m}}else{var g=r.content;Array.isArray(g)?e(g):e([g])}}}(d),new e.Token(r,d,"language-"+r,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 d={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function p(e){return"string"==typeof e?e:Array.isArray(e)?e.map(p).join(""):p(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in d&&function t(n){for(var r=0,a=n.length;r<a;r++){var o=n[r];if("string"!=typeof o){var i=o.content;if(Array.isArray(i))if("template-string"===o.type){var l=i[1];if(3===i.length&&"string"!=typeof l&&"embedded-code"===l.type){var s=p(l),c=l.alias,d=Array.isArray(c)?c[0]:c,f=e.languages[d];if(!f)continue;i[1]=u(s,f,d)}}else t(i);else"string"!=typeof i&&t([i])}}}(t.tokens)}))}(a),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}(a),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];"RegExp"===e.util.type(o)&&(o=e.languages.javascript[a]={pattern:o});var i=o.inside||{};o.inside=i,i["maybe-class-name"]=/^[A-Z][\s\S]*/}}(a),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)}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 i=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(i).join(""):""},l=function(t){for(var n=[],r=0;r<t.length;r++){var a=t[r],o=!1;if("string"!=typeof a&&("tag"===a.type&&a.content[0]&&"tag"===a.content[0].type?"</"===a.content[0].content[0].content?n.length>0&&n[n.length-1].tagName===i(a.content[0].content[1])&&n.pop():"/>"===a.content[a.content.length-1].content||n.push({tagName:i(a.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===a.type&&"{"===a.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===a.type&&"}"===a.content?n[n.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&n.length>0&&0===n[n.length-1].openedBraces){var s=i(a);r<t.length-1&&("string"==typeof t[r+1]||"plain-text"===t[r+1].type)&&(s+=i(t[r+1]),t.splice(r+1,1)),r>0&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(s=i(t[r-1])+s,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",s,null,s)}a.content&&"string"!=typeof a.content&&l(a.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||l(e.tokens)}))}(a),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})}(a),a.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},a.languages.go=a.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/}),a.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete a.languages.go["class-name"],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 c=l[s];if("string"==typeof c||c.content&&"string"==typeof c.content){var u=o[a],d=n.tokenStack[u],p="string"==typeof c?c:c.content,f=t(r,u),m=p.indexOf(f);if(m>-1){++a;var h=p.substring(0,m),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),b=p.substring(m+f.length),v=[];h&&v.push.apply(v,i([h])),v.push(g),b&&v.push.apply(v,i([b])),"string"==typeof c?l.splice.apply(l,[s,1].concat(v)):c.content=v}}else c.content&&i(c.content)}return l}(n.tokens)}}}})}(a),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:false|true)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")})),e.languages.hbs=e.languages.handlebars}(a),a.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},a.languages.webmanifest=a.languages.json,a.languages.less=a.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),a.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),a.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"builtin-target":{pattern:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,alias:"builtin"},target:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,alias:"symbol",inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,function:{pattern:/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,lookbehind:!0},operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},a.languages.objectivec=a.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 a.languages.objectivec["class-name"],a.languages.objc=a.languages.objectivec,a.languages.ocaml={comment:{pattern:/\(\*[\s\S]*?\*\)/,greedy:!0},char:{pattern:/'(?:[^\\\r\n']|\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,greedy:!0},string:[{pattern:/"(?:\\(?:[\s\S]|\r\n)|[^\\\r\n"])*"/,greedy:!0},{pattern:/\{([a-z_]*)\|[\s\S]*?\|\1\}/,greedy:!0}],number:[/\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\b/i,/\b0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]*)?(?:p[+-]?\d[\d_]*)?(?!\w)/i,/\b\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?\d[\d_]*)?(?!\w)/i],directive:{pattern:/\B#\w+/,alias:"property"},label:{pattern:/\B~\w+/,alias:"property"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"symbol"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,"operator-like-punctuation":{pattern:/\[[<>|]|[>|]\]|\{<|>\}/,alias:"punctuation"},operator:/\.[.~]|:[=>]|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/;;|::|[(){}\[\].,:;#]|\b_\b/},a.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:/[{}[\];(),.:]/},a.languages.python["string-interpolation"].inside.interpolation.inside.rest=a.languages.python,a.languages.py=a.languages.python,a.languages.reason=a.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/}),a.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 a.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(a),a.languages.scss=a.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),a.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),a.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),a.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),a.languages.scss.atrule.inside.rest=a.languages.scss,function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},r={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:else|for|if|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?: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|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)\b/i,{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,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};r.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:r}},r.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:r}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:r}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:r}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:r}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:r.interpolation}},rest:r}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:r.interpolation,comment:r.comment,punctuation:/[{},]/}},func:r.func,string:r.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:r.interpolation,punctuation:/[{}()\[\];:.]/}}(a),function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var n=e.languages.tsx.tag;n.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+n.pattern.source+")",n.pattern.flags),n.lookbehind=!0}(a),a.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/};const o=a},9901:e=>{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to <a href="https://webplatform.github.io/docs/">WebPlatform.org documentation</a>. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (<code>.comment</code> can become <code>.namespace--comment</code>) or replace them with your defined ones (like <code>.editor__comment</code>). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the <code>highlightAll</code> and <code>highlightAllUnder</code> methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},2885:(e,t,n)=>{const r=n(9901),a=n(9642),o=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...o,...Object.keys(Prism.languages)];a(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(6500).resolve(t)],delete Prism.languages[e],n(6500)(t),o.add(e)}))}i.silent=!1,e.exports=i},6726:(e,t,n)=>{var r={"./":2885};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=6726},6500:(e,t,n)=>{var r={"./":2885};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=6500},9642:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n<r;n++)t[e[n]]=!0;return t}function r(e){var n={},r=[];function a(r,o){if(!(r in n)){o.push(r);var i=o.indexOf(r);if(i<o.length-1)throw new Error("Circular dependency: "+o.slice(i).join(" -> "));var l={},s=e[r];if(s){function c(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in l))for(var i in a(t,o),l[t]=!0,n[t])l[i]=!0}t(s.require,c),t(s.optional,c),t(s.modify,c)}n[r]=l,o.pop()}}return function(e){var t=n[e];return t||(a(e,r),t=n[e]),t}}function a(e){for(var t in e)return!0;return!1}return function(o,i,l){var s=function(e){var t={};for(var n in e){var r=e[n];for(var a in r)if("meta"!=a){var o=r[a];t[a]="string"==typeof o?{title:o}:o}}return t}(o),c=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var a in n={},e){var o=e[a];t(o&&o.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+a+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+a+" because it is a component.");n[t]=a}))}return n[r]||r}}(s);i=i.map(c),l=(l||[]).map(c);var u=n(i),d=n(l);i.forEach((function e(n){var r=s[n];t(r&&r.require,(function(t){t in d||(u[t]=!0,e(t))}))}));for(var p,f=r(s),m=u;a(m);){for(var h in p={},m){var g=s[h];t(g&&g.modify,(function(e){e in d&&(p[e]=!0)}))}for(var b in d)if(!(b in u))for(var v in f(b))if(v in u){p[b]=!0;break}for(var y in m=p)u[y]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,a){var o=a?a.series:void 0,i=a?a.parallel:e,l={},s={};function c(e){if(e in l)return l[e];s[e]=!0;var a,u=[];for(var d in t(e))d in n&&u.push(d);if(0===u.length)a=r(e);else{var p=i(u.map((function(e){var t=c(e);return delete s[e],t})));o?a=o(p,(function(){return r(e)})):r(e)}return l[e]=a}for(var u in n)c(u);var d=[];for(var p in s)d.push(l[p]);return i(d)}(f,u,t,n)}};return w}}();e.exports=t},2703:(e,t,n)=>{"use strict";var r=n(414);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}},5697:(e,t,n)=>{e.exports=n(2703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4448:(e,t,n)=>{"use strict";var r=n(7294),a=n(7418),o=n(3840);function i(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."}if(!r)throw Error(i(227));var l=new Set,s={};function c(e,t){u(e,t),u(e+"Capture",t)}function u(e,t){for(s[e]=t,e=0;e<t.length;e++)l.add(t[e])}var d=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),p=/^[: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]*$/,f=Object.prototype.hasOwnProperty,m={},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 b={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){b[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];b[t]=new g(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){b[e]=new g(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){b[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){b[e]=new g(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){b[e]=new g(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){b[e]=new g(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){b[e]=new g(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){b[e]=new g(e,5,!1,e.toLowerCase(),null,!1,!1)}));var v=/[\-:]([a-z])/g;function y(e){return e[1].toUpperCase()}function w(e,t,n,r){var a=b.hasOwnProperty(t)?b[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!!f.call(h,e)||!f.call(m,e)&&(p.test(e)?h[e]=!0:(m[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(v,y);b[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(v,y);b[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(v,y);b[t]=new g(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){b[e]=new g(e,1,!1,e.toLowerCase(),null,!1,!1)})),b.xlinkHref=new g("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){b[e]=new g(e,1,!1,e.toLowerCase(),null,!0,!0)}));var x=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,k=60103,S=60106,E=60107,_=60108,C=60114,T=60109,A=60110,L=60112,N=60113,R=60120,P=60115,O=60116,D=60121,I=60128,M=60129,F=60130,B=60131;if("function"==typeof Symbol&&Symbol.for){var j=Symbol.for;k=j("react.element"),S=j("react.portal"),E=j("react.fragment"),_=j("react.strict_mode"),C=j("react.profiler"),T=j("react.provider"),A=j("react.context"),L=j("react.forward_ref"),N=j("react.suspense"),R=j("react.suspense_list"),P=j("react.memo"),O=j("react.lazy"),D=j("react.block"),j("react.scope"),I=j("react.opaque.id"),M=j("react.debug_trace_mode"),F=j("react.offscreen"),B=j("react.legacy_hidden")}var z,U="function"==typeof Symbol&&Symbol.iterator;function $(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=U&&e[U]||e["@@iterator"])?e:null}function H(e){if(void 0===z)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);z=t&&t[1]||""}return"\n"+z+e}var q=!1;function G(e,t){if(!e||q)return"";q=!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(s){var r=s}Reflect.construct(e,[],t)}else{try{t.call()}catch(s){r=s}e.call(t.prototype)}else{try{throw Error()}catch(s){r=s}e()}}catch(s){if(s&&r&&"string"==typeof s.stack){for(var a=s.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])return"\n"+a[i].replace(" at new "," at ")}while(1<=i&&0<=l);break}}}finally{q=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?H(e):""}function Z(e){switch(e.tag){case 5:return H(e.type);case 16:return H("Lazy");case 13:return H("Suspense");case 19:return H("SuspenseList");case 0:case 2:case 15:return e=G(e.type,!1);case 11:return e=G(e.type.render,!1);case 22:return e=G(e.type._render,!1);case 1:return e=G(e.type,!0);default:return""}}function V(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 E:return"Fragment";case S:return"Portal";case C:return"Profiler";case _:return"StrictMode";case N:return"Suspense";case R:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case A:return(e.displayName||"Context")+".Consumer";case T:return(e._context.displayName||"Context")+".Provider";case L:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case P:return V(e.type);case D:return V(e._render);case O:t=e._payload,e=e._init;try{return V(e(t))}catch(n){}}return null}function W(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function Y(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function K(e){e._valueTracker||(e._valueTracker=function(e){var t=Y(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=Y(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function X(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 J(e,t){var n=t.checked;return a({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function ee(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=W(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 te(e,t){null!=(t=t.checked)&&w(e,"checked",t,!1)}function ne(e,t){te(e,t);var n=W(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")?ae(e,t.type,n):t.hasOwnProperty("defaultValue")&&ae(e,t.type,W(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function re(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 ae(e,t,n){"number"===t&&X(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function oe(e,t){return e=a({children:void 0},t),(t=function(e){var t="";return r.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(t.children))&&(e.children=t),e}function ie(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=""+W(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 le(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(i(91));return a({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function se(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(i(92));if(Array.isArray(n)){if(!(1>=n.length))throw Error(i(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:W(n)}}function ce(e,t){var n=W(t.value),r=W(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 ue(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}var de={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function pe(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 fe(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?pe(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var me,he,ge=(he=function(e,t){if(e.namespaceURI!==de.svg||"innerHTML"in e)e.innerHTML=t;else{for((me=me||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=me.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 he(e,t)}))}:he);function be(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 ve={animationIterationCount:!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},ye=["Webkit","ms","Moz","O"];function we(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||ve.hasOwnProperty(e)&&ve[e]?(""+t).trim():t+"px"}function xe(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),a=we(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,a):e[n]=a}}Object.keys(ve).forEach((function(e){ye.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),ve[t]=ve[e]}))}));var ke=a({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 Se(e,t){if(t){if(ke[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(i(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(i(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(i(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(i(62))}}function Ee(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}}function _e(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var Ce=null,Te=null,Ae=null;function Le(e){if(e=na(e)){if("function"!=typeof Ce)throw Error(i(280));var t=e.stateNode;t&&(t=aa(t),Ce(e.stateNode,e.type,t))}}function Ne(e){Te?Ae?Ae.push(e):Ae=[e]:Te=e}function Re(){if(Te){var e=Te,t=Ae;if(Ae=Te=null,Le(e),t)for(e=0;e<t.length;e++)Le(t[e])}}function Pe(e,t){return e(t)}function Oe(e,t,n,r,a){return e(t,n,r,a)}function De(){}var Ie=Pe,Me=!1,Fe=!1;function Be(){null===Te&&null===Ae||(De(),Re())}function je(e,t){var n=e.stateNode;if(null===n)return null;var r=aa(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(i(231,t,typeof n));return n}var ze=!1;if(d)try{var Ue={};Object.defineProperty(Ue,"passive",{get:function(){ze=!0}}),window.addEventListener("test",Ue,Ue),window.removeEventListener("test",Ue,Ue)}catch(he){ze=!1}function $e(e,t,n,r,a,o,i,l,s){var c=Array.prototype.slice.call(arguments,3);try{t.apply(n,c)}catch(u){this.onError(u)}}var He=!1,qe=null,Ge=!1,Ze=null,Ve={onError:function(e){He=!0,qe=e}};function We(e,t,n,r,a,o,i,l,s){He=!1,qe=null,$e.apply(Ve,arguments)}function Ye(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(1026&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function Ke(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 Qe(e){if(Ye(e)!==e)throw Error(i(188))}function Xe(e){if(e=function(e){var t=e.alternate;if(!t){if(null===(t=Ye(e)))throw Error(i(188));return t!==e?null:e}for(var n=e,r=t;;){var a=n.return;if(null===a)break;var o=a.alternate;if(null===o){if(null!==(r=a.return)){n=r;continue}break}if(a.child===o.child){for(o=a.child;o;){if(o===n)return Qe(a),e;if(o===r)return Qe(a),t;o=o.sibling}throw Error(i(188))}if(n.return!==r.return)n=a,r=o;else{for(var l=!1,s=a.child;s;){if(s===n){l=!0,n=a,r=o;break}if(s===r){l=!0,r=a,n=o;break}s=s.sibling}if(!l){for(s=o.child;s;){if(s===n){l=!0,n=o,r=a;break}if(s===r){l=!0,r=o,n=a;break}s=s.sibling}if(!l)throw Error(i(189))}}if(n.alternate!==r)throw Error(i(190))}if(3!==n.tag)throw Error(i(188));return n.stateNode.current===n?e:t}(e),!e)return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}function Je(e,t){for(var n=e.alternate;null!==t;){if(t===e||t===n)return!0;t=t.return}return!1}var et,tt,nt,rt,at=!1,ot=[],it=null,lt=null,st=null,ct=new Map,ut=new Map,dt=[],pt="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 ft(e,t,n,r,a){return{blockedOn:e,domEventName:t,eventSystemFlags:16|n,nativeEvent:a,targetContainers:[r]}}function mt(e,t){switch(e){case"focusin":case"focusout":it=null;break;case"dragenter":case"dragleave":lt=null;break;case"mouseover":case"mouseout":st=null;break;case"pointerover":case"pointerout":ct.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":ut.delete(t.pointerId)}}function ht(e,t,n,r,a,o){return null===e||e.nativeEvent!==o?(e=ft(t,n,r,a,o),null!==t&&(null!==(t=na(t))&&tt(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==a&&-1===t.indexOf(a)&&t.push(a),e)}function gt(e){var t=ta(e.target);if(null!==t){var n=Ye(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=Ke(n)))return e.blockedOn=t,void rt(e.lanePriority,(function(){o.unstable_runWithPriority(e.priority,(function(){nt(n)}))}))}else if(3===t&&n.stateNode.hydrate)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function bt(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Xt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=na(n))&&tt(t),e.blockedOn=n,!1;t.shift()}return!0}function vt(e,t,n){bt(e)&&n.delete(t)}function yt(){for(at=!1;0<ot.length;){var e=ot[0];if(null!==e.blockedOn){null!==(e=na(e.blockedOn))&&et(e);break}for(var t=e.targetContainers;0<t.length;){var n=Xt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n){e.blockedOn=n;break}t.shift()}null===e.blockedOn&&ot.shift()}null!==it&&bt(it)&&(it=null),null!==lt&&bt(lt)&&(lt=null),null!==st&&bt(st)&&(st=null),ct.forEach(vt),ut.forEach(vt)}function wt(e,t){e.blockedOn===t&&(e.blockedOn=null,at||(at=!0,o.unstable_scheduleCallback(o.unstable_NormalPriority,yt)))}function xt(e){function t(t){return wt(t,e)}if(0<ot.length){wt(ot[0],e);for(var n=1;n<ot.length;n++){var r=ot[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==it&&wt(it,e),null!==lt&&wt(lt,e),null!==st&&wt(st,e),ct.forEach(t),ut.forEach(t),n=0;n<dt.length;n++)(r=dt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<dt.length&&null===(n=dt[0]).blockedOn;)gt(n),null===n.blockedOn&&dt.shift()}function kt(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var St={animationend:kt("Animation","AnimationEnd"),animationiteration:kt("Animation","AnimationIteration"),animationstart:kt("Animation","AnimationStart"),transitionend:kt("Transition","TransitionEnd")},Et={},_t={};function Ct(e){if(Et[e])return Et[e];if(!St[e])return e;var t,n=St[e];for(t in n)if(n.hasOwnProperty(t)&&t in _t)return Et[e]=n[t];return e}d&&(_t=document.createElement("div").style,"AnimationEvent"in window||(delete St.animationend.animation,delete St.animationiteration.animation,delete St.animationstart.animation),"TransitionEvent"in window||delete St.transitionend.transition);var Tt=Ct("animationend"),At=Ct("animationiteration"),Lt=Ct("animationstart"),Nt=Ct("transitionend"),Rt=new Map,Pt=new Map,Ot=["abort","abort",Tt,"animationEnd",At,"animationIteration",Lt,"animationStart","canplay","canPlay","canplaythrough","canPlayThrough","durationchange","durationChange","emptied","emptied","encrypted","encrypted","ended","ended","error","error","gotpointercapture","gotPointerCapture","load","load","loadeddata","loadedData","loadedmetadata","loadedMetadata","loadstart","loadStart","lostpointercapture","lostPointerCapture","playing","playing","progress","progress","seeking","seeking","stalled","stalled","suspend","suspend","timeupdate","timeUpdate",Nt,"transitionEnd","waiting","waiting"];function Dt(e,t){for(var n=0;n<e.length;n+=2){var r=e[n],a=e[n+1];a="on"+(a[0].toUpperCase()+a.slice(1)),Pt.set(r,t),Rt.set(r,a),c(a,[r])}}(0,o.unstable_now)();var It=8;function Mt(e){if(0!=(1&e))return It=15,1;if(0!=(2&e))return It=14,2;if(0!=(4&e))return It=13,4;var t=24&e;return 0!==t?(It=12,t):0!=(32&e)?(It=11,32):0!==(t=192&e)?(It=10,t):0!=(256&e)?(It=9,256):0!==(t=3584&e)?(It=8,t):0!=(4096&e)?(It=7,4096):0!==(t=4186112&e)?(It=6,t):0!==(t=62914560&e)?(It=5,t):67108864&e?(It=4,67108864):0!=(134217728&e)?(It=3,134217728):0!==(t=805306368&e)?(It=2,t):0!=(1073741824&e)?(It=1,1073741824):(It=8,e)}function Ft(e,t){var n=e.pendingLanes;if(0===n)return It=0;var r=0,a=0,o=e.expiredLanes,i=e.suspendedLanes,l=e.pingedLanes;if(0!==o)r=o,a=It=15;else if(0!==(o=134217727&n)){var s=o&~i;0!==s?(r=Mt(s),a=It):0!==(l&=o)&&(r=Mt(l),a=It)}else 0!==(o=n&~i)?(r=Mt(o),a=It):0!==l&&(r=Mt(l),a=It);if(0===r)return 0;if(r=n&((0>(r=31-Ht(r))?0:1<<r)<<1)-1,0!==t&&t!==r&&0==(t&i)){if(Mt(t),a<=It)return t;It=a}if(0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)a=1<<(n=31-Ht(t)),r|=e[n],t&=~a;return r}function Bt(e){return 0!==(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function jt(e,t){switch(e){case 15:return 1;case 14:return 2;case 12:return 0===(e=zt(24&~t))?jt(10,t):e;case 10:return 0===(e=zt(192&~t))?jt(8,t):e;case 8:return 0===(e=zt(3584&~t))&&(0===(e=zt(4186112&~t))&&(e=512)),e;case 2:return 0===(t=zt(805306368&~t))&&(t=268435456),t}throw Error(i(358,e))}function zt(e){return e&-e}function Ut(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function $t(e,t,n){e.pendingLanes|=t;var r=t-1;e.suspendedLanes&=r,e.pingedLanes&=r,(e=e.eventTimes)[t=31-Ht(t)]=n}var Ht=Math.clz32?Math.clz32:function(e){return 0===e?32:31-(qt(e)/Gt|0)|0},qt=Math.log,Gt=Math.LN2;var Zt=o.unstable_UserBlockingPriority,Vt=o.unstable_runWithPriority,Wt=!0;function Yt(e,t,n,r){Me||De();var a=Qt,o=Me;Me=!0;try{Oe(a,e,t,n,r)}finally{(Me=o)||Be()}}function Kt(e,t,n,r){Vt(Zt,Qt.bind(null,e,t,n,r))}function Qt(e,t,n,r){var a;if(Wt)if((a=0==(4&t))&&0<ot.length&&-1<pt.indexOf(e))e=ft(null,e,t,n,r),ot.push(e);else{var o=Xt(e,t,n,r);if(null===o)a&&mt(e,r);else{if(a){if(-1<pt.indexOf(e))return e=ft(o,e,t,n,r),void ot.push(e);if(function(e,t,n,r,a){switch(t){case"focusin":return it=ht(it,e,t,n,r,a),!0;case"dragenter":return lt=ht(lt,e,t,n,r,a),!0;case"mouseover":return st=ht(st,e,t,n,r,a),!0;case"pointerover":var o=a.pointerId;return ct.set(o,ht(ct.get(o)||null,e,t,n,r,a)),!0;case"gotpointercapture":return o=a.pointerId,ut.set(o,ht(ut.get(o)||null,e,t,n,r,a)),!0}return!1}(o,e,t,n,r))return;mt(e,r)}Dr(e,t,r,null,n)}}}function Xt(e,t,n,r){var a=_e(r);if(null!==(a=ta(a))){var o=Ye(a);if(null===o)a=null;else{var i=o.tag;if(13===i){if(null!==(a=Ke(o)))return a;a=null}else if(3===i){if(o.stateNode.hydrate)return 3===o.tag?o.stateNode.containerInfo:null;a=null}else o!==a&&(a=null)}}return Dr(e,t,r,a,n),null}var Jt=null,en=null,tn=null;function nn(){if(tn)return tn;var e,t,n=en,r=n.length,a="value"in Jt?Jt.value:Jt.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 tn=a.slice(e,1<t?1-t:void 0)}function rn(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 an(){return!0}function on(){return!1}function ln(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)?an:on,this.isPropagationStopped=on,this}return a(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=an)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=an)},persist:function(){},isPersistent:an}),t}var sn,cn,un,dn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},pn=ln(dn),fn=a({},dn,{view:0,detail:0}),mn=ln(fn),hn=a({},fn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Tn,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!==un&&(un&&"mousemove"===e.type?(sn=e.screenX-un.screenX,cn=e.screenY-un.screenY):cn=sn=0,un=e),sn)},movementY:function(e){return"movementY"in e?e.movementY:cn}}),gn=ln(hn),bn=ln(a({},hn,{dataTransfer:0})),vn=ln(a({},fn,{relatedTarget:0})),yn=ln(a({},dn,{animationName:0,elapsedTime:0,pseudoElement:0})),wn=a({},dn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),xn=ln(wn),kn=ln(a({},dn,{data:0})),Sn={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},En={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"},_n={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Cn(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=_n[e])&&!!t[e]}function Tn(){return Cn}var An=a({},fn,{key:function(e){if(e.key){var t=Sn[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=rn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?En[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Tn,charCode:function(e){return"keypress"===e.type?rn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?rn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),Ln=ln(An),Nn=ln(a({},hn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Rn=ln(a({},fn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Tn})),Pn=ln(a({},dn,{propertyName:0,elapsedTime:0,pseudoElement:0})),On=a({},hn,{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}),Dn=ln(On),In=[9,13,27,32],Mn=d&&"CompositionEvent"in window,Fn=null;d&&"documentMode"in document&&(Fn=document.documentMode);var Bn=d&&"TextEvent"in window&&!Fn,jn=d&&(!Mn||Fn&&8<Fn&&11>=Fn),zn=String.fromCharCode(32),Un=!1;function $n(e,t){switch(e){case"keyup":return-1!==In.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Hn(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var qn=!1;var Gn={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 Zn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Gn[e.type]:"textarea"===t}function Vn(e,t,n,r){Ne(r),0<(t=Mr(t,"onChange")).length&&(n=new pn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Wn=null,Yn=null;function Kn(e){Ar(e,0)}function Qn(e){if(Q(ra(e)))return e}function Xn(e,t){if("change"===e)return t}var Jn=!1;if(d){var er;if(d){var tr="oninput"in document;if(!tr){var nr=document.createElement("div");nr.setAttribute("oninput","return;"),tr="function"==typeof nr.oninput}er=tr}else er=!1;Jn=er&&(!document.documentMode||9<document.documentMode)}function rr(){Wn&&(Wn.detachEvent("onpropertychange",ar),Yn=Wn=null)}function ar(e){if("value"===e.propertyName&&Qn(Yn)){var t=[];if(Vn(t,Yn,e,_e(e)),e=Kn,Me)e(t);else{Me=!0;try{Pe(e,t)}finally{Me=!1,Be()}}}}function or(e,t,n){"focusin"===e?(rr(),Yn=n,(Wn=t).attachEvent("onpropertychange",ar)):"focusout"===e&&rr()}function ir(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Qn(Yn)}function lr(e,t){if("click"===e)return Qn(t)}function sr(e,t){if("input"===e||"change"===e)return Qn(t)}var cr="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},ur=Object.prototype.hasOwnProperty;function dr(e,t){if(cr(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++)if(!ur.call(t,n[r])||!cr(e[n[r]],t[n[r]]))return!1;return!0}function pr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function fr(e,t){var n,r=pr(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=pr(r)}}function mr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?mr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function hr(){for(var e=window,t=X();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=X((e=t.contentWindow).document)}return t}function gr(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)}var br=d&&"documentMode"in document&&11>=document.documentMode,vr=null,yr=null,wr=null,xr=!1;function kr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;xr||null==vr||vr!==X(r)||("selectionStart"in(r=vr)&&gr(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},wr&&dr(wr,r)||(wr=r,0<(r=Mr(yr,"onSelect")).length&&(t=new pn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=vr)))}Dt("cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange".split(" "),0),Dt("drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel".split(" "),1),Dt(Ot,2);for(var Sr="change selectionchange textInput compositionstart compositionend compositionupdate".split(" "),Er=0;Er<Sr.length;Er++)Pt.set(Sr[Er],0);u("onMouseEnter",["mouseout","mouseover"]),u("onMouseLeave",["mouseout","mouseover"]),u("onPointerEnter",["pointerout","pointerover"]),u("onPointerLeave",["pointerout","pointerover"]),c("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),c("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),c("onBeforeInput",["compositionend","keypress","textInput","paste"]),c("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),c("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),c("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var _r="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Cr=new Set("cancel close invalid load scroll toggle".split(" ").concat(_r));function Tr(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,a,o,l,s,c){if(We.apply(this,arguments),He){if(!He)throw Error(i(198));var u=qe;He=!1,qe=null,Ge||(Ge=!0,Ze=u)}}(r,t,void 0,e),e.currentTarget=null}function Ar(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,c=l.currentTarget;if(l=l.listener,s!==o&&a.isPropagationStopped())break e;Tr(a,l,c),o=s}else for(i=0;i<r.length;i++){if(s=(l=r[i]).instance,c=l.currentTarget,l=l.listener,s!==o&&a.isPropagationStopped())break e;Tr(a,l,c),o=s}}}if(Ge)throw e=Ze,Ge=!1,Ze=null,e}function Lr(e,t){var n=oa(t),r=e+"__bubble";n.has(r)||(Or(t,e,2,!1),n.add(r))}var Nr="_reactListening"+Math.random().toString(36).slice(2);function Rr(e){e[Nr]||(e[Nr]=!0,l.forEach((function(t){Cr.has(t)||Pr(t,!1,e,null),Pr(t,!0,e,null)})))}function Pr(e,t,n,r){var a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,o=n;if("selectionchange"===e&&9!==n.nodeType&&(o=n.ownerDocument),null!==r&&!t&&Cr.has(e)){if("scroll"!==e)return;a|=2,o=r}var i=oa(o),l=e+"__"+(t?"capture":"bubble");i.has(l)||(t&&(a|=4),Or(o,e,a,t),i.add(l))}function Or(e,t,n,r){var a=Pt.get(t);switch(void 0===a?2:a){case 0:a=Yt;break;case 1:a=Kt;break;default:a=Qt}n=a.bind(null,t,n,e),a=void 0,!ze||"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 Dr(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=ta(l)))return;if(5===(s=i.tag)||6===s){r=o=i;continue e}l=l.parentNode}}r=r.return}!function(e,t,n){if(Fe)return e(t,n);Fe=!0;try{return Ie(e,t,n)}finally{Fe=!1,Be()}}((function(){var r=o,a=_e(n),i=[];e:{var l=Rt.get(e);if(void 0!==l){var s=pn,c=e;switch(e){case"keypress":if(0===rn(n))break e;case"keydown":case"keyup":s=Ln;break;case"focusin":c="focus",s=vn;break;case"focusout":c="blur",s=vn;break;case"beforeblur":case"afterblur":s=vn;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=gn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":s=bn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":s=Rn;break;case Tt:case At:case Lt:s=yn;break;case Nt:s=Pn;break;case"scroll":s=mn;break;case"wheel":s=Dn;break;case"copy":case"cut":case"paste":s=xn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":s=Nn}var u=0!=(4&t),d=!u&&"scroll"===e,p=u?null!==l?l+"Capture":null:l;u=[];for(var f,m=r;null!==m;){var h=(f=m).stateNode;if(5===f.tag&&null!==h&&(f=h,null!==p&&(null!=(h=je(m,p))&&u.push(Ir(m,h,f)))),d)break;m=m.return}0<u.length&&(l=new s(l,c,null,n,a),i.push({event:l,listeners:u}))}}if(0==(7&t)){if(s="mouseout"===e||"pointerout"===e,(!(l="mouseover"===e||"pointerover"===e)||0!=(16&t)||!(c=n.relatedTarget||n.fromElement)||!ta(c)&&!c[Jr])&&(s||l)&&(l=a.window===a?a:(l=a.ownerDocument)?l.defaultView||l.parentWindow:window,s?(s=r,null!==(c=(c=n.relatedTarget||n.toElement)?ta(c):null)&&(c!==(d=Ye(c))||5!==c.tag&&6!==c.tag)&&(c=null)):(s=null,c=r),s!==c)){if(u=gn,h="onMouseLeave",p="onMouseEnter",m="mouse","pointerout"!==e&&"pointerover"!==e||(u=Nn,h="onPointerLeave",p="onPointerEnter",m="pointer"),d=null==s?l:ra(s),f=null==c?l:ra(c),(l=new u(h,m+"leave",s,n,a)).target=d,l.relatedTarget=f,h=null,ta(a)===r&&((u=new u(p,m+"enter",c,n,a)).target=f,u.relatedTarget=d,h=u),d=h,s&&c)e:{for(p=c,m=0,f=u=s;f;f=Fr(f))m++;for(f=0,h=p;h;h=Fr(h))f++;for(;0<m-f;)u=Fr(u),m--;for(;0<f-m;)p=Fr(p),f--;for(;m--;){if(u===p||null!==p&&u===p.alternate)break e;u=Fr(u),p=Fr(p)}u=null}else u=null;null!==s&&Br(i,l,s,u,!1),null!==c&&null!==d&&Br(i,d,c,u,!0)}if("select"===(s=(l=r?ra(r):window).nodeName&&l.nodeName.toLowerCase())||"input"===s&&"file"===l.type)var g=Xn;else if(Zn(l))if(Jn)g=sr;else{g=ir;var b=or}else(s=l.nodeName)&&"input"===s.toLowerCase()&&("checkbox"===l.type||"radio"===l.type)&&(g=lr);switch(g&&(g=g(e,r))?Vn(i,g,n,a):(b&&b(e,l,r),"focusout"===e&&(b=l._wrapperState)&&b.controlled&&"number"===l.type&&ae(l,"number",l.value)),b=r?ra(r):window,e){case"focusin":(Zn(b)||"true"===b.contentEditable)&&(vr=b,yr=r,wr=null);break;case"focusout":wr=yr=vr=null;break;case"mousedown":xr=!0;break;case"contextmenu":case"mouseup":case"dragend":xr=!1,kr(i,n,a);break;case"selectionchange":if(br)break;case"keydown":case"keyup":kr(i,n,a)}var v;if(Mn)e:{switch(e){case"compositionstart":var y="onCompositionStart";break e;case"compositionend":y="onCompositionEnd";break e;case"compositionupdate":y="onCompositionUpdate";break e}y=void 0}else qn?$n(e,n)&&(y="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(y="onCompositionStart");y&&(jn&&"ko"!==n.locale&&(qn||"onCompositionStart"!==y?"onCompositionEnd"===y&&qn&&(v=nn()):(en="value"in(Jt=a)?Jt.value:Jt.textContent,qn=!0)),0<(b=Mr(r,y)).length&&(y=new kn(y,e,null,n,a),i.push({event:y,listeners:b}),v?y.data=v:null!==(v=Hn(n))&&(y.data=v))),(v=Bn?function(e,t){switch(e){case"compositionend":return Hn(t);case"keypress":return 32!==t.which?null:(Un=!0,zn);case"textInput":return(e=t.data)===zn&&Un?null:e;default:return null}}(e,n):function(e,t){if(qn)return"compositionend"===e||!Mn&&$n(e,t)?(e=nn(),tn=en=Jt=null,qn=!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 jn&&"ko"!==t.locale?null:t.data}}(e,n))&&(0<(r=Mr(r,"onBeforeInput")).length&&(a=new kn("onBeforeInput","beforeinput",null,n,a),i.push({event:a,listeners:r}),a.data=v))}Ar(i,t)}))}function Ir(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Mr(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=je(e,n))&&r.unshift(Ir(e,o,a)),null!=(o=je(e,t))&&r.push(Ir(e,o,a))),e=e.return}return r}function Fr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Br(e,t,n,r,a){for(var o=t._reactName,i=[];null!==n&&n!==r;){var l=n,s=l.alternate,c=l.stateNode;if(null!==s&&s===r)break;5===l.tag&&null!==c&&(l=c,a?null!=(s=je(n,o))&&i.unshift(Ir(n,s,l)):a||null!=(s=je(n,o))&&i.push(Ir(n,s,l))),n=n.return}0!==i.length&&e.push({event:t,listeners:i})}function jr(){}var zr=null,Ur=null;function $r(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function Hr(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var qr="function"==typeof setTimeout?setTimeout:void 0,Gr="function"==typeof clearTimeout?clearTimeout:void 0;function Zr(e){1===e.nodeType?e.textContent="":9===e.nodeType&&(null!=(e=e.body)&&(e.textContent=""))}function Vr(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break}return e}function Wr(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 Yr=0;var Kr=Math.random().toString(36).slice(2),Qr="__reactFiber$"+Kr,Xr="__reactProps$"+Kr,Jr="__reactContainer$"+Kr,ea="__reactEvents$"+Kr;function ta(e){var t=e[Qr];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Jr]||n[Qr]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=Wr(e);null!==e;){if(n=e[Qr])return n;e=Wr(e)}return t}n=(e=n).parentNode}return null}function na(e){return!(e=e[Qr]||e[Jr])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function ra(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(i(33))}function aa(e){return e[Xr]||null}function oa(e){var t=e[ea];return void 0===t&&(t=e[ea]=new Set),t}var ia=[],la=-1;function sa(e){return{current:e}}function ca(e){0>la||(e.current=ia[la],ia[la]=null,la--)}function ua(e,t){la++,ia[la]=e.current,e.current=t}var da={},pa=sa(da),fa=sa(!1),ma=da;function ha(e,t){var n=e.type.contextTypes;if(!n)return da;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 ga(e){return null!=(e=e.childContextTypes)}function ba(){ca(fa),ca(pa)}function va(e,t,n){if(pa.current!==da)throw Error(i(168));ua(pa,t),ua(fa,n)}function ya(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var o in r=r.getChildContext())if(!(o in e))throw Error(i(108,V(t)||"Unknown",o));return a({},n,r)}function wa(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||da,ma=pa.current,ua(pa,e),ua(fa,fa.current),!0}function xa(e,t,n){var r=e.stateNode;if(!r)throw Error(i(169));n?(e=ya(e,t,ma),r.__reactInternalMemoizedMergedChildContext=e,ca(fa),ca(pa),ua(pa,e)):ca(fa),ua(fa,n)}var ka=null,Sa=null,Ea=o.unstable_runWithPriority,_a=o.unstable_scheduleCallback,Ca=o.unstable_cancelCallback,Ta=o.unstable_shouldYield,Aa=o.unstable_requestPaint,La=o.unstable_now,Na=o.unstable_getCurrentPriorityLevel,Ra=o.unstable_ImmediatePriority,Pa=o.unstable_UserBlockingPriority,Oa=o.unstable_NormalPriority,Da=o.unstable_LowPriority,Ia=o.unstable_IdlePriority,Ma={},Fa=void 0!==Aa?Aa:function(){},Ba=null,ja=null,za=!1,Ua=La(),$a=1e4>Ua?La:function(){return La()-Ua};function Ha(){switch(Na()){case Ra:return 99;case Pa:return 98;case Oa:return 97;case Da:return 96;case Ia:return 95;default:throw Error(i(332))}}function qa(e){switch(e){case 99:return Ra;case 98:return Pa;case 97:return Oa;case 96:return Da;case 95:return Ia;default:throw Error(i(332))}}function Ga(e,t){return e=qa(e),Ea(e,t)}function Za(e,t,n){return e=qa(e),_a(e,t,n)}function Va(){if(null!==ja){var e=ja;ja=null,Ca(e)}Wa()}function Wa(){if(!za&&null!==Ba){za=!0;var e=0;try{var t=Ba;Ga(99,(function(){for(;e<t.length;e++){var n=t[e];do{n=n(!0)}while(null!==n)}})),Ba=null}catch(n){throw null!==Ba&&(Ba=Ba.slice(e+1)),_a(Ra,Va),n}finally{za=!1}}}var Ya=x.ReactCurrentBatchConfig;function Ka(e,t){if(e&&e.defaultProps){for(var n in t=a({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}var Qa=sa(null),Xa=null,Ja=null,eo=null;function to(){eo=Ja=Xa=null}function no(e){var t=Qa.current;ca(Qa),e.type._context._currentValue=t}function ro(e,t){for(;null!==e;){var n=e.alternate;if((e.childLanes&t)===t){if(null===n||(n.childLanes&t)===t)break;n.childLanes|=t}else e.childLanes|=t,null!==n&&(n.childLanes|=t);e=e.return}}function ao(e,t){Xa=e,eo=Ja=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!=(e.lanes&t)&&(Mi=!0),e.firstContext=null)}function oo(e,t){if(eo!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(eo=e,t=1073741823),t={context:e,observedBits:t,next:null},null===Ja){if(null===Xa)throw Error(i(308));Ja=t,Xa.dependencies={lanes:0,firstContext:t,responders:null}}else Ja=Ja.next=t;return e._currentValue}var io=!1;function lo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}function so(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 co(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function uo(e,t){if(null!==(e=e.updateQueue)){var n=(e=e.shared).pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}}function po(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 o=e.updateQueue;io=!1;var i=o.firstBaseUpdate,l=o.lastBaseUpdate,s=o.shared.pending;if(null!==s){o.shared.pending=null;var c=s,u=c.next;c.next=null,null===l?i=u:l.next=u,l=c;var d=e.alternate;if(null!==d){var p=(d=d.updateQueue).lastBaseUpdate;p!==l&&(null===p?d.firstBaseUpdate=u:p.next=u,d.lastBaseUpdate=c)}}if(null!==i){for(p=o.baseState,l=0,d=u=c=null;;){s=i.lane;var f=i.eventTime;if((r&s)===s){null!==d&&(d=d.next={eventTime:f,lane:0,tag:i.tag,payload:i.payload,callback:i.callback,next:null});e:{var m=e,h=i;switch(s=t,f=n,h.tag){case 1:if("function"==typeof(m=h.payload)){p=m.call(f,p,s);break e}p=m;break e;case 3:m.flags=-4097&m.flags|64;case 0:if(null==(s="function"==typeof(m=h.payload)?m.call(f,p,s):m))break e;p=a({},p,s);break e;case 2:io=!0}}null!==i.callback&&(e.flags|=32,null===(s=o.effects)?o.effects=[i]:s.push(i))}else f={eventTime:f,lane:s,tag:i.tag,payload:i.payload,callback:i.callback,next:null},null===d?(u=d=f,c=p):d=d.next=f,l|=s;if(null===(i=i.next)){if(null===(s=o.shared.pending))break;i=s.next,s.next=null,o.lastBaseUpdate=s,o.shared.pending=null}}null===d&&(c=p),o.baseState=c,o.firstBaseUpdate=u,o.lastBaseUpdate=d,Ul|=l,e.lanes=l,e.memoizedState=p}}function mo(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(i(191,a));a.call(r)}}}var ho=(new r.Component).refs;function go(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:a({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var bo={isMounted:function(e){return!!(e=e._reactInternals)&&Ye(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=ps(),a=fs(e),o=co(r,a);o.payload=t,null!=n&&(o.callback=n),uo(e,o),ms(e,a,r)},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=ps(),a=fs(e),o=co(r,a);o.tag=1,o.payload=t,null!=n&&(o.callback=n),uo(e,o),ms(e,a,r)},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=ps(),r=fs(e),a=co(n,r);a.tag=2,null!=t&&(a.callback=t),uo(e,a),ms(e,r,n)}};function vo(e,t,n,r,a,o,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,o,i):!t.prototype||!t.prototype.isPureReactComponent||(!dr(n,r)||!dr(a,o))}function yo(e,t,n){var r=!1,a=da,o=t.contextType;return"object"==typeof o&&null!==o?o=oo(o):(a=ga(t)?ma:pa.current,o=(r=null!=(r=t.contextTypes))?ha(e,a):da),t=new t(n,o),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=bo,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&&bo.enqueueReplaceState(t,t.state,null)}function xo(e,t,n,r){var a=e.stateNode;a.props=n,a.state=e.memoizedState,a.refs=ho,lo(e);var o=t.contextType;"object"==typeof o&&null!==o?a.context=oo(o):(o=ga(t)?ma:pa.current,a.context=ha(e,o)),fo(e,n,a,r),a.state=e.memoizedState,"function"==typeof(o=t.getDerivedStateFromProps)&&(go(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&&bo.enqueueReplaceState(a,a.state,null),fo(e,n,a,r),a.state=e.memoizedState),"function"==typeof a.componentDidMount&&(e.flags|=4)}var ko=Array.isArray;function So(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(i(309));var r=n.stateNode}if(!r)throw Error(i(147,e));var a=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===a?t.ref:(t=function(e){var t=r.refs;t===ho&&(t=r.refs={}),null===e?delete t[a]:t[a]=e},t._stringRef=a,t)}if("string"!=typeof e)throw Error(i(284));if(!n._owner)throw Error(i(290,e))}return e}function Eo(e,t){if("textarea"!==e.type)throw Error(i(31,"[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t))}function _o(e){function t(t,n){if(e){var r=t.lastEffect;null!==r?(r.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.flags=8}}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=Zs(e,t)).index=0,e.sibling=null,e}function o(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):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=Ks(n,e.mode,r)).return=e,t):((t=a(t,n)).return=e,t)}function c(e,t,n,r){return null!==t&&t.elementType===n.type?((r=a(t,n.props)).ref=So(e,t,n),r.return=e,r):((r=Vs(n.type,n.key,n.props,null,e.mode,r)).ref=So(e,t,n),r.return=e,r)}function u(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Qs(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=Ws(n,e.mode,r,o)).return=e,t):((t=a(t,n)).return=e,t)}function p(e,t,n){if("string"==typeof t||"number"==typeof t)return(t=Ks(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case k:return(n=Vs(t.type,t.key,t.props,null,e.mode,n)).ref=So(e,null,t),n.return=e,n;case S:return(t=Qs(t,e.mode,n)).return=e,t}if(ko(t)||$(t))return(t=Ws(t,e.mode,n,null)).return=e,t;Eo(e,t)}return null}function f(e,t,n,r){var a=null!==t?t.key:null;if("string"==typeof 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?n.type===E?d(e,t,n.props.children,r,a):c(e,t,n,r):null;case S:return n.key===a?u(e,t,n,r):null}if(ko(n)||$(n))return null!==a?null:d(e,t,n,r,null);Eo(e,n)}return null}function m(e,t,n,r,a){if("string"==typeof 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 e=e.get(null===r.key?n:r.key)||null,r.type===E?d(t,e,r.props.children,a,r.key):c(t,e,r,a);case S:return u(t,e=e.get(null===r.key?n:r.key)||null,r,a)}if(ko(r)||$(r))return d(t,e=e.get(n)||null,r,a,null);Eo(t,r)}return null}function h(a,i,l,s){for(var c=null,u=null,d=i,h=i=0,g=null;null!==d&&h<l.length;h++){d.index>h?(g=d,d=null):g=d.sibling;var b=f(a,d,l[h],s);if(null===b){null===d&&(d=g);break}e&&d&&null===b.alternate&&t(a,d),i=o(b,i,h),null===u?c=b:u.sibling=b,u=b,d=g}if(h===l.length)return n(a,d),c;if(null===d){for(;h<l.length;h++)null!==(d=p(a,l[h],s))&&(i=o(d,i,h),null===u?c=d:u.sibling=d,u=d);return c}for(d=r(a,d);h<l.length;h++)null!==(g=m(d,a,h,l[h],s))&&(e&&null!==g.alternate&&d.delete(null===g.key?h:g.key),i=o(g,i,h),null===u?c=g:u.sibling=g,u=g);return e&&d.forEach((function(e){return t(a,e)})),c}function g(a,l,s,c){var u=$(s);if("function"!=typeof u)throw Error(i(150));if(null==(s=u.call(s)))throw Error(i(151));for(var d=u=null,h=l,g=l=0,b=null,v=s.next();null!==h&&!v.done;g++,v=s.next()){h.index>g?(b=h,h=null):b=h.sibling;var y=f(a,h,v.value,c);if(null===y){null===h&&(h=b);break}e&&h&&null===y.alternate&&t(a,h),l=o(y,l,g),null===d?u=y:d.sibling=y,d=y,h=b}if(v.done)return n(a,h),u;if(null===h){for(;!v.done;g++,v=s.next())null!==(v=p(a,v.value,c))&&(l=o(v,l,g),null===d?u=v:d.sibling=v,d=v);return u}for(h=r(a,h);!v.done;g++,v=s.next())null!==(v=m(h,a,g,v.value,c))&&(e&&null!==v.alternate&&h.delete(null===v.key?g:v.key),l=o(v,l,g),null===d?u=v:d.sibling=v,d=v);return e&&h.forEach((function(e){return t(a,e)})),u}return function(e,r,o,s){var c="object"==typeof o&&null!==o&&o.type===E&&null===o.key;c&&(o=o.props.children);var u="object"==typeof o&&null!==o;if(u)switch(o.$$typeof){case k:e:{for(u=o.key,c=r;null!==c;){if(c.key===u){if(7===c.tag){if(o.type===E){n(e,c.sibling),(r=a(c,o.props.children)).return=e,e=r;break e}}else if(c.elementType===o.type){n(e,c.sibling),(r=a(c,o.props)).ref=So(e,c,o),r.return=e,e=r;break e}n(e,c);break}t(e,c),c=c.sibling}o.type===E?((r=Ws(o.props.children,e.mode,s,o.key)).return=e,e=r):((s=Vs(o.type,o.key,o.props,null,e.mode,s)).ref=So(e,r,o),s.return=e,e=s)}return l(e);case S:e:{for(c=o.key;null!==r;){if(r.key===c){if(4===r.tag&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),(r=a(r,o.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=Qs(o,e.mode,s)).return=e,e=r}return l(e)}if("string"==typeof o||"number"==typeof o)return o=""+o,null!==r&&6===r.tag?(n(e,r.sibling),(r=a(r,o)).return=e,e=r):(n(e,r),(r=Ks(o,e.mode,s)).return=e,e=r),l(e);if(ko(o))return h(e,r,o,s);if($(o))return g(e,r,o,s);if(u&&Eo(e,o),void 0===o&&!c)switch(e.tag){case 1:case 22:case 0:case 11:case 15:throw Error(i(152,V(e.type)||"Component"))}return n(e,r)}}var Co=_o(!0),To=_o(!1),Ao={},Lo=sa(Ao),No=sa(Ao),Ro=sa(Ao);function Po(e){if(e===Ao)throw Error(i(174));return e}function Oo(e,t){switch(ua(Ro,t),ua(No,e),ua(Lo,Ao),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:fe(null,"");break;default:t=fe(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}ca(Lo),ua(Lo,t)}function Do(){ca(Lo),ca(No),ca(Ro)}function Io(e){Po(Ro.current);var t=Po(Lo.current),n=fe(t,e.type);t!==n&&(ua(No,e),ua(Lo,n))}function Mo(e){No.current===e&&(ca(Lo),ca(No))}var Fo=sa(0);function Bo(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!=(64&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 jo=null,zo=null,Uo=!1;function $o(e,t){var n=qs(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.flags=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function Ho(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,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);default:return!1}}function qo(e){if(Uo){var t=zo;if(t){var n=t;if(!Ho(e,t)){if(!(t=Vr(n.nextSibling))||!Ho(e,t))return e.flags=-1025&e.flags|2,Uo=!1,void(jo=e);$o(jo,n)}jo=e,zo=Vr(t.firstChild)}else e.flags=-1025&e.flags|2,Uo=!1,jo=e}}function Go(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;jo=e}function Zo(e){if(e!==jo)return!1;if(!Uo)return Go(e),Uo=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!Hr(t,e.memoizedProps))for(t=zo;t;)$o(e,t),t=Vr(t.nextSibling);if(Go(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(i(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){zo=Vr(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}zo=null}}else zo=jo?Vr(e.stateNode.nextSibling):null;return!0}function Vo(){zo=jo=null,Uo=!1}var Wo=[];function Yo(){for(var e=0;e<Wo.length;e++)Wo[e]._workInProgressVersionPrimary=null;Wo.length=0}var Ko=x.ReactCurrentDispatcher,Qo=x.ReactCurrentBatchConfig,Xo=0,Jo=null,ei=null,ti=null,ni=!1,ri=!1;function ai(){throw Error(i(321))}function oi(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!cr(e[n],t[n]))return!1;return!0}function ii(e,t,n,r,a,o){if(Xo=o,Jo=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,Ko.current=null===e||null===e.memoizedState?Pi:Oi,e=n(r,a),ri){o=0;do{if(ri=!1,!(25>o))throw Error(i(301));o+=1,ti=ei=null,t.updateQueue=null,Ko.current=Di,e=n(r,a)}while(ri)}if(Ko.current=Ri,t=null!==ei&&null!==ei.next,Xo=0,ti=ei=Jo=null,ni=!1,t)throw Error(i(300));return e}function li(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===ti?Jo.memoizedState=ti=e:ti=ti.next=e,ti}function si(){if(null===ei){var e=Jo.alternate;e=null!==e?e.memoizedState:null}else e=ei.next;var t=null===ti?Jo.memoizedState:ti.next;if(null!==t)ti=t,ei=e;else{if(null===e)throw Error(i(310));e={memoizedState:(ei=e).memoizedState,baseState:ei.baseState,baseQueue:ei.baseQueue,queue:ei.queue,next:null},null===ti?Jo.memoizedState=ti=e:ti=ti.next=e}return ti}function ci(e,t){return"function"==typeof t?t(e):t}function ui(e){var t=si(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=ei,a=r.baseQueue,o=n.pending;if(null!==o){if(null!==a){var l=a.next;a.next=o.next,o.next=l}r.baseQueue=a=o,n.pending=null}if(null!==a){a=a.next,r=r.baseState;var s=l=o=null,c=a;do{var u=c.lane;if((Xo&u)===u)null!==s&&(s=s.next={lane:0,action:c.action,eagerReducer:c.eagerReducer,eagerState:c.eagerState,next:null}),r=c.eagerReducer===e?c.eagerState:e(r,c.action);else{var d={lane:u,action:c.action,eagerReducer:c.eagerReducer,eagerState:c.eagerState,next:null};null===s?(l=s=d,o=r):s=s.next=d,Jo.lanes|=u,Ul|=u}c=c.next}while(null!==c&&c!==a);null===s?o=r:s.next=l,cr(r,t.memoizedState)||(Mi=!0),t.memoizedState=r,t.baseState=o,t.baseQueue=s,n.lastRenderedState=r}return[t.memoizedState,n.dispatch]}function di(e){var t=si(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,o=t.memoizedState;if(null!==a){n.pending=null;var l=a=a.next;do{o=e(o,l.action),l=l.next}while(l!==a);cr(o,t.memoizedState)||(Mi=!0),t.memoizedState=o,null===t.baseQueue&&(t.baseState=o),n.lastRenderedState=o}return[o,r]}function pi(e,t,n){var r=t._getVersion;r=r(t._source);var a=t._workInProgressVersionPrimary;if(null!==a?e=a===r:(e=e.mutableReadLanes,(e=(Xo&e)===e)&&(t._workInProgressVersionPrimary=r,Wo.push(t))),e)return n(t._source);throw Wo.push(t),Error(i(350))}function fi(e,t,n,r){var a=Ol;if(null===a)throw Error(i(349));var o=t._getVersion,l=o(t._source),s=Ko.current,c=s.useState((function(){return pi(a,t,n)})),u=c[1],d=c[0];c=ti;var p=e.memoizedState,f=p.refs,m=f.getSnapshot,h=p.source;p=p.subscribe;var g=Jo;return e.memoizedState={refs:f,source:t,subscribe:r},s.useEffect((function(){f.getSnapshot=n,f.setSnapshot=u;var e=o(t._source);if(!cr(l,e)){e=n(t._source),cr(d,e)||(u(e),e=fs(g),a.mutableReadLanes|=e&a.pendingLanes),e=a.mutableReadLanes,a.entangledLanes|=e;for(var r=a.entanglements,i=e;0<i;){var s=31-Ht(i),c=1<<s;r[s]|=e,i&=~c}}}),[n,t,r]),s.useEffect((function(){return r(t._source,(function(){var e=f.getSnapshot,n=f.setSnapshot;try{n(e(t._source));var r=fs(g);a.mutableReadLanes|=r&a.pendingLanes}catch(o){n((function(){throw o}))}}))}),[t,r]),cr(m,n)&&cr(h,t)&&cr(p,r)||((e={pending:null,dispatch:null,lastRenderedReducer:ci,lastRenderedState:d}).dispatch=u=Ni.bind(null,Jo,e),c.queue=e,c.baseQueue=null,d=pi(a,t,n),c.memoizedState=c.baseState=d),d}function mi(e,t,n){return fi(si(),e,t,n)}function hi(e){var t=li();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={pending:null,dispatch:null,lastRenderedReducer:ci,lastRenderedState:e}).dispatch=Ni.bind(null,Jo,e),[t.memoizedState,e]}function gi(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=Jo.updateQueue)?(t={lastEffect:null},Jo.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(e){return e={current:e},li().memoizedState=e}function vi(){return si().memoizedState}function yi(e,t,n,r){var a=li();Jo.flags|=e,a.memoizedState=gi(1|t,n,void 0,void 0===r?null:r)}function wi(e,t,n,r){var a=si();r=void 0===r?null:r;var o=void 0;if(null!==ei){var i=ei.memoizedState;if(o=i.destroy,null!==r&&oi(r,i.deps))return void gi(t,n,o,r)}Jo.flags|=e,a.memoizedState=gi(1|t,n,o,r)}function xi(e,t){return yi(516,4,e,t)}function ki(e,t){return wi(516,4,e,t)}function Si(e,t){return wi(4,2,e,t)}function Ei(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 _i(e,t,n){return n=null!=n?n.concat([e]):null,wi(4,2,Ei.bind(null,t,e),n)}function Ci(){}function Ti(e,t){var n=si();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&oi(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Ai(e,t){var n=si();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&oi(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Li(e,t){var n=Ha();Ga(98>n?98:n,(function(){e(!0)})),Ga(97<n?97:n,(function(){var n=Qo.transition;Qo.transition=1;try{e(!1),t()}finally{Qo.transition=n}}))}function Ni(e,t,n){var r=ps(),a=fs(e),o={lane:a,action:n,eagerReducer:null,eagerState:null,next:null},i=t.pending;if(null===i?o.next=o:(o.next=i.next,i.next=o),t.pending=o,i=e.alternate,e===Jo||null!==i&&i===Jo)ri=ni=!0;else{if(0===e.lanes&&(null===i||0===i.lanes)&&null!==(i=t.lastRenderedReducer))try{var l=t.lastRenderedState,s=i(l,n);if(o.eagerReducer=i,o.eagerState=s,cr(s,l))return}catch(c){}ms(e,a,r)}}var Ri={readContext:oo,useCallback:ai,useContext:ai,useEffect:ai,useImperativeHandle:ai,useLayoutEffect:ai,useMemo:ai,useReducer:ai,useRef:ai,useState:ai,useDebugValue:ai,useDeferredValue:ai,useTransition:ai,useMutableSource:ai,useOpaqueIdentifier:ai,unstable_isNewReconciler:!1},Pi={readContext:oo,useCallback:function(e,t){return li().memoizedState=[e,void 0===t?null:t],e},useContext:oo,useEffect:xi,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,yi(4,2,Ei.bind(null,t,e),n)},useLayoutEffect:function(e,t){return yi(4,2,e,t)},useMemo:function(e,t){var n=li();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=li();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e=(e=r.queue={pending:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=Ni.bind(null,Jo,e),[r.memoizedState,e]},useRef:bi,useState:hi,useDebugValue:Ci,useDeferredValue:function(e){var t=hi(e),n=t[0],r=t[1];return xi((function(){var t=Qo.transition;Qo.transition=1;try{r(e)}finally{Qo.transition=t}}),[e]),n},useTransition:function(){var e=hi(!1),t=e[0];return bi(e=Li.bind(null,e[1])),[e,t]},useMutableSource:function(e,t,n){var r=li();return r.memoizedState={refs:{getSnapshot:t,setSnapshot:null},source:e,subscribe:n},fi(r,e,t,n)},useOpaqueIdentifier:function(){if(Uo){var e=!1,t=function(e){return{$$typeof:I,toString:e,valueOf:e}}((function(){throw e||(e=!0,n("r:"+(Yr++).toString(36))),Error(i(355))})),n=hi(t)[1];return 0==(2&Jo.mode)&&(Jo.flags|=516,gi(5,(function(){n("r:"+(Yr++).toString(36))}),void 0,null)),t}return hi(t="r:"+(Yr++).toString(36)),t},unstable_isNewReconciler:!1},Oi={readContext:oo,useCallback:Ti,useContext:oo,useEffect:ki,useImperativeHandle:_i,useLayoutEffect:Si,useMemo:Ai,useReducer:ui,useRef:vi,useState:function(){return ui(ci)},useDebugValue:Ci,useDeferredValue:function(e){var t=ui(ci),n=t[0],r=t[1];return ki((function(){var t=Qo.transition;Qo.transition=1;try{r(e)}finally{Qo.transition=t}}),[e]),n},useTransition:function(){var e=ui(ci)[0];return[vi().current,e]},useMutableSource:mi,useOpaqueIdentifier:function(){return ui(ci)[0]},unstable_isNewReconciler:!1},Di={readContext:oo,useCallback:Ti,useContext:oo,useEffect:ki,useImperativeHandle:_i,useLayoutEffect:Si,useMemo:Ai,useReducer:di,useRef:vi,useState:function(){return di(ci)},useDebugValue:Ci,useDeferredValue:function(e){var t=di(ci),n=t[0],r=t[1];return ki((function(){var t=Qo.transition;Qo.transition=1;try{r(e)}finally{Qo.transition=t}}),[e]),n},useTransition:function(){var e=di(ci)[0];return[vi().current,e]},useMutableSource:mi,useOpaqueIdentifier:function(){return di(ci)[0]},unstable_isNewReconciler:!1},Ii=x.ReactCurrentOwner,Mi=!1;function Fi(e,t,n,r){t.child=null===e?To(t,null,n,r):Co(t,e.child,n,r)}function Bi(e,t,n,r,a){n=n.render;var o=t.ref;return ao(t,a),r=ii(e,t,n,r,o,a),null===e||Mi?(t.flags|=1,Fi(e,t,r,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~a,ol(e,t,a))}function ji(e,t,n,r,a,o){if(null===e){var i=n.type;return"function"!=typeof i||Gs(i)||void 0!==i.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Vs(n.type,null,r,t,t.mode,o)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=i,zi(e,t,i,r,a,o))}return i=e.child,0==(a&o)&&(a=i.memoizedProps,(n=null!==(n=n.compare)?n:dr)(a,r)&&e.ref===t.ref)?ol(e,t,o):(t.flags|=1,(e=Zs(i,r)).ref=t.ref,e.return=t,t.child=e)}function zi(e,t,n,r,a,o){if(null!==e&&dr(e.memoizedProps,r)&&e.ref===t.ref){if(Mi=!1,0==(o&a))return t.lanes=e.lanes,ol(e,t,o);0!=(16384&e.flags)&&(Mi=!0)}return Hi(e,t,n,r,o)}function Ui(e,t,n){var r=t.pendingProps,a=r.children,o=null!==e?e.memoizedState:null;if("hidden"===r.mode||"unstable-defer-without-hiding"===r.mode)if(0==(4&t.mode))t.memoizedState={baseLanes:0},ks(t,n);else{if(0==(1073741824&n))return e=null!==o?o.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e},ks(t,e),null;t.memoizedState={baseLanes:0},ks(t,null!==o?o.baseLanes:n)}else null!==o?(r=o.baseLanes|n,t.memoizedState=null):r=n,ks(t,r);return Fi(e,t,a,n),t.child}function $i(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=128)}function Hi(e,t,n,r,a){var o=ga(n)?ma:pa.current;return o=ha(t,o),ao(t,a),n=ii(e,t,n,r,o,a),null===e||Mi?(t.flags|=1,Fi(e,t,n,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~a,ol(e,t,a))}function qi(e,t,n,r,a){if(ga(n)){var o=!0;wa(t)}else o=!1;if(ao(t,a),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),yo(t,n,r),xo(t,n,r,a),r=!0;else if(null===e){var i=t.stateNode,l=t.memoizedProps;i.props=l;var s=i.context,c=n.contextType;"object"==typeof c&&null!==c?c=oo(c):c=ha(t,c=ga(n)?ma:pa.current);var u=n.getDerivedStateFromProps,d="function"==typeof u||"function"==typeof i.getSnapshotBeforeUpdate;d||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==r||s!==c)&&wo(t,i,r,c),io=!1;var p=t.memoizedState;i.state=p,fo(t,r,i,a),s=t.memoizedState,l!==r||p!==s||fa.current||io?("function"==typeof u&&(go(t,n,u,r),s=t.memoizedState),(l=io||vo(t,n,l,r,p,s,c))?(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|=4)):("function"==typeof i.componentDidMount&&(t.flags|=4),t.memoizedProps=r,t.memoizedState=s),i.props=r,i.state=s,i.context=c,r=l):("function"==typeof i.componentDidMount&&(t.flags|=4),r=!1)}else{i=t.stateNode,so(e,t),l=t.memoizedProps,c=t.type===t.elementType?l:Ka(t.type,l),i.props=c,d=t.pendingProps,p=i.context,"object"==typeof(s=n.contextType)&&null!==s?s=oo(s):s=ha(t,s=ga(n)?ma:pa.current);var f=n.getDerivedStateFromProps;(u="function"==typeof f||"function"==typeof i.getSnapshotBeforeUpdate)||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==d||p!==s)&&wo(t,i,r,s),io=!1,p=t.memoizedState,i.state=p,fo(t,r,i,a);var m=t.memoizedState;l!==d||p!==m||fa.current||io?("function"==typeof f&&(go(t,n,f,r),m=t.memoizedState),(c=io||vo(t,n,c,r,p,m,s))?(u||"function"!=typeof i.UNSAFE_componentWillUpdate&&"function"!=typeof i.componentWillUpdate||("function"==typeof i.componentWillUpdate&&i.componentWillUpdate(r,m,s),"function"==typeof i.UNSAFE_componentWillUpdate&&i.UNSAFE_componentWillUpdate(r,m,s)),"function"==typeof i.componentDidUpdate&&(t.flags|=4),"function"==typeof i.getSnapshotBeforeUpdate&&(t.flags|=256)):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=256),t.memoizedProps=r,t.memoizedState=m),i.props=r,i.state=m,i.context=s,r=c):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=256),r=!1)}return Gi(e,t,n,r,o,a)}function Gi(e,t,n,r,a,o){$i(e,t);var i=0!=(64&t.flags);if(!r&&!i)return a&&xa(t,n,!1),ol(e,t,o);r=t.stateNode,Ii.current=t;var l=i&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&i?(t.child=Co(t,e.child,null,o),t.child=Co(t,null,l,o)):Fi(e,t,l,o),t.memoizedState=r.state,a&&xa(t,n,!0),t.child}function Zi(e){var t=e.stateNode;t.pendingContext?va(0,t.pendingContext,t.pendingContext!==t.context):t.context&&va(0,t.context,!1),Oo(e,t.containerInfo)}var Vi,Wi,Yi,Ki,Qi={dehydrated:null,retryLane:0};function Xi(e,t,n){var r,a=t.pendingProps,o=Fo.current,i=!1;return(r=0!=(64&t.flags))||(r=(null===e||null!==e.memoizedState)&&0!=(2&o)),r?(i=!0,t.flags&=-65):null!==e&&null===e.memoizedState||void 0===a.fallback||!0===a.unstable_avoidThisFallback||(o|=1),ua(Fo,1&o),null===e?(void 0!==a.fallback&&qo(t),e=a.children,o=a.fallback,i?(e=Ji(t,e,o,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Qi,e):"number"==typeof a.unstable_expectedLoadTime?(e=Ji(t,e,o,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Qi,t.lanes=33554432,e):((n=Ys({mode:"visible",children:e},t.mode,n,null)).return=t,t.child=n)):(e.memoizedState,i?(a=tl(e,t,a.children,a.fallback,n),i=t.child,o=e.child.memoizedState,i.memoizedState=null===o?{baseLanes:n}:{baseLanes:o.baseLanes|n},i.childLanes=e.childLanes&~n,t.memoizedState=Qi,a):(n=el(e,t,a.children,n),t.memoizedState=null,n))}function Ji(e,t,n,r){var a=e.mode,o=e.child;return t={mode:"hidden",children:t},0==(2&a)&&null!==o?(o.childLanes=0,o.pendingProps=t):o=Ys(t,a,0,null),n=Ws(n,a,r,null),o.return=e,n.return=e,o.sibling=n,e.child=o,n}function el(e,t,n,r){var a=e.child;return e=a.sibling,n=Zs(a,{mode:"visible",children:n}),0==(2&t.mode)&&(n.lanes=r),n.return=t,n.sibling=null,null!==e&&(e.nextEffect=null,e.flags=8,t.firstEffect=t.lastEffect=e),t.child=n}function tl(e,t,n,r,a){var o=t.mode,i=e.child;e=i.sibling;var l={mode:"hidden",children:n};return 0==(2&o)&&t.child!==i?((n=t.child).childLanes=0,n.pendingProps=l,null!==(i=n.lastEffect)?(t.firstEffect=n.firstEffect,t.lastEffect=i,i.nextEffect=null):t.firstEffect=t.lastEffect=null):n=Zs(i,l),null!==e?r=Zs(e,r):(r=Ws(r,o,a,null)).flags|=2,r.return=t,n.return=t,n.sibling=r,t.child=n,r}function nl(e,t){e.lanes|=t;var n=e.alternate;null!==n&&(n.lanes|=t),ro(e.return,t)}function rl(e,t,n,r,a,o){var i=e.memoizedState;null===i?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:a,lastEffect:o}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=r,i.tail=n,i.tailMode=a,i.lastEffect=o)}function al(e,t,n){var r=t.pendingProps,a=r.revealOrder,o=r.tail;if(Fi(e,t,r.children,n),0!=(2&(r=Fo.current)))r=1&r|2,t.flags|=64;else{if(null!==e&&0!=(64&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&nl(e,n);else if(19===e.tag)nl(e,n);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(ua(Fo,r),0==(2&t.mode))t.memoizedState=null;else switch(a){case"forwards":for(n=t.child,a=null;null!==n;)null!==(e=n.alternate)&&null===Bo(e)&&(a=n),n=n.sibling;null===(n=a)?(a=t.child,t.child=null):(a=n.sibling,n.sibling=null),rl(t,!1,a,n,o,t.lastEffect);break;case"backwards":for(n=null,a=t.child,t.child=null;null!==a;){if(null!==(e=a.alternate)&&null===Bo(e)){t.child=a;break}e=a.sibling,a.sibling=n,n=a,a=e}rl(t,!0,n,null,o,t.lastEffect);break;case"together":rl(t,!1,null,null,void 0,t.lastEffect);break;default:t.memoizedState=null}return t.child}function ol(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Ul|=t.lanes,0!=(n&t.childLanes)){if(null!==e&&t.child!==e.child)throw Error(i(153));if(null!==t.child){for(n=Zs(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Zs(e,e.pendingProps)).return=t;n.sibling=null}return t.child}return null}function il(e,t){if(!Uo)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 ll(e,t,n){var r=t.pendingProps;switch(t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:case 17:return ga(t.type)&&ba(),null;case 3:return Do(),ca(fa),ca(pa),Yo(),(r=t.stateNode).pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(Zo(t)?t.flags|=4:r.hydrate||(t.flags|=256)),Wi(t),null;case 5:Mo(t);var o=Po(Ro.current);if(n=t.type,null!==e&&null!=t.stateNode)Yi(e,t,n,r,o),e.ref!==t.ref&&(t.flags|=128);else{if(!r){if(null===t.stateNode)throw Error(i(166));return null}if(e=Po(Lo.current),Zo(t)){r=t.stateNode,n=t.type;var l=t.memoizedProps;switch(r[Qr]=t,r[Xr]=l,n){case"dialog":Lr("cancel",r),Lr("close",r);break;case"iframe":case"object":case"embed":Lr("load",r);break;case"video":case"audio":for(e=0;e<_r.length;e++)Lr(_r[e],r);break;case"source":Lr("error",r);break;case"img":case"image":case"link":Lr("error",r),Lr("load",r);break;case"details":Lr("toggle",r);break;case"input":ee(r,l),Lr("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!l.multiple},Lr("invalid",r);break;case"textarea":se(r,l),Lr("invalid",r)}for(var c in Se(n,l),e=null,l)l.hasOwnProperty(c)&&(o=l[c],"children"===c?"string"==typeof o?r.textContent!==o&&(e=["children",o]):"number"==typeof o&&r.textContent!==""+o&&(e=["children",""+o]):s.hasOwnProperty(c)&&null!=o&&"onScroll"===c&&Lr("scroll",r));switch(n){case"input":K(r),re(r,l,!0);break;case"textarea":K(r),ue(r);break;case"select":case"option":break;default:"function"==typeof l.onClick&&(r.onclick=jr)}r=e,t.updateQueue=r,null!==r&&(t.flags|=4)}else{switch(c=9===o.nodeType?o:o.ownerDocument,e===de.html&&(e=pe(n)),e===de.html?"script"===n?((e=c.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=c.createElement(n,{is:r.is}):(e=c.createElement(n),"select"===n&&(c=e,r.multiple?c.multiple=!0:r.size&&(c.size=r.size))):e=c.createElementNS(e,n),e[Qr]=t,e[Xr]=r,Vi(e,t,!1,!1),t.stateNode=e,c=Ee(n,r),n){case"dialog":Lr("cancel",e),Lr("close",e),o=r;break;case"iframe":case"object":case"embed":Lr("load",e),o=r;break;case"video":case"audio":for(o=0;o<_r.length;o++)Lr(_r[o],e);o=r;break;case"source":Lr("error",e),o=r;break;case"img":case"image":case"link":Lr("error",e),Lr("load",e),o=r;break;case"details":Lr("toggle",e),o=r;break;case"input":ee(e,r),o=J(e,r),Lr("invalid",e);break;case"option":o=oe(e,r);break;case"select":e._wrapperState={wasMultiple:!!r.multiple},o=a({},r,{value:void 0}),Lr("invalid",e);break;case"textarea":se(e,r),o=le(e,r),Lr("invalid",e);break;default:o=r}Se(n,o);var u=o;for(l in u)if(u.hasOwnProperty(l)){var d=u[l];"style"===l?xe(e,d):"dangerouslySetInnerHTML"===l?null!=(d=d?d.__html:void 0)&&ge(e,d):"children"===l?"string"==typeof d?("textarea"!==n||""!==d)&&be(e,d):"number"==typeof d&&be(e,""+d):"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&"autoFocus"!==l&&(s.hasOwnProperty(l)?null!=d&&"onScroll"===l&&Lr("scroll",e):null!=d&&w(e,l,d,c))}switch(n){case"input":K(e),re(e,r,!1);break;case"textarea":K(e),ue(e);break;case"option":null!=r.value&&e.setAttribute("value",""+W(r.value));break;case"select":e.multiple=!!r.multiple,null!=(l=r.value)?ie(e,!!r.multiple,l,!1):null!=r.defaultValue&&ie(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof o.onClick&&(e.onclick=jr)}$r(n,r)&&(t.flags|=4)}null!==t.ref&&(t.flags|=128)}return null;case 6:if(e&&null!=t.stateNode)Ki(e,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(i(166));n=Po(Ro.current),Po(Lo.current),Zo(t)?(r=t.stateNode,n=t.memoizedProps,r[Qr]=t,r.nodeValue!==n&&(t.flags|=4)):((r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[Qr]=t,t.stateNode=r)}return null;case 13:return ca(Fo),r=t.memoizedState,0!=(64&t.flags)?(t.lanes=n,t):(r=null!==r,n=!1,null===e?void 0!==t.memoizedProps.fallback&&Zo(t):n=null!==e.memoizedState,r&&!n&&0!=(2&t.mode)&&(null===e&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!=(1&Fo.current)?0===Bl&&(Bl=3):(0!==Bl&&3!==Bl||(Bl=4),null===Ol||0==(134217727&Ul)&&0==(134217727&$l)||vs(Ol,Il))),(r||n)&&(t.flags|=4),null);case 4:return Do(),Wi(t),null===e&&Rr(t.stateNode.containerInfo),null;case 10:return no(t),null;case 19:if(ca(Fo),null===(r=t.memoizedState))return null;if(l=0!=(64&t.flags),null===(c=r.rendering))if(l)il(r,!1);else{if(0!==Bl||null!==e&&0!=(64&e.flags))for(e=t.child;null!==e;){if(null!==(c=Bo(e))){for(t.flags|=64,il(r,!1),null!==(l=c.updateQueue)&&(t.updateQueue=l,t.flags|=4),null===r.lastEffect&&(t.firstEffect=null),t.lastEffect=r.lastEffect,r=n,n=t.child;null!==n;)e=r,(l=n).flags&=2,l.nextEffect=null,l.firstEffect=null,l.lastEffect=null,null===(c=l.alternate)?(l.childLanes=0,l.lanes=e,l.child=null,l.memoizedProps=null,l.memoizedState=null,l.updateQueue=null,l.dependencies=null,l.stateNode=null):(l.childLanes=c.childLanes,l.lanes=c.lanes,l.child=c.child,l.memoizedProps=c.memoizedProps,l.memoizedState=c.memoizedState,l.updateQueue=c.updateQueue,l.type=c.type,e=c.dependencies,l.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return ua(Fo,1&Fo.current|2),t.child}e=e.sibling}null!==r.tail&&$a()>Zl&&(t.flags|=64,l=!0,il(r,!1),t.lanes=33554432)}else{if(!l)if(null!==(e=Bo(c))){if(t.flags|=64,l=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),il(r,!0),null===r.tail&&"hidden"===r.tailMode&&!c.alternate&&!Uo)return null!==(t=t.lastEffect=r.lastEffect)&&(t.nextEffect=null),null}else 2*$a()-r.renderingStartTime>Zl&&1073741824!==n&&(t.flags|=64,l=!0,il(r,!1),t.lanes=33554432);r.isBackwards?(c.sibling=t.child,t.child=c):(null!==(n=r.last)?n.sibling=c:t.child=c,r.last=c)}return null!==r.tail?(n=r.tail,r.rendering=n,r.tail=n.sibling,r.lastEffect=t.lastEffect,r.renderingStartTime=$a(),n.sibling=null,t=Fo.current,ua(Fo,l?1&t|2:1&t),n):null;case 23:case 24:return Ss(),null!==e&&null!==e.memoizedState!=(null!==t.memoizedState)&&"unstable-defer-without-hiding"!==r.mode&&(t.flags|=4),null}throw Error(i(156,t.tag))}function sl(e){switch(e.tag){case 1:ga(e.type)&&ba();var t=e.flags;return 4096&t?(e.flags=-4097&t|64,e):null;case 3:if(Do(),ca(fa),ca(pa),Yo(),0!=(64&(t=e.flags)))throw Error(i(285));return e.flags=-4097&t|64,e;case 5:return Mo(e),null;case 13:return ca(Fo),4096&(t=e.flags)?(e.flags=-4097&t|64,e):null;case 19:return ca(Fo),null;case 4:return Do(),null;case 10:return no(e),null;case 23:case 24:return Ss(),null;default:return null}}function cl(e,t){try{var n="",r=t;do{n+=Z(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}}function ul(e,t){try{console.error(t.value)}catch(n){setTimeout((function(){throw n}))}}Vi=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}},Wi=function(){},Yi=function(e,t,n,r){var o=e.memoizedProps;if(o!==r){e=t.stateNode,Po(Lo.current);var i,l=null;switch(n){case"input":o=J(e,o),r=J(e,r),l=[];break;case"option":o=oe(e,o),r=oe(e,r),l=[];break;case"select":o=a({},o,{value:void 0}),r=a({},r,{value:void 0}),l=[];break;case"textarea":o=le(e,o),r=le(e,r),l=[];break;default:"function"!=typeof o.onClick&&"function"==typeof r.onClick&&(e.onclick=jr)}for(d in Se(n,r),n=null,o)if(!r.hasOwnProperty(d)&&o.hasOwnProperty(d)&&null!=o[d])if("style"===d){var c=o[d];for(i in c)c.hasOwnProperty(i)&&(n||(n={}),n[i]="")}else"dangerouslySetInnerHTML"!==d&&"children"!==d&&"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&"autoFocus"!==d&&(s.hasOwnProperty(d)?l||(l=[]):(l=l||[]).push(d,null));for(d in r){var u=r[d];if(c=null!=o?o[d]:void 0,r.hasOwnProperty(d)&&u!==c&&(null!=u||null!=c))if("style"===d)if(c){for(i in c)!c.hasOwnProperty(i)||u&&u.hasOwnProperty(i)||(n||(n={}),n[i]="");for(i in u)u.hasOwnProperty(i)&&c[i]!==u[i]&&(n||(n={}),n[i]=u[i])}else n||(l||(l=[]),l.push(d,n)),n=u;else"dangerouslySetInnerHTML"===d?(u=u?u.__html:void 0,c=c?c.__html:void 0,null!=u&&c!==u&&(l=l||[]).push(d,u)):"children"===d?"string"!=typeof u&&"number"!=typeof u||(l=l||[]).push(d,""+u):"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&(s.hasOwnProperty(d)?(null!=u&&"onScroll"===d&&Lr("scroll",e),l||c===u||(l=[])):"object"==typeof u&&null!==u&&u.$$typeof===I?u.toString():(l=l||[]).push(d,u))}n&&(l=l||[]).push("style",n);var d=l;(t.updateQueue=d)&&(t.flags|=4)}},Ki=function(e,t,n,r){n!==r&&(t.flags|=4)};var dl="function"==typeof WeakMap?WeakMap:Map;function pl(e,t,n){(n=co(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Kl||(Kl=!0,Ql=r),ul(0,t)},n}function fl(e,t,n){(n=co(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var a=t.value;n.payload=function(){return ul(0,t),r(a)}}var o=e.stateNode;return null!==o&&"function"==typeof o.componentDidCatch&&(n.callback=function(){"function"!=typeof r&&(null===Xl?Xl=new Set([this]):Xl.add(this),ul(0,t));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}var ml="function"==typeof WeakSet?WeakSet:Set;function hl(e){var t=e.ref;if(null!==t)if("function"==typeof t)try{t(null)}catch(n){zs(e,n)}else t.current=null}function gl(e,t){switch(t.tag){case 0:case 11:case 15:case 22:case 5:case 6:case 4:case 17:return;case 1:if(256&t.flags&&null!==e){var n=e.memoizedProps,r=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:Ka(t.type,n),r),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:return void(256&t.flags&&Zr(t.stateNode.containerInfo))}throw Error(i(163))}function bl(e,t,n){switch(n.tag){case 0:case 11:case 15:case 22:if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{if(3==(3&e.tag)){var r=e.create;e.destroy=r()}e=e.next}while(e!==t)}if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{var a=e;r=a.next,0!=(4&(a=a.tag))&&0!=(1&a)&&(Fs(n,e),Ms(n,e)),e=r}while(e!==t)}return;case 1:return e=n.stateNode,4&n.flags&&(null===t?e.componentDidMount():(r=n.elementType===n.type?t.memoizedProps:Ka(n.type,t.memoizedProps),e.componentDidUpdate(r,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate))),void(null!==(t=n.updateQueue)&&mo(n,t,e));case 3:if(null!==(t=n.updateQueue)){if(e=null,null!==n.child)switch(n.child.tag){case 5:case 1:e=n.child.stateNode}mo(n,t,e)}return;case 5:return e=n.stateNode,void(null===t&&4&n.flags&&$r(n.type,n.memoizedProps)&&e.focus());case 6:case 4:case 12:case 19:case 17:case 20:case 21:case 23:case 24:return;case 13:return void(null===n.memoizedState&&(n=n.alternate,null!==n&&(n=n.memoizedState,null!==n&&(n=n.dehydrated,null!==n&&xt(n)))))}throw Error(i(163))}function vl(e,t){for(var n=e;;){if(5===n.tag){var r=n.stateNode;if(t)"function"==typeof(r=r.style).setProperty?r.setProperty("display","none","important"):r.display="none";else{r=n.stateNode;var a=n.memoizedProps.style;a=null!=a&&a.hasOwnProperty("display")?a.display:null,r.style.display=we("display",a)}}else if(6===n.tag)n.stateNode.nodeValue=t?"":n.memoizedProps;else if((23!==n.tag&&24!==n.tag||null===n.memoizedState||n===e)&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return;n=n.return}n.sibling.return=n.return,n=n.sibling}}function yl(e,t){if(Sa&&"function"==typeof Sa.onCommitFiberUnmount)try{Sa.onCommitFiberUnmount(ka,t)}catch(o){}switch(t.tag){case 0:case 11:case 14:case 15:case 22:if(null!==(e=t.updateQueue)&&null!==(e=e.lastEffect)){var n=e=e.next;do{var r=n,a=r.destroy;if(r=r.tag,void 0!==a)if(0!=(4&r))Fs(t,n);else{r=t;try{a()}catch(o){zs(r,o)}}n=n.next}while(n!==e)}break;case 1:if(hl(t),"function"==typeof(e=t.stateNode).componentWillUnmount)try{e.props=t.memoizedProps,e.state=t.memoizedState,e.componentWillUnmount()}catch(o){zs(t,o)}break;case 5:hl(t);break;case 4:_l(e,t)}}function wl(e){e.alternate=null,e.child=null,e.dependencies=null,e.firstEffect=null,e.lastEffect=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.return=null,e.updateQueue=null}function xl(e){return 5===e.tag||3===e.tag||4===e.tag}function kl(e){e:{for(var t=e.return;null!==t;){if(xl(t))break e;t=t.return}throw Error(i(160))}var n=t;switch(t=n.stateNode,n.tag){case 5:var r=!1;break;case 3:case 4:t=t.containerInfo,r=!0;break;default:throw Error(i(161))}16&n.flags&&(be(t,""),n.flags&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||xl(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.flags)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.flags)){n=n.stateNode;break e}}r?Sl(e,n,t):El(e,n,t)}function Sl(e,t,n){var r=e.tag,a=5===r||6===r;if(a)e=a?e.stateNode:e.stateNode.instance,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(Sl(e,t,n),e=e.sibling;null!==e;)Sl(e,t,n),e=e.sibling}function El(e,t,n){var r=e.tag,a=5===r||6===r;if(a)e=a?e.stateNode:e.stateNode.instance,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(El(e,t,n),e=e.sibling;null!==e;)El(e,t,n),e=e.sibling}function _l(e,t){for(var n,r,a=t,o=!1;;){if(!o){o=a.return;e:for(;;){if(null===o)throw Error(i(160));switch(n=o.stateNode,o.tag){case 5:r=!1;break e;case 3:case 4:n=n.containerInfo,r=!0;break e}o=o.return}o=!0}if(5===a.tag||6===a.tag){e:for(var l=e,s=a,c=s;;)if(yl(l,c),null!==c.child&&4!==c.tag)c.child.return=c,c=c.child;else{if(c===s)break e;for(;null===c.sibling;){if(null===c.return||c.return===s)break e;c=c.return}c.sibling.return=c.return,c=c.sibling}r?(l=n,s=a.stateNode,8===l.nodeType?l.parentNode.removeChild(s):l.removeChild(s)):n.removeChild(a.stateNode)}else if(4===a.tag){if(null!==a.child){n=a.stateNode.containerInfo,r=!0,a.child.return=a,a=a.child;continue}}else if(yl(e,a),null!==a.child){a.child.return=a,a=a.child;continue}if(a===t)break;for(;null===a.sibling;){if(null===a.return||a.return===t)return;4===(a=a.return).tag&&(o=!1)}a.sibling.return=a.return,a=a.sibling}}function Cl(e,t){switch(t.tag){case 0:case 11:case 14:case 15:case 22:var n=t.updateQueue;if(null!==(n=null!==n?n.lastEffect:null)){var r=n=n.next;do{3==(3&r.tag)&&(e=r.destroy,r.destroy=void 0,void 0!==e&&e()),r=r.next}while(r!==n)}return;case 1:case 12:case 17:return;case 5:if(null!=(n=t.stateNode)){r=t.memoizedProps;var a=null!==e?e.memoizedProps:r;e=t.type;var o=t.updateQueue;if(t.updateQueue=null,null!==o){for(n[Xr]=r,"input"===e&&"radio"===r.type&&null!=r.name&&te(n,r),Ee(e,a),t=Ee(e,r),a=0;a<o.length;a+=2){var l=o[a],s=o[a+1];"style"===l?xe(n,s):"dangerouslySetInnerHTML"===l?ge(n,s):"children"===l?be(n,s):w(n,l,s,t)}switch(e){case"input":ne(n,r);break;case"textarea":ce(n,r);break;case"select":e=n._wrapperState.wasMultiple,n._wrapperState.wasMultiple=!!r.multiple,null!=(o=r.value)?ie(n,!!r.multiple,o,!1):e!==!!r.multiple&&(null!=r.defaultValue?ie(n,!!r.multiple,r.defaultValue,!0):ie(n,!!r.multiple,r.multiple?[]:"",!1))}}}return;case 6:if(null===t.stateNode)throw Error(i(162));return void(t.stateNode.nodeValue=t.memoizedProps);case 3:return void((n=t.stateNode).hydrate&&(n.hydrate=!1,xt(n.containerInfo)));case 13:return null!==t.memoizedState&&(Gl=$a(),vl(t.child,!0)),void Tl(t);case 19:return void Tl(t);case 23:case 24:return void vl(t,null!==t.memoizedState)}throw Error(i(163))}function Tl(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new ml),t.forEach((function(t){var r=$s.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function Al(e,t){return null!==e&&(null===(e=e.memoizedState)||null!==e.dehydrated)&&(null!==(t=t.memoizedState)&&null===t.dehydrated)}var Ll=Math.ceil,Nl=x.ReactCurrentDispatcher,Rl=x.ReactCurrentOwner,Pl=0,Ol=null,Dl=null,Il=0,Ml=0,Fl=sa(0),Bl=0,jl=null,zl=0,Ul=0,$l=0,Hl=0,ql=null,Gl=0,Zl=1/0;function Vl(){Zl=$a()+500}var Wl,Yl=null,Kl=!1,Ql=null,Xl=null,Jl=!1,es=null,ts=90,ns=[],rs=[],as=null,os=0,is=null,ls=-1,ss=0,cs=0,us=null,ds=!1;function ps(){return 0!=(48&Pl)?$a():-1!==ls?ls:ls=$a()}function fs(e){if(0==(2&(e=e.mode)))return 1;if(0==(4&e))return 99===Ha()?1:2;if(0===ss&&(ss=zl),0!==Ya.transition){0!==cs&&(cs=null!==ql?ql.pendingLanes:0),e=ss;var t=4186112&~cs;return 0===(t&=-t)&&(0===(t=(e=4186112&~e)&-e)&&(t=8192)),t}return e=Ha(),0!=(4&Pl)&&98===e?e=jt(12,ss):e=jt(e=function(e){switch(e){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}(e),ss),e}function ms(e,t,n){if(50<os)throw os=0,is=null,Error(i(185));if(null===(e=hs(e,t)))return null;$t(e,t,n),e===Ol&&($l|=t,4===Bl&&vs(e,Il));var r=Ha();1===t?0!=(8&Pl)&&0==(48&Pl)?ys(e):(gs(e,n),0===Pl&&(Vl(),Va())):(0==(4&Pl)||98!==r&&99!==r||(null===as?as=new Set([e]):as.add(e)),gs(e,n)),ql=e}function hs(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}function gs(e,t){for(var n=e.callbackNode,r=e.suspendedLanes,a=e.pingedLanes,o=e.expirationTimes,l=e.pendingLanes;0<l;){var s=31-Ht(l),c=1<<s,u=o[s];if(-1===u){if(0==(c&r)||0!=(c&a)){u=t,Mt(c);var d=It;o[s]=10<=d?u+250:6<=d?u+5e3:-1}}else u<=t&&(e.expiredLanes|=c);l&=~c}if(r=Ft(e,e===Ol?Il:0),t=It,0===r)null!==n&&(n!==Ma&&Ca(n),e.callbackNode=null,e.callbackPriority=0);else{if(null!==n){if(e.callbackPriority===t)return;n!==Ma&&Ca(n)}15===t?(n=ys.bind(null,e),null===Ba?(Ba=[n],ja=_a(Ra,Wa)):Ba.push(n),n=Ma):14===t?n=Za(99,ys.bind(null,e)):(n=function(e){switch(e){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(i(358,e))}}(t),n=Za(n,bs.bind(null,e))),e.callbackPriority=t,e.callbackNode=n}}function bs(e){if(ls=-1,cs=ss=0,0!=(48&Pl))throw Error(i(327));var t=e.callbackNode;if(Is()&&e.callbackNode!==t)return null;var n=Ft(e,e===Ol?Il:0);if(0===n)return null;var r=n,a=Pl;Pl|=16;var o=Cs();for(Ol===e&&Il===r||(Vl(),Es(e,r));;)try{Ls();break}catch(s){_s(e,s)}if(to(),Nl.current=o,Pl=a,null!==Dl?r=0:(Ol=null,Il=0,r=Bl),0!=(zl&$l))Es(e,0);else if(0!==r){if(2===r&&(Pl|=64,e.hydrate&&(e.hydrate=!1,Zr(e.containerInfo)),0!==(n=Bt(e))&&(r=Ts(e,n))),1===r)throw t=jl,Es(e,0),vs(e,n),gs(e,$a()),t;switch(e.finishedWork=e.current.alternate,e.finishedLanes=n,r){case 0:case 1:throw Error(i(345));case 2:case 5:Ps(e);break;case 3:if(vs(e,n),(62914560&n)===n&&10<(r=Gl+500-$a())){if(0!==Ft(e,0))break;if(((a=e.suspendedLanes)&n)!==n){ps(),e.pingedLanes|=e.suspendedLanes&a;break}e.timeoutHandle=qr(Ps.bind(null,e),r);break}Ps(e);break;case 4:if(vs(e,n),(4186112&n)===n)break;for(r=e.eventTimes,a=-1;0<n;){var l=31-Ht(n);o=1<<l,(l=r[l])>a&&(a=l),n&=~o}if(n=a,10<(n=(120>(n=$a()-n)?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*Ll(n/1960))-n)){e.timeoutHandle=qr(Ps.bind(null,e),n);break}Ps(e);break;default:throw Error(i(329))}}return gs(e,$a()),e.callbackNode===t?bs.bind(null,e):null}function vs(e,t){for(t&=~Hl,t&=~$l,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-Ht(t),r=1<<n;e[n]=-1,t&=~r}}function ys(e){if(0!=(48&Pl))throw Error(i(327));if(Is(),e===Ol&&0!=(e.expiredLanes&Il)){var t=Il,n=Ts(e,t);0!=(zl&$l)&&(n=Ts(e,t=Ft(e,t)))}else n=Ts(e,t=Ft(e,0));if(0!==e.tag&&2===n&&(Pl|=64,e.hydrate&&(e.hydrate=!1,Zr(e.containerInfo)),0!==(t=Bt(e))&&(n=Ts(e,t))),1===n)throw n=jl,Es(e,0),vs(e,t),gs(e,$a()),n;return e.finishedWork=e.current.alternate,e.finishedLanes=t,Ps(e),gs(e,$a()),null}function ws(e,t){var n=Pl;Pl|=1;try{return e(t)}finally{0===(Pl=n)&&(Vl(),Va())}}function xs(e,t){var n=Pl;Pl&=-2,Pl|=8;try{return e(t)}finally{0===(Pl=n)&&(Vl(),Va())}}function ks(e,t){ua(Fl,Ml),Ml|=t,zl|=t}function Ss(){Ml=Fl.current,ca(Fl)}function Es(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,Gr(n)),null!==Dl)for(n=Dl.return;null!==n;){var r=n;switch(r.tag){case 1:null!=(r=r.type.childContextTypes)&&ba();break;case 3:Do(),ca(fa),ca(pa),Yo();break;case 5:Mo(r);break;case 4:Do();break;case 13:case 19:ca(Fo);break;case 10:no(r);break;case 23:case 24:Ss()}n=n.return}Ol=e,Dl=Zs(e.current,null),Il=Ml=zl=t,Bl=0,jl=null,Hl=$l=Ul=0}function _s(e,t){for(;;){var n=Dl;try{if(to(),Ko.current=Ri,ni){for(var r=Jo.memoizedState;null!==r;){var a=r.queue;null!==a&&(a.pending=null),r=r.next}ni=!1}if(Xo=0,ti=ei=Jo=null,ri=!1,Rl.current=null,null===n||null===n.return){Bl=1,jl=t,Dl=null;break}e:{var o=e,i=n.return,l=n,s=t;if(t=Il,l.flags|=2048,l.firstEffect=l.lastEffect=null,null!==s&&"object"==typeof s&&"function"==typeof s.then){var c=s;if(0==(2&l.mode)){var u=l.alternate;u?(l.updateQueue=u.updateQueue,l.memoizedState=u.memoizedState,l.lanes=u.lanes):(l.updateQueue=null,l.memoizedState=null)}var d=0!=(1&Fo.current),p=i;do{var f;if(f=13===p.tag){var m=p.memoizedState;if(null!==m)f=null!==m.dehydrated;else{var h=p.memoizedProps;f=void 0!==h.fallback&&(!0!==h.unstable_avoidThisFallback||!d)}}if(f){var g=p.updateQueue;if(null===g){var b=new Set;b.add(c),p.updateQueue=b}else g.add(c);if(0==(2&p.mode)){if(p.flags|=64,l.flags|=16384,l.flags&=-2981,1===l.tag)if(null===l.alternate)l.tag=17;else{var v=co(-1,1);v.tag=2,uo(l,v)}l.lanes|=1;break e}s=void 0,l=t;var y=o.pingCache;if(null===y?(y=o.pingCache=new dl,s=new Set,y.set(c,s)):void 0===(s=y.get(c))&&(s=new Set,y.set(c,s)),!s.has(l)){s.add(l);var w=Us.bind(null,o,c,l);c.then(w,w)}p.flags|=4096,p.lanes=t;break e}p=p.return}while(null!==p);s=Error((V(l.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.")}5!==Bl&&(Bl=2),s=cl(s,l),p=i;do{switch(p.tag){case 3:o=s,p.flags|=4096,t&=-t,p.lanes|=t,po(p,pl(0,o,t));break e;case 1:o=s;var x=p.type,k=p.stateNode;if(0==(64&p.flags)&&("function"==typeof x.getDerivedStateFromError||null!==k&&"function"==typeof k.componentDidCatch&&(null===Xl||!Xl.has(k)))){p.flags|=4096,t&=-t,p.lanes|=t,po(p,fl(p,o,t));break e}}p=p.return}while(null!==p)}Rs(n)}catch(S){t=S,Dl===n&&null!==n&&(Dl=n=n.return);continue}break}}function Cs(){var e=Nl.current;return Nl.current=Ri,null===e?Ri:e}function Ts(e,t){var n=Pl;Pl|=16;var r=Cs();for(Ol===e&&Il===t||Es(e,t);;)try{As();break}catch(a){_s(e,a)}if(to(),Pl=n,Nl.current=r,null!==Dl)throw Error(i(261));return Ol=null,Il=0,Bl}function As(){for(;null!==Dl;)Ns(Dl)}function Ls(){for(;null!==Dl&&!Ta();)Ns(Dl)}function Ns(e){var t=Wl(e.alternate,e,Ml);e.memoizedProps=e.pendingProps,null===t?Rs(e):Dl=t,Rl.current=null}function Rs(e){var t=e;do{var n=t.alternate;if(e=t.return,0==(2048&t.flags)){if(null!==(n=ll(n,t,Ml)))return void(Dl=n);if(24!==(n=t).tag&&23!==n.tag||null===n.memoizedState||0!=(1073741824&Ml)||0==(4&n.mode)){for(var r=0,a=n.child;null!==a;)r|=a.lanes|a.childLanes,a=a.sibling;n.childLanes=r}null!==e&&0==(2048&e.flags)&&(null===e.firstEffect&&(e.firstEffect=t.firstEffect),null!==t.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=t.firstEffect),e.lastEffect=t.lastEffect),1<t.flags&&(null!==e.lastEffect?e.lastEffect.nextEffect=t:e.firstEffect=t,e.lastEffect=t))}else{if(null!==(n=sl(t)))return n.flags&=2047,void(Dl=n);null!==e&&(e.firstEffect=e.lastEffect=null,e.flags|=2048)}if(null!==(t=t.sibling))return void(Dl=t);Dl=t=e}while(null!==t);0===Bl&&(Bl=5)}function Ps(e){var t=Ha();return Ga(99,Os.bind(null,e,t)),null}function Os(e,t){do{Is()}while(null!==es);if(0!=(48&Pl))throw Error(i(327));var n=e.finishedWork;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(i(177));e.callbackNode=null;var r=n.lanes|n.childLanes,a=r,o=e.pendingLanes&~a;e.pendingLanes=a,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=a,e.mutableReadLanes&=a,e.entangledLanes&=a,a=e.entanglements;for(var l=e.eventTimes,s=e.expirationTimes;0<o;){var c=31-Ht(o),u=1<<c;a[c]=0,l[c]=-1,s[c]=-1,o&=~u}if(null!==as&&0==(24&r)&&as.has(e)&&as.delete(e),e===Ol&&(Dl=Ol=null,Il=0),1<n.flags?null!==n.lastEffect?(n.lastEffect.nextEffect=n,r=n.firstEffect):r=n:r=n.firstEffect,null!==r){if(a=Pl,Pl|=32,Rl.current=null,zr=Wt,gr(l=hr())){if("selectionStart"in l)s={start:l.selectionStart,end:l.selectionEnd};else e:if(s=(s=l.ownerDocument)&&s.defaultView||window,(u=s.getSelection&&s.getSelection())&&0!==u.rangeCount){s=u.anchorNode,o=u.anchorOffset,c=u.focusNode,u=u.focusOffset;try{s.nodeType,c.nodeType}catch(C){s=null;break e}var d=0,p=-1,f=-1,m=0,h=0,g=l,b=null;t:for(;;){for(var v;g!==s||0!==o&&3!==g.nodeType||(p=d+o),g!==c||0!==u&&3!==g.nodeType||(f=d+u),3===g.nodeType&&(d+=g.nodeValue.length),null!==(v=g.firstChild);)b=g,g=v;for(;;){if(g===l)break t;if(b===s&&++m===o&&(p=d),b===c&&++h===u&&(f=d),null!==(v=g.nextSibling))break;b=(g=b).parentNode}g=v}s=-1===p||-1===f?null:{start:p,end:f}}else s=null;s=s||{start:0,end:0}}else s=null;Ur={focusedElem:l,selectionRange:s},Wt=!1,us=null,ds=!1,Yl=r;do{try{Ds()}catch(C){if(null===Yl)throw Error(i(330));zs(Yl,C),Yl=Yl.nextEffect}}while(null!==Yl);us=null,Yl=r;do{try{for(l=e;null!==Yl;){var y=Yl.flags;if(16&y&&be(Yl.stateNode,""),128&y){var w=Yl.alternate;if(null!==w){var x=w.ref;null!==x&&("function"==typeof x?x(null):x.current=null)}}switch(1038&y){case 2:kl(Yl),Yl.flags&=-3;break;case 6:kl(Yl),Yl.flags&=-3,Cl(Yl.alternate,Yl);break;case 1024:Yl.flags&=-1025;break;case 1028:Yl.flags&=-1025,Cl(Yl.alternate,Yl);break;case 4:Cl(Yl.alternate,Yl);break;case 8:_l(l,s=Yl);var k=s.alternate;wl(s),null!==k&&wl(k)}Yl=Yl.nextEffect}}catch(C){if(null===Yl)throw Error(i(330));zs(Yl,C),Yl=Yl.nextEffect}}while(null!==Yl);if(x=Ur,w=hr(),y=x.focusedElem,l=x.selectionRange,w!==y&&y&&y.ownerDocument&&mr(y.ownerDocument.documentElement,y)){null!==l&&gr(y)&&(w=l.start,void 0===(x=l.end)&&(x=w),"selectionStart"in y?(y.selectionStart=w,y.selectionEnd=Math.min(x,y.value.length)):(x=(w=y.ownerDocument||document)&&w.defaultView||window).getSelection&&(x=x.getSelection(),s=y.textContent.length,k=Math.min(l.start,s),l=void 0===l.end?k:Math.min(l.end,s),!x.extend&&k>l&&(s=l,l=k,k=s),s=fr(y,k),o=fr(y,l),s&&o&&(1!==x.rangeCount||x.anchorNode!==s.node||x.anchorOffset!==s.offset||x.focusNode!==o.node||x.focusOffset!==o.offset)&&((w=w.createRange()).setStart(s.node,s.offset),x.removeAllRanges(),k>l?(x.addRange(w),x.extend(o.node,o.offset)):(w.setEnd(o.node,o.offset),x.addRange(w))))),w=[];for(x=y;x=x.parentNode;)1===x.nodeType&&w.push({element:x,left:x.scrollLeft,top:x.scrollTop});for("function"==typeof y.focus&&y.focus(),y=0;y<w.length;y++)(x=w[y]).element.scrollLeft=x.left,x.element.scrollTop=x.top}Wt=!!zr,Ur=zr=null,e.current=n,Yl=r;do{try{for(y=e;null!==Yl;){var S=Yl.flags;if(36&S&&bl(y,Yl.alternate,Yl),128&S){w=void 0;var E=Yl.ref;if(null!==E){var _=Yl.stateNode;Yl.tag,w=_,"function"==typeof E?E(w):E.current=w}}Yl=Yl.nextEffect}}catch(C){if(null===Yl)throw Error(i(330));zs(Yl,C),Yl=Yl.nextEffect}}while(null!==Yl);Yl=null,Fa(),Pl=a}else e.current=n;if(Jl)Jl=!1,es=e,ts=t;else for(Yl=r;null!==Yl;)t=Yl.nextEffect,Yl.nextEffect=null,8&Yl.flags&&((S=Yl).sibling=null,S.stateNode=null),Yl=t;if(0===(r=e.pendingLanes)&&(Xl=null),1===r?e===is?os++:(os=0,is=e):os=0,n=n.stateNode,Sa&&"function"==typeof Sa.onCommitFiberRoot)try{Sa.onCommitFiberRoot(ka,n,void 0,64==(64&n.current.flags))}catch(C){}if(gs(e,$a()),Kl)throw Kl=!1,e=Ql,Ql=null,e;return 0!=(8&Pl)||Va(),null}function Ds(){for(;null!==Yl;){var e=Yl.alternate;ds||null===us||(0!=(8&Yl.flags)?Je(Yl,us)&&(ds=!0):13===Yl.tag&&Al(e,Yl)&&Je(Yl,us)&&(ds=!0));var t=Yl.flags;0!=(256&t)&&gl(e,Yl),0==(512&t)||Jl||(Jl=!0,Za(97,(function(){return Is(),null}))),Yl=Yl.nextEffect}}function Is(){if(90!==ts){var e=97<ts?97:ts;return ts=90,Ga(e,Bs)}return!1}function Ms(e,t){ns.push(t,e),Jl||(Jl=!0,Za(97,(function(){return Is(),null})))}function Fs(e,t){rs.push(t,e),Jl||(Jl=!0,Za(97,(function(){return Is(),null})))}function Bs(){if(null===es)return!1;var e=es;if(es=null,0!=(48&Pl))throw Error(i(331));var t=Pl;Pl|=32;var n=rs;rs=[];for(var r=0;r<n.length;r+=2){var a=n[r],o=n[r+1],l=a.destroy;if(a.destroy=void 0,"function"==typeof l)try{l()}catch(c){if(null===o)throw Error(i(330));zs(o,c)}}for(n=ns,ns=[],r=0;r<n.length;r+=2){a=n[r],o=n[r+1];try{var s=a.create;a.destroy=s()}catch(c){if(null===o)throw Error(i(330));zs(o,c)}}for(s=e.current.firstEffect;null!==s;)e=s.nextEffect,s.nextEffect=null,8&s.flags&&(s.sibling=null,s.stateNode=null),s=e;return Pl=t,Va(),!0}function js(e,t,n){uo(e,t=pl(0,t=cl(n,t),1)),t=ps(),null!==(e=hs(e,1))&&($t(e,1,t),gs(e,t))}function zs(e,t){if(3===e.tag)js(e,e,t);else for(var n=e.return;null!==n;){if(3===n.tag){js(n,e,t);break}if(1===n.tag){var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Xl||!Xl.has(r))){var a=fl(n,e=cl(t,e),1);if(uo(n,a),a=ps(),null!==(n=hs(n,1)))$t(n,1,a),gs(n,a);else if("function"==typeof r.componentDidCatch&&(null===Xl||!Xl.has(r)))try{r.componentDidCatch(t,e)}catch(o){}break}}n=n.return}}function Us(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=ps(),e.pingedLanes|=e.suspendedLanes&n,Ol===e&&(Il&n)===n&&(4===Bl||3===Bl&&(62914560&Il)===Il&&500>$a()-Gl?Es(e,0):Hl|=n),gs(e,t)}function $s(e,t){var n=e.stateNode;null!==n&&n.delete(t),0===(t=0)&&(0==(2&(t=e.mode))?t=1:0==(4&t)?t=99===Ha()?1:2:(0===ss&&(ss=zl),0===(t=zt(62914560&~ss))&&(t=4194304))),n=ps(),null!==(e=hs(e,t))&&($t(e,t,n),gs(e,n))}function Hs(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.flags=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childLanes=this.lanes=0,this.alternate=null}function qs(e,t,n,r){return new Hs(e,t,n,r)}function Gs(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Zs(e,t){var n=e.alternate;return null===n?((n=qs(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.nextEffect=null,n.firstEffect=null,n.lastEffect=null),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 Vs(e,t,n,r,a,o){var l=2;if(r=e,"function"==typeof e)Gs(e)&&(l=1);else if("string"==typeof e)l=5;else e:switch(e){case E:return Ws(n.children,a,o,t);case M:l=8,a|=16;break;case _:l=8,a|=1;break;case C:return(e=qs(12,n,t,8|a)).elementType=C,e.type=C,e.lanes=o,e;case N:return(e=qs(13,n,t,a)).type=N,e.elementType=N,e.lanes=o,e;case R:return(e=qs(19,n,t,a)).elementType=R,e.lanes=o,e;case F:return Ys(n,a,o,t);case B:return(e=qs(24,n,t,a)).elementType=B,e.lanes=o,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case T:l=10;break e;case A:l=9;break e;case L:l=11;break e;case P:l=14;break e;case O:l=16,r=null;break e;case D:l=22;break e}throw Error(i(130,null==e?e:typeof e,""))}return(t=qs(l,n,t,a)).elementType=e,t.type=r,t.lanes=o,t}function Ws(e,t,n,r){return(e=qs(7,e,r,t)).lanes=n,e}function Ys(e,t,n,r){return(e=qs(23,e,r,t)).elementType=F,e.lanes=n,e}function Ks(e,t,n){return(e=qs(6,e,null,t)).lanes=n,e}function Qs(e,t,n){return(t=qs(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Xs(e,t,n){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=n,this.callbackNode=null,this.callbackPriority=0,this.eventTimes=Ut(0),this.expirationTimes=Ut(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ut(0),this.mutableSourceEagerHydrationData=null}function Js(e,t,n,r){var a=t.current,o=ps(),l=fs(a);e:if(n){t:{if(Ye(n=n._reactInternals)!==n||1!==n.tag)throw Error(i(170));var s=n;do{switch(s.tag){case 3:s=s.stateNode.context;break t;case 1:if(ga(s.type)){s=s.stateNode.__reactInternalMemoizedMergedChildContext;break t}}s=s.return}while(null!==s);throw Error(i(171))}if(1===n.tag){var c=n.type;if(ga(c)){n=ya(n,c,s);break e}}n=s}else n=da;return null===t.context?t.context=n:t.pendingContext=n,(t=co(o,l)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),uo(a,t),ms(a,l,o),l}function ec(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function tc(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function nc(e,t){tc(e,t),(e=e.alternate)&&tc(e,t)}function rc(e,t,n){var r=null!=n&&null!=n.hydrationOptions&&n.hydrationOptions.mutableSources||null;if(n=new Xs(e,t,null!=n&&!0===n.hydrate),t=qs(3,null,null,2===t?7:1===t?3:0),n.current=t,t.stateNode=n,lo(t),e[Jr]=n.current,Rr(8===e.nodeType?e.parentNode:e),r)for(e=0;e<r.length;e++){var a=(t=r[e])._getVersion;a=a(t._source),null==n.mutableSourceEagerHydrationData?n.mutableSourceEagerHydrationData=[t,a]:n.mutableSourceEagerHydrationData.push(t,a)}this._internalRoot=n}function ac(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function oc(e,t,n,r,a){var o=n._reactRootContainer;if(o){var i=o._internalRoot;if("function"==typeof a){var l=a;a=function(){var e=ec(i);l.call(e)}}Js(t,i,e,a)}else{if(o=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new rc(e,0,t?{hydrate:!0}:void 0)}(n,r),i=o._internalRoot,"function"==typeof a){var s=a;a=function(){var e=ec(i);s.call(e)}}xs((function(){Js(t,i,e,a)}))}return ec(i)}function ic(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!ac(t))throw Error(i(200));return function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:S,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)}Wl=function(e,t,n){var r=t.lanes;if(null!==e)if(e.memoizedProps!==t.pendingProps||fa.current)Mi=!0;else{if(0==(n&r)){switch(Mi=!1,t.tag){case 3:Zi(t),Vo();break;case 5:Io(t);break;case 1:ga(t.type)&&wa(t);break;case 4:Oo(t,t.stateNode.containerInfo);break;case 10:r=t.memoizedProps.value;var a=t.type._context;ua(Qa,a._currentValue),a._currentValue=r;break;case 13:if(null!==t.memoizedState)return 0!=(n&t.child.childLanes)?Xi(e,t,n):(ua(Fo,1&Fo.current),null!==(t=ol(e,t,n))?t.sibling:null);ua(Fo,1&Fo.current);break;case 19:if(r=0!=(n&t.childLanes),0!=(64&e.flags)){if(r)return al(e,t,n);t.flags|=64}if(null!==(a=t.memoizedState)&&(a.rendering=null,a.tail=null,a.lastEffect=null),ua(Fo,Fo.current),r)break;return null;case 23:case 24:return t.lanes=0,Ui(e,t,n)}return ol(e,t,n)}Mi=0!=(16384&e.flags)}else Mi=!1;switch(t.lanes=0,t.tag){case 2:if(r=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,a=ha(t,pa.current),ao(t,n),a=ii(null,t,r,e,a,n),t.flags|=1,"object"==typeof a&&null!==a&&"function"==typeof a.render&&void 0===a.$$typeof){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,ga(r)){var o=!0;wa(t)}else o=!1;t.memoizedState=null!==a.state&&void 0!==a.state?a.state:null,lo(t);var l=r.getDerivedStateFromProps;"function"==typeof l&&go(t,r,l,e),a.updater=bo,t.stateNode=a,a._reactInternals=t,xo(t,r,e,n),t=Gi(null,t,r,!0,o,n)}else t.tag=0,Fi(null,t,a,n),t=t.child;return t;case 16:a=t.elementType;e:{switch(null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,a=(o=a._init)(a._payload),t.type=a,o=t.tag=function(e){if("function"==typeof e)return Gs(e)?1:0;if(null!=e){if((e=e.$$typeof)===L)return 11;if(e===P)return 14}return 2}(a),e=Ka(a,e),o){case 0:t=Hi(null,t,a,e,n);break e;case 1:t=qi(null,t,a,e,n);break e;case 11:t=Bi(null,t,a,e,n);break e;case 14:t=ji(null,t,a,Ka(a.type,e),r,n);break e}throw Error(i(306,a,""))}return t;case 0:return r=t.type,a=t.pendingProps,Hi(e,t,r,a=t.elementType===r?a:Ka(r,a),n);case 1:return r=t.type,a=t.pendingProps,qi(e,t,r,a=t.elementType===r?a:Ka(r,a),n);case 3:if(Zi(t),r=t.updateQueue,null===e||null===r)throw Error(i(282));if(r=t.pendingProps,a=null!==(a=t.memoizedState)?a.element:null,so(e,t),fo(t,r,null,n),(r=t.memoizedState.element)===a)Vo(),t=ol(e,t,n);else{if((o=(a=t.stateNode).hydrate)&&(zo=Vr(t.stateNode.containerInfo.firstChild),jo=t,o=Uo=!0),o){if(null!=(e=a.mutableSourceEagerHydrationData))for(a=0;a<e.length;a+=2)(o=e[a])._workInProgressVersionPrimary=e[a+1],Wo.push(o);for(n=To(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|1024,n=n.sibling}else Fi(e,t,r,n),Vo();t=t.child}return t;case 5:return Io(t),null===e&&qo(t),r=t.type,a=t.pendingProps,o=null!==e?e.memoizedProps:null,l=a.children,Hr(r,a)?l=null:null!==o&&Hr(r,o)&&(t.flags|=16),$i(e,t),Fi(e,t,l,n),t.child;case 6:return null===e&&qo(t),null;case 13:return Xi(e,t,n);case 4:return Oo(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=Co(t,null,r,n):Fi(e,t,r,n),t.child;case 11:return r=t.type,a=t.pendingProps,Bi(e,t,r,a=t.elementType===r?a:Ka(r,a),n);case 7:return Fi(e,t,t.pendingProps,n),t.child;case 8:case 12:return Fi(e,t,t.pendingProps.children,n),t.child;case 10:e:{r=t.type._context,a=t.pendingProps,l=t.memoizedProps,o=a.value;var s=t.type._context;if(ua(Qa,s._currentValue),s._currentValue=o,null!==l)if(s=l.value,0===(o=cr(s,o)?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(s,o):1073741823))){if(l.children===a.children&&!fa.current){t=ol(e,t,n);break e}}else for(null!==(s=t.child)&&(s.return=t);null!==s;){var c=s.dependencies;if(null!==c){l=s.child;for(var u=c.firstContext;null!==u;){if(u.context===r&&0!=(u.observedBits&o)){1===s.tag&&((u=co(-1,n&-n)).tag=2,uo(s,u)),s.lanes|=n,null!==(u=s.alternate)&&(u.lanes|=n),ro(s.return,n),c.lanes|=n;break}u=u.next}}else l=10===s.tag&&s.type===t.type?null:s.child;if(null!==l)l.return=s;else for(l=s;null!==l;){if(l===t){l=null;break}if(null!==(s=l.sibling)){s.return=l.return,l=s;break}l=l.return}s=l}Fi(e,t,a.children,n),t=t.child}return t;case 9:return a=t.type,r=(o=t.pendingProps).children,ao(t,n),r=r(a=oo(a,o.unstable_observedBits)),t.flags|=1,Fi(e,t,r,n),t.child;case 14:return o=Ka(a=t.type,t.pendingProps),ji(e,t,a,o=Ka(a.type,o),r,n);case 15:return zi(e,t,t.type,t.pendingProps,r,n);case 17:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:Ka(r,a),null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),t.tag=1,ga(r)?(e=!0,wa(t)):e=!1,ao(t,n),yo(t,r,a),xo(t,r,a,n),Gi(null,t,r,!0,e,n);case 19:return al(e,t,n);case 23:case 24:return Ui(e,t,n)}throw Error(i(156,t.tag))},rc.prototype.render=function(e){Js(e,this._internalRoot,null,null)},rc.prototype.unmount=function(){var e=this._internalRoot,t=e.containerInfo;Js(null,e,null,(function(){t[Jr]=null}))},et=function(e){13===e.tag&&(ms(e,4,ps()),nc(e,4))},tt=function(e){13===e.tag&&(ms(e,67108864,ps()),nc(e,67108864))},nt=function(e){if(13===e.tag){var t=ps(),n=fs(e);ms(e,n,t),nc(e,n)}},rt=function(e,t){return t()},Ce=function(e,t,n){switch(t){case"input":if(ne(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=aa(r);if(!a)throw Error(i(90));Q(r),ne(r,a)}}}break;case"textarea":ce(e,n);break;case"select":null!=(t=n.value)&&ie(e,!!n.multiple,t,!1)}},Pe=ws,Oe=function(e,t,n,r,a){var o=Pl;Pl|=4;try{return Ga(98,e.bind(null,t,n,r,a))}finally{0===(Pl=o)&&(Vl(),Va())}},De=function(){0==(49&Pl)&&(function(){if(null!==as){var e=as;as=null,e.forEach((function(e){e.expiredLanes|=24&e.pendingLanes,gs(e,$a())}))}Va()}(),Is())},Ie=function(e,t){var n=Pl;Pl|=2;try{return e(t)}finally{0===(Pl=n)&&(Vl(),Va())}};var lc={Events:[na,ra,aa,Ne,Re,Is,{current:!1}]},sc={findFiberByHostInstance:ta,bundleType:0,version:"17.0.2",rendererPackageName:"react-dom"},cc={bundleType:sc.bundleType,version:sc.version,rendererPackageName:sc.rendererPackageName,rendererConfig:sc.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:x.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=Xe(e))?null:e.stateNode},findFiberByHostInstance:sc.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var uc=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!uc.isDisabled&&uc.supportsFiber)try{ka=uc.inject(cc),Sa=uc}catch(he){}}t.hydrate=function(e,t,n){if(!ac(t))throw Error(i(200));return oc(null,e,t,!0,n)}},3935:(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(4448)},9590: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,c,u;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(u=e.entries();!(s=u.next()).done;)if(!i.has(s.value[0]))return!1;for(u=e.entries();!(s=u.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(u=e.entries();!(s=u.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=(c=Object.keys(e)).length)!==Object.keys(i).length)return!1;for(s=l;0!=s--;)if(!Object.prototype.hasOwnProperty.call(i,c[s]))return!1;if(t&&e instanceof Element)return!1;for(s=l;0!=s--;)if(("_owner"!==c[s]&&"__v"!==c[s]&&"__o"!==c[s]||!e.$$typeof)&&!o(e[c[s]],i[c[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}}},405:(e,t,n)=>{"use strict";n.d(t,{B6:()=>G,ql:()=>J});var r=n(7294),a=n(5697),o=n.n(a),i=n(9590),l=n.n(i),s=n(1143),c=n.n(s),u=n(6774),d=n.n(u);function p(){return p=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},p.apply(this,arguments)}function f(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,m(e,t)}function m(e,t){return m=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},m(e,t)}function h(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 g={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},b={rel:["amphtml","canonical","alternate"]},v={type:["application/ld+json"]},y={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(g).map((function(e){return g[e]})),x={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},k=Object.keys(x).reduce((function(e,t){return e[x[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,g.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 p({},e,t)}),{})},T=function(e,t){return t.filter((function(e){return void 0!==e[g.BASE]})).map((function(e){return e[g.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 c=e[n].toLowerCase();return r[n]||(r[n]={}),a[n]||(a[n]={}),!r[n][c]&&(a[n][c]=!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=p({},r[l],a[l]);r[l]=s}return e}),[]).reverse()},L=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},N=function(e){return Array.isArray(e)?e.join(""):e},R=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}},P=function(e,t){var n;return p({},e,((n={})[t]=void 0,n))},O=[g.NOSCRIPT,g.SCRIPT,g.STYLE],D=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[x[n]||n]=e[n],t}),t)},F=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=x[e]||e;"innerHTML"===n||"cssText"===n?o.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:o[n]=t[e]})),r.createElement(e,o)}))},B=function(e,t,n){switch(e){case g.TITLE:return{toComponent:function(){return n=t.titleAttributes,(a={key:e=t.title})["data-rh"]=!0,o=M(n,a),[r.createElement(g.TITLE,o,e)];var e,n,a,o},toString:function(){return function(e,t,n,r){var a=I(n),o=N(t);return a?"<"+e+' data-rh="true" '+a+">"+D(o,r)+"</"+e+">":"<"+e+' data-rh="true">'+D(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 F(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+'="'+D(r[t],n)+'"';return e?e+" "+a:a}),""),o=r.innerHTML||r.cssText||"",i=-1===O.indexOf(e);return t+"<"+e+' data-rh="true" '+a+(i?"/>":">"+o+"</"+e+">")}),"")}(e,t,n)}}}},j=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,c=e.titleAttributes,u=e.linkTags,d=e.metaTags,p=e.scriptTags,f={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var m=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,a=R(e.metaTags,y),o=R(t,b),i=R(n,v);return{priorityMethods:{toComponent:function(){return[].concat(F(g.META,a.priority),F(g.LINK,o.priority),F(g.SCRIPT,i.priority))},toString:function(){return B(g.META,a.priority,r)+" "+B(g.LINK,o.priority,r)+" "+B(g.SCRIPT,i.priority,r)}},metaTags:a.default,linkTags:o.default,scriptTags:i.default}}(e);f=m.priorityMethods,u=m.linkTags,d=m.metaTags,p=m.scriptTags}return{priority:f,base:B(g.BASE,t,r),bodyAttributes:B("bodyAttributes",n,r),htmlAttributes:B("htmlAttributes",a,r),link:B(g.LINK,u,r),meta:B(g.META,d,r),noscript:B(g.NOSCRIPT,o,r),script:B(g.SCRIPT,p,r),style:B(g.STYLE,i,r),title:B(g.TITLE,{title:s,titleAttributes:c},r)}},z=[],U=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?z:n.instances},add:function(e){(n.canUseDOM?z:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?z:n.instances).indexOf(e);(n.canUseDOM?z:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=j({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},$=r.createContext({}),H=o().shape({setHelmet:o().func,helmetInstances:o().shape({get:o().func,add:o().func,remove:o().func})}),q="undefined"!=typeof document,G=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new U(r.props.context,t.canUseDOM),r}return f(t,e),t.prototype.render=function(){return r.createElement($.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);G.canUseDOM=q,G.propTypes={context:o().shape({helmet:o().shape()}),children:o().node.isRequired},G.defaultProps={context:{}},G.displayName="HelmetProvider";var Z=function(e,t){var n,r=document.head||document.querySelector(g.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}},V=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],c=t[s]||"";n.getAttribute(s)!==c&&n.setAttribute(s,c),-1===a.indexOf(s)&&a.push(s);var u=o.indexOf(s);-1!==u&&o.splice(u,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(","))}},W=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,c=e.styleTags,u=e.title,d=e.titleAttributes;V(g.BODY,e.bodyAttributes),V(g.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=N(e)),V(g.TITLE,t)}(u,d);var p={baseTag:Z(g.BASE,n),linkTags:Z(g.LINK,a),metaTags:Z(g.META,o),noscriptTags:Z(g.NOSCRIPT,i),scriptTags:Z(g.SCRIPT,s),styleTags:Z(g.STYLE,c)},f={},m={};Object.keys(p).forEach((function(e){var t=p[e],n=t.newTags,r=t.oldTags;n.length&&(f[e]=n),r.length&&(m[e]=p[e].oldTags)})),t&&t(),l(e,f,m)},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}f(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=p({},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(g.LINK,["rel","href"],e),metaTags:A(g.META,["name","charset","http-equiv","property","itemprop"],e),noscriptTags:A(g.NOSCRIPT,["innerHTML"],e),onChangeClientState:_(e),scriptTags:A(g.SCRIPT,["src","innerHTML"],e),styleTags:A(g.STYLE,["cssText"],e),title:E(e),titleAttributes:C("titleAttributes",e),prioritizeSeoTags:L(e,"prioritizeSeoTags")});G.canUseDOM?(t=o,Y&&cancelAnimationFrame(Y),t.defer?Y=requestAnimationFrame((function(){W(t,(function(){Y=null}))})):(W(t),Y=null)):j&&(a=j(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:H.isRequired},K.displayName="HelmetDispatcher";var Q=["children"],X=["children"],J=function(e){function t(){return e.apply(this,arguments)||this}f(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!l()(P(this.props,"helmetData"),P(e,"helmetData"))},n.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case g.SCRIPT:case g.NOSCRIPT:return{innerHTML:t};case g.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 p({},r,((t={})[n.type]=[].concat(r[n.type]||[],[p({},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 g.TITLE:return p({},a,((t={})[r.type]=i,t.titleAttributes=p({},o),t));case g.BODY:return p({},a,{bodyAttributes:p({},o)});case g.HTML:return p({},a,{htmlAttributes:p({},o)});default:return p({},a,((n={})[r.type]=p({},o),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=p({},t);return Object.keys(e).forEach((function(t){var r;n=p({},n,((r={})[t]=e[t],r))})),n},n.warnOnInvalidChildren=function(e,t){return c()(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."),c()(!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=h(r,Q),l=Object.keys(i).reduce((function(e,t){return e[k[t]||t]=i[t],e}),{}),s=e.type;switch("symbol"==typeof s?s=s.toString():n.warnOnInvalidChildren(e,o),s){case g.FRAGMENT:t=n.mapChildrenToProps(o,t);break;case g.LINK:case g.META:case g.NOSCRIPT:case g.SCRIPT:case g.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=h(e,X),a=p({},n),o=n.helmetData;return t&&(a=this.mapChildrenToProps(t,a)),!o||o instanceof U||(o=new U(o.context,o.instances)),o?r.createElement(K,p({},a,{context:o.value,helmetData:void 0})):r.createElement($.Consumer,null,(function(e){return r.createElement(K,p({},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"},9921:(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,c=n?Symbol.for("react.context"):60110,u=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,p=n?Symbol.for("react.forward_ref"):60112,f=n?Symbol.for("react.suspense"):60113,m=n?Symbol.for("react.suspense_list"):60120,h=n?Symbol.for("react.memo"):60115,g=n?Symbol.for("react.lazy"):60116,b=n?Symbol.for("react.block"):60121,v=n?Symbol.for("react.fundamental"):60117,y=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function x(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case u:case d:case o:case l:case i:case f:return e;default:switch(e=e&&e.$$typeof){case c:case p:case g:case h:case s:return e;default:return t}}case a:return t}}}function k(e){return x(e)===d}t.AsyncMode=u,t.ConcurrentMode=d,t.ContextConsumer=c,t.ContextProvider=s,t.Element=r,t.ForwardRef=p,t.Fragment=o,t.Lazy=g,t.Memo=h,t.Portal=a,t.Profiler=l,t.StrictMode=i,t.Suspense=f,t.isAsyncMode=function(e){return k(e)||x(e)===u},t.isConcurrentMode=k,t.isContextConsumer=function(e){return x(e)===c},t.isContextProvider=function(e){return x(e)===s},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return x(e)===p},t.isFragment=function(e){return x(e)===o},t.isLazy=function(e){return x(e)===g},t.isMemo=function(e){return x(e)===h},t.isPortal=function(e){return x(e)===a},t.isProfiler=function(e){return x(e)===l},t.isStrictMode=function(e){return x(e)===i},t.isSuspense=function(e){return x(e)===f},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===d||e===l||e===i||e===f||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===h||e.$$typeof===s||e.$$typeof===c||e.$$typeof===p||e.$$typeof===v||e.$$typeof===y||e.$$typeof===w||e.$$typeof===b)},t.typeOf=x},9864:(e,t,n)=>{"use strict";e.exports=n(9921)},8356:(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(7294),s=n(5697),c=[],u=[];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 p(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 f(e,t){return l.createElement((n=e)&&n.__esModule?n.default:n,t);var n}function m(e,t){var d,p;if(!t.loading)throw new Error("react-loadable requires a `loading` component");var m=i({loader:null,loading:null,delay:200,timeout:null,render:f,webpack:null,modules:null},t),h=null;function g(){return h||(h=e(m.loader)),h.promise}return c.push(g),"function"==typeof m.webpack&&u.push((function(){if((0,m.webpack)().every((function(e){return void 0!==e&&void 0!==n.m[e]})))return g()})),p=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}),h=e(m.loader),r._loadModule()})),g(),r.state={error:h.error,pastDelay:!1,timedOut:!1,loading:h.loading,loaded:h.loaded},r}r(n,t),n.preload=function(){return g()};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.loadable&&Array.isArray(m.modules)&&m.modules.forEach((function(t){e.context.loadable.report(t)})),h.loading){var t=function(t){e._mounted&&e.setState(t)};"number"==typeof m.delay&&(0===m.delay?this.setState({pastDelay:!0}):this._delay=setTimeout((function(){t({pastDelay:!0})}),m.delay)),"number"==typeof m.timeout&&(this._timeout=setTimeout((function(){t({timedOut:!0})}),m.timeout));var n=function(){t({error:h.error,loaded:h.loaded,loading:h.loading}),e._clearTimeouts()};h.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(m.loading,{isLoading:this.state.loading,pastDelay:this.state.pastDelay,timedOut:this.state.timedOut,error:this.state.error,retry:this.retry}):this.state.loaded?m.render(this.state.loaded,this.props):null},n}(l.Component),o(d,"contextTypes",{loadable:s.shape({report:s.func.isRequired})}),p}function h(e){return m(d,e)}h.Map=function(e){if("function"!=typeof e.render)throw new Error("LoadableMap requires a `render(loaded, props)` function");return m(p,e)};var g=function(e){function t(){return e.apply(this,arguments)||this}r(t,e);var n=t.prototype;return n.getChildContext=function(){return{loadable:{report:this.props.report}}},n.render=function(){return l.Children.only(this.props.children)},t}(l.Component);function b(e){for(var t=[];e.length;){var n=e.pop();t.push(n())}return Promise.all(t).then((function(){if(e.length)return b(e)}))}o(g,"propTypes",{report:s.func.isRequired}),o(g,"childContextTypes",{loadable:s.shape({report:s.func.isRequired}).isRequired}),h.Capture=g,h.preloadAll=function(){return new Promise((function(e,t){b(c).then(e,t)}))},h.preloadReady=function(){return new Promise((function(e,t){b(u).then(e,e)}))},e.exports=h},8790:(e,t,n)=>{"use strict";n.d(t,{H:()=>l,f:()=>i});var r=n(6550),a=n(7462),o=n(7294);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}},3727:(e,t,n)=>{"use strict";n.d(t,{OL:()=>y,VK:()=>u,rU:()=>g});var r=n(6550),a=n(5068),o=n(7294),i=n(9318),l=n(7462),s=n(3366),c=n(8776),u=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);o.Component;var d=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},f=function(e){return e},m=o.forwardRef;void 0===m&&(m=f);var h=m((function(e,t){var n=e.innerRef,r=e.navigate,a=e.onClick,i=(0,s.Z)(e,["innerRef","navigate","onClick"]),c=i.target,u=(0,l.Z)({},i,{onClick:function(e){try{a&&a(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||c&&"_self"!==c||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),r())}});return u.ref=f!==m&&t||n,o.createElement("a",u)}));var g=m((function(e,t){var n=e.component,a=void 0===n?h:n,u=e.replace,g=e.to,b=e.innerRef,v=(0,s.Z)(e,["component","replace","to","innerRef"]);return o.createElement(r.s6.Consumer,null,(function(e){e||(0,c.Z)(!1);var n=e.history,r=p(d(g,e.location),e.location),s=r?n.createHref(r):"",h=(0,l.Z)({},v,{href:s,navigate:function(){var t=d(g,e.location),r=(0,i.Ep)(e.location)===(0,i.Ep)(p(t));(u||r?n.replace:n.push)(t)}});return f!==m?h.ref=t||b:h.innerRef=b,o.createElement(a,h)}))})),b=function(e){return e},v=o.forwardRef;void 0===v&&(v=b);var y=v((function(e,t){var n=e["aria-current"],a=void 0===n?"page":n,i=e.activeClassName,u=void 0===i?"active":i,f=e.activeStyle,m=e.className,h=e.exact,y=e.isActive,w=e.location,x=e.sensitive,k=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,c.Z)(!1);var n=w||e.location,i=p(d(E,n),n),s=i.pathname,T=s&&s.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),A=T?(0,r.LX)(n.pathname,{path:T,exact:h,sensitive:x,strict:k}):null,L=!!(y?y(A,n):A),N="function"==typeof m?m(L):m,R="function"==typeof S?S(L):S;L&&(N=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(" ")}(N,u),R=(0,l.Z)({},R,f));var P=(0,l.Z)({"aria-current":L&&a||null,className:N,style:R,to:i},C);return b!==v?P.ref=t||_:P.innerRef=_,o.createElement(g,P)}))}))},6550:(e,t,n)=>{"use strict";n.d(t,{AW:()=>E,F0:()=>y,LX:()=>S,TH:()=>O,k6:()=>P,rs:()=>N,s6:()=>v});var r=n(5068),a=n(7294),o=n(5697),i=n.n(o),l=n(9318),s=n(8776),c=n(7462),u=n(9658),d=n.n(u),p=(n(9864),n(3366)),f=(n(8679),1073741823),m="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:{};var h=a.createContext||function(e,t){var n,o,l="__create-react-context-"+function(){var e="__global_unique_id__";return m[e]=(m[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):f,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 c=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?f:t},a.componentDidMount=function(){this.context[l]&&this.context[l].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?f: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 c.contextTypes=((o={})[l]=i().object,o),{Provider:s,Consumer:c}},g=function(e){var t=h();return t.displayName=e,t},b=g("Router-History"),v=g("Router"),y=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(v.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},a.createElement(b.Provider,{children:this.props.children||null,value:this.props.history}))},t}(a.Component);a.Component;a.Component;var w={},x=1e4,k=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,c=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 k<x&&(r[e]=o,k++),o}(n,{end:o,strict:l,sensitive:c}),a=r.regexp,i=r.keys,s=a.exec(e);if(!s)return null;var u=s[0],p=s.slice(1),f=e===u;return o&&!f?null:{path:n,url:"/"===n&&""===u?"/":u,isExact:f,params:i.reduce((function(e,t,n){return e[t.name]=p[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(v.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,c.Z)({},t,{location:n,match:r}),i=e.props,l=i.children,u=i.component,d=i.render;return Array.isArray(l)&&function(e){return 0===a.Children.count(e)}(l)&&(l=null),a.createElement(v.Provider,{value:o},o.match?l?"function"==typeof l?l(o):l:u?a.createElement(u,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,c.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 L(){}a.Component;var N=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(v.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,c.Z)({},e.props,{path:i})):t.match}})),r?a.cloneElement(n,{location:o,computedMatch:r}):null}))},t}(a.Component);var R=a.useContext;function P(){return R(b)}function O(){return R(v).location}},9658:(e,t,n)=>{var r=n(5826);e.exports=f,e.exports.parse=o,e.exports.compile=function(e,t){return l(o(e,t),t)},e.exports.tokensToFunction=l,e.exports.tokensToRegExp=p;var a=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,r=[],o=0,i=0,l="",u=t&&t.delimiter||"/";null!=(n=a.exec(e));){var d=n[0],p=n[1],f=n.index;if(l+=e.slice(i,f),i=f+d.length,p)l+=p[1];else{var m=e[i],h=n[2],g=n[3],b=n[4],v=n[5],y=n[6],w=n[7];l&&(r.push(l),l="");var x=null!=h&&null!=m&&m!==h,k="+"===y||"*"===y,S="?"===y||"*"===y,E=n[2]||u,_=b||v;r.push({name:g||o++,prefix:h||"",delimiter:E,optional:S,repeat:k,partial:x,asterisk:!!w,pattern:_?c(_):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,c=0;c<e.length;c++){var u=e[c];if("string"!=typeof u){var d,p=l[u.name];if(null==p){if(u.optional){u.partial&&(o+=u.prefix);continue}throw new TypeError('Expected "'+u.name+'" to be defined')}if(r(p)){if(!u.repeat)throw new TypeError('Expected "'+u.name+'" to not repeat, but received `'+JSON.stringify(p)+"`");if(0===p.length){if(u.optional)continue;throw new TypeError('Expected "'+u.name+'" to not be empty')}for(var f=0;f<p.length;f++){if(d=s(p[f]),!n[c].test(d))throw new TypeError('Expected all "'+u.name+'" to match "'+u.pattern+'", but received `'+JSON.stringify(d)+"`");o+=(0===f?u.prefix:u.delimiter)+d}}else{if(d=u.asterisk?encodeURI(p).replace(/[?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})):s(p),!n[c].test(d))throw new TypeError('Expected "'+u.name+'" to match "'+u.pattern+'", but received "'+d+'"');o+=u.prefix+d}}else o+=u}return o}}function s(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function c(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function u(e,t){return e.keys=t,e}function d(e){return e&&e.sensitive?"":"i"}function p(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 c=e[l];if("string"==typeof c)i+=s(c);else{var p=s(c.prefix),f="(?:"+c.pattern+")";t.push(c),c.repeat&&(f+="(?:"+p+f+")*"),i+=f=c.optional?c.partial?p+"("+f+")?":"(?:"+p+"("+f+"))?":p+"("+f+")"}}var m=s(n.delimiter||"/"),h=i.slice(-m.length)===m;return a||(i=(h?i.slice(0,-m.length):i)+"(?:"+m+"(?=$))?"),i+=o?"$":a&&h?"":"(?="+m+"|$)",u(new RegExp("^"+i,d(n)),t)}function f(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 u(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],a=0;a<e.length;a++)r.push(f(e[a],t,n).source);return u(new RegExp("(?:"+r.join("|")+")",d(n)),t)}(e,t,n):function(e,t,n){return p(o(e,n),t,n)}(e,t,n)}},2408:(e,t,n)=>{"use strict";var r=n(7418),a=60103,o=60106;t.Fragment=60107,t.StrictMode=60108,t.Profiler=60114;var i=60109,l=60110,s=60112;t.Suspense=60113;var c=60115,u=60116;if("function"==typeof Symbol&&Symbol.for){var d=Symbol.for;a=d("react.element"),o=d("react.portal"),t.Fragment=d("react.fragment"),t.StrictMode=d("react.strict_mode"),t.Profiler=d("react.profiler"),i=d("react.provider"),l=d("react.context"),s=d("react.forward_ref"),t.Suspense=d("react.suspense"),c=d("react.memo"),u=d("react.lazy")}var p="function"==typeof Symbol&&Symbol.iterator;function f(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 m={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},h={};function g(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||m}function b(){}function v(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||m}g.prototype.isReactComponent={},g.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(f(85));this.updater.enqueueSetState(this,e,t,"setState")},g.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},b.prototype=g.prototype;var y=v.prototype=new b;y.constructor=v,r(y,g.prototype),y.isPureReactComponent=!0;var w={current:null},x=Object.prototype.hasOwnProperty,k={key:!0,ref:!0,__self:!0,__source:!0};function S(e,t,n){var r,o={},i=null,l=null;if(null!=t)for(r in void 0!==t.ref&&(l=t.ref),void 0!==t.key&&(i=""+t.key),t)x.call(t,r)&&!k.hasOwnProperty(r)&&(o[r]=t[r]);var s=arguments.length-2;if(1===s)o.children=n;else if(1<s){for(var c=Array(s),u=0;u<s;u++)c[u]=arguments[u+2];o.children=c}if(e&&e.defaultProps)for(r in s=e.defaultProps)void 0===o[r]&&(o[r]=s[r]);return{$$typeof:a,type:e,key:i,ref:l,props:o,_owner:w.current}}function E(e){return"object"==typeof e&&null!==e&&e.$$typeof===a}var _=/\/+/g;function C(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 T(e,t,n,r,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 a:case o:s=!0}}if(s)return i=i(s=e),e=""===r?"."+C(s,0):r,Array.isArray(i)?(n="",null!=e&&(n=e.replace(_,"$&/")+"/"),T(i,t,n,"",(function(e){return e}))):null!=i&&(E(i)&&(i=function(e,t){return{$$typeof:a,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(i,n+(!i.key||s&&s.key===i.key?"":(""+i.key).replace(_,"$&/")+"/")+e)),t.push(i)),1;if(s=0,r=""===r?".":r+":",Array.isArray(e))for(var c=0;c<e.length;c++){var u=r+C(l=e[c],c);s+=T(l,t,n,u,i)}else if(u=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=p&&e[p]||e["@@iterator"])?e:null}(e),"function"==typeof u)for(e=u.call(e),c=0;!(l=e.next()).done;)s+=T(l=l.value,t,n,u=r+C(l,c++),i);else if("object"===l)throw t=""+e,Error(f(31,"[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t));return s}function A(e,t,n){if(null==e)return e;var r=[],a=0;return T(e,r,"","",(function(e){return t.call(n,e,a++)})),r}function L(e){if(-1===e._status){var t=e._result;t=t(),e._status=0,e._result=t,t.then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)}))}if(1===e._status)return e._result;throw e._result}var N={current:null};function R(){var e=N.current;if(null===e)throw Error(f(321));return e}var P={ReactCurrentDispatcher:N,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:w,IsSomeRendererActing:{current:!1},assign:r};t.Children={map:A,forEach:function(e,t,n){A(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return A(e,(function(){t++})),t},toArray:function(e){return A(e,(function(e){return e}))||[]},only:function(e){if(!E(e))throw Error(f(143));return e}},t.Component=g,t.PureComponent=v,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=P,t.cloneElement=function(e,t,n){if(null==e)throw Error(f(267,e));var o=r({},e.props),i=e.key,l=e.ref,s=e._owner;if(null!=t){if(void 0!==t.ref&&(l=t.ref,s=w.current),void 0!==t.key&&(i=""+t.key),e.type&&e.type.defaultProps)var c=e.type.defaultProps;for(u in t)x.call(t,u)&&!k.hasOwnProperty(u)&&(o[u]=void 0===t[u]&&void 0!==c?c[u]:t[u])}var u=arguments.length-2;if(1===u)o.children=n;else if(1<u){c=Array(u);for(var d=0;d<u;d++)c[d]=arguments[d+2];o.children=c}return{$$typeof:a,type:e.type,key:i,ref:l,props:o,_owner:s}},t.createContext=function(e,t){return void 0===t&&(t=null),(e={$$typeof:l,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:i,_context:e},e.Consumer=e},t.createElement=S,t.createFactory=function(e){var t=S.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:s,render:e}},t.isValidElement=E,t.lazy=function(e){return{$$typeof:u,_payload:{_status:-1,_result:e},_init:L}},t.memo=function(e,t){return{$$typeof:c,type:e,compare:void 0===t?null:t}},t.useCallback=function(e,t){return R().useCallback(e,t)},t.useContext=function(e,t){return R().useContext(e,t)},t.useDebugValue=function(){},t.useEffect=function(e,t){return R().useEffect(e,t)},t.useImperativeHandle=function(e,t,n){return R().useImperativeHandle(e,t,n)},t.useLayoutEffect=function(e,t){return R().useLayoutEffect(e,t)},t.useMemo=function(e,t){return R().useMemo(e,t)},t.useReducer=function(e,t,n){return R().useReducer(e,t,n)},t.useRef=function(e){return R().useRef(e)},t.useState=function(e){return R().useState(e)},t.version="17.0.2"},7294:(e,t,n)=>{"use strict";e.exports=n(2408)},53:(e,t)=>{"use strict";var n,r,a,o;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}}if("undefined"==typeof window||"function"!=typeof MessageChannel){var c=null,u=null,d=function(){if(null!==c)try{var e=t.unstable_now();c(!0,e),c=null}catch(n){throw setTimeout(d,0),n}};n=function(e){null!==c?setTimeout(n,0,e):(c=e,setTimeout(d,0))},r=function(e,t){u=setTimeout(e,t)},a=function(){clearTimeout(u)},t.unstable_shouldYield=function(){return!1},o=t.unstable_forceFrameRate=function(){}}else{var p=window.setTimeout,f=window.clearTimeout;if("undefined"!=typeof console){var m=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),"function"!=typeof m&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")}var h=!1,g=null,b=-1,v=5,y=0;t.unstable_shouldYield=function(){return t.unstable_now()>=y},o=function(){},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"):v=0<e?Math.floor(1e3/e):5};var w=new MessageChannel,x=w.port2;w.port1.onmessage=function(){if(null!==g){var e=t.unstable_now();y=e+v;try{g(!0,e)?x.postMessage(null):(h=!1,g=null)}catch(n){throw x.postMessage(null),n}}else h=!1},n=function(e){g=e,h||(h=!0,x.postMessage(null))},r=function(e,n){b=p((function(){e(t.unstable_now())}),n)},a=function(){f(b),b=-1}}function k(e,t){var n=e.length;e.push(t);e:for(;;){var r=n-1>>>1,a=e[r];if(!(void 0!==a&&0<_(a,t)))break e;e[r]=t,e[n]=a,n=r}}function S(e){return void 0===(e=e[0])?null:e}function E(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,a=e.length;r<a;){var o=2*(r+1)-1,i=e[o],l=o+1,s=e[l];if(void 0!==i&&0>_(i,n))void 0!==s&&0>_(s,i)?(e[r]=s,e[l]=n,r=l):(e[r]=i,e[o]=n,r=o);else{if(!(void 0!==s&&0>_(s,n)))break e;e[r]=s,e[l]=n,r=l}}}return t}return null}function _(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var C=[],T=[],A=1,L=null,N=3,R=!1,P=!1,O=!1;function D(e){for(var t=S(T);null!==t;){if(null===t.callback)E(T);else{if(!(t.startTime<=e))break;E(T),t.sortIndex=t.expirationTime,k(C,t)}t=S(T)}}function I(e){if(O=!1,D(e),!P)if(null!==S(C))P=!0,n(M);else{var t=S(T);null!==t&&r(I,t.startTime-e)}}function M(e,n){P=!1,O&&(O=!1,a()),R=!0;var o=N;try{for(D(n),L=S(C);null!==L&&(!(L.expirationTime>n)||e&&!t.unstable_shouldYield());){var i=L.callback;if("function"==typeof i){L.callback=null,N=L.priorityLevel;var l=i(L.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?L.callback=l:L===S(C)&&E(C),D(n)}else E(C);L=S(C)}if(null!==L)var s=!0;else{var c=S(T);null!==c&&r(I,c.startTime-n),s=!1}return s}finally{L=null,N=o,R=!1}}var F=o;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(){P||R||(P=!0,n(M))},t.unstable_getCurrentPriorityLevel=function(){return N},t.unstable_getFirstCallbackNode=function(){return S(C)},t.unstable_next=function(e){switch(N){case 1:case 2:case 3:var t=3;break;default:t=N}var n=N;N=t;try{return e()}finally{N=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=F,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=N;N=e;try{return t()}finally{N=n}},t.unstable_scheduleCallback=function(e,o,i){var l=t.unstable_now();switch("object"==typeof i&&null!==i?i="number"==typeof(i=i.delay)&&0<i?l+i:l:i=l,e){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return e={id:A++,callback:o,priorityLevel:e,startTime:i,expirationTime:s=i+s,sortIndex:-1},i>l?(e.sortIndex=i,k(T,e),null===S(C)&&e===S(T)&&(O?a():O=!0,r(I,i-l))):(e.sortIndex=s,k(C,e),P||R||(P=!0,n(M))),e},t.unstable_wrapCallback=function(e){var t=N;return function(){var n=N;N=t;try{return e.apply(this,arguments)}finally{N=n}}}},3840:(e,t,n)=>{"use strict";e.exports=n(53)},6774: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 c=o[s];if(!l(c))return!1;var u=e[c],d=t[c];if(!1===(a=n?n.call(r,u,d,c):void 0)||void 0===a&&u!==d)return!1}return!0}},3250:(e,t,n)=>{"use strict";var r=n(7294);var a="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},o=r.useState,i=r.useEffect,l=r.useLayoutEffect,s=r.useDebugValue;function c(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!a(e,n)}catch(r){return!0}}var u="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var n=t(),r=o({inst:{value:n,getSnapshot:t}}),a=r[0].inst,u=r[1];return l((function(){a.value=n,a.getSnapshot=t,c(a)&&u({inst:a})}),[e,n,t]),i((function(){return c(a)&&u({inst:a}),e((function(){c(a)&&u({inst:a})}))}),[e]),s(n),n};void 0!==r.useSyncExternalStore&&r.useSyncExternalStore},1688:(e,t,n)=>{"use strict";n(3250)},6809:(e,t,n)=>{"use strict";n.d(t,{default:()=>r});const r={title:"DASH Docs",tagline:"Create blazing fast dashboards for ESP32 & ESP8266 microcontrollers",url:"https://docs.espdash.pro",baseUrl:"/",onBrokenLinks:"warn",onBrokenMarkdownLinks:"warn",favicon:"img/dash-mini-logo.ico",organizationName:"ayushsharma82",projectName:"ESP-DASH",deploymentBranch:"gh-pages",trailingSlash:!0,i18n:{defaultLocale:"en",locales:["en"],path:"i18n",localeConfigs:{}},presets:[["classic",{gtag:{trackingID:"G-H1X62VMQNV",anonymizeIP:!0},docs:{routeBasePath:"/",sidebarPath:"/home/runner/work/ESP-DASH/ESP-DASH/sidebars.js"},blog:!1,theme:{customCss:"/home/runner/work/ESP-DASH/ESP-DASH/src/css/custom.css"},sitemap:{changefreq:"weekly",priority:.5,ignorePatterns:["/tags/**"],filename:"sitemap.xml"}}]],themeConfig:{colorMode:{defaultMode:"dark",respectPrefersColorScheme:!1,disableSwitch:!1},navbar:{title:"",logo:{src:"img/dash-splash.png",alt:"ESP-DASH",width:84},items:[{type:"docsVersionDropdown",position:"right",dropdownActiveClassDisabled:!0,dropdownItemsBefore:[],dropdownItemsAfter:[]},{href:"https://github.com/ayushsharma82/ESP-DASH/",position:"right",className:"header-github-link","aria-label":"GitHub repository"}],hideOnScroll:!1},footer:{style:"light",links:[{title:"Docs",items:[{label:"Get Started",to:"/docs/get-started"},{label:"Concept of DASH",to:"/docs/concept"},{label:"Cards",to:"/docs/cards"},{label:"Charts",to:"/docs/charts"}]},{title:"Community",items:[{label:"Github",href:"https://github.com/ayushsharma82/ESP-DASH/"},{label:"Twitter",href:"https://twitter.com/asrocks5"},{label:"Buy me a Coffee (BMC)",href:"https://www.buymeacoffee.com/6QGVpSj"}]},{title:"Support",items:[{label:"Create an Issue (Repo)",href:"https://github.com/ayushsharma82/ESP-DASH/issues"},{label:"Contact me",href:"https://www.espdash.pro/support"}]}],copyright:"Copyright \xa9 2023 SOFTT. All rights reserved."},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:[],magicComments:[{className:"theme-code-block-highlighted-line",line:"highlight-next-line",block:{start:"highlight-start",end:"highlight-end"}}]},docs:{versionPersistence:"localStorage",sidebar:{hideable:!1,autoCollapseCategories:!1}},metadata:[],tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3}},baseUrlIssueBanner:!0,onDuplicateRoutes:"warn",staticDirectories:["static"],customFields:{},plugins:[],themes:[],scripts:[],headTags:[],stylesheets:[],clientModules:[],titleDelimiter:"|",noIndex:!1,markdown:{mermaid:!1}}},7462:(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})},5068:(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})},3366:(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})},8776:(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('{"/next/-172":{"__comp":"1be78505","__context":{"plugin":"1d798de6"},"versionMetadata":"935f2afb"},"/next/-f7b":{"__comp":"17896441","content":"0e384e19"},"/next/cards/air/-38c":{"__comp":"17896441","content":"5fde1817"},"/next/cards/button/-2e0":{"__comp":"17896441","content":"1eaa7d1e"},"/next/cards/dropdown/-ca2":{"__comp":"17896441","content":"972722f4"},"/next/cards/energy/-025":{"__comp":"17896441","content":"1d06bd5e"},"/next/cards/generic/-e08":{"__comp":"17896441","content":"d4ae7331"},"/next/cards/humidity/-aa3":{"__comp":"17896441","content":"f1c3c228"},"/next/cards/image/-537":{"__comp":"17896441","content":"afe7c26a"},"/next/cards/joystick/-4f7":{"__comp":"17896441","content":"56927624"},"/next/cards/progress/-8c1":{"__comp":"17896441","content":"f736db6d"},"/next/cards/push-button/-136":{"__comp":"17896441","content":"d1f5632b"},"/next/cards/slider/-ed2":{"__comp":"17896441","content":"49d6c00f"},"/next/cards/status/-62e":{"__comp":"17896441","content":"0487f087"},"/next/cards/temperature/-d33":{"__comp":"17896441","content":"78c63844"},"/next/cards/text-input/-8de":{"__comp":"17896441","content":"44a65385"},"/next/cards/week-selector/-c0e":{"__comp":"17896441","content":"c61243a5"},"/next/charts/area/-379":{"__comp":"17896441","content":"402bfe77"},"/next/charts/bar/-1c8":{"__comp":"17896441","content":"166ccb0c"},"/next/charts/line/-674":{"__comp":"17896441","content":"ec57d471"},"/next/charts/pie/-886":{"__comp":"17896441","content":"5b27bca1"},"/next/concept/-ec6":{"__comp":"17896441","content":"9495aadd"},"/next/custom-statistics/-b8f":{"__comp":"17896441","content":"beec482e"},"/next/features/authentication/-ad6":{"__comp":"17896441","content":"cc0a2bf3"},"/next/features/brotli-compression/-6e3":{"__comp":"17896441","content":"94c292bb"},"/next/features/chartanimations/-14a":{"__comp":"17896441","content":"bc9808f4"},"/next/features/custom-logo/-3c7":{"__comp":"17896441","content":"51ce7319"},"/next/features/custom-uri/-257":{"__comp":"17896441","content":"0b5c9aa2"},"/next/features/disable-stats/-9ae":{"__comp":"17896441","content":"652d9580"},"/next/features/indexing/-8b3":{"__comp":"17896441","content":"50198c52"},"/next/features/sizing/-35f":{"__comp":"17896441","content":"849d26d9"},"/next/features/title/-886":{"__comp":"17896441","content":"2a51f6ab"},"/next/getting-started/-7ef":{"__comp":"17896441","content":"d589d3a7"},"/next/installation/-4b4":{"__comp":"17896441","content":"3b8c55ea"},"/next/migrate/-a21":{"__comp":"17896441","content":"2bf59882"},"/next/more-examples/-56a":{"__comp":"17896441","content":"e5af0a5c"},"/next/tabs/-b91":{"__comp":"17896441","content":"e8eea433"},"/v3.x.x/-aa1":{"__comp":"1be78505","__context":{"plugin":"1d798de6"},"versionMetadata":"6944cb31"},"/v3.x.x/-d29":{"__comp":"17896441","content":"f43a06cf"},"/v3.x.x/cards/air/-bdb":{"__comp":"17896441","content":"af2b8099"},"/v3.x.x/cards/button/-26e":{"__comp":"17896441","content":"c5beed23"},"/v3.x.x/cards/energy/-0c5":{"__comp":"17896441","content":"ebe4a411"},"/v3.x.x/cards/generic/-ed4":{"__comp":"17896441","content":"6d50d705"},"/v3.x.x/cards/humidity/-524":{"__comp":"17896441","content":"0f34283b"},"/v3.x.x/cards/joystick/-e05":{"__comp":"17896441","content":"55c57bd6"},"/v3.x.x/cards/progress/-bb3":{"__comp":"17896441","content":"5942c4f9"},"/v3.x.x/cards/slider/-489":{"__comp":"17896441","content":"52044914"},"/v3.x.x/cards/status/-e7d":{"__comp":"17896441","content":"d4f5e55a"},"/v3.x.x/cards/temperature/-56c":{"__comp":"17896441","content":"641f1acd"},"/v3.x.x/cards/text-input/-2bb":{"__comp":"17896441","content":"f4d79f1d"},"/v3.x.x/category/cards/-be2":{"__comp":"14eb3368","categoryGeneratedIndex":"85d52a4f"},"/v3.x.x/category/charts/-433":{"__comp":"14eb3368","categoryGeneratedIndex":"01c2b708"},"/v3.x.x/charts/area/-196":{"__comp":"17896441","content":"5acd1b26"},"/v3.x.x/charts/bar/-7d2":{"__comp":"17896441","content":"37c80295"},"/v3.x.x/charts/line/-65f":{"__comp":"17896441","content":"9a2f436b"},"/v3.x.x/charts/pie/-921":{"__comp":"17896441","content":"87b1afb5"},"/v3.x.x/concept/-a3e":{"__comp":"17896441","content":"a39fba33"},"/v3.x.x/getting-started/-153":{"__comp":"17896441","content":"5c2cce4e"},"/v3.x.x/indexing/-f71":{"__comp":"17896441","content":"91e7212c"},"/v3.x.x/installation/-1eb":{"__comp":"17896441","content":"6bf84c41"},"/v3.x.x/more-examples/-c1e":{"__comp":"17896441","content":"f8edec0b"},"/-677":{"__comp":"1be78505","__context":{"plugin":"1d798de6"},"versionMetadata":"4c4e1a30"},"/-157":{"__comp":"17896441","content":"82dc478c"},"/cards/air/-3ca":{"__comp":"17896441","content":"34e9d761"},"/cards/button/-65b":{"__comp":"17896441","content":"c4432a16"},"/cards/dropdown/-2b8":{"__comp":"17896441","content":"4c3f1b83"},"/cards/energy/-321":{"__comp":"17896441","content":"6fb081b8"},"/cards/generic/-dd3":{"__comp":"17896441","content":"a608976b"},"/cards/humidity/-f13":{"__comp":"17896441","content":"900bf023"},"/cards/image/-c49":{"__comp":"17896441","content":"bd9ddaf7"},"/cards/joystick/-0c3":{"__comp":"17896441","content":"3cd533c2"},"/cards/progress/-55f":{"__comp":"17896441","content":"3b62c223"},"/cards/push-button/-349":{"__comp":"17896441","content":"ec123d05"},"/cards/slider/-469":{"__comp":"17896441","content":"bfca638c"},"/cards/status/-0af":{"__comp":"17896441","content":"1c361767"},"/cards/temperature/-6c0":{"__comp":"17896441","content":"021dfd6a"},"/cards/text-input/-704":{"__comp":"17896441","content":"de4274db"},"/cards/week-selector/-ef8":{"__comp":"17896441","content":"4ca68d7b"},"/charts/area/-42f":{"__comp":"17896441","content":"bb019f97"},"/charts/bar/-bbd":{"__comp":"17896441","content":"1de66f17"},"/charts/line/-bc5":{"__comp":"17896441","content":"ddf369fb"},"/charts/pie/-b77":{"__comp":"17896441","content":"5554be2c"},"/concept/-a73":{"__comp":"17896441","content":"4df0a92e"},"/custom-statistics/-5b3":{"__comp":"17896441","content":"ccf30e44"},"/features/authentication/-d87":{"__comp":"17896441","content":"aeef22cf"},"/features/brotli-compression/-ab1":{"__comp":"17896441","content":"4649c564"},"/features/chartanimations/-c64":{"__comp":"17896441","content":"d523083d"},"/features/custom-logo/-d35":{"__comp":"17896441","content":"24a4b54e"},"/features/custom-uri/-0d9":{"__comp":"17896441","content":"5327fe66"},"/features/disable-stats/-e9b":{"__comp":"17896441","content":"d3c74fc5"},"/features/indexing/-7af":{"__comp":"17896441","content":"88f14c76"},"/features/sizing/-e10":{"__comp":"17896441","content":"a8d55bef"},"/features/title/-2c6":{"__comp":"17896441","content":"10703425"},"/getting-started/-d88":{"__comp":"17896441","content":"f62b367a"},"/installation/-0a4":{"__comp":"17896441","content":"2c8f7a48"},"/migrate/-32c":{"__comp":"17896441","content":"49146ea8"},"/more-examples/-270":{"__comp":"17896441","content":"ee622a22"},"/tabs/-1b7":{"__comp":"17896441","content":"d1e64eb6"}}')}},e=>{e.O(0,[532],(()=>{return t=7221,e(e.s=t);var t}));e.O()}]); \ No newline at end of file diff --git a/assets/js/main.ee1441c8.js b/assets/js/main.ee1441c8.js new file mode 100644 index 00000000..7ea26f08 --- /dev/null +++ b/assets/js/main.ee1441c8.js @@ -0,0 +1,2 @@ +/*! For license information please see main.ee1441c8.js.LICENSE.txt */ +(self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[]).push([[1590],{628:(e,t,n)=>{"use strict";n.d(t,{c:()=>f});var r=n(1504),a=n(5072),o=n(8852),i=n.n(o),l=n(4504);const s={"01c2b708":[()=>n.e(8696).then(n.t.bind(n,4688,19)),"~docs/default/category-v-3-xx-tutorialsidebar-category-charts-930.json",4688],"021dfd6a":[()=>n.e(7452).then(n.bind(n,6896)),"@site/versioned_docs/version-v4.x.x/cards/temperature.md",6896],"0487f087":[()=>n.e(9540).then(n.bind(n,8456)),"@site/docs/cards/status.md",8456],"0b5c9aa2":[()=>n.e(1152).then(n.bind(n,5092)),"@site/docs/features/custom-uri.md",5092],"0e384e19":[()=>n.e(6328).then(n.bind(n,1036)),"@site/docs/intro.md",1036],"0f34283b":[()=>n.e(768).then(n.bind(n,4124)),"@site/versioned_docs/version-v3.x.x/cards/humidity.md",4124],10703425:[()=>n.e(4424).then(n.bind(n,588)),"@site/versioned_docs/version-v4.x.x/features/title.md",588],"14eb3368":[()=>Promise.all([n.e(2176),n.e(9576)]).then(n.bind(n,6248)),"@theme/DocCategoryGeneratedIndexPage",6248],"166ccb0c":[()=>n.e(2556).then(n.bind(n,5276)),"@site/docs/charts/bar.md",5276],17896441:[()=>Promise.all([n.e(2176),n.e(8127),n.e(6752)]).then(n.bind(n,6560)),"@theme/DocItem",6560],"1be78505":[()=>Promise.all([n.e(2176),n.e(9656)]).then(n.bind(n,8256)),"@theme/DocPage",8256],"1c361767":[()=>n.e(2036).then(n.bind(n,3471)),"@site/versioned_docs/version-v4.x.x/cards/status.md",3471],"1d06bd5e":[()=>n.e(8308).then(n.bind(n,7220)),"@site/docs/cards/energy.md",7220],"1d798de6":[()=>n.e(4168).then(n.t.bind(n,2080,19)),"/home/runner/work/ESP-DASH/ESP-DASH/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",2080],"1de66f17":[()=>n.e(7552).then(n.bind(n,8004)),"@site/versioned_docs/version-v4.x.x/charts/bar.md",8004],"1eaa7d1e":[()=>n.e(1704).then(n.bind(n,2976)),"@site/docs/cards/button.md",2976],"24a4b54e":[()=>n.e(4796).then(n.bind(n,6412)),"@site/versioned_docs/version-v4.x.x/features/custom-logo.md",6412],"2a51f6ab":[()=>n.e(688).then(n.bind(n,7972)),"@site/docs/features/title.md",7972],"2bf59882":[()=>n.e(6944).then(n.bind(n,1840)),"@site/docs/migrate.md",1840],"2c8f7a48":[()=>n.e(2116).then(n.bind(n,1788)),"@site/versioned_docs/version-v4.x.x/installation.md",1788],"34e9d761":[()=>n.e(7372).then(n.bind(n,1076)),"@site/versioned_docs/version-v4.x.x/cards/air.md",1076],"37c80295":[()=>n.e(7750).then(n.bind(n,5704)),"@site/versioned_docs/version-v3.x.x/charts/bar.md",5704],"3b62c223":[()=>n.e(7176).then(n.bind(n,4028)),"@site/versioned_docs/version-v4.x.x/cards/progress.md",4028],"3b8c55ea":[()=>n.e(6696).then(n.bind(n,4080)),"@site/docs/installation.md",4080],"3cd533c2":[()=>n.e(7096).then(n.bind(n,104)),"@site/versioned_docs/version-v4.x.x/cards/joystick.md",104],"402bfe77":[()=>n.e(1476).then(n.bind(n,4668)),"@site/docs/charts/area.md",4668],"44a65385":[()=>n.e(1592).then(n.bind(n,8764)),"@site/docs/cards/text-input.md",8764],"4649c564":[()=>n.e(3368).then(n.bind(n,7924)),"@site/versioned_docs/version-v4.x.x/features/brotli-compression.md",7924],"49146ea8":[()=>n.e(2276).then(n.bind(n,7604)),"@site/versioned_docs/version-v4.x.x/migrate.md",7604],"49d6c00f":[()=>n.e(1936).then(n.bind(n,1292)),"@site/docs/cards/slider.md",1292],"4c3f1b83":[()=>n.e(4952).then(n.bind(n,4232)),"@site/versioned_docs/version-v4.x.x/cards/dropdown.md",4232],"4c4e1a30":[()=>n.e(8120).then(n.t.bind(n,5216,19)),"~docs/default/version-v-4-x-x-metadata-prop-a4e.json",5216],"4ca68d7b":[()=>n.e(3664).then(n.bind(n,1408)),"@site/versioned_docs/version-v4.x.x/cards/week-selector.md",1408],"4df0a92e":[()=>n.e(1612).then(n.bind(n,7868)),"@site/versioned_docs/version-v4.x.x/concept.md",7868],"50198c52":[()=>n.e(5590).then(n.bind(n,5732)),"@site/docs/features/indexing.md",5732],"51ce7319":[()=>n.e(5288).then(n.bind(n,4576)),"@site/docs/features/custom-logo.md",4576],52044914:[()=>n.e(5876).then(n.bind(n,9883)),"@site/versioned_docs/version-v3.x.x/cards/slider.md",9883],"5327fe66":[()=>n.e(9516).then(n.bind(n,3680)),"@site/versioned_docs/version-v4.x.x/features/custom-uri.md",3680],"5554be2c":[()=>n.e(9152).then(n.bind(n,1268)),"@site/versioned_docs/version-v4.x.x/charts/pie.md",1268],"55c57bd6":[()=>n.e(2940).then(n.bind(n,2356)),"@site/versioned_docs/version-v3.x.x/cards/joystick.md",2356],56927624:[()=>n.e(1496).then(n.bind(n,5876)),"@site/docs/cards/joystick.md",5876],"5942c4f9":[()=>n.e(5972).then(n.bind(n,4744)),"@site/versioned_docs/version-v3.x.x/cards/progress.md",4744],"5acd1b26":[()=>n.e(624).then(n.bind(n,1004)),"@site/versioned_docs/version-v3.x.x/charts/area.md",1004],"5b27bca1":[()=>n.e(8784).then(n.bind(n,2076)),"@site/docs/charts/pie.md",2076],"5c2cce4e":[()=>n.e(7156).then(n.bind(n,4264)),"@site/versioned_docs/version-v3.x.x/getting-started.md",4264],"5fde1817":[()=>n.e(4380).then(n.bind(n,372)),"@site/docs/cards/air.md",372],"641f1acd":[()=>n.e(2784).then(n.bind(n,3360)),"@site/versioned_docs/version-v3.x.x/cards/temperature.md",3360],"652d9580":[()=>n.e(248).then(n.bind(n,1920)),"@site/docs/features/disable-stats.md",1920],"6944cb31":[()=>n.e(3960).then(n.t.bind(n,4828,19)),"~docs/default/version-v-3-x-x-metadata-prop-1ed.json",4828],"6bf84c41":[()=>n.e(1972).then(n.bind(n,1240)),"@site/versioned_docs/version-v3.x.x/installation.md",1240],"6d50d705":[()=>n.e(4992).then(n.bind(n,4172)),"@site/versioned_docs/version-v3.x.x/cards/generic.md",4172],"6fb081b8":[()=>n.e(2048).then(n.bind(n,2412)),"@site/versioned_docs/version-v4.x.x/cards/energy.md",2412],"78c63844":[()=>n.e(3008).then(n.bind(n,3920)),"@site/docs/cards/temperature.md",3920],"82dc478c":[()=>n.e(1828).then(n.bind(n,9148)),"@site/versioned_docs/version-v4.x.x/intro.md",9148],"849d26d9":[()=>n.e(6884).then(n.bind(n,7164)),"@site/docs/features/sizing.md",7164],"85d52a4f":[()=>n.e(2490).then(n.t.bind(n,8324,19)),"~docs/default/category-v-3-xx-tutorialsidebar-category-cards-293.json",8324],"87b1afb5":[()=>n.e(6960).then(n.bind(n,3584)),"@site/versioned_docs/version-v3.x.x/charts/pie.md",3584],"88f14c76":[()=>n.e(7760).then(n.bind(n,2508)),"@site/versioned_docs/version-v4.x.x/features/indexing.md",2508],"900bf023":[()=>n.e(8777).then(n.bind(n,4588)),"@site/versioned_docs/version-v4.x.x/cards/humidity.md",4588],"91e7212c":[()=>n.e(7244).then(n.bind(n,2484)),"@site/versioned_docs/version-v3.x.x/indexing.md",2484],"935f2afb":[()=>n.e(5696).then(n.t.bind(n,5988,19)),"~docs/default/version-current-metadata-prop-751.json",5988],"9495aadd":[()=>n.e(1528).then(n.bind(n,1892)),"@site/docs/concept.md",1892],"94c292bb":[()=>n.e(682).then(n.bind(n,9120)),"@site/docs/features/brotli-compression.md",9120],"972722f4":[()=>n.e(4148).then(n.bind(n,3952)),"@site/docs/cards/dropdown.md",3952],"9a2f436b":[()=>n.e(4576).then(n.bind(n,4204)),"@site/versioned_docs/version-v3.x.x/charts/line.md",4204],a39fba33:[()=>n.e(7324).then(n.bind(n,7212)),"@site/versioned_docs/version-v3.x.x/concept.md",7212],a608976b:[()=>n.e(402).then(n.bind(n,5240)),"@site/versioned_docs/version-v4.x.x/cards/generic.md",5240],a8d55bef:[()=>n.e(1164).then(n.bind(n,3108)),"@site/versioned_docs/version-v4.x.x/features/sizing.md",3108],aeef22cf:[()=>n.e(5820).then(n.bind(n,4336)),"@site/versioned_docs/version-v4.x.x/features/authentication.md",4336],af2b8099:[()=>n.e(136).then(n.bind(n,3796)),"@site/versioned_docs/version-v3.x.x/cards/air.md",3796],afe7c26a:[()=>n.e(4280).then(n.bind(n,4768)),"@site/docs/cards/image.md",4768],bb019f97:[()=>n.e(1156).then(n.bind(n,4184)),"@site/versioned_docs/version-v4.x.x/charts/area.md",4184],bc9808f4:[()=>n.e(384).then(n.bind(n,6884)),"@site/docs/features/chartanimations.md",6884],bd9ddaf7:[()=>n.e(8988).then(n.bind(n,2516)),"@site/versioned_docs/version-v4.x.x/cards/image.md",2516],beec482e:[()=>n.e(864).then(n.bind(n,6716)),"@site/docs/custom-statistics.md",6716],bfca638c:[()=>n.e(2800).then(n.bind(n,8676)),"@site/versioned_docs/version-v4.x.x/cards/slider.md",8676],c4432a16:[()=>n.e(5238).then(n.bind(n,2476)),"@site/versioned_docs/version-v4.x.x/cards/button.md",2476],c5beed23:[()=>n.e(1812).then(n.bind(n,8444)),"@site/versioned_docs/version-v3.x.x/cards/button.md",8444],c61243a5:[()=>n.e(6315).then(n.bind(n,4944)),"@site/docs/cards/week-selector.md",4944],cc0a2bf3:[()=>n.e(7364).then(n.bind(n,228)),"@site/docs/features/authentication.md",228],ccf30e44:[()=>n.e(3456).then(n.bind(n,1948)),"@site/versioned_docs/version-v4.x.x/custom-statistics.md",1948],d1e64eb6:[()=>n.e(6736).then(n.bind(n,2460)),"@site/versioned_docs/version-v4.x.x/tabs.md",2460],d1f5632b:[()=>n.e(1336).then(n.bind(n,7496)),"@site/docs/cards/push-button.md",7496],d3c74fc5:[()=>n.e(3820).then(n.bind(n,1132)),"@site/versioned_docs/version-v4.x.x/features/disable-stats.md",1132],d4ae7331:[()=>n.e(4292).then(n.bind(n,468)),"@site/docs/cards/generic.md",468],d4f5e55a:[()=>n.e(7956).then(n.bind(n,2928)),"@site/versioned_docs/version-v3.x.x/cards/status.md",2928],d523083d:[()=>n.e(516).then(n.bind(n,8156)),"@site/versioned_docs/version-v4.x.x/features/chartanimations.md",8156],d589d3a7:[()=>n.e(4840).then(n.bind(n,1912)),"@site/docs/getting-started.md",1912],ddf369fb:[()=>n.e(6624).then(n.bind(n,2208)),"@site/versioned_docs/version-v4.x.x/charts/line.md",2208],de4274db:[()=>n.e(5656).then(n.bind(n,1784)),"@site/versioned_docs/version-v4.x.x/cards/text-input.md",1784],e5af0a5c:[()=>n.e(7944).then(n.bind(n,7200)),"@site/docs/more-examples.md",7200],e8eea433:[()=>n.e(1595).then(n.bind(n,1828)),"@site/docs/tabs.md",1828],ebe4a411:[()=>n.e(9504).then(n.bind(n,7880)),"@site/versioned_docs/version-v3.x.x/cards/energy.md",7880],ec123d05:[()=>n.e(2964).then(n.bind(n,6852)),"@site/versioned_docs/version-v4.x.x/cards/push-button.md",6852],ec57d471:[()=>n.e(4864).then(n.bind(n,9608)),"@site/docs/charts/line.md",9608],ee622a22:[()=>n.e(2840).then(n.bind(n,3012)),"@site/versioned_docs/version-v4.x.x/more-examples.md",3012],f1c3c228:[()=>n.e(168).then(n.bind(n,4960)),"@site/docs/cards/humidity.md",4960],f43a06cf:[()=>n.e(5392).then(n.bind(n,4240)),"@site/versioned_docs/version-v3.x.x/intro.md",4240],f4d79f1d:[()=>n.e(3088).then(n.bind(n,484)),"@site/versioned_docs/version-v3.x.x/cards/text-input.md",484],f62b367a:[()=>n.e(8904).then(n.bind(n,8108)),"@site/versioned_docs/version-v4.x.x/getting-started.md",8108],f736db6d:[()=>n.e(7772).then(n.bind(n,8612)),"@site/docs/cards/progress.md",8612],f8edec0b:[()=>n.e(4368).then(n.bind(n,2148)),"@site/versioned_docs/version-v3.x.x/more-examples.md",2148]};function c(e){let{error:t,retry:n,pastDelay:a}=e;return t?r.createElement("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%"}},r.createElement("p",null,String(t)),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},"Retry"))):a?r.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},r.createElement("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"},r.createElement("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2"},r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"8"},r.createElement("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"}))))):null}var u=n(8120),d=n(5548);function p(e,t){if("*"===e)return i()({loading:c,loader:()=>n.e(9772).then(n.bind(n,9772)),modules:["@theme/NotFound"],webpack:()=>[9772],render(e,t){const n=e.default;return r.createElement(d.Y,{value:{plugin:{name:"native",id:"default"}}},r.createElement(n,t))}});const o=l[`${e}-${t}`],p={},f=[],m=[],h=(0,u.c)(o);return Object.entries(h).forEach((e=>{let[t,n]=e;const r=s[n];r&&(p[t]=r[0],f.push(r[1]),m.push(r[2]))})),i().Map({loading:c,loader:p,modules:f,webpack:()=>m,render(t,n){const i=JSON.parse(JSON.stringify(o));Object.entries(t).forEach((t=>{let[n,r]=t;const a=r.default;if(!a)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 a&&"function"!=typeof a||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{a[e]=r[e]}));let o=i;const l=n.split(".");l.slice(0,-1).forEach((e=>{o=o[e]})),o[l[l.length-1]]=a}));const l=i.__comp;delete i.__comp;const s=i.__context;return delete i.__context,r.createElement(d.Y,{value:s},r.createElement(l,(0,a.c)({},i,n)))}})}const f=[{path:"/next/",component:p("/next/","172"),routes:[{path:"/next/",component:p("/next/","f7b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/cards/air/",component:p("/next/cards/air/","38c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/cards/button/",component:p("/next/cards/button/","2e0"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/cards/dropdown/",component:p("/next/cards/dropdown/","ca2"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/cards/energy/",component:p("/next/cards/energy/","025"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/cards/generic/",component:p("/next/cards/generic/","e08"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/cards/humidity/",component:p("/next/cards/humidity/","aa3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/cards/image/",component:p("/next/cards/image/","537"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/cards/joystick/",component:p("/next/cards/joystick/","4f7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/cards/progress/",component:p("/next/cards/progress/","8c1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/cards/push-button/",component:p("/next/cards/push-button/","136"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/cards/slider/",component:p("/next/cards/slider/","ed2"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/cards/status/",component:p("/next/cards/status/","62e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/cards/temperature/",component:p("/next/cards/temperature/","d33"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/cards/text-input/",component:p("/next/cards/text-input/","8de"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/cards/week-selector/",component:p("/next/cards/week-selector/","c0e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/charts/area/",component:p("/next/charts/area/","379"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/charts/bar/",component:p("/next/charts/bar/","1c8"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/charts/line/",component:p("/next/charts/line/","674"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/charts/pie/",component:p("/next/charts/pie/","886"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/concept/",component:p("/next/concept/","ec6"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/custom-statistics/",component:p("/next/custom-statistics/","b8f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/features/authentication/",component:p("/next/features/authentication/","ad6"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/features/brotli-compression/",component:p("/next/features/brotli-compression/","6e3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/features/chartanimations/",component:p("/next/features/chartanimations/","14a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/features/custom-logo/",component:p("/next/features/custom-logo/","3c7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/features/custom-uri/",component:p("/next/features/custom-uri/","257"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/features/disable-stats/",component:p("/next/features/disable-stats/","9ae"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/features/indexing/",component:p("/next/features/indexing/","8b3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/features/sizing/",component:p("/next/features/sizing/","35f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/features/title/",component:p("/next/features/title/","886"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/getting-started/",component:p("/next/getting-started/","7ef"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/installation/",component:p("/next/installation/","4b4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/migrate/",component:p("/next/migrate/","a21"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/more-examples/",component:p("/next/more-examples/","56a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/next/tabs/",component:p("/next/tabs/","b91"),exact:!0,sidebar:"tutorialSidebar"}]},{path:"/v3.x.x/",component:p("/v3.x.x/","aa1"),routes:[{path:"/v3.x.x/",component:p("/v3.x.x/","d29"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/cards/air/",component:p("/v3.x.x/cards/air/","bdb"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/cards/button/",component:p("/v3.x.x/cards/button/","26e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/cards/energy/",component:p("/v3.x.x/cards/energy/","0c5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/cards/generic/",component:p("/v3.x.x/cards/generic/","ed4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/cards/humidity/",component:p("/v3.x.x/cards/humidity/","524"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/cards/joystick/",component:p("/v3.x.x/cards/joystick/","e05"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/cards/progress/",component:p("/v3.x.x/cards/progress/","bb3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/cards/slider/",component:p("/v3.x.x/cards/slider/","489"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/cards/status/",component:p("/v3.x.x/cards/status/","e7d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/cards/temperature/",component:p("/v3.x.x/cards/temperature/","56c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/cards/text-input/",component:p("/v3.x.x/cards/text-input/","2bb"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/category/cards/",component:p("/v3.x.x/category/cards/","be2"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/category/charts/",component:p("/v3.x.x/category/charts/","433"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/charts/area/",component:p("/v3.x.x/charts/area/","196"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/charts/bar/",component:p("/v3.x.x/charts/bar/","7d2"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/charts/line/",component:p("/v3.x.x/charts/line/","65f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/charts/pie/",component:p("/v3.x.x/charts/pie/","921"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/concept/",component:p("/v3.x.x/concept/","a3e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/getting-started/",component:p("/v3.x.x/getting-started/","153"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/indexing/",component:p("/v3.x.x/indexing/","f71"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/installation/",component:p("/v3.x.x/installation/","1eb"),exact:!0,sidebar:"tutorialSidebar"},{path:"/v3.x.x/more-examples/",component:p("/v3.x.x/more-examples/","c1e"),exact:!0,sidebar:"tutorialSidebar"}]},{path:"/",component:p("/","677"),routes:[{path:"/",component:p("/","157"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cards/air/",component:p("/cards/air/","3ca"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cards/button/",component:p("/cards/button/","65b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cards/dropdown/",component:p("/cards/dropdown/","2b8"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cards/energy/",component:p("/cards/energy/","321"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cards/generic/",component:p("/cards/generic/","dd3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cards/humidity/",component:p("/cards/humidity/","f13"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cards/image/",component:p("/cards/image/","c49"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cards/joystick/",component:p("/cards/joystick/","0c3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cards/progress/",component:p("/cards/progress/","55f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cards/push-button/",component:p("/cards/push-button/","349"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cards/slider/",component:p("/cards/slider/","469"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cards/status/",component:p("/cards/status/","0af"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cards/temperature/",component:p("/cards/temperature/","6c0"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cards/text-input/",component:p("/cards/text-input/","704"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cards/week-selector/",component:p("/cards/week-selector/","ef8"),exact:!0,sidebar:"tutorialSidebar"},{path:"/charts/area/",component:p("/charts/area/","42f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/charts/bar/",component:p("/charts/bar/","bbd"),exact:!0,sidebar:"tutorialSidebar"},{path:"/charts/line/",component:p("/charts/line/","bc5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/charts/pie/",component:p("/charts/pie/","b77"),exact:!0,sidebar:"tutorialSidebar"},{path:"/concept/",component:p("/concept/","a73"),exact:!0,sidebar:"tutorialSidebar"},{path:"/custom-statistics/",component:p("/custom-statistics/","5b3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/features/authentication/",component:p("/features/authentication/","d87"),exact:!0,sidebar:"tutorialSidebar"},{path:"/features/brotli-compression/",component:p("/features/brotli-compression/","ab1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/features/chartanimations/",component:p("/features/chartanimations/","c64"),exact:!0,sidebar:"tutorialSidebar"},{path:"/features/custom-logo/",component:p("/features/custom-logo/","d35"),exact:!0,sidebar:"tutorialSidebar"},{path:"/features/custom-uri/",component:p("/features/custom-uri/","0d9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/features/disable-stats/",component:p("/features/disable-stats/","e9b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/features/indexing/",component:p("/features/indexing/","7af"),exact:!0,sidebar:"tutorialSidebar"},{path:"/features/sizing/",component:p("/features/sizing/","e10"),exact:!0,sidebar:"tutorialSidebar"},{path:"/features/title/",component:p("/features/title/","2c6"),exact:!0,sidebar:"tutorialSidebar"},{path:"/getting-started/",component:p("/getting-started/","d88"),exact:!0,sidebar:"tutorialSidebar"},{path:"/installation/",component:p("/installation/","0a4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/migrate/",component:p("/migrate/","32c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/more-examples/",component:p("/more-examples/","270"),exact:!0,sidebar:"tutorialSidebar"},{path:"/tabs/",component:p("/tabs/","1b7"),exact:!0,sidebar:"tutorialSidebar"}]},{path:"*",component:p("*")}]},240:(e,t,n)=>{"use strict";n.d(t,{e:()=>a,g:()=>o});var r=n(1504);const a=r.createContext(!1);function o(e){let{children:t}=e;const[n,o]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{o(!0)}),[]),r.createElement(a.Provider,{value:n},t)}},8808:(e,t,n)=>{"use strict";var r=n(1504),a=n(7104),o=n(440),i=n(2160),l=n(8684);const s=[n(7483),n(1462),n(5396),n(9596),n(1496)];var c=n(628),u=n(5592),d=n(5464);function p(e){let{children:t}=e;return r.createElement(r.Fragment,null,t)}var f=n(5072),m=n(6952),h=n(8264),g=n(964),b=n(1824),v=n(5756),y=n(1616),w=n(204),x=n(4456),k=n(5684),S=n(8712);function E(){const{i18n:{defaultLocale:e,localeConfigs:t}}=(0,h.c)(),n=(0,y.D)();return r.createElement(m.c,null,Object.entries(t).map((e=>{let[t,{htmlLang:a}]=e;return r.createElement("link",{key:t,rel:"alternate",href:n.createUrl({locale:t,fullyQualified:!0}),hrefLang:a})})),r.createElement("link",{rel:"alternate",href:n.createUrl({locale:e,fullyQualified:!0}),hrefLang:"x-default"}))}function _(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,h.c)(),a=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,h.c)(),{pathname:r}=(0,u.IT)();return e+(0,k.applyTrailingSlash)((0,g.c)(r),{trailingSlash:n,baseUrl:t})}(),o=t?`${n}${t}`:a;return r.createElement(m.c,null,r.createElement("meta",{property:"og:url",content:o}),r.createElement("link",{rel:"canonical",href:o}))}function C(){const{i18n:{currentLocale:e}}=(0,h.c)(),{metadata:t,image:n}=(0,b.y)();return r.createElement(r.Fragment,null,r.createElement(m.c,null,r.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),r.createElement("body",{className:w.m})),n&&r.createElement(v.U7,{image:n}),r.createElement(_,null),r.createElement(E,null),r.createElement(S.c,{tag:x.e6,locale:e}),r.createElement(m.c,null,t.map(((e,t)=>r.createElement("meta",(0,f.c)({key:t},e))))))}const T=new Map;function A(e){if(T.has(e.pathname))return{...e,pathname:T.get(e.pathname)};if((0,d.C)(c.c,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return T.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return T.set(e.pathname,t),{...e,pathname:t}}var L=n(240),N=n(136);function R(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=s.map((t=>{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>a.forEach((e=>e?.()))}const P=function(e){let{children:t,location:n,previousLocation:a}=e;return(0,r.useLayoutEffect)((()=>{a!==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:a}),R("onRouteDidUpdate",{previousLocation:a,location:n}))}),[a,n]),t};function O(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.C)(c.c,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class D extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=l.c.canUseDOM?R("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=R("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),O(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 r.createElement(P,{previousLocation:this.previousLocation,location:t},r.createElement(u.kX,{location:t,render:()=>e}))}}const I=D,M="__docusaurus-base-url-issue-banner-container",F="__docusaurus-base-url-issue-banner",B="__docusaurus-base-url-issue-banner-suggestion-container",j="__DOCUSAURUS_INSERT_BASEURL_BANNER";function z(e){return`\nwindow['${j}'] = true;\n\ndocument.addEventListener('DOMContentLoaded', maybeInsertBanner);\n\nfunction maybeInsertBanner() {\n var shouldInsert = window['${j}'];\n shouldInsert && insertBanner();\n}\n\nfunction insertBanner() {\n var bannerContainer = document.getElementById('${M}');\n if (!bannerContainer) {\n return;\n }\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="${B}" style="font-weight: bold; color: green;"></span></p>\n</div>\n`}(e)).replace(/</g,"\\<")};\n bannerContainer.innerHTML = bannerHtml;\n var suggestionContainer = document.getElementById('${B}');\n var actualHomePagePath = window.location.pathname;\n var suggestedBaseUrl = actualHomePagePath.substr(-1) === '/'\n ? actualHomePagePath\n : actualHomePagePath + '/';\n suggestionContainer.innerHTML = suggestedBaseUrl;\n}\n`}function U(){const{siteConfig:{baseUrl:e}}=(0,h.c)();return(0,r.useLayoutEffect)((()=>{window[j]=!1}),[]),r.createElement(r.Fragment,null,!l.c.canUseDOM&&r.createElement(m.c,null,r.createElement("script",null,z(e))),r.createElement("div",{id:M}))}function $(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,h.c)(),{pathname:n}=(0,u.IT)();return t&&n===e?r.createElement(U,null):null}function G(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:a,localeConfigs:o}}=(0,h.c)(),i=(0,g.c)(e),{htmlLang:l,direction:s}=o[a];return r.createElement(m.c,null,r.createElement("html",{lang:l,dir:s}),r.createElement("title",null,t),r.createElement("meta",{property:"og:title",content:t}),r.createElement("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&r.createElement("meta",{name:"robots",content:"noindex, nofollow"}),e&&r.createElement("link",{rel:"icon",href:i}))}var q=n(5852),H=n(3664);function V(){const e=(0,H.c)();return r.createElement(m.c,null,r.createElement("html",{"data-has-hydrated":e}))}function W(){const e=(0,d.k)(c.c),t=(0,u.IT)();return r.createElement(q.c,null,r.createElement(N.y,null,r.createElement(L.g,null,r.createElement(p,null,r.createElement(G,null),r.createElement(C,null),r.createElement($,null),r.createElement(I,{location:A(t)},e)),r.createElement(V,null))))}var Y=n(4504);const K=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 Q=n(8120);const X=new Set,Z=new Set,J=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,ee={prefetch(e){if(!(e=>!J()&&!Z.has(e)&&!X.has(e))(e))return!1;X.add(e);const t=(0,d.C)(c.c,e).flatMap((e=>{return t=e.route.path,Object.entries(Y).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,Q.c)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?K(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!J()&&!Z.has(e))(e)&&(Z.add(e),O(e))},te=Object.freeze(ee);if(l.c.canUseDOM){window.docusaurus=te;const e=a.hydrate;O(window.location.pathname).then((()=>{e(r.createElement(i.EN,null,r.createElement(o.kn,null,r.createElement(W,null))),document.getElementById("__docusaurus"))}))}},136:(e,t,n)=>{"use strict";n.d(t,{e:()=>u,y:()=>d});var r=n(1504),a=n(7768);const o=JSON.parse('{"docusaurus-plugin-google-gtag":{"default":{"trackingID":["G-H1X62VMQNV"],"anonymizeIP":true,"id":"default"}},"docusaurus-plugin-content-docs":{"default":{"path":"/","versions":[{"name":"current","label":"Next","isLast":false,"path":"/next","mainDocId":"intro","docs":[{"id":"cards/air","path":"/next/cards/air","sidebar":"tutorialSidebar"},{"id":"cards/button","path":"/next/cards/button","sidebar":"tutorialSidebar"},{"id":"cards/dropdown","path":"/next/cards/dropdown","sidebar":"tutorialSidebar"},{"id":"cards/energy","path":"/next/cards/energy","sidebar":"tutorialSidebar"},{"id":"cards/generic","path":"/next/cards/generic","sidebar":"tutorialSidebar"},{"id":"cards/humidity","path":"/next/cards/humidity","sidebar":"tutorialSidebar"},{"id":"cards/image","path":"/next/cards/image","sidebar":"tutorialSidebar"},{"id":"cards/joystick","path":"/next/cards/joystick","sidebar":"tutorialSidebar"},{"id":"cards/progress","path":"/next/cards/progress","sidebar":"tutorialSidebar"},{"id":"cards/push-button","path":"/next/cards/push-button","sidebar":"tutorialSidebar"},{"id":"cards/slider","path":"/next/cards/slider","sidebar":"tutorialSidebar"},{"id":"cards/status","path":"/next/cards/status","sidebar":"tutorialSidebar"},{"id":"cards/temperature","path":"/next/cards/temperature","sidebar":"tutorialSidebar"},{"id":"cards/text-input","path":"/next/cards/text-input","sidebar":"tutorialSidebar"},{"id":"cards/week-selector","path":"/next/cards/week-selector","sidebar":"tutorialSidebar"},{"id":"charts/area","path":"/next/charts/area","sidebar":"tutorialSidebar"},{"id":"charts/bar","path":"/next/charts/bar","sidebar":"tutorialSidebar"},{"id":"charts/line","path":"/next/charts/line","sidebar":"tutorialSidebar"},{"id":"charts/pie","path":"/next/charts/pie","sidebar":"tutorialSidebar"},{"id":"concept","path":"/next/concept","sidebar":"tutorialSidebar"},{"id":"custom-statistics","path":"/next/custom-statistics","sidebar":"tutorialSidebar"},{"id":"features/authentication","path":"/next/features/authentication","sidebar":"tutorialSidebar"},{"id":"features/brotli-compression","path":"/next/features/brotli-compression","sidebar":"tutorialSidebar"},{"id":"features/chartanimations","path":"/next/features/chartanimations","sidebar":"tutorialSidebar"},{"id":"features/custom-logo","path":"/next/features/custom-logo","sidebar":"tutorialSidebar"},{"id":"features/custom-uri","path":"/next/features/custom-uri","sidebar":"tutorialSidebar"},{"id":"features/disable-stats","path":"/next/features/disable-stats","sidebar":"tutorialSidebar"},{"id":"features/indexing","path":"/next/features/indexing","sidebar":"tutorialSidebar"},{"id":"features/sizing","path":"/next/features/sizing","sidebar":"tutorialSidebar"},{"id":"features/title","path":"/next/features/title","sidebar":"tutorialSidebar"},{"id":"getting-started","path":"/next/getting-started","sidebar":"tutorialSidebar"},{"id":"installation","path":"/next/installation","sidebar":"tutorialSidebar"},{"id":"intro","path":"/next/","sidebar":"tutorialSidebar"},{"id":"migrate","path":"/next/migrate","sidebar":"tutorialSidebar"},{"id":"more-examples","path":"/next/more-examples","sidebar":"tutorialSidebar"},{"id":"tabs","path":"/next/tabs","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/next/","label":"Introduction"}}}},{"name":"v4.x.x","label":"v4.x.x","isLast":true,"path":"/","mainDocId":"intro","docs":[{"id":"cards/air","path":"/cards/air","sidebar":"tutorialSidebar"},{"id":"cards/button","path":"/cards/button","sidebar":"tutorialSidebar"},{"id":"cards/dropdown","path":"/cards/dropdown","sidebar":"tutorialSidebar"},{"id":"cards/energy","path":"/cards/energy","sidebar":"tutorialSidebar"},{"id":"cards/generic","path":"/cards/generic","sidebar":"tutorialSidebar"},{"id":"cards/humidity","path":"/cards/humidity","sidebar":"tutorialSidebar"},{"id":"cards/image","path":"/cards/image","sidebar":"tutorialSidebar"},{"id":"cards/joystick","path":"/cards/joystick","sidebar":"tutorialSidebar"},{"id":"cards/progress","path":"/cards/progress","sidebar":"tutorialSidebar"},{"id":"cards/push-button","path":"/cards/push-button","sidebar":"tutorialSidebar"},{"id":"cards/slider","path":"/cards/slider","sidebar":"tutorialSidebar"},{"id":"cards/status","path":"/cards/status","sidebar":"tutorialSidebar"},{"id":"cards/temperature","path":"/cards/temperature","sidebar":"tutorialSidebar"},{"id":"cards/text-input","path":"/cards/text-input","sidebar":"tutorialSidebar"},{"id":"cards/week-selector","path":"/cards/week-selector","sidebar":"tutorialSidebar"},{"id":"charts/area","path":"/charts/area","sidebar":"tutorialSidebar"},{"id":"charts/bar","path":"/charts/bar","sidebar":"tutorialSidebar"},{"id":"charts/line","path":"/charts/line","sidebar":"tutorialSidebar"},{"id":"charts/pie","path":"/charts/pie","sidebar":"tutorialSidebar"},{"id":"concept","path":"/concept","sidebar":"tutorialSidebar"},{"id":"custom-statistics","path":"/custom-statistics","sidebar":"tutorialSidebar"},{"id":"features/authentication","path":"/features/authentication","sidebar":"tutorialSidebar"},{"id":"features/brotli-compression","path":"/features/brotli-compression","sidebar":"tutorialSidebar"},{"id":"features/chartanimations","path":"/features/chartanimations","sidebar":"tutorialSidebar"},{"id":"features/custom-logo","path":"/features/custom-logo","sidebar":"tutorialSidebar"},{"id":"features/custom-uri","path":"/features/custom-uri","sidebar":"tutorialSidebar"},{"id":"features/disable-stats","path":"/features/disable-stats","sidebar":"tutorialSidebar"},{"id":"features/indexing","path":"/features/indexing","sidebar":"tutorialSidebar"},{"id":"features/sizing","path":"/features/sizing","sidebar":"tutorialSidebar"},{"id":"features/title","path":"/features/title","sidebar":"tutorialSidebar"},{"id":"getting-started","path":"/getting-started","sidebar":"tutorialSidebar"},{"id":"installation","path":"/installation","sidebar":"tutorialSidebar"},{"id":"intro","path":"/","sidebar":"tutorialSidebar"},{"id":"migrate","path":"/migrate","sidebar":"tutorialSidebar"},{"id":"more-examples","path":"/more-examples","sidebar":"tutorialSidebar"},{"id":"tabs","path":"/tabs","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/","label":"Introduction"}}}},{"name":"v3.x.x","label":"v3.x.x","isLast":false,"path":"/v3.x.x","mainDocId":"intro","docs":[{"id":"cards/air","path":"/v3.x.x/cards/air","sidebar":"tutorialSidebar"},{"id":"cards/button","path":"/v3.x.x/cards/button","sidebar":"tutorialSidebar"},{"id":"cards/energy","path":"/v3.x.x/cards/energy","sidebar":"tutorialSidebar"},{"id":"cards/generic","path":"/v3.x.x/cards/generic","sidebar":"tutorialSidebar"},{"id":"cards/humidity","path":"/v3.x.x/cards/humidity","sidebar":"tutorialSidebar"},{"id":"cards/joystick","path":"/v3.x.x/cards/joystick","sidebar":"tutorialSidebar"},{"id":"cards/progress","path":"/v3.x.x/cards/progress","sidebar":"tutorialSidebar"},{"id":"cards/slider","path":"/v3.x.x/cards/slider","sidebar":"tutorialSidebar"},{"id":"cards/status","path":"/v3.x.x/cards/status","sidebar":"tutorialSidebar"},{"id":"cards/temperature","path":"/v3.x.x/cards/temperature","sidebar":"tutorialSidebar"},{"id":"cards/text-input","path":"/v3.x.x/cards/text-input","sidebar":"tutorialSidebar"},{"id":"charts/area","path":"/v3.x.x/charts/area","sidebar":"tutorialSidebar"},{"id":"charts/bar","path":"/v3.x.x/charts/bar","sidebar":"tutorialSidebar"},{"id":"charts/line","path":"/v3.x.x/charts/line","sidebar":"tutorialSidebar"},{"id":"charts/pie","path":"/v3.x.x/charts/pie","sidebar":"tutorialSidebar"},{"id":"concept","path":"/v3.x.x/concept","sidebar":"tutorialSidebar"},{"id":"getting-started","path":"/v3.x.x/getting-started","sidebar":"tutorialSidebar"},{"id":"indexing","path":"/v3.x.x/indexing","sidebar":"tutorialSidebar"},{"id":"installation","path":"/v3.x.x/installation","sidebar":"tutorialSidebar"},{"id":"intro","path":"/v3.x.x/","sidebar":"tutorialSidebar"},{"id":"more-examples","path":"/v3.x.x/more-examples","sidebar":"tutorialSidebar"},{"id":"/category/cards","path":"/v3.x.x/category/cards","sidebar":"tutorialSidebar"},{"id":"/category/charts","path":"/v3.x.x/category/charts","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/v3.x.x/","label":"Introduction"}}}}],"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(144);const s=JSON.parse('{"docusaurusVersion":"2.4.3","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.4.3"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.4.3"},"docusaurus-plugin-google-gtag":{"type":"package","name":"@docusaurus/plugin-google-gtag","version":"2.4.3"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.4.3"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.4.3"}}}'),c={siteConfig:a.default,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},u=r.createContext(c);function d(e){let{children:t}=e;return r.createElement(u.Provider,{value:c},t)}},5852:(e,t,n)=>{"use strict";n.d(t,{c:()=>p});var r=n(1504),a=n(8684),o=n(6952),i=n(5684),l=n(9632);function s(e){let{error:t,tryAgain:n}=e;return r.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"}},r.createElement("h1",{style:{fontSize:"3rem"}},"This page crashed"),r.createElement("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"}},"Try again"),r.createElement(c,{error:t}))}function c(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{style:{whiteSpace:"pre-wrap"}},n)}function u(e){let{error:t,tryAgain:n}=e;return r.createElement(p,{fallback:()=>r.createElement(s,{error:t,tryAgain:n})},r.createElement(o.c,null,r.createElement("title",null,"Page Error")),r.createElement(l.c,null,r.createElement(s,{error:t,tryAgain:n})))}const d=e=>r.createElement(u,e);class p extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.c.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??d)(e)}return e??null}}},8684:(e,t,n)=>{"use strict";n.d(t,{c:()=>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}},6952:(e,t,n)=>{"use strict";n.d(t,{c:()=>o});var r=n(1504),a=n(2160);function o(e){return r.createElement(a.So,e)}},6016:(e,t,n)=>{"use strict";n.d(t,{c:()=>f});var r=n(5072),a=n(1504),o=n(440),i=n(5684),l=n(8264),s=n(8136),c=n(8684);const u=a.createContext({collectLink:()=>{}});var d=n(964);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:m,isActive:h,"data-noBrokenLinkCheck":g,autoAddBaseUrl:b=!0,...v}=e;const{siteConfig:{trailingSlash:y,baseUrl:w}}=(0,l.c)(),{withBaseUrl:x}=(0,d.E)(),k=(0,a.useContext)(u),S=(0,a.useRef)(null);(0,a.useImperativeHandle)(t,(()=>S.current));const E=p||f;const _=(0,s.c)(E),C=E?.replace("pathname://","");let T=void 0!==C?(A=C,b&&(e=>e.startsWith("/"))(A)?x(A):A):void 0;var A;T&&_&&(T=(0,i.applyTrailingSlash)(T,{trailingSlash:y,baseUrl:w}));const L=(0,a.useRef)(!1),N=n?o.Af:o.cH,R=c.c.canUseIntersectionObserver,P=(0,a.useRef)(),O=()=>{L.current||null==T||(window.docusaurus.preload(T),L.current=!0)};(0,a.useEffect)((()=>(!R&&_&&null!=T&&window.docusaurus.prefetch(T),()=>{R&&P.current&&P.current.disconnect()})),[P,T,R,_]);const D=T?.startsWith("#")??!1,I=!T||!_||D;return I||g||k.collectLink(T),I?a.createElement("a",(0,r.c)({ref:S,href:T},E&&!_&&{target:"_blank",rel:"noopener noreferrer"},v)):a.createElement(N,(0,r.c)({},v,{onMouseEnter:O,onTouchStart:O,innerRef:e=>{S.current=e,R&&e&&_&&(P.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(P.current.unobserve(e),P.current.disconnect(),null!=T&&window.docusaurus.prefetch(T))}))})),P.current.observe(e))},to:T},n&&{isActive:h,activeClassName:m}))}const f=a.forwardRef(p)},2944:(e,t,n)=>{"use strict";n.d(t,{c:()=>r});const r=()=>null},4357:(e,t,n)=>{"use strict";n.d(t,{c:()=>s,G:()=>l});var r=n(1504);function a(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 o=n(144);function i(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 o[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return a(i({message:n,id:r}),t)}function s(e){let{children:t,id:n,values:o}=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 l=i({message:t,id:n});return r.createElement(r.Fragment,null,a(l,o))}},2488:(e,t,n)=>{"use strict";n.d(t,{M:()=>r});const r="default"},8136:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{_:()=>r,c:()=>a})},964:(e,t,n)=>{"use strict";n.d(t,{E:()=>i,c:()=>l});var r=n(1504),a=n(8264),o=n(8136);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,a.c)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:a=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,o._)(n))return n;if(a)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const l=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+l:l}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function l(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},8264:(e,t,n)=>{"use strict";n.d(t,{c:()=>o});var r=n(1504),a=n(136);function o(){return(0,r.useContext)(a.e)}},3664:(e,t,n)=>{"use strict";n.d(t,{c:()=>o});var r=n(1504),a=n(240);function o(){return(0,r.useContext)(a.e)}},8120:(e,t,n)=>{"use strict";n.d(t,{c:()=>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}},5548:(e,t,n)=>{"use strict";n.d(t,{Y:()=>o,e:()=>a});var r=n(1504);const a=r.createContext(null);function o(e){let{children:t,value:n}=e;const o=r.useContext(a),i=(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:o,value:n})),[o,n]);return r.createElement(a.Provider,{value:i},t)}},2840:(e,t,n)=>{"use strict";n.d(t,{wB:()=>h,UF:()=>p,L0:()=>u,i8:()=>g,OK:()=>d,aA:()=>m,gN:()=>f});var r=n(5592),a=n(8264),o=n(2488);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,a.c)();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=function(e,t){const n=l(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.ot)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),a=n?.docs.find((e=>!!(0,r.ot)(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={},u=()=>i("docusaurus-plugin-content-docs")??c,d=e=>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});function p(e){void 0===e&&(e={});const t=u(),{pathname:n}=(0,r.IT)();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.ot)(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 f(e){return d(e).versions}function m(e){const t=d(e);return l(t)}function h(e){const t=d(e),{pathname:n}=(0,r.IT)();return s(t,n)}function g(e){const t=d(e),{pathname:n}=(0,r.IT)();return function(e,t){const n=l(e);return{latestDocSuggestion:s(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},7483:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={onRouteDidUpdate(e){let{location:t,previousLocation:n}=e;!n||t.pathname===n.pathname&&t.search===n.search&&t.hash===n.hash||setTimeout((()=>{window.gtag("event","page_view",{page_title:document.title,page_location:window.location.href,page_path:t.pathname+t.search+t.hash})}))}}},9596:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(2272),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()}}},5396:(e,t,n)=>{"use strict";n.r(t);var r=n(6724),a=n(7768);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{n(8660)(`./prism-${e}`)})),delete globalThis.Prism}(r.c)},3232:(e,t,n)=>{"use strict";n.d(t,{c:()=>o});var r=n(1504);const a={iconExternalLink:"iconExternalLink_nPIU"};function o(e){let{width:t=13.5,height:n=13.5}=e;return r.createElement("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:a.iconExternalLink},r.createElement("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"}))}},9632:(e,t,n)=>{"use strict";n.d(t,{c:()=>ut});var r=n(1504),a=n(4971),o=n(5852),i=n(5756),l=n(5072),s=n(5592),c=n(4357),u=n(7124);const d="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,s.Uz)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)}),[]);return(0,u.c)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const m=(0,c.G)({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 h(e){const t=e.children??m,{containerRef:n,onClick:a}=f();return r.createElement("div",{ref:n,role:"region","aria-label":m},r.createElement("a",(0,l.c)({},e,{href:`#${d}`,onClick:a}),t))}var g=n(5864),b=n(204);const v={skipToContent:"skipToContent_fXgn"};function y(){return r.createElement(h,{className:v.skipToContent})}var w=n(1824),x=n(3868);function k(e){let{width:t=21,height:n=21,color:a="currentColor",strokeWidth:o=1.2,className:i,...s}=e;return r.createElement("svg",(0,l.c)({viewBox:"0 0 15 15",width:t,height:n},s),r.createElement("g",{stroke:a,strokeWidth:o},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const S={closeButton:"closeButton_CVFx"};function E(e){return r.createElement("button",(0,l.c)({type:"button","aria-label":(0,c.G)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},e,{className:(0,a.c)("clean-btn close",S.closeButton,e.className)}),r.createElement(k,{width:14,height:14,strokeWidth:3.1}))}const _={content:"content_knG7"};function C(e){const{announcementBar:t}=(0,w.y)(),{content:n}=t;return r.createElement("div",(0,l.c)({},e,{className:(0,a.c)(_.content,e.className),dangerouslySetInnerHTML:{__html:n}}))}const T={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function A(){const{announcementBar:e}=(0,w.y)(),{isActive:t,close:n}=(0,x.el)();if(!t)return null;const{backgroundColor:a,textColor:o,isCloseable:i}=e;return r.createElement("div",{className:T.announcementBar,style:{backgroundColor:a,color:o},role:"banner"},i&&r.createElement("div",{className:T.announcementBarPlaceholder}),r.createElement(C,{className:T.announcementBarContent}),i&&r.createElement(E,{onClick:n,className:T.announcementBarClose}))}var L=n(1336),N=n(3943);var R=n(1100),P=n(5168);const O=r.createContext(null);function D(e){let{children:t}=e;const n=function(){const e=(0,L.q)(),t=(0,P.MF)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,R.i0)(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 r.createElement(O.Provider,{value:n},t)}function I(e){if(e.component){const t=e.component;return r.createElement(t,e.props)}}function M(){const e=(0,r.useContext)(O);if(!e)throw new R.AH("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,P.MF)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:I(o)})),[a,o,t])}function F(e){let{header:t,primaryMenu:n,secondaryMenu:o}=e;const{shown:i}=M();return r.createElement("div",{className:"navbar-sidebar"},t,r.createElement("div",{className:(0,a.c)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":i})},r.createElement("div",{className:"navbar-sidebar__item menu"},n),r.createElement("div",{className:"navbar-sidebar__item menu"},o)))}var B=n(6528),j=n(3664);function z(e){return r.createElement("svg",(0,l.c)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("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 U(e){return r.createElement("svg",(0,l.c)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("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 $={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function G(e){let{className:t,buttonClassName:n,value:o,onChange:i}=e;const l=(0,j.c)(),s=(0,c.G)({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"===o?(0,c.G)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,c.G)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return r.createElement("div",{className:(0,a.c)($.toggle,t)},r.createElement("button",{className:(0,a.c)("clean-btn",$.toggleButton,!l&&$.toggleButtonDisabled,n),type:"button",onClick:()=>i("dark"===o?"light":"dark"),disabled:!l,title:s,"aria-label":s,"aria-live":"polite"},r.createElement(z,{className:(0,a.c)($.toggleIcon,$.lightToggleIcon)}),r.createElement(U,{className:(0,a.c)($.toggleIcon,$.darkToggleIcon)})))}const q=r.memo(G),H={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function V(e){let{className:t}=e;const n=(0,w.y)().navbar.style,a=(0,w.y)().colorMode.disableSwitch,{colorMode:o,setColorMode:i}=(0,B.U)();return a?null:r.createElement(q,{className:t,buttonClassName:"dark"===n?H.darkNavbarColorModeToggle:void 0,value:o,onChange:i})}var W=n(8164);function Y(){return r.createElement(W.c,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function K(){const e=(0,L.q)();return r.createElement("button",{type:"button","aria-label":(0,c.G)({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()},r.createElement(k,{color:"var(--ifm-color-emphasis-600)"}))}function Q(){return r.createElement("div",{className:"navbar-sidebar__brand"},r.createElement(Y,null),r.createElement(V,{className:"margin-right--md"}),r.createElement(K,null))}var X=n(6016),Z=n(964),J=n(8136);function ee(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var te=n(3232);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:a,href:o,label:i,html:s,isDropdownLink:c,prependBaseUrlToHref:u,...d}=e;const p=(0,Z.c)(a),f=(0,Z.c)(t),m=(0,Z.c)(o,{forcePrependBaseUrl:!0}),h=i&&o&&!(0,J.c)(o),g=s?{dangerouslySetInnerHTML:{__html:s}}:{children:r.createElement(r.Fragment,null,i,h&&r.createElement(te.c,c&&{width:12,height:12}))};return o?r.createElement(X.c,(0,l.c)({href:u?m:o},d,g)):r.createElement(X.c,(0,l.c)({to:p,isNavLink:!0},(t||n)&&{isActive:(e,t)=>n?ee(n,t.pathname):t.pathname.startsWith(f)},d,g))}function re(e){let{className:t,isDropdownItem:n=!1,...o}=e;const i=r.createElement(ne,(0,l.c)({className:(0,a.c)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n},o));return n?r.createElement("li",null,i):i}function ae(e){let{className:t,isDropdownItem:n,...o}=e;return r.createElement("li",{className:"menu__list-item"},r.createElement(ne,(0,l.c)({className:(0,a.c)("menu__link",t)},o)))}function oe(e){let{mobile:t=!1,position:n,...a}=e;const o=t?ae:re;return r.createElement(o,(0,l.c)({},a,{activeClassName:a.activeClassName??(t?"menu__link--active":"navbar__link--active")}))}var ie=n(8448),le=n(3376),se=n(8264);function ce(e,t){return e.some((e=>function(e,t){return!!(0,le.Sc)(e.to,t)||!!ee(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function ue(e){let{items:t,position:n,className:o,onClick:i,...s}=e;const c=(0,r.useRef)(null),[u,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{c.current&&!c.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e)}}),[c]),r.createElement("div",{ref:c,className:(0,a.c)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":u})},r.createElement(ne,(0,l.c)({"aria-haspopup":"true","aria-expanded":u,role:"button",href:s.to?void 0:"#",className:(0,a.c)("navbar__link",o)},s,{onClick:s.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!u))}}),s.children??s.label),r.createElement("ul",{className:"dropdown__menu"},t.map(((e,n)=>r.createElement(Ee,(0,l.c)({isDropdownItem:!0,onKeyDown:e=>{if(n===t.length-1&&"Tab"===e.key){e.preventDefault(),d(!1);const t=c.current.nextElementSibling;if(t){(t instanceof HTMLAnchorElement?t:t.querySelector("a")).focus()}}},activeClassName:"dropdown__link--active"},e,{key:n}))))))}function de(e){let{items:t,className:n,position:o,onClick:i,...c}=e;const u=function(){const{siteConfig:{baseUrl:e}}=(0,se.c)(),{pathname:t}=(0,s.IT)();return t.replace(e,"/")}(),d=ce(t,u),{collapsed:p,toggleCollapsed:f,setCollapsed:m}=(0,ie.a)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[u,d,m]),r.createElement("li",{className:(0,a.c)("menu__list-item",{"menu__list-item--collapsed":p})},r.createElement(ne,(0,l.c)({role:"button",className:(0,a.c)("menu__link menu__link--sublist menu__link--sublist-caret",n)},c,{onClick:e=>{e.preventDefault(),f()}}),c.children??c.label),r.createElement(ie.U,{lazy:!0,as:"ul",className:"menu__list",collapsed:p},t.map(((e,t)=>r.createElement(Ee,(0,l.c)({mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active"},e,{key:t}))))))}function pe(e){let{mobile:t=!1,...n}=e;const a=t?de:ue;return r.createElement(a,n)}var fe=n(1616);function me(e){let{width:t=20,height:n=20,...a}=e;return r.createElement("svg",(0,l.c)({viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0},a),r.createElement("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 he="iconLanguage_nlXk";var ge=n(2944);const be={searchBox:"searchBox_ZlJk"};function ve(e){let{children:t,className:n}=e;return r.createElement("div",{className:(0,a.c)(n,be.searchBox)},t)}var ye=n(2840),we=n(9940);var xe=n(4592);const ke=e=>e.docs.find((t=>t.id===e.mainDocId));const Se={default:oe,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:a,...o}=e;const{i18n:{currentLocale:i,locales:u,localeConfigs:d}}=(0,se.c)(),p=(0,fe.D)(),{search:f,hash:m}=(0,s.IT)(),h=[...n,...u.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${m}`;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":""}})),...a],g=t?(0,c.G)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return r.createElement(pe,(0,l.c)({},o,{mobile:t,label:r.createElement(r.Fragment,null,r.createElement(me,{className:he}),g),items:h}))},search:function(e){let{mobile:t,className:n}=e;return t?null:r.createElement(ve,{className:n},r.createElement(ge.c,null))},dropdown:pe,html:function(e){let{value:t,className:n,mobile:o=!1,isDropdownItem:i=!1}=e;const l=i?"li":"div";return r.createElement(l,{className:(0,a.c)({navbar__item:!o&&!i,"menu__list-item":o},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:i}=(0,ye.wB)(a),s=(0,we.Qf)(t,a);return null===s?null:r.createElement(oe,(0,l.c)({exact:!0},o,{isActive:()=>i?.path===s.path||!!i?.sidebar&&i.sidebar===s.sidebar,label:n??s.id,to:s.path}))},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:i}=(0,ye.wB)(a),s=(0,we.Ab)(t,a).link;if(!s)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return r.createElement(oe,(0,l.c)({exact:!0},o,{isActive:()=>i?.sidebar===t,label:n??s.label,to:s.path}))},docsVersion:function(e){let{label:t,to:n,docsPluginId:a,...o}=e;const i=(0,we.b7)(a)[0],s=t??i.label,c=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(i).path;return r.createElement(oe,(0,l.c)({},o,{label:s,to:c}))},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:a,dropdownItemsBefore:o,dropdownItemsAfter:i,...u}=e;const{search:d,hash:p}=(0,s.IT)(),f=(0,ye.wB)(n),m=(0,ye.gN)(n),{savePreferredVersionName:h}=(0,xe.iy)(n),g=[...o,...m.map((e=>{const t=f.alternateDocVersions[e.name]??ke(e);return{label:e.label,to:`${t.path}${d}${p}`,isActive:()=>e===f.activeVersion,onClick:()=>h(e.name)}})),...i],b=(0,we.b7)(n)[0],v=t&&g.length>1?(0,c.G)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):b.label,y=t&&g.length>1?void 0:ke(b).path;return g.length<=1?r.createElement(oe,(0,l.c)({},u,{mobile:t,label:v,to:y,isActive:a?()=>!1:void 0})):r.createElement(pe,(0,l.c)({},u,{mobile:t,label:v,to:y,items:g,isActive:a?()=>!1:void 0}))}};function Ee(e){let{type:t,...n}=e;const a=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=Se[a];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return r.createElement(o,n)}function _e(){const e=(0,L.q)(),t=(0,w.y)().navbar.items;return r.createElement("ul",{className:"menu__list"},t.map(((t,n)=>r.createElement(Ee,(0,l.c)({mobile:!0},t,{onClick:()=>e.toggle(),key:n})))))}function Ce(e){return r.createElement("button",(0,l.c)({},e,{type:"button",className:"clean-btn navbar-sidebar__back"}),r.createElement(c.c,{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)"},"\u2190 Back to main menu"))}function Te(){const e=0===(0,w.y)().navbar.items.length,t=M();return r.createElement(r.Fragment,null,!e&&r.createElement(Ce,{onClick:()=>t.hide()}),t.content)}function Ae(){const e=(0,L.q)();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?r.createElement(F,{header:r.createElement(Q,null),primaryMenu:r.createElement(_e,null),secondaryMenu:r.createElement(Te,null)}):null}const Le={navbarHideable:"navbarHideable_jvwV",navbarHidden:"navbarHidden_nLSi"};function Ne(e){return r.createElement("div",(0,l.c)({role:"presentation"},e,{className:(0,a.c)("navbar-sidebar__backdrop",e.className)}))}function Re(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,w.y)(),i=(0,L.q)(),{navbarRef:l,isNavbarVisible:s}=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,N.SM)(((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,c=window.innerHeight;l&&i>=l?n(!1):i+c<s&&n(!0)})),(0,u.c)((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 r.createElement("nav",{ref:l,className:(0,a.c)("navbar","navbar--fixed-top",n&&[Le.navbarHideable,!s&&Le.navbarHidden],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown})},t,r.createElement(Ne,{onClick:i.toggle}),r.createElement(Ae,null))}const Pe="right";function Oe(e){let{width:t=30,height:n=30,className:a,...o}=e;return r.createElement("svg",(0,l.c)({className:a,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true"},o),r.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}function De(){const{toggle:e,shown:t}=(0,L.q)();return r.createElement("button",{onClick:e,"aria-label":(0,c.G)({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"},r.createElement(Oe,null))}const Ie={colorModeToggle:"colorModeToggle_x44X"};function Me(e){let{items:t}=e;return r.createElement(r.Fragment,null,t.map(((e,t)=>r.createElement(Ee,(0,l.c)({},e,{key:t})))))}function Fe(e){let{left:t,right:n}=e;return r.createElement("div",{className:"navbar__inner"},r.createElement("div",{className:"navbar__items"},t),r.createElement("div",{className:"navbar__items navbar__items--right"},n))}function Be(){const e=(0,L.q)(),t=(0,w.y)().navbar.items,[n,a]=function(e){function t(e){return"left"===(e.position??Pe)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),o=t.find((e=>"search"===e.type));return r.createElement(Fe,{left:r.createElement(r.Fragment,null,!e.disabled&&r.createElement(De,null),r.createElement(Y,null),r.createElement(Me,{items:n})),right:r.createElement(r.Fragment,null,r.createElement(Me,{items:a}),r.createElement(V,{className:Ie.colorModeToggle}),!o&&r.createElement(ve,null,r.createElement(ge.c,null)))})}function je(){return r.createElement(Re,null,r.createElement(Be,null))}function ze(e){let{item:t}=e;const{to:n,href:a,label:o,prependBaseUrlToHref:i,...s}=t,c=(0,Z.c)(n),u=(0,Z.c)(a,{forcePrependBaseUrl:!0});return r.createElement(X.c,(0,l.c)({className:"footer__link-item"},a?{href:i?u:a}:{to:c},s),o,a&&!(0,J.c)(a)&&r.createElement(te.c,null))}function Ue(e){let{item:t}=e;return t.html?r.createElement("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement("li",{key:t.href??t.to,className:"footer__item"},r.createElement(ze,{item:t}))}function $e(e){let{column:t}=e;return r.createElement("div",{className:"col footer__col"},r.createElement("div",{className:"footer__title"},t.title),r.createElement("ul",{className:"footer__items clean-list"},t.items.map(((e,t)=>r.createElement(Ue,{key:t,item:e})))))}function Ge(e){let{columns:t}=e;return r.createElement("div",{className:"row footer__links"},t.map(((e,t)=>r.createElement($e,{key:t,column:e}))))}function qe(){return r.createElement("span",{className:"footer__link-separator"},"\xb7")}function He(e){let{item:t}=e;return t.html?r.createElement("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement(ze,{item:t})}function Ve(e){let{links:t}=e;return r.createElement("div",{className:"footer__links text--center"},r.createElement("div",{className:"footer__links"},t.map(((e,n)=>r.createElement(r.Fragment,{key:n},r.createElement(He,{item:e}),t.length!==n+1&&r.createElement(qe,null))))))}function We(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?r.createElement(Ge,{columns:t}):r.createElement(Ve,{links:t})}var Ye=n(4656);const Ke={footerLogoLink:"footerLogoLink_BH7S"};function Qe(e){let{logo:t}=e;const{withBaseUrl:n}=(0,Z.E)(),o={light:n(t.src),dark:n(t.srcDark??t.src)};return r.createElement(Ye.c,{className:(0,a.c)("footer__logo",t.className),alt:t.alt,sources:o,width:t.width,height:t.height,style:t.style})}function Xe(e){let{logo:t}=e;return t.href?r.createElement(X.c,{href:t.href,className:Ke.footerLogoLink,target:t.target},r.createElement(Qe,{logo:t})):r.createElement(Qe,{logo:t})}function Ze(e){let{copyright:t}=e;return r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function Je(e){let{style:t,links:n,logo:o,copyright:i}=e;return r.createElement("footer",{className:(0,a.c)("footer",{"footer--dark":"dark"===t})},r.createElement("div",{className:"container container-fluid"},n,(o||i)&&r.createElement("div",{className:"footer__bottom text--center"},o&&r.createElement("div",{className:"margin-bottom--sm"},o),i)))}function et(){const{footer:e}=(0,w.y)();if(!e)return null;const{copyright:t,links:n,logo:a,style:o}=e;return r.createElement(Je,{style:o,links:n&&n.length>0&&r.createElement(We,{links:n}),logo:a&&r.createElement(Xe,{logo:a}),copyright:t&&r.createElement(Ze,{copyright:t})})}const tt=r.memo(et),nt=(0,R.qY)([B.C,x.qu,N.S2,xe.gc,i.w7,function(e){let{children:t}=e;return r.createElement(P.Ub,null,r.createElement(L.y,null,r.createElement(D,null,t)))}]);function rt(e){let{children:t}=e;return r.createElement(nt,null,t)}var at=n(5684);const ot={errorBoundaryError:"errorBoundaryError_a6uf"};function it(e){return r.createElement("button",(0,l.c)({type:"button"},e),r.createElement(c.c,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error"},"Try again"))}function lt(e){let{error:t}=e;const n=(0,at.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{className:ot.errorBoundaryError},n)}r.Component;function st(e){let{error:t,tryAgain:n}=e;return r.createElement("main",{className:"container margin-vert--xl"},r.createElement("div",{className:"row"},r.createElement("div",{className:"col col--6 col--offset-3"},r.createElement("h1",{className:"hero__title"},r.createElement(c.c,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),r.createElement("div",{className:"margin-vert--lg"},r.createElement(it,{onClick:n,className:"button button--primary shadow--lw"})),r.createElement("hr",null),r.createElement("div",{className:"margin-vert--md"},r.createElement(lt,{error:t})))))}const ct={mainWrapper:"mainWrapper_z2l0"};function ut(e){const{children:t,noFooter:n,wrapperClassName:l,title:s,description:c}=e;return(0,b.W)(),r.createElement(rt,null,r.createElement(i.U7,{title:s,description:c}),r.createElement(y,null),r.createElement(A,null),r.createElement(je,null),r.createElement("div",{id:d,className:(0,a.c)(g.W.wrapper.main,ct.mainWrapper,l)},r.createElement(o.c,{fallback:e=>r.createElement(st,e)},t)),!n&&r.createElement(tt,null))}},8164:(e,t,n)=>{"use strict";n.d(t,{c:()=>d});var r=n(5072),a=n(1504),o=n(6016),i=n(964),l=n(8264),s=n(1824),c=n(4656);function u(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,i.c)(t.src),dark:(0,i.c)(t.srcDark||t.src)},l=a.createElement(c.c,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?a.createElement("div",{className:r},l):l}function d(e){const{siteConfig:{title:t}}=(0,l.c)(),{navbar:{title:n,logo:c}}=(0,s.y)(),{imageClassName:d,titleClassName:p,...f}=e,m=(0,i.c)(c?.href||"/"),h=n?"":t,g=c?.alt??h;return a.createElement(o.c,(0,r.c)({to:m},f,c?.target&&{target:c.target}),c&&a.createElement(u,{logo:c,alt:g,imageClassName:d}),null!=n&&a.createElement("b",{className:p},n))}},8712:(e,t,n)=>{"use strict";n.d(t,{c:()=>o});var r=n(1504),a=n(6952);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return r.createElement(a.c,null,t&&r.createElement("meta",{name:"docusaurus_locale",content:t}),n&&r.createElement("meta",{name:"docusaurus_version",content:n}),o&&r.createElement("meta",{name:"docusaurus_tag",content:o}),i&&r.createElement("meta",{name:"docsearch:language",content:i}),n&&r.createElement("meta",{name:"docsearch:version",content:n}),o&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:o}))}},4656:(e,t,n)=>{"use strict";n.d(t,{c:()=>c});var r=n(5072),a=n(1504),o=n(4971),i=n(3664),l=n(6528);const s={themedImage:"themedImage_ToTc","themedImage--light":"themedImage--light_HNdA","themedImage--dark":"themedImage--dark_i4oU"};function c(e){const t=(0,i.c)(),{colorMode:n}=(0,l.U)(),{sources:c,className:u,alt:d,...p}=e,f=t?"dark"===n?["dark"]:["light"]:["light","dark"];return a.createElement(a.Fragment,null,f.map((e=>a.createElement("img",(0,r.c)({key:e,src:c[e],alt:d,className:(0,o.c)(s.themedImage,s[`themedImage--${e}`],u)},p)))))}},8448:(e,t,n)=>{"use strict";n.d(t,{U:()=>g,a:()=>s});var r=n(5072),a=n(1504),o=n(8684),i=n(3856);const l="ease-in-out";function s(e){let{initialState:t}=e;const[n,r]=(0,a.useState)(t??!1),o=(0,a.useCallback)((()=>{r((e=>!e))}),[]);return{collapsed:n,setCollapsed:r,toggleCollapsed:o}}const c={display:"none",overflow:"hidden",height:"0px"},u={display:"block",overflow:"visible",height:"auto"};function d(e,t){const n=t?c:u;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function p(e){let{collapsibleRef:t,collapsed:n,animation:r}=e;const o=(0,a.useRef)(!1);(0,a.useEffect)((()=>{const e=t.current;function a(){const t=e.scrollHeight,n=r?.duration??function(e){if((0,i.I)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${r?.easing??l}`,height:`${t}px`}}function s(){const t=a();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return d(e,n),void(o.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(s(),requestAnimationFrame((()=>{e.style.height=c.height,e.style.overflow=c.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{s()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,r])}function f(e){if(!o.c.canUseDOM)return e?c:u}function m(e){let{as:t="div",collapsed:n,children:r,animation:o,onCollapseTransitionEnd:i,className:l,disableSSRStyle:s}=e;const c=(0,a.useRef)(null);return p({collapsibleRef:c,collapsed:n,animation:o}),a.createElement(t,{ref:c,style:s?void 0:f(n),onTransitionEnd:e=>{"height"===e.propertyName&&(d(c.current,n),i?.(n))},className:l},r)}function h(e){let{collapsed:t,...n}=e;const[o,i]=(0,a.useState)(!t),[l,s]=(0,a.useState)(t);return(0,a.useLayoutEffect)((()=>{t||i(!0)}),[t]),(0,a.useLayoutEffect)((()=>{o&&s(t)}),[o,t]),o?a.createElement(m,(0,r.c)({},n,{collapsed:l})):null}function g(e){let{lazy:t,...n}=e;const r=t?h:m;return a.createElement(r,n)}},3868:(e,t,n)=>{"use strict";n.d(t,{el:()=>m,qu:()=>f});var r=n(1504),a=n(3664),o=n(1148),i=n(1100),l=n(1824);const s=(0,o.GS)("docusaurus.announcement.dismiss"),c=(0,o.GS)("docusaurus.announcement.id"),u=()=>"true"===s.get(),d=e=>s.set(String(e)),p=r.createContext(null);function f(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.y)(),t=(0,a.c)(),[n,o]=(0,r.useState)((()=>!!t&&u()));(0,r.useEffect)((()=>{o(u())}),[]);const i=(0,r.useCallback)((()=>{d(!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&&d(!1),!r&&u()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return r.createElement(p.Provider,{value:n},t)}function m(){const e=(0,r.useContext)(p);if(!e)throw new i.AH("AnnouncementBarProvider");return e}},6528:(e,t,n)=>{"use strict";n.d(t,{C:()=>h,U:()=>g});var r=n(1504),a=n(8684),o=n(1100),i=n(1148),l=n(1824);const s=r.createContext(void 0),c="theme",u=(0,i.GS)(c),d={light:"light",dark:"dark"},p=e=>e===d.dark?d.dark:d.light,f=e=>a.c.canUseDOM?p(document.documentElement.getAttribute("data-theme")):p(e),m=e=>{u.set(p(e))};function h(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.y)(),[a,o]=(0,r.useState)(f(e));(0,r.useEffect)((()=>{t&&u.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(o(t),a&&m(t)):(o(n?window.matchMedia("(prefers-color-scheme: dark)").matches?d.dark:d.light:e),u.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=u.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===d.dark},setLightTheme(){i(d.light)},setDarkTheme(){i(d.dark)}})),[a,i])}();return r.createElement(s.Provider,{value:n},t)}function g(){const e=(0,r.useContext)(s);if(null==e)throw new o.AH("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},4592:(e,t,n)=>{"use strict";n.d(t,{gc:()=>g,iy:()=>v});var r=n(1504),a=n(2840),o=n(2488),i=n(1824),l=n(9940),s=n(1100),c=n(1148);const u=e=>`docs-preferred-version-${e}`,d={save:(e,t,n)=>{(0,c.GS)(u(e),{persistence:t}).set(n)},read:(e,t)=>(0,c.GS)(u(e),{persistence:t}).get(),clear:(e,t)=>{(0,c.GS)(u(e),{persistence:t}).del()}},p=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const f=r.createContext(null);function m(){const e=(0,a.L0)(),t=(0,i.y)().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=d.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(d.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){d.save(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function h(e){let{children:t}=e;const n=m();return r.createElement(f.Provider,{value:n},t)}function g(e){let{children:t}=e;return l.c1?r.createElement(h,null,t):r.createElement(r.Fragment,null,t)}function b(){const e=(0,r.useContext)(f);if(!e)throw new s.AH("DocsPreferredVersionContextProvider");return e}function v(e){void 0===e&&(e=o.M);const t=(0,a.OK)(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])}}},6192:(e,t,n)=>{"use strict";n.d(t,{m:()=>s,y:()=>l});var r=n(1504),a=n(1100);const o=Symbol("EmptyContext"),i=r.createContext(o);function l(e){let{children:t,name:n,items:a}=e;const o=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return r.createElement(i.Provider,{value:o},t)}function s(){const e=(0,r.useContext)(i);if(e===o)throw new a.AH("DocsSidebarProvider");return e}},9920:(e,t,n)=>{"use strict";n.d(t,{E:()=>l,Q:()=>i});var r=n(1504),a=n(1100);const o=r.createContext(null);function i(e){let{children:t,version:n}=e;return r.createElement(o.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(o);if(null===e)throw new a.AH("DocsVersionProvider");return e}},1336:(e,t,n)=>{"use strict";n.d(t,{y:()=>p,q:()=>f});var r=n(1504),a=n(5168),o=n(1432),i=n(5592),l=(n(4),n(1100));function s(e){!function(e){const t=(0,i.Uz)(),n=(0,l.yA)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}var c=n(1824);const u=r.createContext(void 0);function d(){const e=function(){const e=(0,a.MF)(),{items:t}=(0,c.y)().navbar;return 0===t.length&&!e.component}(),t=(0,o.U)(),n=!e&&"mobile"===t,[i,l]=(0,r.useState)(!1);s((()=>{if(i)return l(!1),!1}));const u=(0,r.useCallback)((()=>{l((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&l(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:u,shown:i})),[e,n,u,i])}function p(e){let{children:t}=e;const n=d();return r.createElement(u.Provider,{value:n},t)}function f(){const e=r.useContext(u);if(void 0===e)throw new l.AH("NavbarMobileSidebarProvider");return e}},5168:(e,t,n)=>{"use strict";n.d(t,{MF:()=>l,Mx:()=>s,Ub:()=>i});var r=n(1504),a=n(1100);const o=r.createContext(null);function i(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return r.createElement(o.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(o);if(!e)throw new a.AH("NavbarSecondaryMenuContentProvider");return e[0]}function s(e){let{component:t,props:n}=e;const i=(0,r.useContext)(o);if(!i)throw new a.AH("NavbarSecondaryMenuContentProvider");const[,l]=i,s=(0,a.Mh)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},204:(e,t,n)=>{"use strict";n.d(t,{m:()=>a,W:()=>o});var r=n(1504);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)}}),[])}},1432:(e,t,n)=>{"use strict";n.d(t,{U:()=>c});var r=n(1504),a=n(8684);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function l(){return a.c.canUseDOM?window.innerWidth>i?o.desktop:o.mobile:o.ssr}const s=!1;function c(){const[e,t]=(0,r.useState)((()=>s?"ssr":l()));return(0,r.useEffect)((()=>{function e(){t(l())}const n=s?window.setTimeout(e,1e3):void 0;return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e),clearTimeout(n)}}),[]),e}},5864:(e,t,n)=>{"use strict";n.d(t,{W:()=>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",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:{}}},3856:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{I:()=>r})},9940:(e,t,n)=>{"use strict";n.d(t,{ML:()=>_,OQ:()=>m,Md:()=>v,c1:()=>p,wt:()=>h,_4:()=>f,sr:()=>E,b7:()=>x,Qf:()=>S,Ab:()=>k,js:()=>w});var r=n(1504),a=n(5592),o=n(5464),i=n(2840),l=n(4592),s=n(9920),c=n(6192);function u(e){return Array.from(new Set(e))}var d=n(3376);const p=!!i.L0;function f(e){const t=(0,s.E)();if(!e)return;const n=t.docs[e];if(!n)throw new Error(`no version doc found by id=${e}`);return n}function m(e){if(e.href)return e.href;for(const t of e.items){if("link"===t.type)return t.href;if("category"===t.type){const e=m(t);if(e)return e}}}function h(){const{pathname:e}=(0,a.IT)(),t=(0,c.m)();if(!t)throw new Error("Unexpected: cant find current sidebar in context");const n=y({sidebarItems:t.items,pathname:e,onlyCategories:!0}).slice(-1)[0];if(!n)throw new Error(`${e} is not associated with a category. useCurrentSidebarCategory() should only be used on category index pages.`);return n}const g=(e,t)=>void 0!==e&&(0,d.Sc)(e,t),b=(e,t)=>e.some((e=>v(e,t)));function v(e,t){return"link"===e.type?g(e.href,t):"category"===e.type&&(g(e.href,t)||b(e.items,t))}function y(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.Sc)(o.href,n)||e(o.items))||"link"===o.type&&(0,d.Sc)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function w(){const e=(0,c.m)(),{pathname:t}=(0,a.IT)(),n=(0,i.UF)()?.pluginData.breadcrumbs;return!1!==n&&e?y({sidebarItems:e.items,pathname:t}):null}function x(e){const{activeVersion:t}=(0,i.wB)(e),{preferredVersion:n}=(0,l.iy)(e),a=(0,i.aA)(e);return(0,r.useMemo)((()=>u([t,n,a].filter(Boolean))),[t,n,a])}function k(e,t){const n=x(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=x(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- ${u(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function E(e){let{route:t,versionMetadata:n}=e;const r=(0,a.IT)(),i=t.routes,l=i.find((e=>(0,a.ot)(r.pathname,e)));if(!l)return null;const s=l.sidebar,c=s?n.docsSidebars[s]:void 0;return{docElement:(0,o.k)(i),sidebarName:s,sidebarItems:c}}function _(e){return e.filter((e=>"category"!==e.type||!!m(e)))}},5756:(e,t,n)=>{"use strict";n.d(t,{cr:()=>p,U7:()=>u,w7:()=>f});var r=n(1504),a=n(4971),o=n(6952),i=n(5548);function l(){const e=r.useContext(i.e);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(964),c=n(8264);function u(e){let{title:t,description:n,keywords:a,image:i,children:l}=e;const u=function(e){const{siteConfig:t}=(0,c.c)(),{title:n,titleDelimiter:r}=t;return e?.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,s.E)(),p=i?d(i,{absolute:!0}):void 0;return r.createElement(o.c,null,t&&r.createElement("title",null,u),t&&r.createElement("meta",{property:"og:title",content:u}),n&&r.createElement("meta",{name:"description",content:n}),n&&r.createElement("meta",{property:"og:description",content:n}),a&&r.createElement("meta",{name:"keywords",content:Array.isArray(a)?a.join(","):a}),p&&r.createElement("meta",{property:"og:image",content:p}),p&&r.createElement("meta",{name:"twitter:image",content:p}),l)}const d=r.createContext(void 0);function p(e){let{className:t,children:n}=e;const i=r.useContext(d),l=(0,a.c)(i,t);return r.createElement(d.Provider,{value:l},r.createElement(o.c,null,r.createElement("html",{className:l})),n)}function f(e){let{children:t}=e;const n=l(),o=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const i=`plugin-id-${n.plugin.id}`;return r.createElement(p,{className:(0,a.c)(o,i)},t)}},1100:(e,t,n)=>{"use strict";n.d(t,{AH:()=>l,Mh:()=>s,i0:()=>i,qY:()=>c,yA:()=>o});var r=n(1504);const a=n(8684).c.canUseDOM?r.useLayoutEffect:r.useEffect;function o(e){const t=(0,r.useRef)(e);return a((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function i(e){const t=(0,r.useRef)();return a((()=>{t.current=e})),t.current}class l 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 s(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 r.createElement(r.Fragment,null,e.reduceRight(((e,t)=>r.createElement(t,null,e)),n))}}},3376:(e,t,n)=>{"use strict";n.d(t,{Sc:()=>i,Y5:()=>l});var r=n(1504),a=n(628),o=n(8264);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.c)().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.c,baseUrl:e})),[e])}},3943:(e,t,n)=>{"use strict";n.d(t,{S2:()=>s,SM:()=>d,yI:()=>p});var r=n(1504),a=n(8684),o=n(3664),i=n(1100);const l=r.createContext(void 0);function s(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 r.createElement(l.Provider,{value:n},t)}function c(){const e=(0,r.useContext)(l);if(null==e)throw new i.AH("ScrollControllerProvider");return e}const u=()=>a.c.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function d(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=c(),a=(0,r.useRef)(u()),o=(0,i.yA)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=u();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 p(){const e=(0,r.useRef)(null),t=(0,o.c)()&&"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?.()}}},4456:(e,t,n)=>{"use strict";n.d(t,{SE:()=>a,e6:()=>r});n(8264);const r="default";function a(e,t){return`docs-${e}-${t}`}},1148:(e,t,n)=>{"use strict";n.d(t,{GS:()=>s});n(1504),n(4);const r="localStorage";function a(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 o(e){if(void 0===e&&(e=r),"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,i||(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),i=!0),null}var t}let i=!1;const l={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function s(e,t){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}}(e);const n=o(t?.persistence);return null===n?l:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),a({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),a({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,r),()=>{}}}}}},1616:(e,t,n)=>{"use strict";n.d(t,{D:()=>i});var r=n(8264),a=n(5592),o=n(5684);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:l}}=(0,r.c)(),{pathname:s}=(0,a.IT)(),c=(0,o.applyTrailingSlash)(s,{trailingSlash:n,baseUrl:e}),u=l===i?e:e.replace(`/${l}/`,"/"),d=c.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:r}=e;return`${r?t:""}${function(e){return e===i?`${u}`:`${u}${e}/`}(n)}${d}`}}}},7124:(e,t,n)=>{"use strict";n.d(t,{c:()=>i});var r=n(1504),a=n(5592),o=n(1100);function i(e){const t=(0,a.IT)(),n=(0,o.i0)(t),i=(0,o.yA)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},1824:(e,t,n)=>{"use strict";n.d(t,{y:()=>a});var r=n(8264);function a(){return(0,r.c)().siteConfig.themeConfig}},1600:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[a]=e.split(/[#?]/),o="/"===a||a===r?a:(i=a,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(a,o)}},4292:(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]}},5684: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.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var a=n(1600);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}});var o=n(4292);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return o.getErrorCausalChain}})},4971:(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,{c:()=>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}},8064:(e,t,n)=>{"use strict";n.d(t,{iU:()=>w,Yf:()=>C,gh:()=>f,Wi:()=>A,Ep:()=>p});var r=n(5072);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),c=l||s;if(e&&a(e)?i=r:r.length&&(i.pop(),i=i.concat(r)),!i.length)return"/";if(i.length){var u=i[i.length-1];n="."===u||".."===u||""===u}else n=!1;for(var d=0,p=i.length;p>=0;p--){var f=i[p];"."===f?o(i,p):".."===f?(o(i,p),d++):d&&(o(i,p),d--)}if(!c)for(;d--;d)i.unshift("..");!c||""===i[0]||i[0]&&a(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var l=n(4812);function s(e){return"/"===e.charAt(0)?e:"/"+e}function c(e){return"/"===e.charAt(0)?e.substr(1):e}function u(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 p(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 f(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.c)({},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 m(){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 h=!("undefined"==typeof window||!window.document||!window.document.createElement);function g(e,t){t(window.confirm(e))}var b="popstate",v="hashchange";function y(){try{return window.history.state||{}}catch(e){return{}}}function w(e){void 0===e&&(e={}),h||(0,l.c)(!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,c=i.forceRefresh,w=void 0!==c&&c,x=i.getUserConfirmation,k=void 0===x?g:x,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=u(o,_)),f(o,r,n)}function T(){return Math.random().toString(36).substr(2,E)}var A=m();function L(e){(0,r.c)(U,e),U.length=n.length,A.notifyListeners(U.location,U.action)}function N(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||O(C(e.state))}function R(){O(C(y()))}var P=!1;function O(e){if(P)P=!1,L();else{A.confirmTransitionTo(e,"POP",k,(function(t){t?L({action:"POP",location:e}):function(e){var t=U.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&&(P=!0,F(a))}(e)}))}}var D=C(y()),I=[D.key];function M(e){return _+p(e)}function F(e){n.go(e)}var B=0;function j(e){1===(B+=e)&&1===e?(window.addEventListener(b,N),o&&window.addEventListener(v,R)):0===B&&(window.removeEventListener(b,N),o&&window.removeEventListener(v,R))}var z=!1;var U={length:n.length,action:"POP",location:D,createHref:M,push:function(e,t){var r="PUSH",o=f(e,t,T(),U.location);A.confirmTransitionTo(o,r,k,(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(U.location.key),c=I.slice(0,s+1);c.push(o.key),I=c,L({action:r,location:o})}else window.location.href=t}}))},replace:function(e,t){var r="REPLACE",o=f(e,t,T(),U.location);A.confirmTransitionTo(o,r,k,(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(U.location.key);-1!==s&&(I[s]=o.key),L({action:r,location:o})}else window.location.replace(t)}}))},go:F,goBack:function(){F(-1)},goForward:function(){F(1)},block:function(e){void 0===e&&(e=!1);var t=A.setPrompt(e);return z||(j(1),z=!0),function(){return z&&(z=!1,j(-1)),t()}},listen:function(e){var t=A.appendListener(e);return j(1),function(){j(-1),t()}}};return U}var x="hashchange",k={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+c(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:c,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={}),h||(0,l.c)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),a=n.getUserConfirmation,o=void 0===a?g:a,i=n.hashType,c=void 0===i?"slash":i,b=e.basename?d(s(e.basename)):"",v=k[c],y=v.encodePath,w=v.decodePath;function C(){var e=w(E());return b&&(e=u(e,b)),f(e)}var T=m();function A(e){(0,r.c)(z,e),z.length=t.length,T.notifyListeners(z.location,z.action)}var L=!1,N=null;function R(){var e,t,n=E(),r=y(n);if(n!==r)_(r);else{var a=C(),i=z.location;if(!L&&(t=a,(e=i).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(N===p(a))return;N=null,function(e){if(L)L=!1,A();else{var t="POP";T.confirmTransitionTo(e,t,o,(function(n){n?A({action:t,location:e}):function(e){var t=z.location,n=I.lastIndexOf(p(t));-1===n&&(n=0);var r=I.lastIndexOf(p(e));-1===r&&(r=0);var a=n-r;a&&(L=!0,M(a))}(e)}))}}(a)}}var P=E(),O=y(P);P!==O&&_(O);var D=C(),I=[p(D)];function M(e){t.go(e)}var F=0;function B(e){1===(F+=e)&&1===e?window.addEventListener(x,R):0===F&&window.removeEventListener(x,R)}var j=!1;var z={length:t.length,action:"POP",location:D,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=S(window.location.href)),n+"#"+y(b+p(e))},push:function(e,t){var n="PUSH",r=f(e,void 0,void 0,z.location);T.confirmTransitionTo(r,n,o,(function(e){if(e){var t=p(r),a=y(b+t);if(E()!==a){N=t,function(e){window.location.hash=e}(a);var o=I.lastIndexOf(p(z.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=f(e,void 0,void 0,z.location);T.confirmTransitionTo(r,n,o,(function(e){if(e){var t=p(r),a=y(b+t);E()!==a&&(N=t,_(a));var o=I.indexOf(p(z.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 j||(B(1),j=!0),function(){return j&&(j=!1,B(-1)),t()}},listen:function(e){var t=T.appendListener(e);return B(1),function(){B(-1),t()}}};return z}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,c=void 0===s?6:s,u=m();function d(e){(0,r.c)(w,e),w.length=w.entries.length,u.notifyListeners(w.location,w.action)}function h(){return Math.random().toString(36).substr(2,c)}var g=T(l,0,o.length-1),b=o.map((function(e){return f(e,void 0,"string"==typeof e?h():e.key||h())})),v=p;function y(e){var t=T(w.index+e,0,w.entries.length-1),r=w.entries[t];u.confirmTransitionTo(r,"POP",n,(function(e){e?d({action:"POP",location:r,index:t}):d()}))}var w={length:b.length,action:"POP",location:b[g],index:g,entries:b,createHref:v,push:function(e,t){var r="PUSH",a=f(e,t,h(),w.location);u.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=f(e,t,h(),w.location);u.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(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),u.setPrompt(e)},listen:function(e){return u.appendListener(e)}};return w}},4792:(e,t,n)=>{"use strict";var r=n(2168),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 c=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var a=f(n);a&&a!==m&&e(t,a,r)}var i=u(n);d&&(i=i.concat(d(n)));for(var l=s(t),h=s(n),g=0;g<i.length;++g){var b=i[g];if(!(o[b]||r&&r[b]||h&&h[b]||l&&l[b])){var v=p(n,b);try{c(t,b,v)}catch(y){}}}}return t}},9328: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 c=[n,r,a,o,i,l],u=0;(s=new Error(t.replace(/%s/g,(function(){return c[u++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},9600:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},1462:(e,t,n)=>{"use strict";n.r(t)},1496:(e,t,n)=>{"use strict";n.r(t)},2272: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),c=o.querySelector(r.barSelector),u=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(c,i(e,u,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(o,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),u)}),u)):setTimeout(t,u)})),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");u(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),c=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&f(a),c!=document.body&&u(c,"nprogress-custom-parent"),c.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&&f(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 c(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function u(e,t){var n=p(e),r=n+t;c(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);c(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(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)},9456:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(a){return!1}}()?Object.assign:function(e,a){for(var o,i,l=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),s=1;s<arguments.length;s++){for(var c in o=Object(arguments[s]))n.call(o,c)&&(l[c]=o[c]);if(t){i=t(o);for(var u=0;u<i.length;u++)r.call(o,i[u])&&(l[i[u]]=o[i[u]])}}return l}},6724:(e,t,n)=>{"use strict";n.d(t,{c:()=>o});var r=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 c=a[e];return a[e]=i,r.languages.DFS(r.languages,(function(t,n){n===c&&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],c=r.util.type(s);"Object"!==c||o[i(s)]?"Array"!==c||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};return r.hooks.run("before-tokenize",o),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){var t=[],n=e.head.next;for(;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,u,d){for(var p in n)if(n.hasOwnProperty(p)&&n[p]){var f=n[p];f=Array.isArray(f)?f:[f];for(var m=0;m<f.length;++m){if(d&&d.cause==p+","+m)return;var h=f[m],g=h.inside,b=!!h.lookbehind,v=!!h.greedy,y=h.alias;if(v&&!h.pattern.global){var w=h.pattern.toString().match(/[imsuy]*$/)[0];h.pattern=RegExp(h.pattern.source,w+"g")}for(var x=h.pattern||h,k=l.next,S=u;k!==t.tail&&!(d&&S>=d.reach);S+=k.value.length,k=k.next){var E=k.value;if(t.length>e.length)return;if(!(E instanceof a)){var _,C=1;if(v){if(!(_=o(x,S,e,b))||_.index>=e.length)break;var T=_.index,A=_.index+_[0].length,L=S;for(L+=k.value.length;T>=L;)L+=(k=k.next).value.length;if(S=L-=k.value.length,k.value instanceof a)continue;for(var N=k;N!==t.tail&&(L<A||"string"==typeof N.value);N=N.next)C++,L+=N.value.length;C--,E=e.slice(S,L),_.index-=S}else if(!(_=o(x,0,E,b)))continue;T=_.index;var R=_[0],P=E.slice(0,T),O=E.slice(T+R.length),D=S+E.length;d&&D>d.reach&&(d.reach=D);var I=k.prev;if(P&&(I=s(t,I,P),S+=P.length),c(t,I,C),k=s(t,I,new a(p,g?r.tokenize(R,g):R,y,R)),O&&s(t,k,O),C>1){var M={cause:p+","+m,reach:D};i(e,t,n,k.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 c(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}(),a=r;r.default=r,a.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"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.languages.markup.doctype.inside["internal-subset"].inside=a.languages.markup,a.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(a.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:a.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i;var r={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:a.languages[t]};var o={};o[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},a.languages.insertBefore("markup","cdata",o)}}),Object.defineProperty(a.languages.markup.tag,"addAttribute",{value:function(e,t){a.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:a.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.xml=a.languages.extend("markup",{}),a.languages.ssml=a.languages.xml,a.languages.atom=a.languages.xml,a.languages.rss=a.languages.xml,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+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},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|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|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|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","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.shell=e.languages.bash}(a),a.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:/[{}[\];(),.:]/},a.languages.c=a.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|[?:~]|[-+*/%&|^!=<>]=?/}),a.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),a.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},a.languages.c.string],char:a.languages.c.char,comment:a.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:a.languages.c}}}}),a.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 a.languages.c.boolean,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"])}(a),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,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;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(a),function(e){var t,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;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("\\[(?:[^[\\]\"']|"+n.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":[n,{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}});var r={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},a={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|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:r,number:a,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:a})}(a),a.languages.javascript=a.languages.extend("clike",{"class-name":[a.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}|\?\?=?|\?\.?|[~:]/}),a.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,a.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:a.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:a.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:a.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:a.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:a.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),a.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:a.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"}}),a.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),a.languages.markup&&(a.languages.markup.tag.addInlined("script","javascript"),a.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")),a.languages.js=a.languages.javascript,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}(a),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}(a),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;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=t[n];if("code"===a.type){var o=a.content[1],i=a.content[3];if(o&&i&&"code-language"===o.type&&"code-block"===i.type&&"string"==typeof o.content){var l=o.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp"),s="language-"+(l=(/[a-z][\w-]*/i.exec(l)||[""])[0].toLowerCase());i.alias?"string"==typeof i.alias?i.alias=[i.alias,s]:i.alias.push(s):i.alias=[s]}}else e(a.content)}}(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],c=/language-(.+)/.exec(o);if(c){n=c[1];break}}var u,d=e.languages[n];if(d)t.content=e.highlight((u=t.content,u.replace(i,"").replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,(function(e,t){var n;if("#"===(t=t.toLowerCase())[0])return n="x"===t[1]?parseInt(t.slice(2),16):Number(t.slice(1)),s(n);var r=l[t];return r||e}))),d,n);else if(n&&"none"!==n&&e.plugins.autoloader){var p="md-"+(new Date).valueOf()+"-"+Math.floor(1e16*Math.random());t.attributes.id=p,e.plugins.autoloader.loadLanguages(n,(function(){var t=document.getElementById(p);t&&(t.innerHTML=e.highlight(t.textContent,e.languages[n],n))}))}}}));var i=RegExp(e.languages.markup.tag.pattern.source,"gi"),l={amp:"&",lt:"<",gt:">",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(a),a.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:a.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+/},a.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"])&&"("===u(1).content){n+=2;var o=p(/^\($/,/^\)$/);if(-1===o)continue;for(;n<o;n++){var i=u(0);"variable"===i.type&&(f(i,"variable-input"),a.push(i.content))}n=o+1}if(d(["punctuation","property-query"])&&"{"===u(0).content&&(n++,f(u(0),"property-mutation"),a.length>0)){var l=p(/^\{$/,/^\}$/);if(-1===l)continue;for(var s=n;s<l;s++){var c=t[s];"variable"===c.type&&a.indexOf(c.content)>=0&&f(c,"variable-input")}}}}function u(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n<e.length;n++){var r=u(n+t);if(!r||r.type!==e[n])return!1}return!0}function p(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 f(e,t){var n=e.alias;n?Array.isArray(n)||(e.alias=n=[n]):e.alias=n=[],n.push(t)}})),a.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(e,t){return"___"+t.toUpperCase()+"_"+e+"___"}function s(t,n,r){var a={code:t,grammar:n,language:r};return e.hooks.run("before-tokenize",a),a.tokens=e.tokenize(a.code,a.grammar),e.hooks.run("after-tokenize",a),a.tokens}function c(t){var n={};n["interpolation-punctuation"]=a;var o=e.tokenize(t,n);if(3===o.length){var i=[1,1];i.push.apply(i,s(o[1],e.languages.javascript,"javascript")),o.splice.apply(o,i)}return new e.Token("interpolation",o,r.alias,t)}function u(t,n,r){var a=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),i=0,u={},d=s(a.map((function(e){if("string"==typeof e)return e;for(var n,a=e.content;-1!==t.indexOf(n=l(i++,r)););return u[n]=a,n})).join(""),n,r),p=Object.keys(u);return i=0,function e(t){for(var n=0;n<t.length;n++){if(i>=p.length)return;var r=t[n];if("string"==typeof r||"string"==typeof r.content){var a=p[i],o="string"==typeof r?r:r.content,l=o.indexOf(a);if(-1!==l){++i;var s=o.substring(0,l),d=c(u[a]),f=o.substring(l+a.length),m=[];if(s&&m.push(s),m.push(d),f){var h=[f];e(h),m.push.apply(m,h)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(m)),n+=m.length-1):r.content=m}}else{var g=r.content;Array.isArray(g)?e(g):e([g])}}}(d),new e.Token(r,d,"language-"+r,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 d={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function p(e){return"string"==typeof e?e:Array.isArray(e)?e.map(p).join(""):p(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in d&&function t(n){for(var r=0,a=n.length;r<a;r++){var o=n[r];if("string"!=typeof o){var i=o.content;if(Array.isArray(i))if("template-string"===o.type){var l=i[1];if(3===i.length&&"string"!=typeof l&&"embedded-code"===l.type){var s=p(l),c=l.alias,d=Array.isArray(c)?c[0]:c,f=e.languages[d];if(!f)continue;i[1]=u(s,f,d)}}else t(i);else"string"!=typeof i&&t([i])}}}(t.tokens)}))}(a),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}(a),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];"RegExp"===e.util.type(o)&&(o=e.languages.javascript[a]={pattern:o});var i=o.inside||{};o.inside=i,i["maybe-class-name"]=/^[A-Z][\s\S]*/}}(a),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)}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 i=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(i).join(""):""},l=function(t){for(var n=[],r=0;r<t.length;r++){var a=t[r],o=!1;if("string"!=typeof a&&("tag"===a.type&&a.content[0]&&"tag"===a.content[0].type?"</"===a.content[0].content[0].content?n.length>0&&n[n.length-1].tagName===i(a.content[0].content[1])&&n.pop():"/>"===a.content[a.content.length-1].content||n.push({tagName:i(a.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===a.type&&"{"===a.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===a.type&&"}"===a.content?n[n.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&n.length>0&&0===n[n.length-1].openedBraces){var s=i(a);r<t.length-1&&("string"==typeof t[r+1]||"plain-text"===t[r+1].type)&&(s+=i(t[r+1]),t.splice(r+1,1)),r>0&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(s=i(t[r-1])+s,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",s,null,s)}a.content&&"string"!=typeof a.content&&l(a.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||l(e.tokens)}))}(a),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})}(a),a.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},a.languages.go=a.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/}),a.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete a.languages.go["class-name"],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 c=l[s];if("string"==typeof c||c.content&&"string"==typeof c.content){var u=o[a],d=n.tokenStack[u],p="string"==typeof c?c:c.content,f=t(r,u),m=p.indexOf(f);if(m>-1){++a;var h=p.substring(0,m),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),b=p.substring(m+f.length),v=[];h&&v.push.apply(v,i([h])),v.push(g),b&&v.push.apply(v,i([b])),"string"==typeof c?l.splice.apply(l,[s,1].concat(v)):c.content=v}}else c.content&&i(c.content)}return l}(n.tokens)}}}})}(a),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:false|true)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")})),e.languages.hbs=e.languages.handlebars}(a),a.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},a.languages.webmanifest=a.languages.json,a.languages.less=a.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),a.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),a.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"builtin-target":{pattern:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,alias:"builtin"},target:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,alias:"symbol",inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,function:{pattern:/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,lookbehind:!0},operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},a.languages.objectivec=a.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 a.languages.objectivec["class-name"],a.languages.objc=a.languages.objectivec,a.languages.ocaml={comment:{pattern:/\(\*[\s\S]*?\*\)/,greedy:!0},char:{pattern:/'(?:[^\\\r\n']|\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,greedy:!0},string:[{pattern:/"(?:\\(?:[\s\S]|\r\n)|[^\\\r\n"])*"/,greedy:!0},{pattern:/\{([a-z_]*)\|[\s\S]*?\|\1\}/,greedy:!0}],number:[/\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\b/i,/\b0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]*)?(?:p[+-]?\d[\d_]*)?(?!\w)/i,/\b\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?\d[\d_]*)?(?!\w)/i],directive:{pattern:/\B#\w+/,alias:"property"},label:{pattern:/\B~\w+/,alias:"property"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"symbol"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,"operator-like-punctuation":{pattern:/\[[<>|]|[>|]\]|\{<|>\}/,alias:"punctuation"},operator:/\.[.~]|:[=>]|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/;;|::|[(){}\[\].,:;#]|\b_\b/},a.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:/[{}[\];(),.:]/},a.languages.python["string-interpolation"].inside.interpolation.inside.rest=a.languages.python,a.languages.py=a.languages.python,a.languages.reason=a.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/}),a.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 a.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(a),a.languages.scss=a.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),a.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),a.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),a.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),a.languages.scss.atrule.inside.rest=a.languages.scss,function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},r={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:else|for|if|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?: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|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)\b/i,{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,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};r.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:r}},r.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:r}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:r}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:r}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:r}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:r.interpolation}},rest:r}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:r.interpolation,comment:r.comment,punctuation:/[{},]/}},func:r.func,string:r.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:r.interpolation,punctuation:/[{}()\[\];:.]/}}(a),function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var n=e.languages.tsx.tag;n.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+n.pattern.source+")",n.pattern.flags),n.lookbehind=!0}(a),a.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/};const o=a},7248:e=>{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to <a href="https://webplatform.github.io/docs/">WebPlatform.org documentation</a>. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (<code>.comment</code> can become <code>.namespace--comment</code>) or replace them with your defined ones (like <code>.editor__comment</code>). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the <code>highlightAll</code> and <code>highlightAllUnder</code> methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},452:(e,t,n)=>{const r=n(7248),a=n(8284),o=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...o,...Object.keys(Prism.languages)];a(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(1976).resolve(t)],delete Prism.languages[e],n(1976)(t),o.add(e)}))}i.silent=!1,e.exports=i},8660:(e,t,n)=>{var r={"./":452};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=8660},1976:(e,t,n)=>{var r={"./":452};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=1976},8284:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n<r;n++)t[e[n]]=!0;return t}function r(e){var n={},r=[];function a(r,o){if(!(r in n)){o.push(r);var i=o.indexOf(r);if(i<o.length-1)throw new Error("Circular dependency: "+o.slice(i).join(" -> "));var l={},s=e[r];if(s){function c(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in l))for(var i in a(t,o),l[t]=!0,n[t])l[i]=!0}t(s.require,c),t(s.optional,c),t(s.modify,c)}n[r]=l,o.pop()}}return function(e){var t=n[e];return t||(a(e,r),t=n[e]),t}}function a(e){for(var t in e)return!0;return!1}return function(o,i,l){var s=function(e){var t={};for(var n in e){var r=e[n];for(var a in r)if("meta"!=a){var o=r[a];t[a]="string"==typeof o?{title:o}:o}}return t}(o),c=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var a in n={},e){var o=e[a];t(o&&o.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+a+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+a+" because it is a component.");n[t]=a}))}return n[r]||r}}(s);i=i.map(c),l=(l||[]).map(c);var u=n(i),d=n(l);i.forEach((function e(n){var r=s[n];t(r&&r.require,(function(t){t in d||(u[t]=!0,e(t))}))}));for(var p,f=r(s),m=u;a(m);){for(var h in p={},m){var g=s[h];t(g&&g.modify,(function(e){e in d&&(p[e]=!0)}))}for(var b in d)if(!(b in u))for(var v in f(b))if(v in u){p[b]=!0;break}for(var y in m=p)u[y]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,a){var o=a?a.series:void 0,i=a?a.parallel:e,l={},s={};function c(e){if(e in l)return l[e];s[e]=!0;var a,u=[];for(var d in t(e))d in n&&u.push(d);if(0===u.length)a=r(e);else{var p=i(u.map((function(e){var t=c(e);return delete s[e],t})));o?a=o(p,(function(){return r(e)})):r(e)}return l[e]=a}for(var u in n)c(u);var d=[];for(var p in s)d.push(l[p]);return i(d)}(f,u,t,n)}};return w}}();e.exports=t},9776:(e,t,n)=>{"use strict";var r=n(9143);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}},3268:(e,t,n)=>{e.exports=n(9776)()},9143:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},9516:(e,t,n)=>{"use strict";var r=n(1504),a=n(9456),o=n(4712);function i(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."}if(!r)throw Error(i(227));var l=new Set,s={};function c(e,t){u(e,t),u(e+"Capture",t)}function u(e,t){for(s[e]=t,e=0;e<t.length;e++)l.add(t[e])}var d=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),p=/^[: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]*$/,f=Object.prototype.hasOwnProperty,m={},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 b={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){b[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];b[t]=new g(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){b[e]=new g(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){b[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){b[e]=new g(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){b[e]=new g(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){b[e]=new g(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){b[e]=new g(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){b[e]=new g(e,5,!1,e.toLowerCase(),null,!1,!1)}));var v=/[\-:]([a-z])/g;function y(e){return e[1].toUpperCase()}function w(e,t,n,r){var a=b.hasOwnProperty(t)?b[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!!f.call(h,e)||!f.call(m,e)&&(p.test(e)?h[e]=!0:(m[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(v,y);b[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(v,y);b[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(v,y);b[t]=new g(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){b[e]=new g(e,1,!1,e.toLowerCase(),null,!1,!1)})),b.xlinkHref=new g("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){b[e]=new g(e,1,!1,e.toLowerCase(),null,!0,!0)}));var x=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,k=60103,S=60106,E=60107,_=60108,C=60114,T=60109,A=60110,L=60112,N=60113,R=60120,P=60115,O=60116,D=60121,I=60128,M=60129,F=60130,B=60131;if("function"==typeof Symbol&&Symbol.for){var j=Symbol.for;k=j("react.element"),S=j("react.portal"),E=j("react.fragment"),_=j("react.strict_mode"),C=j("react.profiler"),T=j("react.provider"),A=j("react.context"),L=j("react.forward_ref"),N=j("react.suspense"),R=j("react.suspense_list"),P=j("react.memo"),O=j("react.lazy"),D=j("react.block"),j("react.scope"),I=j("react.opaque.id"),M=j("react.debug_trace_mode"),F=j("react.offscreen"),B=j("react.legacy_hidden")}var z,U="function"==typeof Symbol&&Symbol.iterator;function $(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=U&&e[U]||e["@@iterator"])?e:null}function G(e){if(void 0===z)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);z=t&&t[1]||""}return"\n"+z+e}var q=!1;function H(e,t){if(!e||q)return"";q=!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(s){var r=s}Reflect.construct(e,[],t)}else{try{t.call()}catch(s){r=s}e.call(t.prototype)}else{try{throw Error()}catch(s){r=s}e()}}catch(s){if(s&&r&&"string"==typeof s.stack){for(var a=s.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])return"\n"+a[i].replace(" at new "," at ")}while(1<=i&&0<=l);break}}}finally{q=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?G(e):""}function V(e){switch(e.tag){case 5:return G(e.type);case 16:return G("Lazy");case 13:return G("Suspense");case 19:return G("SuspenseList");case 0:case 2:case 15:return e=H(e.type,!1);case 11:return e=H(e.type.render,!1);case 22:return e=H(e.type._render,!1);case 1:return e=H(e.type,!0);default:return""}}function W(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 E:return"Fragment";case S:return"Portal";case C:return"Profiler";case _:return"StrictMode";case N:return"Suspense";case R:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case A:return(e.displayName||"Context")+".Consumer";case T:return(e._context.displayName||"Context")+".Provider";case L:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case P:return W(e.type);case D:return W(e._render);case O:t=e._payload,e=e._init;try{return W(e(t))}catch(n){}}return null}function Y(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function K(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function Q(e){e._valueTracker||(e._valueTracker=function(e){var t=K(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 X(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=K(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function Z(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 J(e,t){var n=t.checked;return a({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function ee(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=Y(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 te(e,t){null!=(t=t.checked)&&w(e,"checked",t,!1)}function ne(e,t){te(e,t);var n=Y(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")?ae(e,t.type,n):t.hasOwnProperty("defaultValue")&&ae(e,t.type,Y(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function re(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 ae(e,t,n){"number"===t&&Z(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function oe(e,t){return e=a({children:void 0},t),(t=function(e){var t="";return r.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(t.children))&&(e.children=t),e}function ie(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=""+Y(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 le(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(i(91));return a({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function se(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(i(92));if(Array.isArray(n)){if(!(1>=n.length))throw Error(i(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:Y(n)}}function ce(e,t){var n=Y(t.value),r=Y(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 ue(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}var de={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function pe(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 fe(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?pe(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var me,he,ge=(he=function(e,t){if(e.namespaceURI!==de.svg||"innerHTML"in e)e.innerHTML=t;else{for((me=me||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=me.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 he(e,t)}))}:he);function be(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 ve={animationIterationCount:!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},ye=["Webkit","ms","Moz","O"];function we(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||ve.hasOwnProperty(e)&&ve[e]?(""+t).trim():t+"px"}function xe(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),a=we(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,a):e[n]=a}}Object.keys(ve).forEach((function(e){ye.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),ve[t]=ve[e]}))}));var ke=a({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 Se(e,t){if(t){if(ke[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(i(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(i(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(i(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(i(62))}}function Ee(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}}function _e(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var Ce=null,Te=null,Ae=null;function Le(e){if(e=na(e)){if("function"!=typeof Ce)throw Error(i(280));var t=e.stateNode;t&&(t=aa(t),Ce(e.stateNode,e.type,t))}}function Ne(e){Te?Ae?Ae.push(e):Ae=[e]:Te=e}function Re(){if(Te){var e=Te,t=Ae;if(Ae=Te=null,Le(e),t)for(e=0;e<t.length;e++)Le(t[e])}}function Pe(e,t){return e(t)}function Oe(e,t,n,r,a){return e(t,n,r,a)}function De(){}var Ie=Pe,Me=!1,Fe=!1;function Be(){null===Te&&null===Ae||(De(),Re())}function je(e,t){var n=e.stateNode;if(null===n)return null;var r=aa(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(i(231,t,typeof n));return n}var ze=!1;if(d)try{var Ue={};Object.defineProperty(Ue,"passive",{get:function(){ze=!0}}),window.addEventListener("test",Ue,Ue),window.removeEventListener("test",Ue,Ue)}catch(he){ze=!1}function $e(e,t,n,r,a,o,i,l,s){var c=Array.prototype.slice.call(arguments,3);try{t.apply(n,c)}catch(u){this.onError(u)}}var Ge=!1,qe=null,He=!1,Ve=null,We={onError:function(e){Ge=!0,qe=e}};function Ye(e,t,n,r,a,o,i,l,s){Ge=!1,qe=null,$e.apply(We,arguments)}function Ke(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(1026&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function Qe(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 Xe(e){if(Ke(e)!==e)throw Error(i(188))}function Ze(e){if(e=function(e){var t=e.alternate;if(!t){if(null===(t=Ke(e)))throw Error(i(188));return t!==e?null:e}for(var n=e,r=t;;){var a=n.return;if(null===a)break;var o=a.alternate;if(null===o){if(null!==(r=a.return)){n=r;continue}break}if(a.child===o.child){for(o=a.child;o;){if(o===n)return Xe(a),e;if(o===r)return Xe(a),t;o=o.sibling}throw Error(i(188))}if(n.return!==r.return)n=a,r=o;else{for(var l=!1,s=a.child;s;){if(s===n){l=!0,n=a,r=o;break}if(s===r){l=!0,r=a,n=o;break}s=s.sibling}if(!l){for(s=o.child;s;){if(s===n){l=!0,n=o,r=a;break}if(s===r){l=!0,r=o,n=a;break}s=s.sibling}if(!l)throw Error(i(189))}}if(n.alternate!==r)throw Error(i(190))}if(3!==n.tag)throw Error(i(188));return n.stateNode.current===n?e:t}(e),!e)return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}function Je(e,t){for(var n=e.alternate;null!==t;){if(t===e||t===n)return!0;t=t.return}return!1}var et,tt,nt,rt,at=!1,ot=[],it=null,lt=null,st=null,ct=new Map,ut=new Map,dt=[],pt="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 ft(e,t,n,r,a){return{blockedOn:e,domEventName:t,eventSystemFlags:16|n,nativeEvent:a,targetContainers:[r]}}function mt(e,t){switch(e){case"focusin":case"focusout":it=null;break;case"dragenter":case"dragleave":lt=null;break;case"mouseover":case"mouseout":st=null;break;case"pointerover":case"pointerout":ct.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":ut.delete(t.pointerId)}}function ht(e,t,n,r,a,o){return null===e||e.nativeEvent!==o?(e=ft(t,n,r,a,o),null!==t&&(null!==(t=na(t))&&tt(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==a&&-1===t.indexOf(a)&&t.push(a),e)}function gt(e){var t=ta(e.target);if(null!==t){var n=Ke(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=Qe(n)))return e.blockedOn=t,void rt(e.lanePriority,(function(){o.unstable_runWithPriority(e.priority,(function(){nt(n)}))}))}else if(3===t&&n.stateNode.hydrate)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function bt(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Zt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=na(n))&&tt(t),e.blockedOn=n,!1;t.shift()}return!0}function vt(e,t,n){bt(e)&&n.delete(t)}function yt(){for(at=!1;0<ot.length;){var e=ot[0];if(null!==e.blockedOn){null!==(e=na(e.blockedOn))&&et(e);break}for(var t=e.targetContainers;0<t.length;){var n=Zt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n){e.blockedOn=n;break}t.shift()}null===e.blockedOn&&ot.shift()}null!==it&&bt(it)&&(it=null),null!==lt&&bt(lt)&&(lt=null),null!==st&&bt(st)&&(st=null),ct.forEach(vt),ut.forEach(vt)}function wt(e,t){e.blockedOn===t&&(e.blockedOn=null,at||(at=!0,o.unstable_scheduleCallback(o.unstable_NormalPriority,yt)))}function xt(e){function t(t){return wt(t,e)}if(0<ot.length){wt(ot[0],e);for(var n=1;n<ot.length;n++){var r=ot[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==it&&wt(it,e),null!==lt&&wt(lt,e),null!==st&&wt(st,e),ct.forEach(t),ut.forEach(t),n=0;n<dt.length;n++)(r=dt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<dt.length&&null===(n=dt[0]).blockedOn;)gt(n),null===n.blockedOn&&dt.shift()}function kt(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var St={animationend:kt("Animation","AnimationEnd"),animationiteration:kt("Animation","AnimationIteration"),animationstart:kt("Animation","AnimationStart"),transitionend:kt("Transition","TransitionEnd")},Et={},_t={};function Ct(e){if(Et[e])return Et[e];if(!St[e])return e;var t,n=St[e];for(t in n)if(n.hasOwnProperty(t)&&t in _t)return Et[e]=n[t];return e}d&&(_t=document.createElement("div").style,"AnimationEvent"in window||(delete St.animationend.animation,delete St.animationiteration.animation,delete St.animationstart.animation),"TransitionEvent"in window||delete St.transitionend.transition);var Tt=Ct("animationend"),At=Ct("animationiteration"),Lt=Ct("animationstart"),Nt=Ct("transitionend"),Rt=new Map,Pt=new Map,Ot=["abort","abort",Tt,"animationEnd",At,"animationIteration",Lt,"animationStart","canplay","canPlay","canplaythrough","canPlayThrough","durationchange","durationChange","emptied","emptied","encrypted","encrypted","ended","ended","error","error","gotpointercapture","gotPointerCapture","load","load","loadeddata","loadedData","loadedmetadata","loadedMetadata","loadstart","loadStart","lostpointercapture","lostPointerCapture","playing","playing","progress","progress","seeking","seeking","stalled","stalled","suspend","suspend","timeupdate","timeUpdate",Nt,"transitionEnd","waiting","waiting"];function Dt(e,t){for(var n=0;n<e.length;n+=2){var r=e[n],a=e[n+1];a="on"+(a[0].toUpperCase()+a.slice(1)),Pt.set(r,t),Rt.set(r,a),c(a,[r])}}(0,o.unstable_now)();var It=8;function Mt(e){if(0!=(1&e))return It=15,1;if(0!=(2&e))return It=14,2;if(0!=(4&e))return It=13,4;var t=24&e;return 0!==t?(It=12,t):0!=(32&e)?(It=11,32):0!==(t=192&e)?(It=10,t):0!=(256&e)?(It=9,256):0!==(t=3584&e)?(It=8,t):0!=(4096&e)?(It=7,4096):0!==(t=4186112&e)?(It=6,t):0!==(t=62914560&e)?(It=5,t):67108864&e?(It=4,67108864):0!=(134217728&e)?(It=3,134217728):0!==(t=805306368&e)?(It=2,t):0!=(1073741824&e)?(It=1,1073741824):(It=8,e)}function Ft(e,t){var n=e.pendingLanes;if(0===n)return It=0;var r=0,a=0,o=e.expiredLanes,i=e.suspendedLanes,l=e.pingedLanes;if(0!==o)r=o,a=It=15;else if(0!==(o=134217727&n)){var s=o&~i;0!==s?(r=Mt(s),a=It):0!==(l&=o)&&(r=Mt(l),a=It)}else 0!==(o=n&~i)?(r=Mt(o),a=It):0!==l&&(r=Mt(l),a=It);if(0===r)return 0;if(r=n&((0>(r=31-Gt(r))?0:1<<r)<<1)-1,0!==t&&t!==r&&0==(t&i)){if(Mt(t),a<=It)return t;It=a}if(0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)a=1<<(n=31-Gt(t)),r|=e[n],t&=~a;return r}function Bt(e){return 0!==(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function jt(e,t){switch(e){case 15:return 1;case 14:return 2;case 12:return 0===(e=zt(24&~t))?jt(10,t):e;case 10:return 0===(e=zt(192&~t))?jt(8,t):e;case 8:return 0===(e=zt(3584&~t))&&(0===(e=zt(4186112&~t))&&(e=512)),e;case 2:return 0===(t=zt(805306368&~t))&&(t=268435456),t}throw Error(i(358,e))}function zt(e){return e&-e}function Ut(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function $t(e,t,n){e.pendingLanes|=t;var r=t-1;e.suspendedLanes&=r,e.pingedLanes&=r,(e=e.eventTimes)[t=31-Gt(t)]=n}var Gt=Math.clz32?Math.clz32:function(e){return 0===e?32:31-(qt(e)/Ht|0)|0},qt=Math.log,Ht=Math.LN2;var Vt=o.unstable_UserBlockingPriority,Wt=o.unstable_runWithPriority,Yt=!0;function Kt(e,t,n,r){Me||De();var a=Xt,o=Me;Me=!0;try{Oe(a,e,t,n,r)}finally{(Me=o)||Be()}}function Qt(e,t,n,r){Wt(Vt,Xt.bind(null,e,t,n,r))}function Xt(e,t,n,r){var a;if(Yt)if((a=0==(4&t))&&0<ot.length&&-1<pt.indexOf(e))e=ft(null,e,t,n,r),ot.push(e);else{var o=Zt(e,t,n,r);if(null===o)a&&mt(e,r);else{if(a){if(-1<pt.indexOf(e))return e=ft(o,e,t,n,r),void ot.push(e);if(function(e,t,n,r,a){switch(t){case"focusin":return it=ht(it,e,t,n,r,a),!0;case"dragenter":return lt=ht(lt,e,t,n,r,a),!0;case"mouseover":return st=ht(st,e,t,n,r,a),!0;case"pointerover":var o=a.pointerId;return ct.set(o,ht(ct.get(o)||null,e,t,n,r,a)),!0;case"gotpointercapture":return o=a.pointerId,ut.set(o,ht(ut.get(o)||null,e,t,n,r,a)),!0}return!1}(o,e,t,n,r))return;mt(e,r)}Dr(e,t,r,null,n)}}}function Zt(e,t,n,r){var a=_e(r);if(null!==(a=ta(a))){var o=Ke(a);if(null===o)a=null;else{var i=o.tag;if(13===i){if(null!==(a=Qe(o)))return a;a=null}else if(3===i){if(o.stateNode.hydrate)return 3===o.tag?o.stateNode.containerInfo:null;a=null}else o!==a&&(a=null)}}return Dr(e,t,r,a,n),null}var Jt=null,en=null,tn=null;function nn(){if(tn)return tn;var e,t,n=en,r=n.length,a="value"in Jt?Jt.value:Jt.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 tn=a.slice(e,1<t?1-t:void 0)}function rn(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 an(){return!0}function on(){return!1}function ln(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)?an:on,this.isPropagationStopped=on,this}return a(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=an)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=an)},persist:function(){},isPersistent:an}),t}var sn,cn,un,dn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},pn=ln(dn),fn=a({},dn,{view:0,detail:0}),mn=ln(fn),hn=a({},fn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Tn,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!==un&&(un&&"mousemove"===e.type?(sn=e.screenX-un.screenX,cn=e.screenY-un.screenY):cn=sn=0,un=e),sn)},movementY:function(e){return"movementY"in e?e.movementY:cn}}),gn=ln(hn),bn=ln(a({},hn,{dataTransfer:0})),vn=ln(a({},fn,{relatedTarget:0})),yn=ln(a({},dn,{animationName:0,elapsedTime:0,pseudoElement:0})),wn=a({},dn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),xn=ln(wn),kn=ln(a({},dn,{data:0})),Sn={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},En={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"},_n={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Cn(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=_n[e])&&!!t[e]}function Tn(){return Cn}var An=a({},fn,{key:function(e){if(e.key){var t=Sn[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=rn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?En[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Tn,charCode:function(e){return"keypress"===e.type?rn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?rn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),Ln=ln(An),Nn=ln(a({},hn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Rn=ln(a({},fn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Tn})),Pn=ln(a({},dn,{propertyName:0,elapsedTime:0,pseudoElement:0})),On=a({},hn,{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}),Dn=ln(On),In=[9,13,27,32],Mn=d&&"CompositionEvent"in window,Fn=null;d&&"documentMode"in document&&(Fn=document.documentMode);var Bn=d&&"TextEvent"in window&&!Fn,jn=d&&(!Mn||Fn&&8<Fn&&11>=Fn),zn=String.fromCharCode(32),Un=!1;function $n(e,t){switch(e){case"keyup":return-1!==In.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Gn(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var qn=!1;var Hn={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 Vn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Hn[e.type]:"textarea"===t}function Wn(e,t,n,r){Ne(r),0<(t=Mr(t,"onChange")).length&&(n=new pn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Yn=null,Kn=null;function Qn(e){Ar(e,0)}function Xn(e){if(X(ra(e)))return e}function Zn(e,t){if("change"===e)return t}var Jn=!1;if(d){var er;if(d){var tr="oninput"in document;if(!tr){var nr=document.createElement("div");nr.setAttribute("oninput","return;"),tr="function"==typeof nr.oninput}er=tr}else er=!1;Jn=er&&(!document.documentMode||9<document.documentMode)}function rr(){Yn&&(Yn.detachEvent("onpropertychange",ar),Kn=Yn=null)}function ar(e){if("value"===e.propertyName&&Xn(Kn)){var t=[];if(Wn(t,Kn,e,_e(e)),e=Qn,Me)e(t);else{Me=!0;try{Pe(e,t)}finally{Me=!1,Be()}}}}function or(e,t,n){"focusin"===e?(rr(),Kn=n,(Yn=t).attachEvent("onpropertychange",ar)):"focusout"===e&&rr()}function ir(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Xn(Kn)}function lr(e,t){if("click"===e)return Xn(t)}function sr(e,t){if("input"===e||"change"===e)return Xn(t)}var cr="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},ur=Object.prototype.hasOwnProperty;function dr(e,t){if(cr(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++)if(!ur.call(t,n[r])||!cr(e[n[r]],t[n[r]]))return!1;return!0}function pr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function fr(e,t){var n,r=pr(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=pr(r)}}function mr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?mr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function hr(){for(var e=window,t=Z();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=Z((e=t.contentWindow).document)}return t}function gr(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)}var br=d&&"documentMode"in document&&11>=document.documentMode,vr=null,yr=null,wr=null,xr=!1;function kr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;xr||null==vr||vr!==Z(r)||("selectionStart"in(r=vr)&&gr(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},wr&&dr(wr,r)||(wr=r,0<(r=Mr(yr,"onSelect")).length&&(t=new pn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=vr)))}Dt("cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange".split(" "),0),Dt("drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel".split(" "),1),Dt(Ot,2);for(var Sr="change selectionchange textInput compositionstart compositionend compositionupdate".split(" "),Er=0;Er<Sr.length;Er++)Pt.set(Sr[Er],0);u("onMouseEnter",["mouseout","mouseover"]),u("onMouseLeave",["mouseout","mouseover"]),u("onPointerEnter",["pointerout","pointerover"]),u("onPointerLeave",["pointerout","pointerover"]),c("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),c("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),c("onBeforeInput",["compositionend","keypress","textInput","paste"]),c("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),c("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),c("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var _r="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Cr=new Set("cancel close invalid load scroll toggle".split(" ").concat(_r));function Tr(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,a,o,l,s,c){if(Ye.apply(this,arguments),Ge){if(!Ge)throw Error(i(198));var u=qe;Ge=!1,qe=null,He||(He=!0,Ve=u)}}(r,t,void 0,e),e.currentTarget=null}function Ar(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,c=l.currentTarget;if(l=l.listener,s!==o&&a.isPropagationStopped())break e;Tr(a,l,c),o=s}else for(i=0;i<r.length;i++){if(s=(l=r[i]).instance,c=l.currentTarget,l=l.listener,s!==o&&a.isPropagationStopped())break e;Tr(a,l,c),o=s}}}if(He)throw e=Ve,He=!1,Ve=null,e}function Lr(e,t){var n=oa(t),r=e+"__bubble";n.has(r)||(Or(t,e,2,!1),n.add(r))}var Nr="_reactListening"+Math.random().toString(36).slice(2);function Rr(e){e[Nr]||(e[Nr]=!0,l.forEach((function(t){Cr.has(t)||Pr(t,!1,e,null),Pr(t,!0,e,null)})))}function Pr(e,t,n,r){var a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,o=n;if("selectionchange"===e&&9!==n.nodeType&&(o=n.ownerDocument),null!==r&&!t&&Cr.has(e)){if("scroll"!==e)return;a|=2,o=r}var i=oa(o),l=e+"__"+(t?"capture":"bubble");i.has(l)||(t&&(a|=4),Or(o,e,a,t),i.add(l))}function Or(e,t,n,r){var a=Pt.get(t);switch(void 0===a?2:a){case 0:a=Kt;break;case 1:a=Qt;break;default:a=Xt}n=a.bind(null,t,n,e),a=void 0,!ze||"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 Dr(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=ta(l)))return;if(5===(s=i.tag)||6===s){r=o=i;continue e}l=l.parentNode}}r=r.return}!function(e,t,n){if(Fe)return e(t,n);Fe=!0;try{return Ie(e,t,n)}finally{Fe=!1,Be()}}((function(){var r=o,a=_e(n),i=[];e:{var l=Rt.get(e);if(void 0!==l){var s=pn,c=e;switch(e){case"keypress":if(0===rn(n))break e;case"keydown":case"keyup":s=Ln;break;case"focusin":c="focus",s=vn;break;case"focusout":c="blur",s=vn;break;case"beforeblur":case"afterblur":s=vn;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=gn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":s=bn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":s=Rn;break;case Tt:case At:case Lt:s=yn;break;case Nt:s=Pn;break;case"scroll":s=mn;break;case"wheel":s=Dn;break;case"copy":case"cut":case"paste":s=xn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":s=Nn}var u=0!=(4&t),d=!u&&"scroll"===e,p=u?null!==l?l+"Capture":null:l;u=[];for(var f,m=r;null!==m;){var h=(f=m).stateNode;if(5===f.tag&&null!==h&&(f=h,null!==p&&(null!=(h=je(m,p))&&u.push(Ir(m,h,f)))),d)break;m=m.return}0<u.length&&(l=new s(l,c,null,n,a),i.push({event:l,listeners:u}))}}if(0==(7&t)){if(s="mouseout"===e||"pointerout"===e,(!(l="mouseover"===e||"pointerover"===e)||0!=(16&t)||!(c=n.relatedTarget||n.fromElement)||!ta(c)&&!c[Jr])&&(s||l)&&(l=a.window===a?a:(l=a.ownerDocument)?l.defaultView||l.parentWindow:window,s?(s=r,null!==(c=(c=n.relatedTarget||n.toElement)?ta(c):null)&&(c!==(d=Ke(c))||5!==c.tag&&6!==c.tag)&&(c=null)):(s=null,c=r),s!==c)){if(u=gn,h="onMouseLeave",p="onMouseEnter",m="mouse","pointerout"!==e&&"pointerover"!==e||(u=Nn,h="onPointerLeave",p="onPointerEnter",m="pointer"),d=null==s?l:ra(s),f=null==c?l:ra(c),(l=new u(h,m+"leave",s,n,a)).target=d,l.relatedTarget=f,h=null,ta(a)===r&&((u=new u(p,m+"enter",c,n,a)).target=f,u.relatedTarget=d,h=u),d=h,s&&c)e:{for(p=c,m=0,f=u=s;f;f=Fr(f))m++;for(f=0,h=p;h;h=Fr(h))f++;for(;0<m-f;)u=Fr(u),m--;for(;0<f-m;)p=Fr(p),f--;for(;m--;){if(u===p||null!==p&&u===p.alternate)break e;u=Fr(u),p=Fr(p)}u=null}else u=null;null!==s&&Br(i,l,s,u,!1),null!==c&&null!==d&&Br(i,d,c,u,!0)}if("select"===(s=(l=r?ra(r):window).nodeName&&l.nodeName.toLowerCase())||"input"===s&&"file"===l.type)var g=Zn;else if(Vn(l))if(Jn)g=sr;else{g=ir;var b=or}else(s=l.nodeName)&&"input"===s.toLowerCase()&&("checkbox"===l.type||"radio"===l.type)&&(g=lr);switch(g&&(g=g(e,r))?Wn(i,g,n,a):(b&&b(e,l,r),"focusout"===e&&(b=l._wrapperState)&&b.controlled&&"number"===l.type&&ae(l,"number",l.value)),b=r?ra(r):window,e){case"focusin":(Vn(b)||"true"===b.contentEditable)&&(vr=b,yr=r,wr=null);break;case"focusout":wr=yr=vr=null;break;case"mousedown":xr=!0;break;case"contextmenu":case"mouseup":case"dragend":xr=!1,kr(i,n,a);break;case"selectionchange":if(br)break;case"keydown":case"keyup":kr(i,n,a)}var v;if(Mn)e:{switch(e){case"compositionstart":var y="onCompositionStart";break e;case"compositionend":y="onCompositionEnd";break e;case"compositionupdate":y="onCompositionUpdate";break e}y=void 0}else qn?$n(e,n)&&(y="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(y="onCompositionStart");y&&(jn&&"ko"!==n.locale&&(qn||"onCompositionStart"!==y?"onCompositionEnd"===y&&qn&&(v=nn()):(en="value"in(Jt=a)?Jt.value:Jt.textContent,qn=!0)),0<(b=Mr(r,y)).length&&(y=new kn(y,e,null,n,a),i.push({event:y,listeners:b}),v?y.data=v:null!==(v=Gn(n))&&(y.data=v))),(v=Bn?function(e,t){switch(e){case"compositionend":return Gn(t);case"keypress":return 32!==t.which?null:(Un=!0,zn);case"textInput":return(e=t.data)===zn&&Un?null:e;default:return null}}(e,n):function(e,t){if(qn)return"compositionend"===e||!Mn&&$n(e,t)?(e=nn(),tn=en=Jt=null,qn=!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 jn&&"ko"!==t.locale?null:t.data}}(e,n))&&(0<(r=Mr(r,"onBeforeInput")).length&&(a=new kn("onBeforeInput","beforeinput",null,n,a),i.push({event:a,listeners:r}),a.data=v))}Ar(i,t)}))}function Ir(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Mr(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=je(e,n))&&r.unshift(Ir(e,o,a)),null!=(o=je(e,t))&&r.push(Ir(e,o,a))),e=e.return}return r}function Fr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Br(e,t,n,r,a){for(var o=t._reactName,i=[];null!==n&&n!==r;){var l=n,s=l.alternate,c=l.stateNode;if(null!==s&&s===r)break;5===l.tag&&null!==c&&(l=c,a?null!=(s=je(n,o))&&i.unshift(Ir(n,s,l)):a||null!=(s=je(n,o))&&i.push(Ir(n,s,l))),n=n.return}0!==i.length&&e.push({event:t,listeners:i})}function jr(){}var zr=null,Ur=null;function $r(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function Gr(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var qr="function"==typeof setTimeout?setTimeout:void 0,Hr="function"==typeof clearTimeout?clearTimeout:void 0;function Vr(e){1===e.nodeType?e.textContent="":9===e.nodeType&&(null!=(e=e.body)&&(e.textContent=""))}function Wr(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break}return e}function Yr(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 Kr=0;var Qr=Math.random().toString(36).slice(2),Xr="__reactFiber$"+Qr,Zr="__reactProps$"+Qr,Jr="__reactContainer$"+Qr,ea="__reactEvents$"+Qr;function ta(e){var t=e[Xr];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Jr]||n[Xr]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=Yr(e);null!==e;){if(n=e[Xr])return n;e=Yr(e)}return t}n=(e=n).parentNode}return null}function na(e){return!(e=e[Xr]||e[Jr])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function ra(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(i(33))}function aa(e){return e[Zr]||null}function oa(e){var t=e[ea];return void 0===t&&(t=e[ea]=new Set),t}var ia=[],la=-1;function sa(e){return{current:e}}function ca(e){0>la||(e.current=ia[la],ia[la]=null,la--)}function ua(e,t){la++,ia[la]=e.current,e.current=t}var da={},pa=sa(da),fa=sa(!1),ma=da;function ha(e,t){var n=e.type.contextTypes;if(!n)return da;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 ga(e){return null!=(e=e.childContextTypes)}function ba(){ca(fa),ca(pa)}function va(e,t,n){if(pa.current!==da)throw Error(i(168));ua(pa,t),ua(fa,n)}function ya(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var o in r=r.getChildContext())if(!(o in e))throw Error(i(108,W(t)||"Unknown",o));return a({},n,r)}function wa(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||da,ma=pa.current,ua(pa,e),ua(fa,fa.current),!0}function xa(e,t,n){var r=e.stateNode;if(!r)throw Error(i(169));n?(e=ya(e,t,ma),r.__reactInternalMemoizedMergedChildContext=e,ca(fa),ca(pa),ua(pa,e)):ca(fa),ua(fa,n)}var ka=null,Sa=null,Ea=o.unstable_runWithPriority,_a=o.unstable_scheduleCallback,Ca=o.unstable_cancelCallback,Ta=o.unstable_shouldYield,Aa=o.unstable_requestPaint,La=o.unstable_now,Na=o.unstable_getCurrentPriorityLevel,Ra=o.unstable_ImmediatePriority,Pa=o.unstable_UserBlockingPriority,Oa=o.unstable_NormalPriority,Da=o.unstable_LowPriority,Ia=o.unstable_IdlePriority,Ma={},Fa=void 0!==Aa?Aa:function(){},Ba=null,ja=null,za=!1,Ua=La(),$a=1e4>Ua?La:function(){return La()-Ua};function Ga(){switch(Na()){case Ra:return 99;case Pa:return 98;case Oa:return 97;case Da:return 96;case Ia:return 95;default:throw Error(i(332))}}function qa(e){switch(e){case 99:return Ra;case 98:return Pa;case 97:return Oa;case 96:return Da;case 95:return Ia;default:throw Error(i(332))}}function Ha(e,t){return e=qa(e),Ea(e,t)}function Va(e,t,n){return e=qa(e),_a(e,t,n)}function Wa(){if(null!==ja){var e=ja;ja=null,Ca(e)}Ya()}function Ya(){if(!za&&null!==Ba){za=!0;var e=0;try{var t=Ba;Ha(99,(function(){for(;e<t.length;e++){var n=t[e];do{n=n(!0)}while(null!==n)}})),Ba=null}catch(n){throw null!==Ba&&(Ba=Ba.slice(e+1)),_a(Ra,Wa),n}finally{za=!1}}}var Ka=x.ReactCurrentBatchConfig;function Qa(e,t){if(e&&e.defaultProps){for(var n in t=a({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}var Xa=sa(null),Za=null,Ja=null,eo=null;function to(){eo=Ja=Za=null}function no(e){var t=Xa.current;ca(Xa),e.type._context._currentValue=t}function ro(e,t){for(;null!==e;){var n=e.alternate;if((e.childLanes&t)===t){if(null===n||(n.childLanes&t)===t)break;n.childLanes|=t}else e.childLanes|=t,null!==n&&(n.childLanes|=t);e=e.return}}function ao(e,t){Za=e,eo=Ja=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!=(e.lanes&t)&&(Mi=!0),e.firstContext=null)}function oo(e,t){if(eo!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(eo=e,t=1073741823),t={context:e,observedBits:t,next:null},null===Ja){if(null===Za)throw Error(i(308));Ja=t,Za.dependencies={lanes:0,firstContext:t,responders:null}}else Ja=Ja.next=t;return e._currentValue}var io=!1;function lo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}function so(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 co(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function uo(e,t){if(null!==(e=e.updateQueue)){var n=(e=e.shared).pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}}function po(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 o=e.updateQueue;io=!1;var i=o.firstBaseUpdate,l=o.lastBaseUpdate,s=o.shared.pending;if(null!==s){o.shared.pending=null;var c=s,u=c.next;c.next=null,null===l?i=u:l.next=u,l=c;var d=e.alternate;if(null!==d){var p=(d=d.updateQueue).lastBaseUpdate;p!==l&&(null===p?d.firstBaseUpdate=u:p.next=u,d.lastBaseUpdate=c)}}if(null!==i){for(p=o.baseState,l=0,d=u=c=null;;){s=i.lane;var f=i.eventTime;if((r&s)===s){null!==d&&(d=d.next={eventTime:f,lane:0,tag:i.tag,payload:i.payload,callback:i.callback,next:null});e:{var m=e,h=i;switch(s=t,f=n,h.tag){case 1:if("function"==typeof(m=h.payload)){p=m.call(f,p,s);break e}p=m;break e;case 3:m.flags=-4097&m.flags|64;case 0:if(null==(s="function"==typeof(m=h.payload)?m.call(f,p,s):m))break e;p=a({},p,s);break e;case 2:io=!0}}null!==i.callback&&(e.flags|=32,null===(s=o.effects)?o.effects=[i]:s.push(i))}else f={eventTime:f,lane:s,tag:i.tag,payload:i.payload,callback:i.callback,next:null},null===d?(u=d=f,c=p):d=d.next=f,l|=s;if(null===(i=i.next)){if(null===(s=o.shared.pending))break;i=s.next,s.next=null,o.lastBaseUpdate=s,o.shared.pending=null}}null===d&&(c=p),o.baseState=c,o.firstBaseUpdate=u,o.lastBaseUpdate=d,Ul|=l,e.lanes=l,e.memoizedState=p}}function mo(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(i(191,a));a.call(r)}}}var ho=(new r.Component).refs;function go(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:a({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var bo={isMounted:function(e){return!!(e=e._reactInternals)&&Ke(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=ps(),a=fs(e),o=co(r,a);o.payload=t,null!=n&&(o.callback=n),uo(e,o),ms(e,a,r)},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=ps(),a=fs(e),o=co(r,a);o.tag=1,o.payload=t,null!=n&&(o.callback=n),uo(e,o),ms(e,a,r)},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=ps(),r=fs(e),a=co(n,r);a.tag=2,null!=t&&(a.callback=t),uo(e,a),ms(e,r,n)}};function vo(e,t,n,r,a,o,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,o,i):!t.prototype||!t.prototype.isPureReactComponent||(!dr(n,r)||!dr(a,o))}function yo(e,t,n){var r=!1,a=da,o=t.contextType;return"object"==typeof o&&null!==o?o=oo(o):(a=ga(t)?ma:pa.current,o=(r=null!=(r=t.contextTypes))?ha(e,a):da),t=new t(n,o),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=bo,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&&bo.enqueueReplaceState(t,t.state,null)}function xo(e,t,n,r){var a=e.stateNode;a.props=n,a.state=e.memoizedState,a.refs=ho,lo(e);var o=t.contextType;"object"==typeof o&&null!==o?a.context=oo(o):(o=ga(t)?ma:pa.current,a.context=ha(e,o)),fo(e,n,a,r),a.state=e.memoizedState,"function"==typeof(o=t.getDerivedStateFromProps)&&(go(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&&bo.enqueueReplaceState(a,a.state,null),fo(e,n,a,r),a.state=e.memoizedState),"function"==typeof a.componentDidMount&&(e.flags|=4)}var ko=Array.isArray;function So(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(i(309));var r=n.stateNode}if(!r)throw Error(i(147,e));var a=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===a?t.ref:(t=function(e){var t=r.refs;t===ho&&(t=r.refs={}),null===e?delete t[a]:t[a]=e},t._stringRef=a,t)}if("string"!=typeof e)throw Error(i(284));if(!n._owner)throw Error(i(290,e))}return e}function Eo(e,t){if("textarea"!==e.type)throw Error(i(31,"[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t))}function _o(e){function t(t,n){if(e){var r=t.lastEffect;null!==r?(r.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.flags=8}}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=Vs(e,t)).index=0,e.sibling=null,e}function o(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):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=Qs(n,e.mode,r)).return=e,t):((t=a(t,n)).return=e,t)}function c(e,t,n,r){return null!==t&&t.elementType===n.type?((r=a(t,n.props)).ref=So(e,t,n),r.return=e,r):((r=Ws(n.type,n.key,n.props,null,e.mode,r)).ref=So(e,t,n),r.return=e,r)}function u(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Xs(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=Ys(n,e.mode,r,o)).return=e,t):((t=a(t,n)).return=e,t)}function p(e,t,n){if("string"==typeof t||"number"==typeof t)return(t=Qs(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case k:return(n=Ws(t.type,t.key,t.props,null,e.mode,n)).ref=So(e,null,t),n.return=e,n;case S:return(t=Xs(t,e.mode,n)).return=e,t}if(ko(t)||$(t))return(t=Ys(t,e.mode,n,null)).return=e,t;Eo(e,t)}return null}function f(e,t,n,r){var a=null!==t?t.key:null;if("string"==typeof 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?n.type===E?d(e,t,n.props.children,r,a):c(e,t,n,r):null;case S:return n.key===a?u(e,t,n,r):null}if(ko(n)||$(n))return null!==a?null:d(e,t,n,r,null);Eo(e,n)}return null}function m(e,t,n,r,a){if("string"==typeof 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 e=e.get(null===r.key?n:r.key)||null,r.type===E?d(t,e,r.props.children,a,r.key):c(t,e,r,a);case S:return u(t,e=e.get(null===r.key?n:r.key)||null,r,a)}if(ko(r)||$(r))return d(t,e=e.get(n)||null,r,a,null);Eo(t,r)}return null}function h(a,i,l,s){for(var c=null,u=null,d=i,h=i=0,g=null;null!==d&&h<l.length;h++){d.index>h?(g=d,d=null):g=d.sibling;var b=f(a,d,l[h],s);if(null===b){null===d&&(d=g);break}e&&d&&null===b.alternate&&t(a,d),i=o(b,i,h),null===u?c=b:u.sibling=b,u=b,d=g}if(h===l.length)return n(a,d),c;if(null===d){for(;h<l.length;h++)null!==(d=p(a,l[h],s))&&(i=o(d,i,h),null===u?c=d:u.sibling=d,u=d);return c}for(d=r(a,d);h<l.length;h++)null!==(g=m(d,a,h,l[h],s))&&(e&&null!==g.alternate&&d.delete(null===g.key?h:g.key),i=o(g,i,h),null===u?c=g:u.sibling=g,u=g);return e&&d.forEach((function(e){return t(a,e)})),c}function g(a,l,s,c){var u=$(s);if("function"!=typeof u)throw Error(i(150));if(null==(s=u.call(s)))throw Error(i(151));for(var d=u=null,h=l,g=l=0,b=null,v=s.next();null!==h&&!v.done;g++,v=s.next()){h.index>g?(b=h,h=null):b=h.sibling;var y=f(a,h,v.value,c);if(null===y){null===h&&(h=b);break}e&&h&&null===y.alternate&&t(a,h),l=o(y,l,g),null===d?u=y:d.sibling=y,d=y,h=b}if(v.done)return n(a,h),u;if(null===h){for(;!v.done;g++,v=s.next())null!==(v=p(a,v.value,c))&&(l=o(v,l,g),null===d?u=v:d.sibling=v,d=v);return u}for(h=r(a,h);!v.done;g++,v=s.next())null!==(v=m(h,a,g,v.value,c))&&(e&&null!==v.alternate&&h.delete(null===v.key?g:v.key),l=o(v,l,g),null===d?u=v:d.sibling=v,d=v);return e&&h.forEach((function(e){return t(a,e)})),u}return function(e,r,o,s){var c="object"==typeof o&&null!==o&&o.type===E&&null===o.key;c&&(o=o.props.children);var u="object"==typeof o&&null!==o;if(u)switch(o.$$typeof){case k:e:{for(u=o.key,c=r;null!==c;){if(c.key===u){if(7===c.tag){if(o.type===E){n(e,c.sibling),(r=a(c,o.props.children)).return=e,e=r;break e}}else if(c.elementType===o.type){n(e,c.sibling),(r=a(c,o.props)).ref=So(e,c,o),r.return=e,e=r;break e}n(e,c);break}t(e,c),c=c.sibling}o.type===E?((r=Ys(o.props.children,e.mode,s,o.key)).return=e,e=r):((s=Ws(o.type,o.key,o.props,null,e.mode,s)).ref=So(e,r,o),s.return=e,e=s)}return l(e);case S:e:{for(c=o.key;null!==r;){if(r.key===c){if(4===r.tag&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),(r=a(r,o.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=Xs(o,e.mode,s)).return=e,e=r}return l(e)}if("string"==typeof o||"number"==typeof o)return o=""+o,null!==r&&6===r.tag?(n(e,r.sibling),(r=a(r,o)).return=e,e=r):(n(e,r),(r=Qs(o,e.mode,s)).return=e,e=r),l(e);if(ko(o))return h(e,r,o,s);if($(o))return g(e,r,o,s);if(u&&Eo(e,o),void 0===o&&!c)switch(e.tag){case 1:case 22:case 0:case 11:case 15:throw Error(i(152,W(e.type)||"Component"))}return n(e,r)}}var Co=_o(!0),To=_o(!1),Ao={},Lo=sa(Ao),No=sa(Ao),Ro=sa(Ao);function Po(e){if(e===Ao)throw Error(i(174));return e}function Oo(e,t){switch(ua(Ro,t),ua(No,e),ua(Lo,Ao),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:fe(null,"");break;default:t=fe(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}ca(Lo),ua(Lo,t)}function Do(){ca(Lo),ca(No),ca(Ro)}function Io(e){Po(Ro.current);var t=Po(Lo.current),n=fe(t,e.type);t!==n&&(ua(No,e),ua(Lo,n))}function Mo(e){No.current===e&&(ca(Lo),ca(No))}var Fo=sa(0);function Bo(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!=(64&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 jo=null,zo=null,Uo=!1;function $o(e,t){var n=qs(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.flags=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function Go(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,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);default:return!1}}function qo(e){if(Uo){var t=zo;if(t){var n=t;if(!Go(e,t)){if(!(t=Wr(n.nextSibling))||!Go(e,t))return e.flags=-1025&e.flags|2,Uo=!1,void(jo=e);$o(jo,n)}jo=e,zo=Wr(t.firstChild)}else e.flags=-1025&e.flags|2,Uo=!1,jo=e}}function Ho(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;jo=e}function Vo(e){if(e!==jo)return!1;if(!Uo)return Ho(e),Uo=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!Gr(t,e.memoizedProps))for(t=zo;t;)$o(e,t),t=Wr(t.nextSibling);if(Ho(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(i(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){zo=Wr(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}zo=null}}else zo=jo?Wr(e.stateNode.nextSibling):null;return!0}function Wo(){zo=jo=null,Uo=!1}var Yo=[];function Ko(){for(var e=0;e<Yo.length;e++)Yo[e]._workInProgressVersionPrimary=null;Yo.length=0}var Qo=x.ReactCurrentDispatcher,Xo=x.ReactCurrentBatchConfig,Zo=0,Jo=null,ei=null,ti=null,ni=!1,ri=!1;function ai(){throw Error(i(321))}function oi(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!cr(e[n],t[n]))return!1;return!0}function ii(e,t,n,r,a,o){if(Zo=o,Jo=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,Qo.current=null===e||null===e.memoizedState?Pi:Oi,e=n(r,a),ri){o=0;do{if(ri=!1,!(25>o))throw Error(i(301));o+=1,ti=ei=null,t.updateQueue=null,Qo.current=Di,e=n(r,a)}while(ri)}if(Qo.current=Ri,t=null!==ei&&null!==ei.next,Zo=0,ti=ei=Jo=null,ni=!1,t)throw Error(i(300));return e}function li(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===ti?Jo.memoizedState=ti=e:ti=ti.next=e,ti}function si(){if(null===ei){var e=Jo.alternate;e=null!==e?e.memoizedState:null}else e=ei.next;var t=null===ti?Jo.memoizedState:ti.next;if(null!==t)ti=t,ei=e;else{if(null===e)throw Error(i(310));e={memoizedState:(ei=e).memoizedState,baseState:ei.baseState,baseQueue:ei.baseQueue,queue:ei.queue,next:null},null===ti?Jo.memoizedState=ti=e:ti=ti.next=e}return ti}function ci(e,t){return"function"==typeof t?t(e):t}function ui(e){var t=si(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=ei,a=r.baseQueue,o=n.pending;if(null!==o){if(null!==a){var l=a.next;a.next=o.next,o.next=l}r.baseQueue=a=o,n.pending=null}if(null!==a){a=a.next,r=r.baseState;var s=l=o=null,c=a;do{var u=c.lane;if((Zo&u)===u)null!==s&&(s=s.next={lane:0,action:c.action,eagerReducer:c.eagerReducer,eagerState:c.eagerState,next:null}),r=c.eagerReducer===e?c.eagerState:e(r,c.action);else{var d={lane:u,action:c.action,eagerReducer:c.eagerReducer,eagerState:c.eagerState,next:null};null===s?(l=s=d,o=r):s=s.next=d,Jo.lanes|=u,Ul|=u}c=c.next}while(null!==c&&c!==a);null===s?o=r:s.next=l,cr(r,t.memoizedState)||(Mi=!0),t.memoizedState=r,t.baseState=o,t.baseQueue=s,n.lastRenderedState=r}return[t.memoizedState,n.dispatch]}function di(e){var t=si(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,o=t.memoizedState;if(null!==a){n.pending=null;var l=a=a.next;do{o=e(o,l.action),l=l.next}while(l!==a);cr(o,t.memoizedState)||(Mi=!0),t.memoizedState=o,null===t.baseQueue&&(t.baseState=o),n.lastRenderedState=o}return[o,r]}function pi(e,t,n){var r=t._getVersion;r=r(t._source);var a=t._workInProgressVersionPrimary;if(null!==a?e=a===r:(e=e.mutableReadLanes,(e=(Zo&e)===e)&&(t._workInProgressVersionPrimary=r,Yo.push(t))),e)return n(t._source);throw Yo.push(t),Error(i(350))}function fi(e,t,n,r){var a=Ol;if(null===a)throw Error(i(349));var o=t._getVersion,l=o(t._source),s=Qo.current,c=s.useState((function(){return pi(a,t,n)})),u=c[1],d=c[0];c=ti;var p=e.memoizedState,f=p.refs,m=f.getSnapshot,h=p.source;p=p.subscribe;var g=Jo;return e.memoizedState={refs:f,source:t,subscribe:r},s.useEffect((function(){f.getSnapshot=n,f.setSnapshot=u;var e=o(t._source);if(!cr(l,e)){e=n(t._source),cr(d,e)||(u(e),e=fs(g),a.mutableReadLanes|=e&a.pendingLanes),e=a.mutableReadLanes,a.entangledLanes|=e;for(var r=a.entanglements,i=e;0<i;){var s=31-Gt(i),c=1<<s;r[s]|=e,i&=~c}}}),[n,t,r]),s.useEffect((function(){return r(t._source,(function(){var e=f.getSnapshot,n=f.setSnapshot;try{n(e(t._source));var r=fs(g);a.mutableReadLanes|=r&a.pendingLanes}catch(o){n((function(){throw o}))}}))}),[t,r]),cr(m,n)&&cr(h,t)&&cr(p,r)||((e={pending:null,dispatch:null,lastRenderedReducer:ci,lastRenderedState:d}).dispatch=u=Ni.bind(null,Jo,e),c.queue=e,c.baseQueue=null,d=pi(a,t,n),c.memoizedState=c.baseState=d),d}function mi(e,t,n){return fi(si(),e,t,n)}function hi(e){var t=li();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={pending:null,dispatch:null,lastRenderedReducer:ci,lastRenderedState:e}).dispatch=Ni.bind(null,Jo,e),[t.memoizedState,e]}function gi(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=Jo.updateQueue)?(t={lastEffect:null},Jo.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(e){return e={current:e},li().memoizedState=e}function vi(){return si().memoizedState}function yi(e,t,n,r){var a=li();Jo.flags|=e,a.memoizedState=gi(1|t,n,void 0,void 0===r?null:r)}function wi(e,t,n,r){var a=si();r=void 0===r?null:r;var o=void 0;if(null!==ei){var i=ei.memoizedState;if(o=i.destroy,null!==r&&oi(r,i.deps))return void gi(t,n,o,r)}Jo.flags|=e,a.memoizedState=gi(1|t,n,o,r)}function xi(e,t){return yi(516,4,e,t)}function ki(e,t){return wi(516,4,e,t)}function Si(e,t){return wi(4,2,e,t)}function Ei(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 _i(e,t,n){return n=null!=n?n.concat([e]):null,wi(4,2,Ei.bind(null,t,e),n)}function Ci(){}function Ti(e,t){var n=si();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&oi(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Ai(e,t){var n=si();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&oi(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Li(e,t){var n=Ga();Ha(98>n?98:n,(function(){e(!0)})),Ha(97<n?97:n,(function(){var n=Xo.transition;Xo.transition=1;try{e(!1),t()}finally{Xo.transition=n}}))}function Ni(e,t,n){var r=ps(),a=fs(e),o={lane:a,action:n,eagerReducer:null,eagerState:null,next:null},i=t.pending;if(null===i?o.next=o:(o.next=i.next,i.next=o),t.pending=o,i=e.alternate,e===Jo||null!==i&&i===Jo)ri=ni=!0;else{if(0===e.lanes&&(null===i||0===i.lanes)&&null!==(i=t.lastRenderedReducer))try{var l=t.lastRenderedState,s=i(l,n);if(o.eagerReducer=i,o.eagerState=s,cr(s,l))return}catch(c){}ms(e,a,r)}}var Ri={readContext:oo,useCallback:ai,useContext:ai,useEffect:ai,useImperativeHandle:ai,useLayoutEffect:ai,useMemo:ai,useReducer:ai,useRef:ai,useState:ai,useDebugValue:ai,useDeferredValue:ai,useTransition:ai,useMutableSource:ai,useOpaqueIdentifier:ai,unstable_isNewReconciler:!1},Pi={readContext:oo,useCallback:function(e,t){return li().memoizedState=[e,void 0===t?null:t],e},useContext:oo,useEffect:xi,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,yi(4,2,Ei.bind(null,t,e),n)},useLayoutEffect:function(e,t){return yi(4,2,e,t)},useMemo:function(e,t){var n=li();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=li();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e=(e=r.queue={pending:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=Ni.bind(null,Jo,e),[r.memoizedState,e]},useRef:bi,useState:hi,useDebugValue:Ci,useDeferredValue:function(e){var t=hi(e),n=t[0],r=t[1];return xi((function(){var t=Xo.transition;Xo.transition=1;try{r(e)}finally{Xo.transition=t}}),[e]),n},useTransition:function(){var e=hi(!1),t=e[0];return bi(e=Li.bind(null,e[1])),[e,t]},useMutableSource:function(e,t,n){var r=li();return r.memoizedState={refs:{getSnapshot:t,setSnapshot:null},source:e,subscribe:n},fi(r,e,t,n)},useOpaqueIdentifier:function(){if(Uo){var e=!1,t=function(e){return{$$typeof:I,toString:e,valueOf:e}}((function(){throw e||(e=!0,n("r:"+(Kr++).toString(36))),Error(i(355))})),n=hi(t)[1];return 0==(2&Jo.mode)&&(Jo.flags|=516,gi(5,(function(){n("r:"+(Kr++).toString(36))}),void 0,null)),t}return hi(t="r:"+(Kr++).toString(36)),t},unstable_isNewReconciler:!1},Oi={readContext:oo,useCallback:Ti,useContext:oo,useEffect:ki,useImperativeHandle:_i,useLayoutEffect:Si,useMemo:Ai,useReducer:ui,useRef:vi,useState:function(){return ui(ci)},useDebugValue:Ci,useDeferredValue:function(e){var t=ui(ci),n=t[0],r=t[1];return ki((function(){var t=Xo.transition;Xo.transition=1;try{r(e)}finally{Xo.transition=t}}),[e]),n},useTransition:function(){var e=ui(ci)[0];return[vi().current,e]},useMutableSource:mi,useOpaqueIdentifier:function(){return ui(ci)[0]},unstable_isNewReconciler:!1},Di={readContext:oo,useCallback:Ti,useContext:oo,useEffect:ki,useImperativeHandle:_i,useLayoutEffect:Si,useMemo:Ai,useReducer:di,useRef:vi,useState:function(){return di(ci)},useDebugValue:Ci,useDeferredValue:function(e){var t=di(ci),n=t[0],r=t[1];return ki((function(){var t=Xo.transition;Xo.transition=1;try{r(e)}finally{Xo.transition=t}}),[e]),n},useTransition:function(){var e=di(ci)[0];return[vi().current,e]},useMutableSource:mi,useOpaqueIdentifier:function(){return di(ci)[0]},unstable_isNewReconciler:!1},Ii=x.ReactCurrentOwner,Mi=!1;function Fi(e,t,n,r){t.child=null===e?To(t,null,n,r):Co(t,e.child,n,r)}function Bi(e,t,n,r,a){n=n.render;var o=t.ref;return ao(t,a),r=ii(e,t,n,r,o,a),null===e||Mi?(t.flags|=1,Fi(e,t,r,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~a,ol(e,t,a))}function ji(e,t,n,r,a,o){if(null===e){var i=n.type;return"function"!=typeof i||Hs(i)||void 0!==i.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Ws(n.type,null,r,t,t.mode,o)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=i,zi(e,t,i,r,a,o))}return i=e.child,0==(a&o)&&(a=i.memoizedProps,(n=null!==(n=n.compare)?n:dr)(a,r)&&e.ref===t.ref)?ol(e,t,o):(t.flags|=1,(e=Vs(i,r)).ref=t.ref,e.return=t,t.child=e)}function zi(e,t,n,r,a,o){if(null!==e&&dr(e.memoizedProps,r)&&e.ref===t.ref){if(Mi=!1,0==(o&a))return t.lanes=e.lanes,ol(e,t,o);0!=(16384&e.flags)&&(Mi=!0)}return Gi(e,t,n,r,o)}function Ui(e,t,n){var r=t.pendingProps,a=r.children,o=null!==e?e.memoizedState:null;if("hidden"===r.mode||"unstable-defer-without-hiding"===r.mode)if(0==(4&t.mode))t.memoizedState={baseLanes:0},ks(t,n);else{if(0==(1073741824&n))return e=null!==o?o.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e},ks(t,e),null;t.memoizedState={baseLanes:0},ks(t,null!==o?o.baseLanes:n)}else null!==o?(r=o.baseLanes|n,t.memoizedState=null):r=n,ks(t,r);return Fi(e,t,a,n),t.child}function $i(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=128)}function Gi(e,t,n,r,a){var o=ga(n)?ma:pa.current;return o=ha(t,o),ao(t,a),n=ii(e,t,n,r,o,a),null===e||Mi?(t.flags|=1,Fi(e,t,n,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~a,ol(e,t,a))}function qi(e,t,n,r,a){if(ga(n)){var o=!0;wa(t)}else o=!1;if(ao(t,a),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),yo(t,n,r),xo(t,n,r,a),r=!0;else if(null===e){var i=t.stateNode,l=t.memoizedProps;i.props=l;var s=i.context,c=n.contextType;"object"==typeof c&&null!==c?c=oo(c):c=ha(t,c=ga(n)?ma:pa.current);var u=n.getDerivedStateFromProps,d="function"==typeof u||"function"==typeof i.getSnapshotBeforeUpdate;d||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==r||s!==c)&&wo(t,i,r,c),io=!1;var p=t.memoizedState;i.state=p,fo(t,r,i,a),s=t.memoizedState,l!==r||p!==s||fa.current||io?("function"==typeof u&&(go(t,n,u,r),s=t.memoizedState),(l=io||vo(t,n,l,r,p,s,c))?(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|=4)):("function"==typeof i.componentDidMount&&(t.flags|=4),t.memoizedProps=r,t.memoizedState=s),i.props=r,i.state=s,i.context=c,r=l):("function"==typeof i.componentDidMount&&(t.flags|=4),r=!1)}else{i=t.stateNode,so(e,t),l=t.memoizedProps,c=t.type===t.elementType?l:Qa(t.type,l),i.props=c,d=t.pendingProps,p=i.context,"object"==typeof(s=n.contextType)&&null!==s?s=oo(s):s=ha(t,s=ga(n)?ma:pa.current);var f=n.getDerivedStateFromProps;(u="function"==typeof f||"function"==typeof i.getSnapshotBeforeUpdate)||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==d||p!==s)&&wo(t,i,r,s),io=!1,p=t.memoizedState,i.state=p,fo(t,r,i,a);var m=t.memoizedState;l!==d||p!==m||fa.current||io?("function"==typeof f&&(go(t,n,f,r),m=t.memoizedState),(c=io||vo(t,n,c,r,p,m,s))?(u||"function"!=typeof i.UNSAFE_componentWillUpdate&&"function"!=typeof i.componentWillUpdate||("function"==typeof i.componentWillUpdate&&i.componentWillUpdate(r,m,s),"function"==typeof i.UNSAFE_componentWillUpdate&&i.UNSAFE_componentWillUpdate(r,m,s)),"function"==typeof i.componentDidUpdate&&(t.flags|=4),"function"==typeof i.getSnapshotBeforeUpdate&&(t.flags|=256)):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=256),t.memoizedProps=r,t.memoizedState=m),i.props=r,i.state=m,i.context=s,r=c):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=256),r=!1)}return Hi(e,t,n,r,o,a)}function Hi(e,t,n,r,a,o){$i(e,t);var i=0!=(64&t.flags);if(!r&&!i)return a&&xa(t,n,!1),ol(e,t,o);r=t.stateNode,Ii.current=t;var l=i&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&i?(t.child=Co(t,e.child,null,o),t.child=Co(t,null,l,o)):Fi(e,t,l,o),t.memoizedState=r.state,a&&xa(t,n,!0),t.child}function Vi(e){var t=e.stateNode;t.pendingContext?va(0,t.pendingContext,t.pendingContext!==t.context):t.context&&va(0,t.context,!1),Oo(e,t.containerInfo)}var Wi,Yi,Ki,Qi,Xi={dehydrated:null,retryLane:0};function Zi(e,t,n){var r,a=t.pendingProps,o=Fo.current,i=!1;return(r=0!=(64&t.flags))||(r=(null===e||null!==e.memoizedState)&&0!=(2&o)),r?(i=!0,t.flags&=-65):null!==e&&null===e.memoizedState||void 0===a.fallback||!0===a.unstable_avoidThisFallback||(o|=1),ua(Fo,1&o),null===e?(void 0!==a.fallback&&qo(t),e=a.children,o=a.fallback,i?(e=Ji(t,e,o,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Xi,e):"number"==typeof a.unstable_expectedLoadTime?(e=Ji(t,e,o,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Xi,t.lanes=33554432,e):((n=Ks({mode:"visible",children:e},t.mode,n,null)).return=t,t.child=n)):(e.memoizedState,i?(a=tl(e,t,a.children,a.fallback,n),i=t.child,o=e.child.memoizedState,i.memoizedState=null===o?{baseLanes:n}:{baseLanes:o.baseLanes|n},i.childLanes=e.childLanes&~n,t.memoizedState=Xi,a):(n=el(e,t,a.children,n),t.memoizedState=null,n))}function Ji(e,t,n,r){var a=e.mode,o=e.child;return t={mode:"hidden",children:t},0==(2&a)&&null!==o?(o.childLanes=0,o.pendingProps=t):o=Ks(t,a,0,null),n=Ys(n,a,r,null),o.return=e,n.return=e,o.sibling=n,e.child=o,n}function el(e,t,n,r){var a=e.child;return e=a.sibling,n=Vs(a,{mode:"visible",children:n}),0==(2&t.mode)&&(n.lanes=r),n.return=t,n.sibling=null,null!==e&&(e.nextEffect=null,e.flags=8,t.firstEffect=t.lastEffect=e),t.child=n}function tl(e,t,n,r,a){var o=t.mode,i=e.child;e=i.sibling;var l={mode:"hidden",children:n};return 0==(2&o)&&t.child!==i?((n=t.child).childLanes=0,n.pendingProps=l,null!==(i=n.lastEffect)?(t.firstEffect=n.firstEffect,t.lastEffect=i,i.nextEffect=null):t.firstEffect=t.lastEffect=null):n=Vs(i,l),null!==e?r=Vs(e,r):(r=Ys(r,o,a,null)).flags|=2,r.return=t,n.return=t,n.sibling=r,t.child=n,r}function nl(e,t){e.lanes|=t;var n=e.alternate;null!==n&&(n.lanes|=t),ro(e.return,t)}function rl(e,t,n,r,a,o){var i=e.memoizedState;null===i?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:a,lastEffect:o}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=r,i.tail=n,i.tailMode=a,i.lastEffect=o)}function al(e,t,n){var r=t.pendingProps,a=r.revealOrder,o=r.tail;if(Fi(e,t,r.children,n),0!=(2&(r=Fo.current)))r=1&r|2,t.flags|=64;else{if(null!==e&&0!=(64&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&nl(e,n);else if(19===e.tag)nl(e,n);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(ua(Fo,r),0==(2&t.mode))t.memoizedState=null;else switch(a){case"forwards":for(n=t.child,a=null;null!==n;)null!==(e=n.alternate)&&null===Bo(e)&&(a=n),n=n.sibling;null===(n=a)?(a=t.child,t.child=null):(a=n.sibling,n.sibling=null),rl(t,!1,a,n,o,t.lastEffect);break;case"backwards":for(n=null,a=t.child,t.child=null;null!==a;){if(null!==(e=a.alternate)&&null===Bo(e)){t.child=a;break}e=a.sibling,a.sibling=n,n=a,a=e}rl(t,!0,n,null,o,t.lastEffect);break;case"together":rl(t,!1,null,null,void 0,t.lastEffect);break;default:t.memoizedState=null}return t.child}function ol(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Ul|=t.lanes,0!=(n&t.childLanes)){if(null!==e&&t.child!==e.child)throw Error(i(153));if(null!==t.child){for(n=Vs(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Vs(e,e.pendingProps)).return=t;n.sibling=null}return t.child}return null}function il(e,t){if(!Uo)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 ll(e,t,n){var r=t.pendingProps;switch(t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:case 17:return ga(t.type)&&ba(),null;case 3:return Do(),ca(fa),ca(pa),Ko(),(r=t.stateNode).pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(Vo(t)?t.flags|=4:r.hydrate||(t.flags|=256)),Yi(t),null;case 5:Mo(t);var o=Po(Ro.current);if(n=t.type,null!==e&&null!=t.stateNode)Ki(e,t,n,r,o),e.ref!==t.ref&&(t.flags|=128);else{if(!r){if(null===t.stateNode)throw Error(i(166));return null}if(e=Po(Lo.current),Vo(t)){r=t.stateNode,n=t.type;var l=t.memoizedProps;switch(r[Xr]=t,r[Zr]=l,n){case"dialog":Lr("cancel",r),Lr("close",r);break;case"iframe":case"object":case"embed":Lr("load",r);break;case"video":case"audio":for(e=0;e<_r.length;e++)Lr(_r[e],r);break;case"source":Lr("error",r);break;case"img":case"image":case"link":Lr("error",r),Lr("load",r);break;case"details":Lr("toggle",r);break;case"input":ee(r,l),Lr("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!l.multiple},Lr("invalid",r);break;case"textarea":se(r,l),Lr("invalid",r)}for(var c in Se(n,l),e=null,l)l.hasOwnProperty(c)&&(o=l[c],"children"===c?"string"==typeof o?r.textContent!==o&&(e=["children",o]):"number"==typeof o&&r.textContent!==""+o&&(e=["children",""+o]):s.hasOwnProperty(c)&&null!=o&&"onScroll"===c&&Lr("scroll",r));switch(n){case"input":Q(r),re(r,l,!0);break;case"textarea":Q(r),ue(r);break;case"select":case"option":break;default:"function"==typeof l.onClick&&(r.onclick=jr)}r=e,t.updateQueue=r,null!==r&&(t.flags|=4)}else{switch(c=9===o.nodeType?o:o.ownerDocument,e===de.html&&(e=pe(n)),e===de.html?"script"===n?((e=c.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=c.createElement(n,{is:r.is}):(e=c.createElement(n),"select"===n&&(c=e,r.multiple?c.multiple=!0:r.size&&(c.size=r.size))):e=c.createElementNS(e,n),e[Xr]=t,e[Zr]=r,Wi(e,t,!1,!1),t.stateNode=e,c=Ee(n,r),n){case"dialog":Lr("cancel",e),Lr("close",e),o=r;break;case"iframe":case"object":case"embed":Lr("load",e),o=r;break;case"video":case"audio":for(o=0;o<_r.length;o++)Lr(_r[o],e);o=r;break;case"source":Lr("error",e),o=r;break;case"img":case"image":case"link":Lr("error",e),Lr("load",e),o=r;break;case"details":Lr("toggle",e),o=r;break;case"input":ee(e,r),o=J(e,r),Lr("invalid",e);break;case"option":o=oe(e,r);break;case"select":e._wrapperState={wasMultiple:!!r.multiple},o=a({},r,{value:void 0}),Lr("invalid",e);break;case"textarea":se(e,r),o=le(e,r),Lr("invalid",e);break;default:o=r}Se(n,o);var u=o;for(l in u)if(u.hasOwnProperty(l)){var d=u[l];"style"===l?xe(e,d):"dangerouslySetInnerHTML"===l?null!=(d=d?d.__html:void 0)&&ge(e,d):"children"===l?"string"==typeof d?("textarea"!==n||""!==d)&&be(e,d):"number"==typeof d&&be(e,""+d):"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&"autoFocus"!==l&&(s.hasOwnProperty(l)?null!=d&&"onScroll"===l&&Lr("scroll",e):null!=d&&w(e,l,d,c))}switch(n){case"input":Q(e),re(e,r,!1);break;case"textarea":Q(e),ue(e);break;case"option":null!=r.value&&e.setAttribute("value",""+Y(r.value));break;case"select":e.multiple=!!r.multiple,null!=(l=r.value)?ie(e,!!r.multiple,l,!1):null!=r.defaultValue&&ie(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof o.onClick&&(e.onclick=jr)}$r(n,r)&&(t.flags|=4)}null!==t.ref&&(t.flags|=128)}return null;case 6:if(e&&null!=t.stateNode)Qi(e,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(i(166));n=Po(Ro.current),Po(Lo.current),Vo(t)?(r=t.stateNode,n=t.memoizedProps,r[Xr]=t,r.nodeValue!==n&&(t.flags|=4)):((r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[Xr]=t,t.stateNode=r)}return null;case 13:return ca(Fo),r=t.memoizedState,0!=(64&t.flags)?(t.lanes=n,t):(r=null!==r,n=!1,null===e?void 0!==t.memoizedProps.fallback&&Vo(t):n=null!==e.memoizedState,r&&!n&&0!=(2&t.mode)&&(null===e&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!=(1&Fo.current)?0===Bl&&(Bl=3):(0!==Bl&&3!==Bl||(Bl=4),null===Ol||0==(134217727&Ul)&&0==(134217727&$l)||vs(Ol,Il))),(r||n)&&(t.flags|=4),null);case 4:return Do(),Yi(t),null===e&&Rr(t.stateNode.containerInfo),null;case 10:return no(t),null;case 19:if(ca(Fo),null===(r=t.memoizedState))return null;if(l=0!=(64&t.flags),null===(c=r.rendering))if(l)il(r,!1);else{if(0!==Bl||null!==e&&0!=(64&e.flags))for(e=t.child;null!==e;){if(null!==(c=Bo(e))){for(t.flags|=64,il(r,!1),null!==(l=c.updateQueue)&&(t.updateQueue=l,t.flags|=4),null===r.lastEffect&&(t.firstEffect=null),t.lastEffect=r.lastEffect,r=n,n=t.child;null!==n;)e=r,(l=n).flags&=2,l.nextEffect=null,l.firstEffect=null,l.lastEffect=null,null===(c=l.alternate)?(l.childLanes=0,l.lanes=e,l.child=null,l.memoizedProps=null,l.memoizedState=null,l.updateQueue=null,l.dependencies=null,l.stateNode=null):(l.childLanes=c.childLanes,l.lanes=c.lanes,l.child=c.child,l.memoizedProps=c.memoizedProps,l.memoizedState=c.memoizedState,l.updateQueue=c.updateQueue,l.type=c.type,e=c.dependencies,l.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return ua(Fo,1&Fo.current|2),t.child}e=e.sibling}null!==r.tail&&$a()>Vl&&(t.flags|=64,l=!0,il(r,!1),t.lanes=33554432)}else{if(!l)if(null!==(e=Bo(c))){if(t.flags|=64,l=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),il(r,!0),null===r.tail&&"hidden"===r.tailMode&&!c.alternate&&!Uo)return null!==(t=t.lastEffect=r.lastEffect)&&(t.nextEffect=null),null}else 2*$a()-r.renderingStartTime>Vl&&1073741824!==n&&(t.flags|=64,l=!0,il(r,!1),t.lanes=33554432);r.isBackwards?(c.sibling=t.child,t.child=c):(null!==(n=r.last)?n.sibling=c:t.child=c,r.last=c)}return null!==r.tail?(n=r.tail,r.rendering=n,r.tail=n.sibling,r.lastEffect=t.lastEffect,r.renderingStartTime=$a(),n.sibling=null,t=Fo.current,ua(Fo,l?1&t|2:1&t),n):null;case 23:case 24:return Ss(),null!==e&&null!==e.memoizedState!=(null!==t.memoizedState)&&"unstable-defer-without-hiding"!==r.mode&&(t.flags|=4),null}throw Error(i(156,t.tag))}function sl(e){switch(e.tag){case 1:ga(e.type)&&ba();var t=e.flags;return 4096&t?(e.flags=-4097&t|64,e):null;case 3:if(Do(),ca(fa),ca(pa),Ko(),0!=(64&(t=e.flags)))throw Error(i(285));return e.flags=-4097&t|64,e;case 5:return Mo(e),null;case 13:return ca(Fo),4096&(t=e.flags)?(e.flags=-4097&t|64,e):null;case 19:return ca(Fo),null;case 4:return Do(),null;case 10:return no(e),null;case 23:case 24:return Ss(),null;default:return null}}function cl(e,t){try{var n="",r=t;do{n+=V(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}}function ul(e,t){try{console.error(t.value)}catch(n){setTimeout((function(){throw n}))}}Wi=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}},Yi=function(){},Ki=function(e,t,n,r){var o=e.memoizedProps;if(o!==r){e=t.stateNode,Po(Lo.current);var i,l=null;switch(n){case"input":o=J(e,o),r=J(e,r),l=[];break;case"option":o=oe(e,o),r=oe(e,r),l=[];break;case"select":o=a({},o,{value:void 0}),r=a({},r,{value:void 0}),l=[];break;case"textarea":o=le(e,o),r=le(e,r),l=[];break;default:"function"!=typeof o.onClick&&"function"==typeof r.onClick&&(e.onclick=jr)}for(d in Se(n,r),n=null,o)if(!r.hasOwnProperty(d)&&o.hasOwnProperty(d)&&null!=o[d])if("style"===d){var c=o[d];for(i in c)c.hasOwnProperty(i)&&(n||(n={}),n[i]="")}else"dangerouslySetInnerHTML"!==d&&"children"!==d&&"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&"autoFocus"!==d&&(s.hasOwnProperty(d)?l||(l=[]):(l=l||[]).push(d,null));for(d in r){var u=r[d];if(c=null!=o?o[d]:void 0,r.hasOwnProperty(d)&&u!==c&&(null!=u||null!=c))if("style"===d)if(c){for(i in c)!c.hasOwnProperty(i)||u&&u.hasOwnProperty(i)||(n||(n={}),n[i]="");for(i in u)u.hasOwnProperty(i)&&c[i]!==u[i]&&(n||(n={}),n[i]=u[i])}else n||(l||(l=[]),l.push(d,n)),n=u;else"dangerouslySetInnerHTML"===d?(u=u?u.__html:void 0,c=c?c.__html:void 0,null!=u&&c!==u&&(l=l||[]).push(d,u)):"children"===d?"string"!=typeof u&&"number"!=typeof u||(l=l||[]).push(d,""+u):"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&(s.hasOwnProperty(d)?(null!=u&&"onScroll"===d&&Lr("scroll",e),l||c===u||(l=[])):"object"==typeof u&&null!==u&&u.$$typeof===I?u.toString():(l=l||[]).push(d,u))}n&&(l=l||[]).push("style",n);var d=l;(t.updateQueue=d)&&(t.flags|=4)}},Qi=function(e,t,n,r){n!==r&&(t.flags|=4)};var dl="function"==typeof WeakMap?WeakMap:Map;function pl(e,t,n){(n=co(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Ql||(Ql=!0,Xl=r),ul(0,t)},n}function fl(e,t,n){(n=co(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var a=t.value;n.payload=function(){return ul(0,t),r(a)}}var o=e.stateNode;return null!==o&&"function"==typeof o.componentDidCatch&&(n.callback=function(){"function"!=typeof r&&(null===Zl?Zl=new Set([this]):Zl.add(this),ul(0,t));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}var ml="function"==typeof WeakSet?WeakSet:Set;function hl(e){var t=e.ref;if(null!==t)if("function"==typeof t)try{t(null)}catch(n){zs(e,n)}else t.current=null}function gl(e,t){switch(t.tag){case 0:case 11:case 15:case 22:case 5:case 6:case 4:case 17:return;case 1:if(256&t.flags&&null!==e){var n=e.memoizedProps,r=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:Qa(t.type,n),r),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:return void(256&t.flags&&Vr(t.stateNode.containerInfo))}throw Error(i(163))}function bl(e,t,n){switch(n.tag){case 0:case 11:case 15:case 22:if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{if(3==(3&e.tag)){var r=e.create;e.destroy=r()}e=e.next}while(e!==t)}if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{var a=e;r=a.next,0!=(4&(a=a.tag))&&0!=(1&a)&&(Fs(n,e),Ms(n,e)),e=r}while(e!==t)}return;case 1:return e=n.stateNode,4&n.flags&&(null===t?e.componentDidMount():(r=n.elementType===n.type?t.memoizedProps:Qa(n.type,t.memoizedProps),e.componentDidUpdate(r,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate))),void(null!==(t=n.updateQueue)&&mo(n,t,e));case 3:if(null!==(t=n.updateQueue)){if(e=null,null!==n.child)switch(n.child.tag){case 5:case 1:e=n.child.stateNode}mo(n,t,e)}return;case 5:return e=n.stateNode,void(null===t&&4&n.flags&&$r(n.type,n.memoizedProps)&&e.focus());case 6:case 4:case 12:case 19:case 17:case 20:case 21:case 23:case 24:return;case 13:return void(null===n.memoizedState&&(n=n.alternate,null!==n&&(n=n.memoizedState,null!==n&&(n=n.dehydrated,null!==n&&xt(n)))))}throw Error(i(163))}function vl(e,t){for(var n=e;;){if(5===n.tag){var r=n.stateNode;if(t)"function"==typeof(r=r.style).setProperty?r.setProperty("display","none","important"):r.display="none";else{r=n.stateNode;var a=n.memoizedProps.style;a=null!=a&&a.hasOwnProperty("display")?a.display:null,r.style.display=we("display",a)}}else if(6===n.tag)n.stateNode.nodeValue=t?"":n.memoizedProps;else if((23!==n.tag&&24!==n.tag||null===n.memoizedState||n===e)&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return;n=n.return}n.sibling.return=n.return,n=n.sibling}}function yl(e,t){if(Sa&&"function"==typeof Sa.onCommitFiberUnmount)try{Sa.onCommitFiberUnmount(ka,t)}catch(o){}switch(t.tag){case 0:case 11:case 14:case 15:case 22:if(null!==(e=t.updateQueue)&&null!==(e=e.lastEffect)){var n=e=e.next;do{var r=n,a=r.destroy;if(r=r.tag,void 0!==a)if(0!=(4&r))Fs(t,n);else{r=t;try{a()}catch(o){zs(r,o)}}n=n.next}while(n!==e)}break;case 1:if(hl(t),"function"==typeof(e=t.stateNode).componentWillUnmount)try{e.props=t.memoizedProps,e.state=t.memoizedState,e.componentWillUnmount()}catch(o){zs(t,o)}break;case 5:hl(t);break;case 4:_l(e,t)}}function wl(e){e.alternate=null,e.child=null,e.dependencies=null,e.firstEffect=null,e.lastEffect=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.return=null,e.updateQueue=null}function xl(e){return 5===e.tag||3===e.tag||4===e.tag}function kl(e){e:{for(var t=e.return;null!==t;){if(xl(t))break e;t=t.return}throw Error(i(160))}var n=t;switch(t=n.stateNode,n.tag){case 5:var r=!1;break;case 3:case 4:t=t.containerInfo,r=!0;break;default:throw Error(i(161))}16&n.flags&&(be(t,""),n.flags&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||xl(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.flags)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.flags)){n=n.stateNode;break e}}r?Sl(e,n,t):El(e,n,t)}function Sl(e,t,n){var r=e.tag,a=5===r||6===r;if(a)e=a?e.stateNode:e.stateNode.instance,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(Sl(e,t,n),e=e.sibling;null!==e;)Sl(e,t,n),e=e.sibling}function El(e,t,n){var r=e.tag,a=5===r||6===r;if(a)e=a?e.stateNode:e.stateNode.instance,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(El(e,t,n),e=e.sibling;null!==e;)El(e,t,n),e=e.sibling}function _l(e,t){for(var n,r,a=t,o=!1;;){if(!o){o=a.return;e:for(;;){if(null===o)throw Error(i(160));switch(n=o.stateNode,o.tag){case 5:r=!1;break e;case 3:case 4:n=n.containerInfo,r=!0;break e}o=o.return}o=!0}if(5===a.tag||6===a.tag){e:for(var l=e,s=a,c=s;;)if(yl(l,c),null!==c.child&&4!==c.tag)c.child.return=c,c=c.child;else{if(c===s)break e;for(;null===c.sibling;){if(null===c.return||c.return===s)break e;c=c.return}c.sibling.return=c.return,c=c.sibling}r?(l=n,s=a.stateNode,8===l.nodeType?l.parentNode.removeChild(s):l.removeChild(s)):n.removeChild(a.stateNode)}else if(4===a.tag){if(null!==a.child){n=a.stateNode.containerInfo,r=!0,a.child.return=a,a=a.child;continue}}else if(yl(e,a),null!==a.child){a.child.return=a,a=a.child;continue}if(a===t)break;for(;null===a.sibling;){if(null===a.return||a.return===t)return;4===(a=a.return).tag&&(o=!1)}a.sibling.return=a.return,a=a.sibling}}function Cl(e,t){switch(t.tag){case 0:case 11:case 14:case 15:case 22:var n=t.updateQueue;if(null!==(n=null!==n?n.lastEffect:null)){var r=n=n.next;do{3==(3&r.tag)&&(e=r.destroy,r.destroy=void 0,void 0!==e&&e()),r=r.next}while(r!==n)}return;case 1:case 12:case 17:return;case 5:if(null!=(n=t.stateNode)){r=t.memoizedProps;var a=null!==e?e.memoizedProps:r;e=t.type;var o=t.updateQueue;if(t.updateQueue=null,null!==o){for(n[Zr]=r,"input"===e&&"radio"===r.type&&null!=r.name&&te(n,r),Ee(e,a),t=Ee(e,r),a=0;a<o.length;a+=2){var l=o[a],s=o[a+1];"style"===l?xe(n,s):"dangerouslySetInnerHTML"===l?ge(n,s):"children"===l?be(n,s):w(n,l,s,t)}switch(e){case"input":ne(n,r);break;case"textarea":ce(n,r);break;case"select":e=n._wrapperState.wasMultiple,n._wrapperState.wasMultiple=!!r.multiple,null!=(o=r.value)?ie(n,!!r.multiple,o,!1):e!==!!r.multiple&&(null!=r.defaultValue?ie(n,!!r.multiple,r.defaultValue,!0):ie(n,!!r.multiple,r.multiple?[]:"",!1))}}}return;case 6:if(null===t.stateNode)throw Error(i(162));return void(t.stateNode.nodeValue=t.memoizedProps);case 3:return void((n=t.stateNode).hydrate&&(n.hydrate=!1,xt(n.containerInfo)));case 13:return null!==t.memoizedState&&(Hl=$a(),vl(t.child,!0)),void Tl(t);case 19:return void Tl(t);case 23:case 24:return void vl(t,null!==t.memoizedState)}throw Error(i(163))}function Tl(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new ml),t.forEach((function(t){var r=$s.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function Al(e,t){return null!==e&&(null===(e=e.memoizedState)||null!==e.dehydrated)&&(null!==(t=t.memoizedState)&&null===t.dehydrated)}var Ll=Math.ceil,Nl=x.ReactCurrentDispatcher,Rl=x.ReactCurrentOwner,Pl=0,Ol=null,Dl=null,Il=0,Ml=0,Fl=sa(0),Bl=0,jl=null,zl=0,Ul=0,$l=0,Gl=0,ql=null,Hl=0,Vl=1/0;function Wl(){Vl=$a()+500}var Yl,Kl=null,Ql=!1,Xl=null,Zl=null,Jl=!1,es=null,ts=90,ns=[],rs=[],as=null,os=0,is=null,ls=-1,ss=0,cs=0,us=null,ds=!1;function ps(){return 0!=(48&Pl)?$a():-1!==ls?ls:ls=$a()}function fs(e){if(0==(2&(e=e.mode)))return 1;if(0==(4&e))return 99===Ga()?1:2;if(0===ss&&(ss=zl),0!==Ka.transition){0!==cs&&(cs=null!==ql?ql.pendingLanes:0),e=ss;var t=4186112&~cs;return 0===(t&=-t)&&(0===(t=(e=4186112&~e)&-e)&&(t=8192)),t}return e=Ga(),0!=(4&Pl)&&98===e?e=jt(12,ss):e=jt(e=function(e){switch(e){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}(e),ss),e}function ms(e,t,n){if(50<os)throw os=0,is=null,Error(i(185));if(null===(e=hs(e,t)))return null;$t(e,t,n),e===Ol&&($l|=t,4===Bl&&vs(e,Il));var r=Ga();1===t?0!=(8&Pl)&&0==(48&Pl)?ys(e):(gs(e,n),0===Pl&&(Wl(),Wa())):(0==(4&Pl)||98!==r&&99!==r||(null===as?as=new Set([e]):as.add(e)),gs(e,n)),ql=e}function hs(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}function gs(e,t){for(var n=e.callbackNode,r=e.suspendedLanes,a=e.pingedLanes,o=e.expirationTimes,l=e.pendingLanes;0<l;){var s=31-Gt(l),c=1<<s,u=o[s];if(-1===u){if(0==(c&r)||0!=(c&a)){u=t,Mt(c);var d=It;o[s]=10<=d?u+250:6<=d?u+5e3:-1}}else u<=t&&(e.expiredLanes|=c);l&=~c}if(r=Ft(e,e===Ol?Il:0),t=It,0===r)null!==n&&(n!==Ma&&Ca(n),e.callbackNode=null,e.callbackPriority=0);else{if(null!==n){if(e.callbackPriority===t)return;n!==Ma&&Ca(n)}15===t?(n=ys.bind(null,e),null===Ba?(Ba=[n],ja=_a(Ra,Ya)):Ba.push(n),n=Ma):14===t?n=Va(99,ys.bind(null,e)):(n=function(e){switch(e){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(i(358,e))}}(t),n=Va(n,bs.bind(null,e))),e.callbackPriority=t,e.callbackNode=n}}function bs(e){if(ls=-1,cs=ss=0,0!=(48&Pl))throw Error(i(327));var t=e.callbackNode;if(Is()&&e.callbackNode!==t)return null;var n=Ft(e,e===Ol?Il:0);if(0===n)return null;var r=n,a=Pl;Pl|=16;var o=Cs();for(Ol===e&&Il===r||(Wl(),Es(e,r));;)try{Ls();break}catch(s){_s(e,s)}if(to(),Nl.current=o,Pl=a,null!==Dl?r=0:(Ol=null,Il=0,r=Bl),0!=(zl&$l))Es(e,0);else if(0!==r){if(2===r&&(Pl|=64,e.hydrate&&(e.hydrate=!1,Vr(e.containerInfo)),0!==(n=Bt(e))&&(r=Ts(e,n))),1===r)throw t=jl,Es(e,0),vs(e,n),gs(e,$a()),t;switch(e.finishedWork=e.current.alternate,e.finishedLanes=n,r){case 0:case 1:throw Error(i(345));case 2:case 5:Ps(e);break;case 3:if(vs(e,n),(62914560&n)===n&&10<(r=Hl+500-$a())){if(0!==Ft(e,0))break;if(((a=e.suspendedLanes)&n)!==n){ps(),e.pingedLanes|=e.suspendedLanes&a;break}e.timeoutHandle=qr(Ps.bind(null,e),r);break}Ps(e);break;case 4:if(vs(e,n),(4186112&n)===n)break;for(r=e.eventTimes,a=-1;0<n;){var l=31-Gt(n);o=1<<l,(l=r[l])>a&&(a=l),n&=~o}if(n=a,10<(n=(120>(n=$a()-n)?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*Ll(n/1960))-n)){e.timeoutHandle=qr(Ps.bind(null,e),n);break}Ps(e);break;default:throw Error(i(329))}}return gs(e,$a()),e.callbackNode===t?bs.bind(null,e):null}function vs(e,t){for(t&=~Gl,t&=~$l,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-Gt(t),r=1<<n;e[n]=-1,t&=~r}}function ys(e){if(0!=(48&Pl))throw Error(i(327));if(Is(),e===Ol&&0!=(e.expiredLanes&Il)){var t=Il,n=Ts(e,t);0!=(zl&$l)&&(n=Ts(e,t=Ft(e,t)))}else n=Ts(e,t=Ft(e,0));if(0!==e.tag&&2===n&&(Pl|=64,e.hydrate&&(e.hydrate=!1,Vr(e.containerInfo)),0!==(t=Bt(e))&&(n=Ts(e,t))),1===n)throw n=jl,Es(e,0),vs(e,t),gs(e,$a()),n;return e.finishedWork=e.current.alternate,e.finishedLanes=t,Ps(e),gs(e,$a()),null}function ws(e,t){var n=Pl;Pl|=1;try{return e(t)}finally{0===(Pl=n)&&(Wl(),Wa())}}function xs(e,t){var n=Pl;Pl&=-2,Pl|=8;try{return e(t)}finally{0===(Pl=n)&&(Wl(),Wa())}}function ks(e,t){ua(Fl,Ml),Ml|=t,zl|=t}function Ss(){Ml=Fl.current,ca(Fl)}function Es(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,Hr(n)),null!==Dl)for(n=Dl.return;null!==n;){var r=n;switch(r.tag){case 1:null!=(r=r.type.childContextTypes)&&ba();break;case 3:Do(),ca(fa),ca(pa),Ko();break;case 5:Mo(r);break;case 4:Do();break;case 13:case 19:ca(Fo);break;case 10:no(r);break;case 23:case 24:Ss()}n=n.return}Ol=e,Dl=Vs(e.current,null),Il=Ml=zl=t,Bl=0,jl=null,Gl=$l=Ul=0}function _s(e,t){for(;;){var n=Dl;try{if(to(),Qo.current=Ri,ni){for(var r=Jo.memoizedState;null!==r;){var a=r.queue;null!==a&&(a.pending=null),r=r.next}ni=!1}if(Zo=0,ti=ei=Jo=null,ri=!1,Rl.current=null,null===n||null===n.return){Bl=1,jl=t,Dl=null;break}e:{var o=e,i=n.return,l=n,s=t;if(t=Il,l.flags|=2048,l.firstEffect=l.lastEffect=null,null!==s&&"object"==typeof s&&"function"==typeof s.then){var c=s;if(0==(2&l.mode)){var u=l.alternate;u?(l.updateQueue=u.updateQueue,l.memoizedState=u.memoizedState,l.lanes=u.lanes):(l.updateQueue=null,l.memoizedState=null)}var d=0!=(1&Fo.current),p=i;do{var f;if(f=13===p.tag){var m=p.memoizedState;if(null!==m)f=null!==m.dehydrated;else{var h=p.memoizedProps;f=void 0!==h.fallback&&(!0!==h.unstable_avoidThisFallback||!d)}}if(f){var g=p.updateQueue;if(null===g){var b=new Set;b.add(c),p.updateQueue=b}else g.add(c);if(0==(2&p.mode)){if(p.flags|=64,l.flags|=16384,l.flags&=-2981,1===l.tag)if(null===l.alternate)l.tag=17;else{var v=co(-1,1);v.tag=2,uo(l,v)}l.lanes|=1;break e}s=void 0,l=t;var y=o.pingCache;if(null===y?(y=o.pingCache=new dl,s=new Set,y.set(c,s)):void 0===(s=y.get(c))&&(s=new Set,y.set(c,s)),!s.has(l)){s.add(l);var w=Us.bind(null,o,c,l);c.then(w,w)}p.flags|=4096,p.lanes=t;break e}p=p.return}while(null!==p);s=Error((W(l.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.")}5!==Bl&&(Bl=2),s=cl(s,l),p=i;do{switch(p.tag){case 3:o=s,p.flags|=4096,t&=-t,p.lanes|=t,po(p,pl(0,o,t));break e;case 1:o=s;var x=p.type,k=p.stateNode;if(0==(64&p.flags)&&("function"==typeof x.getDerivedStateFromError||null!==k&&"function"==typeof k.componentDidCatch&&(null===Zl||!Zl.has(k)))){p.flags|=4096,t&=-t,p.lanes|=t,po(p,fl(p,o,t));break e}}p=p.return}while(null!==p)}Rs(n)}catch(S){t=S,Dl===n&&null!==n&&(Dl=n=n.return);continue}break}}function Cs(){var e=Nl.current;return Nl.current=Ri,null===e?Ri:e}function Ts(e,t){var n=Pl;Pl|=16;var r=Cs();for(Ol===e&&Il===t||Es(e,t);;)try{As();break}catch(a){_s(e,a)}if(to(),Pl=n,Nl.current=r,null!==Dl)throw Error(i(261));return Ol=null,Il=0,Bl}function As(){for(;null!==Dl;)Ns(Dl)}function Ls(){for(;null!==Dl&&!Ta();)Ns(Dl)}function Ns(e){var t=Yl(e.alternate,e,Ml);e.memoizedProps=e.pendingProps,null===t?Rs(e):Dl=t,Rl.current=null}function Rs(e){var t=e;do{var n=t.alternate;if(e=t.return,0==(2048&t.flags)){if(null!==(n=ll(n,t,Ml)))return void(Dl=n);if(24!==(n=t).tag&&23!==n.tag||null===n.memoizedState||0!=(1073741824&Ml)||0==(4&n.mode)){for(var r=0,a=n.child;null!==a;)r|=a.lanes|a.childLanes,a=a.sibling;n.childLanes=r}null!==e&&0==(2048&e.flags)&&(null===e.firstEffect&&(e.firstEffect=t.firstEffect),null!==t.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=t.firstEffect),e.lastEffect=t.lastEffect),1<t.flags&&(null!==e.lastEffect?e.lastEffect.nextEffect=t:e.firstEffect=t,e.lastEffect=t))}else{if(null!==(n=sl(t)))return n.flags&=2047,void(Dl=n);null!==e&&(e.firstEffect=e.lastEffect=null,e.flags|=2048)}if(null!==(t=t.sibling))return void(Dl=t);Dl=t=e}while(null!==t);0===Bl&&(Bl=5)}function Ps(e){var t=Ga();return Ha(99,Os.bind(null,e,t)),null}function Os(e,t){do{Is()}while(null!==es);if(0!=(48&Pl))throw Error(i(327));var n=e.finishedWork;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(i(177));e.callbackNode=null;var r=n.lanes|n.childLanes,a=r,o=e.pendingLanes&~a;e.pendingLanes=a,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=a,e.mutableReadLanes&=a,e.entangledLanes&=a,a=e.entanglements;for(var l=e.eventTimes,s=e.expirationTimes;0<o;){var c=31-Gt(o),u=1<<c;a[c]=0,l[c]=-1,s[c]=-1,o&=~u}if(null!==as&&0==(24&r)&&as.has(e)&&as.delete(e),e===Ol&&(Dl=Ol=null,Il=0),1<n.flags?null!==n.lastEffect?(n.lastEffect.nextEffect=n,r=n.firstEffect):r=n:r=n.firstEffect,null!==r){if(a=Pl,Pl|=32,Rl.current=null,zr=Yt,gr(l=hr())){if("selectionStart"in l)s={start:l.selectionStart,end:l.selectionEnd};else e:if(s=(s=l.ownerDocument)&&s.defaultView||window,(u=s.getSelection&&s.getSelection())&&0!==u.rangeCount){s=u.anchorNode,o=u.anchorOffset,c=u.focusNode,u=u.focusOffset;try{s.nodeType,c.nodeType}catch(C){s=null;break e}var d=0,p=-1,f=-1,m=0,h=0,g=l,b=null;t:for(;;){for(var v;g!==s||0!==o&&3!==g.nodeType||(p=d+o),g!==c||0!==u&&3!==g.nodeType||(f=d+u),3===g.nodeType&&(d+=g.nodeValue.length),null!==(v=g.firstChild);)b=g,g=v;for(;;){if(g===l)break t;if(b===s&&++m===o&&(p=d),b===c&&++h===u&&(f=d),null!==(v=g.nextSibling))break;b=(g=b).parentNode}g=v}s=-1===p||-1===f?null:{start:p,end:f}}else s=null;s=s||{start:0,end:0}}else s=null;Ur={focusedElem:l,selectionRange:s},Yt=!1,us=null,ds=!1,Kl=r;do{try{Ds()}catch(C){if(null===Kl)throw Error(i(330));zs(Kl,C),Kl=Kl.nextEffect}}while(null!==Kl);us=null,Kl=r;do{try{for(l=e;null!==Kl;){var y=Kl.flags;if(16&y&&be(Kl.stateNode,""),128&y){var w=Kl.alternate;if(null!==w){var x=w.ref;null!==x&&("function"==typeof x?x(null):x.current=null)}}switch(1038&y){case 2:kl(Kl),Kl.flags&=-3;break;case 6:kl(Kl),Kl.flags&=-3,Cl(Kl.alternate,Kl);break;case 1024:Kl.flags&=-1025;break;case 1028:Kl.flags&=-1025,Cl(Kl.alternate,Kl);break;case 4:Cl(Kl.alternate,Kl);break;case 8:_l(l,s=Kl);var k=s.alternate;wl(s),null!==k&&wl(k)}Kl=Kl.nextEffect}}catch(C){if(null===Kl)throw Error(i(330));zs(Kl,C),Kl=Kl.nextEffect}}while(null!==Kl);if(x=Ur,w=hr(),y=x.focusedElem,l=x.selectionRange,w!==y&&y&&y.ownerDocument&&mr(y.ownerDocument.documentElement,y)){null!==l&&gr(y)&&(w=l.start,void 0===(x=l.end)&&(x=w),"selectionStart"in y?(y.selectionStart=w,y.selectionEnd=Math.min(x,y.value.length)):(x=(w=y.ownerDocument||document)&&w.defaultView||window).getSelection&&(x=x.getSelection(),s=y.textContent.length,k=Math.min(l.start,s),l=void 0===l.end?k:Math.min(l.end,s),!x.extend&&k>l&&(s=l,l=k,k=s),s=fr(y,k),o=fr(y,l),s&&o&&(1!==x.rangeCount||x.anchorNode!==s.node||x.anchorOffset!==s.offset||x.focusNode!==o.node||x.focusOffset!==o.offset)&&((w=w.createRange()).setStart(s.node,s.offset),x.removeAllRanges(),k>l?(x.addRange(w),x.extend(o.node,o.offset)):(w.setEnd(o.node,o.offset),x.addRange(w))))),w=[];for(x=y;x=x.parentNode;)1===x.nodeType&&w.push({element:x,left:x.scrollLeft,top:x.scrollTop});for("function"==typeof y.focus&&y.focus(),y=0;y<w.length;y++)(x=w[y]).element.scrollLeft=x.left,x.element.scrollTop=x.top}Yt=!!zr,Ur=zr=null,e.current=n,Kl=r;do{try{for(y=e;null!==Kl;){var S=Kl.flags;if(36&S&&bl(y,Kl.alternate,Kl),128&S){w=void 0;var E=Kl.ref;if(null!==E){var _=Kl.stateNode;Kl.tag,w=_,"function"==typeof E?E(w):E.current=w}}Kl=Kl.nextEffect}}catch(C){if(null===Kl)throw Error(i(330));zs(Kl,C),Kl=Kl.nextEffect}}while(null!==Kl);Kl=null,Fa(),Pl=a}else e.current=n;if(Jl)Jl=!1,es=e,ts=t;else for(Kl=r;null!==Kl;)t=Kl.nextEffect,Kl.nextEffect=null,8&Kl.flags&&((S=Kl).sibling=null,S.stateNode=null),Kl=t;if(0===(r=e.pendingLanes)&&(Zl=null),1===r?e===is?os++:(os=0,is=e):os=0,n=n.stateNode,Sa&&"function"==typeof Sa.onCommitFiberRoot)try{Sa.onCommitFiberRoot(ka,n,void 0,64==(64&n.current.flags))}catch(C){}if(gs(e,$a()),Ql)throw Ql=!1,e=Xl,Xl=null,e;return 0!=(8&Pl)||Wa(),null}function Ds(){for(;null!==Kl;){var e=Kl.alternate;ds||null===us||(0!=(8&Kl.flags)?Je(Kl,us)&&(ds=!0):13===Kl.tag&&Al(e,Kl)&&Je(Kl,us)&&(ds=!0));var t=Kl.flags;0!=(256&t)&&gl(e,Kl),0==(512&t)||Jl||(Jl=!0,Va(97,(function(){return Is(),null}))),Kl=Kl.nextEffect}}function Is(){if(90!==ts){var e=97<ts?97:ts;return ts=90,Ha(e,Bs)}return!1}function Ms(e,t){ns.push(t,e),Jl||(Jl=!0,Va(97,(function(){return Is(),null})))}function Fs(e,t){rs.push(t,e),Jl||(Jl=!0,Va(97,(function(){return Is(),null})))}function Bs(){if(null===es)return!1;var e=es;if(es=null,0!=(48&Pl))throw Error(i(331));var t=Pl;Pl|=32;var n=rs;rs=[];for(var r=0;r<n.length;r+=2){var a=n[r],o=n[r+1],l=a.destroy;if(a.destroy=void 0,"function"==typeof l)try{l()}catch(c){if(null===o)throw Error(i(330));zs(o,c)}}for(n=ns,ns=[],r=0;r<n.length;r+=2){a=n[r],o=n[r+1];try{var s=a.create;a.destroy=s()}catch(c){if(null===o)throw Error(i(330));zs(o,c)}}for(s=e.current.firstEffect;null!==s;)e=s.nextEffect,s.nextEffect=null,8&s.flags&&(s.sibling=null,s.stateNode=null),s=e;return Pl=t,Wa(),!0}function js(e,t,n){uo(e,t=pl(0,t=cl(n,t),1)),t=ps(),null!==(e=hs(e,1))&&($t(e,1,t),gs(e,t))}function zs(e,t){if(3===e.tag)js(e,e,t);else for(var n=e.return;null!==n;){if(3===n.tag){js(n,e,t);break}if(1===n.tag){var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Zl||!Zl.has(r))){var a=fl(n,e=cl(t,e),1);if(uo(n,a),a=ps(),null!==(n=hs(n,1)))$t(n,1,a),gs(n,a);else if("function"==typeof r.componentDidCatch&&(null===Zl||!Zl.has(r)))try{r.componentDidCatch(t,e)}catch(o){}break}}n=n.return}}function Us(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=ps(),e.pingedLanes|=e.suspendedLanes&n,Ol===e&&(Il&n)===n&&(4===Bl||3===Bl&&(62914560&Il)===Il&&500>$a()-Hl?Es(e,0):Gl|=n),gs(e,t)}function $s(e,t){var n=e.stateNode;null!==n&&n.delete(t),0===(t=0)&&(0==(2&(t=e.mode))?t=1:0==(4&t)?t=99===Ga()?1:2:(0===ss&&(ss=zl),0===(t=zt(62914560&~ss))&&(t=4194304))),n=ps(),null!==(e=hs(e,t))&&($t(e,t,n),gs(e,n))}function Gs(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.flags=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childLanes=this.lanes=0,this.alternate=null}function qs(e,t,n,r){return new Gs(e,t,n,r)}function Hs(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Vs(e,t){var n=e.alternate;return null===n?((n=qs(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.nextEffect=null,n.firstEffect=null,n.lastEffect=null),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 Ws(e,t,n,r,a,o){var l=2;if(r=e,"function"==typeof e)Hs(e)&&(l=1);else if("string"==typeof e)l=5;else e:switch(e){case E:return Ys(n.children,a,o,t);case M:l=8,a|=16;break;case _:l=8,a|=1;break;case C:return(e=qs(12,n,t,8|a)).elementType=C,e.type=C,e.lanes=o,e;case N:return(e=qs(13,n,t,a)).type=N,e.elementType=N,e.lanes=o,e;case R:return(e=qs(19,n,t,a)).elementType=R,e.lanes=o,e;case F:return Ks(n,a,o,t);case B:return(e=qs(24,n,t,a)).elementType=B,e.lanes=o,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case T:l=10;break e;case A:l=9;break e;case L:l=11;break e;case P:l=14;break e;case O:l=16,r=null;break e;case D:l=22;break e}throw Error(i(130,null==e?e:typeof e,""))}return(t=qs(l,n,t,a)).elementType=e,t.type=r,t.lanes=o,t}function Ys(e,t,n,r){return(e=qs(7,e,r,t)).lanes=n,e}function Ks(e,t,n,r){return(e=qs(23,e,r,t)).elementType=F,e.lanes=n,e}function Qs(e,t,n){return(e=qs(6,e,null,t)).lanes=n,e}function Xs(e,t,n){return(t=qs(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Zs(e,t,n){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=n,this.callbackNode=null,this.callbackPriority=0,this.eventTimes=Ut(0),this.expirationTimes=Ut(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ut(0),this.mutableSourceEagerHydrationData=null}function Js(e,t,n,r){var a=t.current,o=ps(),l=fs(a);e:if(n){t:{if(Ke(n=n._reactInternals)!==n||1!==n.tag)throw Error(i(170));var s=n;do{switch(s.tag){case 3:s=s.stateNode.context;break t;case 1:if(ga(s.type)){s=s.stateNode.__reactInternalMemoizedMergedChildContext;break t}}s=s.return}while(null!==s);throw Error(i(171))}if(1===n.tag){var c=n.type;if(ga(c)){n=ya(n,c,s);break e}}n=s}else n=da;return null===t.context?t.context=n:t.pendingContext=n,(t=co(o,l)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),uo(a,t),ms(a,l,o),l}function ec(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function tc(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function nc(e,t){tc(e,t),(e=e.alternate)&&tc(e,t)}function rc(e,t,n){var r=null!=n&&null!=n.hydrationOptions&&n.hydrationOptions.mutableSources||null;if(n=new Zs(e,t,null!=n&&!0===n.hydrate),t=qs(3,null,null,2===t?7:1===t?3:0),n.current=t,t.stateNode=n,lo(t),e[Jr]=n.current,Rr(8===e.nodeType?e.parentNode:e),r)for(e=0;e<r.length;e++){var a=(t=r[e])._getVersion;a=a(t._source),null==n.mutableSourceEagerHydrationData?n.mutableSourceEagerHydrationData=[t,a]:n.mutableSourceEagerHydrationData.push(t,a)}this._internalRoot=n}function ac(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function oc(e,t,n,r,a){var o=n._reactRootContainer;if(o){var i=o._internalRoot;if("function"==typeof a){var l=a;a=function(){var e=ec(i);l.call(e)}}Js(t,i,e,a)}else{if(o=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new rc(e,0,t?{hydrate:!0}:void 0)}(n,r),i=o._internalRoot,"function"==typeof a){var s=a;a=function(){var e=ec(i);s.call(e)}}xs((function(){Js(t,i,e,a)}))}return ec(i)}function ic(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!ac(t))throw Error(i(200));return function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:S,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)}Yl=function(e,t,n){var r=t.lanes;if(null!==e)if(e.memoizedProps!==t.pendingProps||fa.current)Mi=!0;else{if(0==(n&r)){switch(Mi=!1,t.tag){case 3:Vi(t),Wo();break;case 5:Io(t);break;case 1:ga(t.type)&&wa(t);break;case 4:Oo(t,t.stateNode.containerInfo);break;case 10:r=t.memoizedProps.value;var a=t.type._context;ua(Xa,a._currentValue),a._currentValue=r;break;case 13:if(null!==t.memoizedState)return 0!=(n&t.child.childLanes)?Zi(e,t,n):(ua(Fo,1&Fo.current),null!==(t=ol(e,t,n))?t.sibling:null);ua(Fo,1&Fo.current);break;case 19:if(r=0!=(n&t.childLanes),0!=(64&e.flags)){if(r)return al(e,t,n);t.flags|=64}if(null!==(a=t.memoizedState)&&(a.rendering=null,a.tail=null,a.lastEffect=null),ua(Fo,Fo.current),r)break;return null;case 23:case 24:return t.lanes=0,Ui(e,t,n)}return ol(e,t,n)}Mi=0!=(16384&e.flags)}else Mi=!1;switch(t.lanes=0,t.tag){case 2:if(r=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,a=ha(t,pa.current),ao(t,n),a=ii(null,t,r,e,a,n),t.flags|=1,"object"==typeof a&&null!==a&&"function"==typeof a.render&&void 0===a.$$typeof){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,ga(r)){var o=!0;wa(t)}else o=!1;t.memoizedState=null!==a.state&&void 0!==a.state?a.state:null,lo(t);var l=r.getDerivedStateFromProps;"function"==typeof l&&go(t,r,l,e),a.updater=bo,t.stateNode=a,a._reactInternals=t,xo(t,r,e,n),t=Hi(null,t,r,!0,o,n)}else t.tag=0,Fi(null,t,a,n),t=t.child;return t;case 16:a=t.elementType;e:{switch(null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,a=(o=a._init)(a._payload),t.type=a,o=t.tag=function(e){if("function"==typeof e)return Hs(e)?1:0;if(null!=e){if((e=e.$$typeof)===L)return 11;if(e===P)return 14}return 2}(a),e=Qa(a,e),o){case 0:t=Gi(null,t,a,e,n);break e;case 1:t=qi(null,t,a,e,n);break e;case 11:t=Bi(null,t,a,e,n);break e;case 14:t=ji(null,t,a,Qa(a.type,e),r,n);break e}throw Error(i(306,a,""))}return t;case 0:return r=t.type,a=t.pendingProps,Gi(e,t,r,a=t.elementType===r?a:Qa(r,a),n);case 1:return r=t.type,a=t.pendingProps,qi(e,t,r,a=t.elementType===r?a:Qa(r,a),n);case 3:if(Vi(t),r=t.updateQueue,null===e||null===r)throw Error(i(282));if(r=t.pendingProps,a=null!==(a=t.memoizedState)?a.element:null,so(e,t),fo(t,r,null,n),(r=t.memoizedState.element)===a)Wo(),t=ol(e,t,n);else{if((o=(a=t.stateNode).hydrate)&&(zo=Wr(t.stateNode.containerInfo.firstChild),jo=t,o=Uo=!0),o){if(null!=(e=a.mutableSourceEagerHydrationData))for(a=0;a<e.length;a+=2)(o=e[a])._workInProgressVersionPrimary=e[a+1],Yo.push(o);for(n=To(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|1024,n=n.sibling}else Fi(e,t,r,n),Wo();t=t.child}return t;case 5:return Io(t),null===e&&qo(t),r=t.type,a=t.pendingProps,o=null!==e?e.memoizedProps:null,l=a.children,Gr(r,a)?l=null:null!==o&&Gr(r,o)&&(t.flags|=16),$i(e,t),Fi(e,t,l,n),t.child;case 6:return null===e&&qo(t),null;case 13:return Zi(e,t,n);case 4:return Oo(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=Co(t,null,r,n):Fi(e,t,r,n),t.child;case 11:return r=t.type,a=t.pendingProps,Bi(e,t,r,a=t.elementType===r?a:Qa(r,a),n);case 7:return Fi(e,t,t.pendingProps,n),t.child;case 8:case 12:return Fi(e,t,t.pendingProps.children,n),t.child;case 10:e:{r=t.type._context,a=t.pendingProps,l=t.memoizedProps,o=a.value;var s=t.type._context;if(ua(Xa,s._currentValue),s._currentValue=o,null!==l)if(s=l.value,0===(o=cr(s,o)?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(s,o):1073741823))){if(l.children===a.children&&!fa.current){t=ol(e,t,n);break e}}else for(null!==(s=t.child)&&(s.return=t);null!==s;){var c=s.dependencies;if(null!==c){l=s.child;for(var u=c.firstContext;null!==u;){if(u.context===r&&0!=(u.observedBits&o)){1===s.tag&&((u=co(-1,n&-n)).tag=2,uo(s,u)),s.lanes|=n,null!==(u=s.alternate)&&(u.lanes|=n),ro(s.return,n),c.lanes|=n;break}u=u.next}}else l=10===s.tag&&s.type===t.type?null:s.child;if(null!==l)l.return=s;else for(l=s;null!==l;){if(l===t){l=null;break}if(null!==(s=l.sibling)){s.return=l.return,l=s;break}l=l.return}s=l}Fi(e,t,a.children,n),t=t.child}return t;case 9:return a=t.type,r=(o=t.pendingProps).children,ao(t,n),r=r(a=oo(a,o.unstable_observedBits)),t.flags|=1,Fi(e,t,r,n),t.child;case 14:return o=Qa(a=t.type,t.pendingProps),ji(e,t,a,o=Qa(a.type,o),r,n);case 15:return zi(e,t,t.type,t.pendingProps,r,n);case 17:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:Qa(r,a),null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),t.tag=1,ga(r)?(e=!0,wa(t)):e=!1,ao(t,n),yo(t,r,a),xo(t,r,a,n),Hi(null,t,r,!0,e,n);case 19:return al(e,t,n);case 23:case 24:return Ui(e,t,n)}throw Error(i(156,t.tag))},rc.prototype.render=function(e){Js(e,this._internalRoot,null,null)},rc.prototype.unmount=function(){var e=this._internalRoot,t=e.containerInfo;Js(null,e,null,(function(){t[Jr]=null}))},et=function(e){13===e.tag&&(ms(e,4,ps()),nc(e,4))},tt=function(e){13===e.tag&&(ms(e,67108864,ps()),nc(e,67108864))},nt=function(e){if(13===e.tag){var t=ps(),n=fs(e);ms(e,n,t),nc(e,n)}},rt=function(e,t){return t()},Ce=function(e,t,n){switch(t){case"input":if(ne(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=aa(r);if(!a)throw Error(i(90));X(r),ne(r,a)}}}break;case"textarea":ce(e,n);break;case"select":null!=(t=n.value)&&ie(e,!!n.multiple,t,!1)}},Pe=ws,Oe=function(e,t,n,r,a){var o=Pl;Pl|=4;try{return Ha(98,e.bind(null,t,n,r,a))}finally{0===(Pl=o)&&(Wl(),Wa())}},De=function(){0==(49&Pl)&&(function(){if(null!==as){var e=as;as=null,e.forEach((function(e){e.expiredLanes|=24&e.pendingLanes,gs(e,$a())}))}Wa()}(),Is())},Ie=function(e,t){var n=Pl;Pl|=2;try{return e(t)}finally{0===(Pl=n)&&(Wl(),Wa())}};var lc={Events:[na,ra,aa,Ne,Re,Is,{current:!1}]},sc={findFiberByHostInstance:ta,bundleType:0,version:"17.0.2",rendererPackageName:"react-dom"},cc={bundleType:sc.bundleType,version:sc.version,rendererPackageName:sc.rendererPackageName,rendererConfig:sc.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:x.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=Ze(e))?null:e.stateNode},findFiberByHostInstance:sc.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var uc=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!uc.isDisabled&&uc.supportsFiber)try{ka=uc.inject(cc),Sa=uc}catch(he){}}t.hydrate=function(e,t,n){if(!ac(t))throw Error(i(200));return oc(null,e,t,!0,n)}},7104:(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(9516)},448: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,c,u;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(u=e.entries();!(s=u.next()).done;)if(!i.has(s.value[0]))return!1;for(u=e.entries();!(s=u.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(u=e.entries();!(s=u.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=(c=Object.keys(e)).length)!==Object.keys(i).length)return!1;for(s=l;0!=s--;)if(!Object.prototype.hasOwnProperty.call(i,c[s]))return!1;if(t&&e instanceof Element)return!1;for(s=l;0!=s--;)if(("_owner"!==c[s]&&"__v"!==c[s]&&"__o"!==c[s]||!e.$$typeof)&&!o(e[c[s]],i[c[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}}},2160:(e,t,n)=>{"use strict";n.d(t,{EN:()=>H,So:()=>J});var r=n(1504),a=n(3268),o=n.n(a),i=n(448),l=n.n(i),s=n(9328),c=n.n(s),u=n(1072),d=n.n(u);function p(){return p=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},p.apply(this,arguments)}function f(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,m(e,t)}function m(e,t){return m=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},m(e,t)}function h(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 g={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},b={rel:["amphtml","canonical","alternate"]},v={type:["application/ld+json"]},y={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(g).map((function(e){return g[e]})),x={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},k=Object.keys(x).reduce((function(e,t){return e[x[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,g.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 p({},e,t)}),{})},T=function(e,t){return t.filter((function(e){return void 0!==e[g.BASE]})).map((function(e){return e[g.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 c=e[n].toLowerCase();return r[n]||(r[n]={}),a[n]||(a[n]={}),!r[n][c]&&(a[n][c]=!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=p({},r[l],a[l]);r[l]=s}return e}),[]).reverse()},L=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},N=function(e){return Array.isArray(e)?e.join(""):e},R=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}},P=function(e,t){var n;return p({},e,((n={})[t]=void 0,n))},O=[g.NOSCRIPT,g.SCRIPT,g.STYLE],D=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[x[n]||n]=e[n],t}),t)},F=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=x[e]||e;"innerHTML"===n||"cssText"===n?o.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:o[n]=t[e]})),r.createElement(e,o)}))},B=function(e,t,n){switch(e){case g.TITLE:return{toComponent:function(){return n=t.titleAttributes,(a={key:e=t.title})["data-rh"]=!0,o=M(n,a),[r.createElement(g.TITLE,o,e)];var e,n,a,o},toString:function(){return function(e,t,n,r){var a=I(n),o=N(t);return a?"<"+e+' data-rh="true" '+a+">"+D(o,r)+"</"+e+">":"<"+e+' data-rh="true">'+D(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 F(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+'="'+D(r[t],n)+'"';return e?e+" "+a:a}),""),o=r.innerHTML||r.cssText||"",i=-1===O.indexOf(e);return t+"<"+e+' data-rh="true" '+a+(i?"/>":">"+o+"</"+e+">")}),"")}(e,t,n)}}}},j=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,c=e.titleAttributes,u=e.linkTags,d=e.metaTags,p=e.scriptTags,f={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var m=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,a=R(e.metaTags,y),o=R(t,b),i=R(n,v);return{priorityMethods:{toComponent:function(){return[].concat(F(g.META,a.priority),F(g.LINK,o.priority),F(g.SCRIPT,i.priority))},toString:function(){return B(g.META,a.priority,r)+" "+B(g.LINK,o.priority,r)+" "+B(g.SCRIPT,i.priority,r)}},metaTags:a.default,linkTags:o.default,scriptTags:i.default}}(e);f=m.priorityMethods,u=m.linkTags,d=m.metaTags,p=m.scriptTags}return{priority:f,base:B(g.BASE,t,r),bodyAttributes:B("bodyAttributes",n,r),htmlAttributes:B("htmlAttributes",a,r),link:B(g.LINK,u,r),meta:B(g.META,d,r),noscript:B(g.NOSCRIPT,o,r),script:B(g.SCRIPT,p,r),style:B(g.STYLE,i,r),title:B(g.TITLE,{title:s,titleAttributes:c},r)}},z=[],U=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?z:n.instances},add:function(e){(n.canUseDOM?z:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?z:n.instances).indexOf(e);(n.canUseDOM?z:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=j({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},$=r.createContext({}),G=o().shape({setHelmet:o().func,helmetInstances:o().shape({get:o().func,add:o().func,remove:o().func})}),q="undefined"!=typeof document,H=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new U(r.props.context,t.canUseDOM),r}return f(t,e),t.prototype.render=function(){return r.createElement($.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);H.canUseDOM=q,H.propTypes={context:o().shape({helmet:o().shape()}),children:o().node.isRequired},H.defaultProps={context:{}},H.displayName="HelmetProvider";var V=function(e,t){var n,r=document.head||document.querySelector(g.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}},W=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],c=t[s]||"";n.getAttribute(s)!==c&&n.setAttribute(s,c),-1===a.indexOf(s)&&a.push(s);var u=o.indexOf(s);-1!==u&&o.splice(u,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(","))}},Y=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,c=e.styleTags,u=e.title,d=e.titleAttributes;W(g.BODY,e.bodyAttributes),W(g.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=N(e)),W(g.TITLE,t)}(u,d);var p={baseTag:V(g.BASE,n),linkTags:V(g.LINK,a),metaTags:V(g.META,o),noscriptTags:V(g.NOSCRIPT,i),scriptTags:V(g.SCRIPT,s),styleTags:V(g.STYLE,c)},f={},m={};Object.keys(p).forEach((function(e){var t=p[e],n=t.newTags,r=t.oldTags;n.length&&(f[e]=n),r.length&&(m[e]=p[e].oldTags)})),t&&t(),l(e,f,m)},K=null,Q=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}f(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=p({},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(g.LINK,["rel","href"],e),metaTags:A(g.META,["name","charset","http-equiv","property","itemprop"],e),noscriptTags:A(g.NOSCRIPT,["innerHTML"],e),onChangeClientState:_(e),scriptTags:A(g.SCRIPT,["src","innerHTML"],e),styleTags:A(g.STYLE,["cssText"],e),title:E(e),titleAttributes:C("titleAttributes",e),prioritizeSeoTags:L(e,"prioritizeSeoTags")});H.canUseDOM?(t=o,K&&cancelAnimationFrame(K),t.defer?K=requestAnimationFrame((function(){Y(t,(function(){K=null}))})):(Y(t),K=null)):j&&(a=j(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);Q.propTypes={context:G.isRequired},Q.displayName="HelmetDispatcher";var X=["children"],Z=["children"],J=function(e){function t(){return e.apply(this,arguments)||this}f(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!l()(P(this.props,"helmetData"),P(e,"helmetData"))},n.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case g.SCRIPT:case g.NOSCRIPT:return{innerHTML:t};case g.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 p({},r,((t={})[n.type]=[].concat(r[n.type]||[],[p({},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 g.TITLE:return p({},a,((t={})[r.type]=i,t.titleAttributes=p({},o),t));case g.BODY:return p({},a,{bodyAttributes:p({},o)});case g.HTML:return p({},a,{htmlAttributes:p({},o)});default:return p({},a,((n={})[r.type]=p({},o),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=p({},t);return Object.keys(e).forEach((function(t){var r;n=p({},n,((r={})[t]=e[t],r))})),n},n.warnOnInvalidChildren=function(e,t){return c()(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."),c()(!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=h(r,X),l=Object.keys(i).reduce((function(e,t){return e[k[t]||t]=i[t],e}),{}),s=e.type;switch("symbol"==typeof s?s=s.toString():n.warnOnInvalidChildren(e,o),s){case g.FRAGMENT:t=n.mapChildrenToProps(o,t);break;case g.LINK:case g.META:case g.NOSCRIPT:case g.SCRIPT:case g.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=h(e,Z),a=p({},n),o=n.helmetData;return t&&(a=this.mapChildrenToProps(t,a)),!o||o instanceof U||(o=new U(o.context,o.instances)),o?r.createElement(Q,p({},a,{context:o.value,helmetData:void 0})):r.createElement($.Consumer,null,(function(e){return r.createElement(Q,p({},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"},9764:(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,c=n?Symbol.for("react.context"):60110,u=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,p=n?Symbol.for("react.forward_ref"):60112,f=n?Symbol.for("react.suspense"):60113,m=n?Symbol.for("react.suspense_list"):60120,h=n?Symbol.for("react.memo"):60115,g=n?Symbol.for("react.lazy"):60116,b=n?Symbol.for("react.block"):60121,v=n?Symbol.for("react.fundamental"):60117,y=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function x(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case u:case d:case o:case l:case i:case f:return e;default:switch(e=e&&e.$$typeof){case c:case p:case g:case h:case s:return e;default:return t}}case a:return t}}}function k(e){return x(e)===d}t.AsyncMode=u,t.ConcurrentMode=d,t.ContextConsumer=c,t.ContextProvider=s,t.Element=r,t.ForwardRef=p,t.Fragment=o,t.Lazy=g,t.Memo=h,t.Portal=a,t.Profiler=l,t.StrictMode=i,t.Suspense=f,t.isAsyncMode=function(e){return k(e)||x(e)===u},t.isConcurrentMode=k,t.isContextConsumer=function(e){return x(e)===c},t.isContextProvider=function(e){return x(e)===s},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return x(e)===p},t.isFragment=function(e){return x(e)===o},t.isLazy=function(e){return x(e)===g},t.isMemo=function(e){return x(e)===h},t.isPortal=function(e){return x(e)===a},t.isProfiler=function(e){return x(e)===l},t.isStrictMode=function(e){return x(e)===i},t.isSuspense=function(e){return x(e)===f},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===d||e===l||e===i||e===f||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===h||e.$$typeof===s||e.$$typeof===c||e.$$typeof===p||e.$$typeof===v||e.$$typeof===y||e.$$typeof===w||e.$$typeof===b)},t.typeOf=x},2168:(e,t,n)=>{"use strict";e.exports=n(9764)},8852:(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(1504),s=n(3268),c=[],u=[];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 p(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 f(e,t){return l.createElement((n=e)&&n.__esModule?n.default:n,t);var n}function m(e,t){var d,p;if(!t.loading)throw new Error("react-loadable requires a `loading` component");var m=i({loader:null,loading:null,delay:200,timeout:null,render:f,webpack:null,modules:null},t),h=null;function g(){return h||(h=e(m.loader)),h.promise}return c.push(g),"function"==typeof m.webpack&&u.push((function(){if((0,m.webpack)().every((function(e){return void 0!==e&&void 0!==n.m[e]})))return g()})),p=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}),h=e(m.loader),r._loadModule()})),g(),r.state={error:h.error,pastDelay:!1,timedOut:!1,loading:h.loading,loaded:h.loaded},r}r(n,t),n.preload=function(){return g()};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.loadable&&Array.isArray(m.modules)&&m.modules.forEach((function(t){e.context.loadable.report(t)})),h.loading){var t=function(t){e._mounted&&e.setState(t)};"number"==typeof m.delay&&(0===m.delay?this.setState({pastDelay:!0}):this._delay=setTimeout((function(){t({pastDelay:!0})}),m.delay)),"number"==typeof m.timeout&&(this._timeout=setTimeout((function(){t({timedOut:!0})}),m.timeout));var n=function(){t({error:h.error,loaded:h.loaded,loading:h.loading}),e._clearTimeouts()};h.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(m.loading,{isLoading:this.state.loading,pastDelay:this.state.pastDelay,timedOut:this.state.timedOut,error:this.state.error,retry:this.retry}):this.state.loaded?m.render(this.state.loaded,this.props):null},n}(l.Component),o(d,"contextTypes",{loadable:s.shape({report:s.func.isRequired})}),p}function h(e){return m(d,e)}h.Map=function(e){if("function"!=typeof e.render)throw new Error("LoadableMap requires a `render(loaded, props)` function");return m(p,e)};var g=function(e){function t(){return e.apply(this,arguments)||this}r(t,e);var n=t.prototype;return n.getChildContext=function(){return{loadable:{report:this.props.report}}},n.render=function(){return l.Children.only(this.props.children)},t}(l.Component);function b(e){for(var t=[];e.length;){var n=e.pop();t.push(n())}return Promise.all(t).then((function(){if(e.length)return b(e)}))}o(g,"propTypes",{report:s.func.isRequired}),o(g,"childContextTypes",{loadable:s.shape({report:s.func.isRequired}).isRequired}),h.Capture=g,h.preloadAll=function(){return new Promise((function(e,t){b(c).then(e,t)}))},h.preloadReady=function(){return new Promise((function(e,t){b(u).then(e,e)}))},e.exports=h},5464:(e,t,n)=>{"use strict";n.d(t,{C:()=>i,k:()=>l});var r=n(5592),a=n(5072),o=n(1504);function i(e,t,n){return void 0===n&&(n=[]),e.some((function(e){var a=e.path?(0,r.ot)(t,e):n.length?n[n.length-1].match:r.E5.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.Wk,n,e.map((function(e,n){return o.createElement(r.kX,{key:e.key||n,path:e.path,exact:e.exact,strict:e.strict,render:function(n){return e.render?e.render((0,a.c)({},n,{},t,{route:e})):o.createElement(e.component,(0,a.c)({},n,t,{route:e}))}})}))):null}},440:(e,t,n)=>{"use strict";n.d(t,{Af:()=>y,cH:()=>g,kn:()=>u});var r=n(5592),a=n(8992),o=n(1504),i=n(8064),l=n(5072),s=n(5656),c=n(4812),u=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.iU)(t.props),t}return(0,a.c)(t,e),t.prototype.render=function(){return o.createElement(r.E5,{history:this.history,children:this.props.children})},t}(o.Component);o.Component;var d=function(e,t){return"function"==typeof e?e(t):e},p=function(e,t){return"string"==typeof e?(0,i.gh)(e,null,null,t):e},f=function(e){return e},m=o.forwardRef;void 0===m&&(m=f);var h=m((function(e,t){var n=e.innerRef,r=e.navigate,a=e.onClick,i=(0,s.c)(e,["innerRef","navigate","onClick"]),c=i.target,u=(0,l.c)({},i,{onClick:function(e){try{a&&a(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||c&&"_self"!==c||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),r())}});return u.ref=f!==m&&t||n,o.createElement("a",u)}));var g=m((function(e,t){var n=e.component,a=void 0===n?h:n,u=e.replace,g=e.to,b=e.innerRef,v=(0,s.c)(e,["component","replace","to","innerRef"]);return o.createElement(r.Os.Consumer,null,(function(e){e||(0,c.c)(!1);var n=e.history,r=p(d(g,e.location),e.location),s=r?n.createHref(r):"",h=(0,l.c)({},v,{href:s,navigate:function(){var t=d(g,e.location),r=(0,i.Ep)(e.location)===(0,i.Ep)(p(t));(u||r?n.replace:n.push)(t)}});return f!==m?h.ref=t||b:h.innerRef=b,o.createElement(a,h)}))})),b=function(e){return e},v=o.forwardRef;void 0===v&&(v=b);var y=v((function(e,t){var n=e["aria-current"],a=void 0===n?"page":n,i=e.activeClassName,u=void 0===i?"active":i,f=e.activeStyle,m=e.className,h=e.exact,y=e.isActive,w=e.location,x=e.sensitive,k=e.strict,S=e.style,E=e.to,_=e.innerRef,C=(0,s.c)(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return o.createElement(r.Os.Consumer,null,(function(e){e||(0,c.c)(!1);var n=w||e.location,i=p(d(E,n),n),s=i.pathname,T=s&&s.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),A=T?(0,r.ot)(n.pathname,{path:T,exact:h,sensitive:x,strict:k}):null,L=!!(y?y(A,n):A),N="function"==typeof m?m(L):m,R="function"==typeof S?S(L):S;L&&(N=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(" ")}(N,u),R=(0,l.c)({},R,f));var P=(0,l.c)({"aria-current":L&&a||null,className:N,style:R,to:i},C);return b!==v?P.ref=t||_:P.innerRef=_,o.createElement(g,P)}))}))},5592:(e,t,n)=>{"use strict";n.d(t,{E5:()=>y,IT:()=>O,Os:()=>v,Uz:()=>P,Wk:()=>N,kX:()=>E,ot:()=>S});var r=n(8992),a=n(1504),o=n(3268),i=n.n(o),l=n(8064),s=n(4812),c=n(5072),u=n(8216),d=n.n(u),p=(n(2168),n(5656)),f=(n(4792),1073741823),m="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:{};var h=a.createContext||function(e,t){var n,o,l="__create-react-context-"+function(){var e="__global_unique_id__";return m[e]=(m[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.c)(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):f,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 c=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.c)(n,t);var a=n.prototype;return a.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?f:t},a.componentDidMount=function(){this.context[l]&&this.context[l].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?f: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 c.contextTypes=((o={})[l]=i().object,o),{Provider:s,Consumer:c}},g=function(e){var t=h();return t.displayName=e,t},b=g("Router-History"),v=g("Router"),y=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.c)(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(v.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},a.createElement(b.Provider,{children:this.props.children||null,value:this.props.history}))},t}(a.Component);a.Component;a.Component;var w={},x=1e4,k=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,c=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 k<x&&(r[e]=o,k++),o}(n,{end:o,strict:l,sensitive:c}),a=r.regexp,i=r.keys,s=a.exec(e);if(!s)return null;var u=s[0],p=s.slice(1),f=e===u;return o&&!f?null:{path:n,url:"/"===n&&""===u?"/":u,isExact:f,params:i.reduce((function(e,t,n){return e[t.name]=p[n],e}),{})}}),null)}var E=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.c)(t,e),t.prototype.render=function(){var e=this;return a.createElement(v.Consumer,null,(function(t){t||(0,s.c)(!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,c.c)({},t,{location:n,match:r}),i=e.props,l=i.children,u=i.component,d=i.render;return Array.isArray(l)&&function(e){return 0===a.Children.count(e)}(l)&&(l=null),a.createElement(v.Provider,{value:o},o.match?l?"function"==typeof l?l(o):l:u?a.createElement(u,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,c.c)({},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.c)(!1)}}function L(){}a.Component;var N=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.c)(t,e),t.prototype.render=function(){var e=this;return a.createElement(v.Consumer,null,(function(t){t||(0,s.c)(!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,c.c)({},e.props,{path:i})):t.match}})),r?a.cloneElement(n,{location:o,computedMatch:r}):null}))},t}(a.Component);var R=a.useContext;function P(){return R(b)}function O(){return R(v).location}},8216:(e,t,n)=>{var r=n(9600);e.exports=f,e.exports.parse=o,e.exports.compile=function(e,t){return l(o(e,t),t)},e.exports.tokensToFunction=l,e.exports.tokensToRegExp=p;var a=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,r=[],o=0,i=0,l="",u=t&&t.delimiter||"/";null!=(n=a.exec(e));){var d=n[0],p=n[1],f=n.index;if(l+=e.slice(i,f),i=f+d.length,p)l+=p[1];else{var m=e[i],h=n[2],g=n[3],b=n[4],v=n[5],y=n[6],w=n[7];l&&(r.push(l),l="");var x=null!=h&&null!=m&&m!==h,k="+"===y||"*"===y,S="?"===y||"*"===y,E=n[2]||u,_=b||v;r.push({name:g||o++,prefix:h||"",delimiter:E,optional:S,repeat:k,partial:x,asterisk:!!w,pattern:_?c(_):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,c=0;c<e.length;c++){var u=e[c];if("string"!=typeof u){var d,p=l[u.name];if(null==p){if(u.optional){u.partial&&(o+=u.prefix);continue}throw new TypeError('Expected "'+u.name+'" to be defined')}if(r(p)){if(!u.repeat)throw new TypeError('Expected "'+u.name+'" to not repeat, but received `'+JSON.stringify(p)+"`");if(0===p.length){if(u.optional)continue;throw new TypeError('Expected "'+u.name+'" to not be empty')}for(var f=0;f<p.length;f++){if(d=s(p[f]),!n[c].test(d))throw new TypeError('Expected all "'+u.name+'" to match "'+u.pattern+'", but received `'+JSON.stringify(d)+"`");o+=(0===f?u.prefix:u.delimiter)+d}}else{if(d=u.asterisk?encodeURI(p).replace(/[?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})):s(p),!n[c].test(d))throw new TypeError('Expected "'+u.name+'" to match "'+u.pattern+'", but received "'+d+'"');o+=u.prefix+d}}else o+=u}return o}}function s(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function c(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function u(e,t){return e.keys=t,e}function d(e){return e&&e.sensitive?"":"i"}function p(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 c=e[l];if("string"==typeof c)i+=s(c);else{var p=s(c.prefix),f="(?:"+c.pattern+")";t.push(c),c.repeat&&(f+="(?:"+p+f+")*"),i+=f=c.optional?c.partial?p+"("+f+")?":"(?:"+p+"("+f+"))?":p+"("+f+")"}}var m=s(n.delimiter||"/"),h=i.slice(-m.length)===m;return a||(i=(h?i.slice(0,-m.length):i)+"(?:"+m+"(?=$))?"),i+=o?"$":a&&h?"":"(?="+m+"|$)",u(new RegExp("^"+i,d(n)),t)}function f(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 u(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],a=0;a<e.length;a++)r.push(f(e[a],t,n).source);return u(new RegExp("(?:"+r.join("|")+")",d(n)),t)}(e,t,n):function(e,t,n){return p(o(e,n),t,n)}(e,t,n)}},3028:(e,t,n)=>{"use strict";var r=n(9456),a=60103,o=60106;t.Fragment=60107,t.StrictMode=60108,t.Profiler=60114;var i=60109,l=60110,s=60112;t.Suspense=60113;var c=60115,u=60116;if("function"==typeof Symbol&&Symbol.for){var d=Symbol.for;a=d("react.element"),o=d("react.portal"),t.Fragment=d("react.fragment"),t.StrictMode=d("react.strict_mode"),t.Profiler=d("react.profiler"),i=d("react.provider"),l=d("react.context"),s=d("react.forward_ref"),t.Suspense=d("react.suspense"),c=d("react.memo"),u=d("react.lazy")}var p="function"==typeof Symbol&&Symbol.iterator;function f(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 m={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},h={};function g(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||m}function b(){}function v(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||m}g.prototype.isReactComponent={},g.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(f(85));this.updater.enqueueSetState(this,e,t,"setState")},g.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},b.prototype=g.prototype;var y=v.prototype=new b;y.constructor=v,r(y,g.prototype),y.isPureReactComponent=!0;var w={current:null},x=Object.prototype.hasOwnProperty,k={key:!0,ref:!0,__self:!0,__source:!0};function S(e,t,n){var r,o={},i=null,l=null;if(null!=t)for(r in void 0!==t.ref&&(l=t.ref),void 0!==t.key&&(i=""+t.key),t)x.call(t,r)&&!k.hasOwnProperty(r)&&(o[r]=t[r]);var s=arguments.length-2;if(1===s)o.children=n;else if(1<s){for(var c=Array(s),u=0;u<s;u++)c[u]=arguments[u+2];o.children=c}if(e&&e.defaultProps)for(r in s=e.defaultProps)void 0===o[r]&&(o[r]=s[r]);return{$$typeof:a,type:e,key:i,ref:l,props:o,_owner:w.current}}function E(e){return"object"==typeof e&&null!==e&&e.$$typeof===a}var _=/\/+/g;function C(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 T(e,t,n,r,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 a:case o:s=!0}}if(s)return i=i(s=e),e=""===r?"."+C(s,0):r,Array.isArray(i)?(n="",null!=e&&(n=e.replace(_,"$&/")+"/"),T(i,t,n,"",(function(e){return e}))):null!=i&&(E(i)&&(i=function(e,t){return{$$typeof:a,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(i,n+(!i.key||s&&s.key===i.key?"":(""+i.key).replace(_,"$&/")+"/")+e)),t.push(i)),1;if(s=0,r=""===r?".":r+":",Array.isArray(e))for(var c=0;c<e.length;c++){var u=r+C(l=e[c],c);s+=T(l,t,n,u,i)}else if(u=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=p&&e[p]||e["@@iterator"])?e:null}(e),"function"==typeof u)for(e=u.call(e),c=0;!(l=e.next()).done;)s+=T(l=l.value,t,n,u=r+C(l,c++),i);else if("object"===l)throw t=""+e,Error(f(31,"[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t));return s}function A(e,t,n){if(null==e)return e;var r=[],a=0;return T(e,r,"","",(function(e){return t.call(n,e,a++)})),r}function L(e){if(-1===e._status){var t=e._result;t=t(),e._status=0,e._result=t,t.then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)}))}if(1===e._status)return e._result;throw e._result}var N={current:null};function R(){var e=N.current;if(null===e)throw Error(f(321));return e}var P={ReactCurrentDispatcher:N,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:w,IsSomeRendererActing:{current:!1},assign:r};t.Children={map:A,forEach:function(e,t,n){A(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return A(e,(function(){t++})),t},toArray:function(e){return A(e,(function(e){return e}))||[]},only:function(e){if(!E(e))throw Error(f(143));return e}},t.Component=g,t.PureComponent=v,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=P,t.cloneElement=function(e,t,n){if(null==e)throw Error(f(267,e));var o=r({},e.props),i=e.key,l=e.ref,s=e._owner;if(null!=t){if(void 0!==t.ref&&(l=t.ref,s=w.current),void 0!==t.key&&(i=""+t.key),e.type&&e.type.defaultProps)var c=e.type.defaultProps;for(u in t)x.call(t,u)&&!k.hasOwnProperty(u)&&(o[u]=void 0===t[u]&&void 0!==c?c[u]:t[u])}var u=arguments.length-2;if(1===u)o.children=n;else if(1<u){c=Array(u);for(var d=0;d<u;d++)c[d]=arguments[d+2];o.children=c}return{$$typeof:a,type:e.type,key:i,ref:l,props:o,_owner:s}},t.createContext=function(e,t){return void 0===t&&(t=null),(e={$$typeof:l,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:i,_context:e},e.Consumer=e},t.createElement=S,t.createFactory=function(e){var t=S.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:s,render:e}},t.isValidElement=E,t.lazy=function(e){return{$$typeof:u,_payload:{_status:-1,_result:e},_init:L}},t.memo=function(e,t){return{$$typeof:c,type:e,compare:void 0===t?null:t}},t.useCallback=function(e,t){return R().useCallback(e,t)},t.useContext=function(e,t){return R().useContext(e,t)},t.useDebugValue=function(){},t.useEffect=function(e,t){return R().useEffect(e,t)},t.useImperativeHandle=function(e,t,n){return R().useImperativeHandle(e,t,n)},t.useLayoutEffect=function(e,t){return R().useLayoutEffect(e,t)},t.useMemo=function(e,t){return R().useMemo(e,t)},t.useReducer=function(e,t,n){return R().useReducer(e,t,n)},t.useRef=function(e){return R().useRef(e)},t.useState=function(e){return R().useState(e)},t.version="17.0.2"},1504:(e,t,n)=>{"use strict";e.exports=n(3028)},8328:(e,t)=>{"use strict";var n,r,a,o;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}}if("undefined"==typeof window||"function"!=typeof MessageChannel){var c=null,u=null,d=function(){if(null!==c)try{var e=t.unstable_now();c(!0,e),c=null}catch(n){throw setTimeout(d,0),n}};n=function(e){null!==c?setTimeout(n,0,e):(c=e,setTimeout(d,0))},r=function(e,t){u=setTimeout(e,t)},a=function(){clearTimeout(u)},t.unstable_shouldYield=function(){return!1},o=t.unstable_forceFrameRate=function(){}}else{var p=window.setTimeout,f=window.clearTimeout;if("undefined"!=typeof console){var m=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),"function"!=typeof m&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")}var h=!1,g=null,b=-1,v=5,y=0;t.unstable_shouldYield=function(){return t.unstable_now()>=y},o=function(){},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"):v=0<e?Math.floor(1e3/e):5};var w=new MessageChannel,x=w.port2;w.port1.onmessage=function(){if(null!==g){var e=t.unstable_now();y=e+v;try{g(!0,e)?x.postMessage(null):(h=!1,g=null)}catch(n){throw x.postMessage(null),n}}else h=!1},n=function(e){g=e,h||(h=!0,x.postMessage(null))},r=function(e,n){b=p((function(){e(t.unstable_now())}),n)},a=function(){f(b),b=-1}}function k(e,t){var n=e.length;e.push(t);e:for(;;){var r=n-1>>>1,a=e[r];if(!(void 0!==a&&0<_(a,t)))break e;e[r]=t,e[n]=a,n=r}}function S(e){return void 0===(e=e[0])?null:e}function E(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,a=e.length;r<a;){var o=2*(r+1)-1,i=e[o],l=o+1,s=e[l];if(void 0!==i&&0>_(i,n))void 0!==s&&0>_(s,i)?(e[r]=s,e[l]=n,r=l):(e[r]=i,e[o]=n,r=o);else{if(!(void 0!==s&&0>_(s,n)))break e;e[r]=s,e[l]=n,r=l}}}return t}return null}function _(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var C=[],T=[],A=1,L=null,N=3,R=!1,P=!1,O=!1;function D(e){for(var t=S(T);null!==t;){if(null===t.callback)E(T);else{if(!(t.startTime<=e))break;E(T),t.sortIndex=t.expirationTime,k(C,t)}t=S(T)}}function I(e){if(O=!1,D(e),!P)if(null!==S(C))P=!0,n(M);else{var t=S(T);null!==t&&r(I,t.startTime-e)}}function M(e,n){P=!1,O&&(O=!1,a()),R=!0;var o=N;try{for(D(n),L=S(C);null!==L&&(!(L.expirationTime>n)||e&&!t.unstable_shouldYield());){var i=L.callback;if("function"==typeof i){L.callback=null,N=L.priorityLevel;var l=i(L.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?L.callback=l:L===S(C)&&E(C),D(n)}else E(C);L=S(C)}if(null!==L)var s=!0;else{var c=S(T);null!==c&&r(I,c.startTime-n),s=!1}return s}finally{L=null,N=o,R=!1}}var F=o;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(){P||R||(P=!0,n(M))},t.unstable_getCurrentPriorityLevel=function(){return N},t.unstable_getFirstCallbackNode=function(){return S(C)},t.unstable_next=function(e){switch(N){case 1:case 2:case 3:var t=3;break;default:t=N}var n=N;N=t;try{return e()}finally{N=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=F,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=N;N=e;try{return t()}finally{N=n}},t.unstable_scheduleCallback=function(e,o,i){var l=t.unstable_now();switch("object"==typeof i&&null!==i?i="number"==typeof(i=i.delay)&&0<i?l+i:l:i=l,e){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return e={id:A++,callback:o,priorityLevel:e,startTime:i,expirationTime:s=i+s,sortIndex:-1},i>l?(e.sortIndex=i,k(T,e),null===S(C)&&e===S(T)&&(O?a():O=!0,r(I,i-l))):(e.sortIndex=s,k(C,e),P||R||(P=!0,n(M))),e},t.unstable_wrapCallback=function(e){var t=N;return function(){var n=N;N=t;try{return e.apply(this,arguments)}finally{N=n}}}},4712:(e,t,n)=>{"use strict";e.exports=n(8328)},1072: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 c=o[s];if(!l(c))return!1;var u=e[c],d=t[c];if(!1===(a=n?n.call(r,u,d,c):void 0)||void 0===a&&u!==d)return!1}return!0}},200:(e,t,n)=>{"use strict";var r=n(1504);var a="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},o=r.useState,i=r.useEffect,l=r.useLayoutEffect,s=r.useDebugValue;function c(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!a(e,n)}catch(r){return!0}}var u="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var n=t(),r=o({inst:{value:n,getSnapshot:t}}),a=r[0].inst,u=r[1];return l((function(){a.value=n,a.getSnapshot=t,c(a)&&u({inst:a})}),[e,n,t]),i((function(){return c(a)&&u({inst:a}),e((function(){c(a)&&u({inst:a})}))}),[e]),s(n),n};void 0!==r.useSyncExternalStore&&r.useSyncExternalStore},4:(e,t,n)=>{"use strict";n(200)},7768:(e,t,n)=>{"use strict";n.d(t,{default:()=>r});const r={title:"DASH Docs",tagline:"Create blazing fast dashboards for ESP32 & ESP8266 microcontrollers",url:"https://docs.espdash.pro",baseUrl:"/",onBrokenLinks:"warn",onBrokenMarkdownLinks:"warn",favicon:"img/dash-mini-logo.ico",organizationName:"ayushsharma82",projectName:"ESP-DASH",deploymentBranch:"gh-pages",trailingSlash:!0,i18n:{defaultLocale:"en",locales:["en"],path:"i18n",localeConfigs:{}},presets:[["classic",{gtag:{trackingID:"G-H1X62VMQNV",anonymizeIP:!0},docs:{routeBasePath:"/",sidebarPath:"/home/runner/work/ESP-DASH/ESP-DASH/sidebars.js"},blog:!1,theme:{customCss:"/home/runner/work/ESP-DASH/ESP-DASH/src/css/custom.css"},sitemap:{changefreq:"weekly",priority:.5,ignorePatterns:["/tags/**"],filename:"sitemap.xml"}}]],themeConfig:{colorMode:{defaultMode:"dark",respectPrefersColorScheme:!1,disableSwitch:!1},navbar:{title:"",logo:{src:"img/dash-splash.png",alt:"ESP-DASH",width:128,style:{borderRadius:"4px"}},items:[{type:"docsVersionDropdown",position:"right",dropdownActiveClassDisabled:!0,dropdownItemsBefore:[],dropdownItemsAfter:[]},{href:"https://github.com/ayushsharma82/ESP-DASH/",position:"right",className:"header-github-link","aria-label":"GitHub repository"}],hideOnScroll:!1},footer:{style:"light",links:[{title:"Docs",items:[{label:"Get Started",to:"/docs/get-started"},{label:"Concept of DASH",to:"/docs/concept"},{label:"Cards",to:"/docs/cards"},{label:"Charts",to:"/docs/charts"}]},{title:"Community",items:[{label:"Github",href:"https://github.com/ayushsharma82/ESP-DASH/"},{label:"Twitter",href:"https://twitter.com/asrocks5"},{label:"Buy me a Coffee (BMC)",href:"https://www.buymeacoffee.com/6QGVpSj"}]},{title:"Support",items:[{label:"Create an Issue (Repo)",href:"https://github.com/ayushsharma82/ESP-DASH/issues"},{label:"Contact me",href:"https://www.espdash.pro/support"}]}],copyright:"Copyright \xa9 2024 SOFTT. All rights reserved."},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:[],magicComments:[{className:"theme-code-block-highlighted-line",line:"highlight-next-line",block:{start:"highlight-start",end:"highlight-end"}}]},docs:{versionPersistence:"localStorage",sidebar:{hideable:!1,autoCollapseCategories:!1}},metadata:[],tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3}},baseUrlIssueBanner:!0,onDuplicateRoutes:"warn",staticDirectories:["static"],customFields:{},plugins:[],themes:[],scripts:[],headTags:[],stylesheets:[],clientModules:[],titleDelimiter:"|",noIndex:!1,markdown:{mermaid:!1}}},5072:(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,{c:()=>r})},8992:(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,{c:()=>a})},5656:(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,{c:()=>r})},4812:(e,t,n)=>{"use strict";n.d(t,{c:()=>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)}}},144:e=>{"use strict";e.exports={}},4504:e=>{"use strict";e.exports=JSON.parse('{"/next/-172":{"__comp":"1be78505","__context":{"plugin":"1d798de6"},"versionMetadata":"935f2afb"},"/next/-f7b":{"__comp":"17896441","content":"0e384e19"},"/next/cards/air/-38c":{"__comp":"17896441","content":"5fde1817"},"/next/cards/button/-2e0":{"__comp":"17896441","content":"1eaa7d1e"},"/next/cards/dropdown/-ca2":{"__comp":"17896441","content":"972722f4"},"/next/cards/energy/-025":{"__comp":"17896441","content":"1d06bd5e"},"/next/cards/generic/-e08":{"__comp":"17896441","content":"d4ae7331"},"/next/cards/humidity/-aa3":{"__comp":"17896441","content":"f1c3c228"},"/next/cards/image/-537":{"__comp":"17896441","content":"afe7c26a"},"/next/cards/joystick/-4f7":{"__comp":"17896441","content":"56927624"},"/next/cards/progress/-8c1":{"__comp":"17896441","content":"f736db6d"},"/next/cards/push-button/-136":{"__comp":"17896441","content":"d1f5632b"},"/next/cards/slider/-ed2":{"__comp":"17896441","content":"49d6c00f"},"/next/cards/status/-62e":{"__comp":"17896441","content":"0487f087"},"/next/cards/temperature/-d33":{"__comp":"17896441","content":"78c63844"},"/next/cards/text-input/-8de":{"__comp":"17896441","content":"44a65385"},"/next/cards/week-selector/-c0e":{"__comp":"17896441","content":"c61243a5"},"/next/charts/area/-379":{"__comp":"17896441","content":"402bfe77"},"/next/charts/bar/-1c8":{"__comp":"17896441","content":"166ccb0c"},"/next/charts/line/-674":{"__comp":"17896441","content":"ec57d471"},"/next/charts/pie/-886":{"__comp":"17896441","content":"5b27bca1"},"/next/concept/-ec6":{"__comp":"17896441","content":"9495aadd"},"/next/custom-statistics/-b8f":{"__comp":"17896441","content":"beec482e"},"/next/features/authentication/-ad6":{"__comp":"17896441","content":"cc0a2bf3"},"/next/features/brotli-compression/-6e3":{"__comp":"17896441","content":"94c292bb"},"/next/features/chartanimations/-14a":{"__comp":"17896441","content":"bc9808f4"},"/next/features/custom-logo/-3c7":{"__comp":"17896441","content":"51ce7319"},"/next/features/custom-uri/-257":{"__comp":"17896441","content":"0b5c9aa2"},"/next/features/disable-stats/-9ae":{"__comp":"17896441","content":"652d9580"},"/next/features/indexing/-8b3":{"__comp":"17896441","content":"50198c52"},"/next/features/sizing/-35f":{"__comp":"17896441","content":"849d26d9"},"/next/features/title/-886":{"__comp":"17896441","content":"2a51f6ab"},"/next/getting-started/-7ef":{"__comp":"17896441","content":"d589d3a7"},"/next/installation/-4b4":{"__comp":"17896441","content":"3b8c55ea"},"/next/migrate/-a21":{"__comp":"17896441","content":"2bf59882"},"/next/more-examples/-56a":{"__comp":"17896441","content":"e5af0a5c"},"/next/tabs/-b91":{"__comp":"17896441","content":"e8eea433"},"/v3.x.x/-aa1":{"__comp":"1be78505","__context":{"plugin":"1d798de6"},"versionMetadata":"6944cb31"},"/v3.x.x/-d29":{"__comp":"17896441","content":"f43a06cf"},"/v3.x.x/cards/air/-bdb":{"__comp":"17896441","content":"af2b8099"},"/v3.x.x/cards/button/-26e":{"__comp":"17896441","content":"c5beed23"},"/v3.x.x/cards/energy/-0c5":{"__comp":"17896441","content":"ebe4a411"},"/v3.x.x/cards/generic/-ed4":{"__comp":"17896441","content":"6d50d705"},"/v3.x.x/cards/humidity/-524":{"__comp":"17896441","content":"0f34283b"},"/v3.x.x/cards/joystick/-e05":{"__comp":"17896441","content":"55c57bd6"},"/v3.x.x/cards/progress/-bb3":{"__comp":"17896441","content":"5942c4f9"},"/v3.x.x/cards/slider/-489":{"__comp":"17896441","content":"52044914"},"/v3.x.x/cards/status/-e7d":{"__comp":"17896441","content":"d4f5e55a"},"/v3.x.x/cards/temperature/-56c":{"__comp":"17896441","content":"641f1acd"},"/v3.x.x/cards/text-input/-2bb":{"__comp":"17896441","content":"f4d79f1d"},"/v3.x.x/category/cards/-be2":{"__comp":"14eb3368","categoryGeneratedIndex":"85d52a4f"},"/v3.x.x/category/charts/-433":{"__comp":"14eb3368","categoryGeneratedIndex":"01c2b708"},"/v3.x.x/charts/area/-196":{"__comp":"17896441","content":"5acd1b26"},"/v3.x.x/charts/bar/-7d2":{"__comp":"17896441","content":"37c80295"},"/v3.x.x/charts/line/-65f":{"__comp":"17896441","content":"9a2f436b"},"/v3.x.x/charts/pie/-921":{"__comp":"17896441","content":"87b1afb5"},"/v3.x.x/concept/-a3e":{"__comp":"17896441","content":"a39fba33"},"/v3.x.x/getting-started/-153":{"__comp":"17896441","content":"5c2cce4e"},"/v3.x.x/indexing/-f71":{"__comp":"17896441","content":"91e7212c"},"/v3.x.x/installation/-1eb":{"__comp":"17896441","content":"6bf84c41"},"/v3.x.x/more-examples/-c1e":{"__comp":"17896441","content":"f8edec0b"},"/-677":{"__comp":"1be78505","__context":{"plugin":"1d798de6"},"versionMetadata":"4c4e1a30"},"/-157":{"__comp":"17896441","content":"82dc478c"},"/cards/air/-3ca":{"__comp":"17896441","content":"34e9d761"},"/cards/button/-65b":{"__comp":"17896441","content":"c4432a16"},"/cards/dropdown/-2b8":{"__comp":"17896441","content":"4c3f1b83"},"/cards/energy/-321":{"__comp":"17896441","content":"6fb081b8"},"/cards/generic/-dd3":{"__comp":"17896441","content":"a608976b"},"/cards/humidity/-f13":{"__comp":"17896441","content":"900bf023"},"/cards/image/-c49":{"__comp":"17896441","content":"bd9ddaf7"},"/cards/joystick/-0c3":{"__comp":"17896441","content":"3cd533c2"},"/cards/progress/-55f":{"__comp":"17896441","content":"3b62c223"},"/cards/push-button/-349":{"__comp":"17896441","content":"ec123d05"},"/cards/slider/-469":{"__comp":"17896441","content":"bfca638c"},"/cards/status/-0af":{"__comp":"17896441","content":"1c361767"},"/cards/temperature/-6c0":{"__comp":"17896441","content":"021dfd6a"},"/cards/text-input/-704":{"__comp":"17896441","content":"de4274db"},"/cards/week-selector/-ef8":{"__comp":"17896441","content":"4ca68d7b"},"/charts/area/-42f":{"__comp":"17896441","content":"bb019f97"},"/charts/bar/-bbd":{"__comp":"17896441","content":"1de66f17"},"/charts/line/-bc5":{"__comp":"17896441","content":"ddf369fb"},"/charts/pie/-b77":{"__comp":"17896441","content":"5554be2c"},"/concept/-a73":{"__comp":"17896441","content":"4df0a92e"},"/custom-statistics/-5b3":{"__comp":"17896441","content":"ccf30e44"},"/features/authentication/-d87":{"__comp":"17896441","content":"aeef22cf"},"/features/brotli-compression/-ab1":{"__comp":"17896441","content":"4649c564"},"/features/chartanimations/-c64":{"__comp":"17896441","content":"d523083d"},"/features/custom-logo/-d35":{"__comp":"17896441","content":"24a4b54e"},"/features/custom-uri/-0d9":{"__comp":"17896441","content":"5327fe66"},"/features/disable-stats/-e9b":{"__comp":"17896441","content":"d3c74fc5"},"/features/indexing/-7af":{"__comp":"17896441","content":"88f14c76"},"/features/sizing/-e10":{"__comp":"17896441","content":"a8d55bef"},"/features/title/-2c6":{"__comp":"17896441","content":"10703425"},"/getting-started/-d88":{"__comp":"17896441","content":"f62b367a"},"/installation/-0a4":{"__comp":"17896441","content":"2c8f7a48"},"/migrate/-32c":{"__comp":"17896441","content":"49146ea8"},"/more-examples/-270":{"__comp":"17896441","content":"ee622a22"},"/tabs/-1b7":{"__comp":"17896441","content":"d1e64eb6"}}')}},e=>{e.O(0,[2176],(()=>{return t=8808,e(e.s=t);var t}));e.O()}]); \ No newline at end of file diff --git a/assets/js/main.aa90755b.js.LICENSE.txt b/assets/js/main.ee1441c8.js.LICENSE.txt similarity index 100% rename from assets/js/main.aa90755b.js.LICENSE.txt rename to assets/js/main.ee1441c8.js.LICENSE.txt diff --git a/assets/js/runtime~main.43f16097.js b/assets/js/runtime~main.43f16097.js new file mode 100644 index 00000000..13bbb240 --- /dev/null +++ b/assets/js/runtime~main.43f16097.js @@ -0,0 +1 @@ +(()=>{"use strict";var e,c,a,d,f,b={},t={};function r(e){var c=t[e];if(void 0!==c)return c.exports;var a=t[e]={id:e,loaded:!1,exports:{}};return b[e].call(a.exports,a,a.exports,r),a.loaded=!0,a.exports}r.m=b,r.c=t,e=[],r.O=(c,a,d,f)=>{if(!a){var b=1/0;for(i=0;i<e.length;i++){a=e[i][0],d=e[i][1],f=e[i][2];for(var t=!0,o=0;o<a.length;o++)(!1&f||b>=f)&&Object.keys(r.O).every((e=>r.O[e](a[o])))?a.splice(o--,1):(t=!1,f<b&&(b=f));if(t){e.splice(i--,1);var n=d();void 0!==n&&(c=n)}}return c}f=f||0;for(var i=e.length;i>0&&e[i-1][2]>f;i--)e[i]=e[i-1];e[i]=[a,d,f]},r.n=e=>{var c=e&&e.__esModule?()=>e.default:()=>e;return r.d(c,{a:c}),c},a=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var f=Object.create(null);r.r(f);var b={};c=c||[null,a({}),a([]),a(a)];for(var t=2&d&&e;"object"==typeof t&&!~c.indexOf(t);t=a(t))Object.getOwnPropertyNames(t).forEach((c=>b[c]=()=>e[c]));return b.default=()=>e,r.d(f,b),f},r.d=(e,c)=>{for(var a in c)r.o(c,a)&&!r.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:c[a]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((c,a)=>(r.f[a](e,c),c)),[])),r.u=e=>"assets/js/"+({136:"af2b8099",168:"f1c3c228",248:"652d9580",384:"bc9808f4",402:"a608976b",516:"d523083d",624:"5acd1b26",682:"94c292bb",688:"2a51f6ab",768:"0f34283b",864:"beec482e",1152:"0b5c9aa2",1156:"bb019f97",1164:"a8d55bef",1336:"d1f5632b",1476:"402bfe77",1496:"56927624",1528:"9495aadd",1592:"44a65385",1595:"e8eea433",1612:"4df0a92e",1704:"1eaa7d1e",1812:"c5beed23",1828:"82dc478c",1936:"49d6c00f",1972:"6bf84c41",2036:"1c361767",2048:"6fb081b8",2116:"2c8f7a48",2276:"49146ea8",2490:"85d52a4f",2556:"166ccb0c",2784:"641f1acd",2800:"bfca638c",2840:"ee622a22",2940:"55c57bd6",2964:"ec123d05",3008:"78c63844",3088:"f4d79f1d",3368:"4649c564",3456:"ccf30e44",3664:"4ca68d7b",3820:"d3c74fc5",3960:"6944cb31",4148:"972722f4",4168:"1d798de6",4280:"afe7c26a",4292:"d4ae7331",4368:"f8edec0b",4380:"5fde1817",4424:"10703425",4576:"9a2f436b",4796:"24a4b54e",4840:"d589d3a7",4864:"ec57d471",4952:"4c3f1b83",4992:"6d50d705",5238:"c4432a16",5288:"51ce7319",5392:"f43a06cf",5590:"50198c52",5656:"de4274db",5696:"935f2afb",5820:"aeef22cf",5876:"52044914",5972:"5942c4f9",6315:"c61243a5",6328:"0e384e19",6624:"ddf369fb",6696:"3b8c55ea",6736:"d1e64eb6",6752:"17896441",6884:"849d26d9",6944:"2bf59882",6960:"87b1afb5",7096:"3cd533c2",7156:"5c2cce4e",7176:"3b62c223",7244:"91e7212c",7324:"a39fba33",7364:"cc0a2bf3",7372:"34e9d761",7452:"021dfd6a",7552:"1de66f17",7750:"37c80295",7760:"88f14c76",7772:"f736db6d",7944:"e5af0a5c",7956:"d4f5e55a",8120:"4c4e1a30",8308:"1d06bd5e",8696:"01c2b708",8777:"900bf023",8784:"5b27bca1",8904:"f62b367a",8988:"bd9ddaf7",9152:"5554be2c",9504:"ebe4a411",9516:"5327fe66",9540:"0487f087",9576:"14eb3368",9656:"1be78505"}[e]||e)+"."+{136:"878b9bde",168:"b3a67e68",248:"58c250bb",384:"18b5cab6",402:"63f627e2",516:"6925865b",624:"1d7be724",682:"39915163",688:"740b0991",768:"68625eb8",864:"e9f2cd16",1152:"4328a032",1156:"5c2d68cf",1164:"c41a8fe3",1336:"0050f615",1476:"43484592",1496:"ca48a20a",1528:"11cd0113",1592:"339e951c",1595:"57f16954",1612:"8e470e79",1704:"96e54838",1812:"6147c920",1828:"68f36aa0",1936:"c7d657cd",1972:"28a5acfc",2036:"7303ae0f",2048:"1a0e07d2",2116:"9f3731dc",2276:"a0648060",2490:"bd9e7558",2556:"a6e66c72",2784:"21f573e0",2800:"79ead2a0",2840:"fa20dec3",2940:"8318919e",2964:"0511bd77",3008:"72e8b46f",3088:"22822662",3368:"44780296",3456:"2bc459af",3664:"1d84b558",3820:"45b630bb",3960:"859e8dc8",4148:"4685bc34",4168:"d51737b5",4280:"daec5bb8",4292:"011bf27f",4368:"af1213f7",4380:"b5677359",4424:"f4b4b58c",4576:"1afd47c4",4796:"e4aff9b7",4840:"658b36d3",4864:"8c7b269a",4952:"3b648b49",4992:"9b04319f",5238:"1512703b",5288:"29f9c9b5",5392:"e70df596",5590:"40736873",5656:"2c8fba66",5696:"76c25254",5820:"dd8d115d",5876:"91a67373",5972:"349f5f36",6315:"8d1216f2",6328:"68a10671",6624:"6226d626",6696:"7b1eef68",6736:"a2903e62",6752:"edfb7bd5",6884:"4879fb3e",6944:"acb8dbd8",6960:"79e57858",7096:"e819cb4a",7156:"4fd5ae09",7176:"5e0181da",7244:"9e46f80a",7324:"7e0db7c6",7364:"f6a1a6c8",7372:"c024b4e5",7452:"ac85af1b",7552:"881b09d5",7750:"97b2f9c7",7760:"9f55716e",7772:"44951e3f",7944:"e0c5d4d6",7956:"7b59a5e0",8120:"c857dcb9",8127:"d5d423b0",8308:"8e1bb00c",8696:"0c35789d",8777:"685b959d",8784:"97f17469",8904:"d3f39be1",8988:"3c0827e1",9152:"dbebffdc",9504:"0e7226c6",9516:"e039b93e",9540:"bd0d0d33",9576:"509876c1",9656:"150b6c39",9772:"89bee490"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,c)=>Object.prototype.hasOwnProperty.call(e,c),d={},f="esp-dash-docs:",r.l=(e,c,a,b)=>{if(d[e])d[e].push(c);else{var t,o;if(void 0!==a)for(var n=document.getElementsByTagName("script"),i=0;i<n.length;i++){var u=n[i];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==f+a){t=u;break}}t||(o=!0,(t=document.createElement("script")).charset="utf-8",t.timeout=120,r.nc&&t.setAttribute("nonce",r.nc),t.setAttribute("data-webpack",f+a),t.src=e),d[e]=[c];var s=(c,a)=>{t.onerror=t.onload=null,clearTimeout(l);var f=d[e];if(delete d[e],t.parentNode&&t.parentNode.removeChild(t),f&&f.forEach((e=>e(a))),c)return c(a)},l=setTimeout(s.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=s.bind(null,t.onerror),t.onload=s.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/",r.gca=function(e){return e={10703425:"4424",17896441:"6752",52044914:"5876",56927624:"1496",af2b8099:"136",f1c3c228:"168","652d9580":"248",bc9808f4:"384",a608976b:"402",d523083d:"516","5acd1b26":"624","94c292bb":"682","2a51f6ab":"688","0f34283b":"768",beec482e:"864","0b5c9aa2":"1152",bb019f97:"1156",a8d55bef:"1164",d1f5632b:"1336","402bfe77":"1476","9495aadd":"1528","44a65385":"1592",e8eea433:"1595","4df0a92e":"1612","1eaa7d1e":"1704",c5beed23:"1812","82dc478c":"1828","49d6c00f":"1936","6bf84c41":"1972","1c361767":"2036","6fb081b8":"2048","2c8f7a48":"2116","49146ea8":"2276","85d52a4f":"2490","166ccb0c":"2556","641f1acd":"2784",bfca638c:"2800",ee622a22:"2840","55c57bd6":"2940",ec123d05:"2964","78c63844":"3008",f4d79f1d:"3088","4649c564":"3368",ccf30e44:"3456","4ca68d7b":"3664",d3c74fc5:"3820","6944cb31":"3960","972722f4":"4148","1d798de6":"4168",afe7c26a:"4280",d4ae7331:"4292",f8edec0b:"4368","5fde1817":"4380","9a2f436b":"4576","24a4b54e":"4796",d589d3a7:"4840",ec57d471:"4864","4c3f1b83":"4952","6d50d705":"4992",c4432a16:"5238","51ce7319":"5288",f43a06cf:"5392","50198c52":"5590",de4274db:"5656","935f2afb":"5696",aeef22cf:"5820","5942c4f9":"5972",c61243a5:"6315","0e384e19":"6328",ddf369fb:"6624","3b8c55ea":"6696",d1e64eb6:"6736","849d26d9":"6884","2bf59882":"6944","87b1afb5":"6960","3cd533c2":"7096","5c2cce4e":"7156","3b62c223":"7176","91e7212c":"7244",a39fba33:"7324",cc0a2bf3:"7364","34e9d761":"7372","021dfd6a":"7452","1de66f17":"7552","37c80295":"7750","88f14c76":"7760",f736db6d:"7772",e5af0a5c:"7944",d4f5e55a:"7956","4c4e1a30":"8120","1d06bd5e":"8308","01c2b708":"8696","900bf023":"8777","5b27bca1":"8784",f62b367a:"8904",bd9ddaf7:"8988","5554be2c":"9152",ebe4a411:"9504","5327fe66":"9516","0487f087":"9540","14eb3368":"9576","1be78505":"9656"}[e]||e,r.p+r.u(e)},(()=>{var e={296:0,2176:0};r.f.j=(c,a)=>{var d=r.o(e,c)?e[c]:void 0;if(0!==d)if(d)a.push(d[2]);else if(/^2(17|9)6$/.test(c))e[c]=0;else{var f=new Promise(((a,f)=>d=e[c]=[a,f]));a.push(d[2]=f);var b=r.p+r.u(c),t=new Error;r.l(b,(a=>{if(r.o(e,c)&&(0!==(d=e[c])&&(e[c]=void 0),d)){var f=a&&("load"===a.type?"missing":a.type),b=a&&a.target&&a.target.src;t.message="Loading chunk "+c+" failed.\n("+f+": "+b+")",t.name="ChunkLoadError",t.type=f,t.request=b,d[1](t)}}),"chunk-"+c,c)}},r.O.j=c=>0===e[c];var c=(c,a)=>{var d,f,b=a[0],t=a[1],o=a[2],n=0;if(b.some((c=>0!==e[c]))){for(d in t)r.o(t,d)&&(r.m[d]=t[d]);if(o)var i=o(r)}for(c&&c(a);n<b.length;n++)f=b[n],r.o(e,f)&&e[f]&&e[f][0](),e[f]=0;return r.O(i)},a=self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[];a.forEach(c.bind(null,0)),a.push=c.bind(null,a.push.bind(a))})()})(); \ No newline at end of file diff --git a/assets/js/runtime~main.74096e4e.js b/assets/js/runtime~main.74096e4e.js deleted file mode 100644 index f5ef73e7..00000000 --- a/assets/js/runtime~main.74096e4e.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";var e,c,a,d,f,b={},t={};function r(e){var c=t[e];if(void 0!==c)return c.exports;var a=t[e]={id:e,loaded:!1,exports:{}};return b[e].call(a.exports,a,a.exports,r),a.loaded=!0,a.exports}r.m=b,r.c=t,e=[],r.O=(c,a,d,f)=>{if(!a){var b=1/0;for(i=0;i<e.length;i++){a=e[i][0],d=e[i][1],f=e[i][2];for(var t=!0,o=0;o<a.length;o++)(!1&f||b>=f)&&Object.keys(r.O).every((e=>r.O[e](a[o])))?a.splice(o--,1):(t=!1,f<b&&(b=f));if(t){e.splice(i--,1);var n=d();void 0!==n&&(c=n)}}return c}f=f||0;for(var i=e.length;i>0&&e[i-1][2]>f;i--)e[i]=e[i-1];e[i]=[a,d,f]},r.n=e=>{var c=e&&e.__esModule?()=>e.default:()=>e;return r.d(c,{a:c}),c},a=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var f=Object.create(null);r.r(f);var b={};c=c||[null,a({}),a([]),a(a)];for(var t=2&d&&e;"object"==typeof t&&!~c.indexOf(t);t=a(t))Object.getOwnPropertyNames(t).forEach((c=>b[c]=()=>e[c]));return b.default=()=>e,r.d(f,b),f},r.d=(e,c)=>{for(var a in c)r.o(c,a)&&!r.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:c[a]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((c,a)=>(r.f[a](e,c),c)),[])),r.u=e=>"assets/js/"+({53:"935f2afb",88:"9a2f436b",174:"0f34283b",727:"d1f5632b",908:"e5af0a5c",909:"a39fba33",1071:"bb019f97",1334:"bc9808f4",1734:"c61243a5",1890:"5c2cce4e",2326:"94c292bb",2354:"bd9ddaf7",2446:"ec123d05",2512:"49d6c00f",2599:"d3c74fc5",2608:"166ccb0c",2639:"021dfd6a",2757:"5fde1817",2817:"5554be2c",2900:"641f1acd",2917:"ec57d471",3117:"2bf59882",3148:"44a65385",3178:"1eaa7d1e",3217:"3b8c55ea",3272:"4df0a92e",3276:"2c8f7a48",3431:"3cd533c2",3535:"d4f5e55a",3569:"82dc478c",3575:"f736db6d",3739:"88f14c76",3792:"50198c52",3818:"52044914",3881:"c5beed23",3902:"aeef22cf",3979:"6bf84c41",4052:"f43a06cf",4087:"e8eea433",4147:"1d798de6",4242:"972722f4",4360:"5b27bca1",4412:"5acd1b26",4684:"91e7212c",4744:"87b1afb5",4889:"2a51f6ab",5227:"4649c564",5258:"0487f087",5280:"f62b367a",5609:"a608976b",5719:"9495aadd",5725:"34e9d761",5729:"1c361767",5838:"ebe4a411",5983:"6fb081b8",6022:"ddf369fb",6147:"51ce7319",6160:"56927624",6278:"4c3f1b83",6313:"f1c3c228",6366:"beec482e",6633:"1de66f17",6637:"5942c4f9",6693:"0b5c9aa2",6874:"49146ea8",6913:"652d9580",6972:"10703425",7162:"d589d3a7",7166:"d1e64eb6",7190:"78c63844",7457:"1d06bd5e",7511:"24a4b54e",7522:"d4ae7331",7607:"bfca638c",7789:"cc0a2bf3",7861:"c4432a16",7882:"afe7c26a",7918:"17896441",7998:"900bf023",8074:"a8d55bef",8089:"01c2b708",8198:"f8edec0b",8201:"3b62c223",8411:"55c57bd6",8462:"af2b8099",8582:"5327fe66",9094:"d523083d",9184:"6944cb31",9214:"849d26d9",9445:"4ca68d7b",9466:"ee622a22",9514:"1be78505",9530:"37c80295",9630:"6d50d705",9653:"f4d79f1d",9671:"0e384e19",9758:"85d52a4f",9761:"4c4e1a30",9801:"ccf30e44",9805:"402bfe77",9817:"14eb3368",9854:"de4274db"}[e]||e)+"."+{53:"a7ff5ebd",88:"3fbb24cf",174:"eedc5bb0",727:"c333653f",908:"c2f13713",909:"2edddd8d",1071:"fea5114a",1334:"cc8f77d1",1734:"102db904",1890:"8d782e33",2326:"33451f53",2354:"a943fa97",2446:"2b6be804",2512:"a7867691",2599:"b36b7d5b",2608:"589122d1",2639:"0111ee66",2757:"524bc49d",2817:"30429bd1",2900:"6c7b7916",2917:"86e8f9b0",3117:"519fee37",3148:"1aafc6ab",3178:"8c8bcafd",3217:"6a78e41f",3272:"a09a323f",3276:"935b3a93",3431:"3e283c80",3535:"1d38b655",3569:"dc782b30",3575:"b140e08d",3739:"c12960a0",3792:"5f86938e",3818:"0a2722b9",3881:"26e7c0bd",3902:"723f8a9d",3979:"a1eee67d",4052:"70adbdc1",4087:"39684bbb",4147:"3c414283",4242:"e9ee21ec",4360:"b87a1c5b",4412:"6eb448d9",4684:"a82b6059",4744:"38bb97ef",4889:"44b6cfde",4972:"5456caf6",5227:"8b535558",5258:"864c3bcb",5280:"4fafd803",5609:"5cee1e05",5719:"771773f2",5725:"41fa7559",5729:"f6969830",5838:"0ae4a65d",5983:"34f5e2e2",6022:"151cc4a4",6147:"3a8180b6",6160:"39c7f16e",6278:"ea89df0e",6313:"87de908b",6366:"05793438",6633:"20dda3ba",6637:"52772b0a",6693:"f129896c",6874:"804c7ee1",6913:"3d67284c",6972:"6a5eae4c",7162:"0f7bf210",7166:"30c0cf76",7190:"6338b5df",7457:"80eb5a56",7511:"d5198948",7522:"c2ca3417",7607:"22d33852",7789:"f7444807",7861:"d4f1a922",7882:"6559dce4",7918:"dd040b67",7957:"58b21ff1",7998:"76f4101e",8074:"6b0a3df3",8089:"1b504707",8198:"5d58b3f6",8201:"b256f63c",8411:"2d7e4295",8462:"6441350b",8582:"7cf40457",9094:"6fa9b1dd",9184:"87f2da5c",9214:"ce745ae5",9445:"4e99b1a5",9466:"c25444fe",9514:"9fdd4461",9530:"70af6040",9630:"655757f6",9653:"0d84bf45",9671:"92fa8ef0",9758:"04eea523",9761:"a04357e4",9801:"8b9170a1",9805:"6a65c451",9817:"f5806a02",9854:"65be6ecf"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,c)=>Object.prototype.hasOwnProperty.call(e,c),d={},f="esp-dash-docs:",r.l=(e,c,a,b)=>{if(d[e])d[e].push(c);else{var t,o;if(void 0!==a)for(var n=document.getElementsByTagName("script"),i=0;i<n.length;i++){var u=n[i];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==f+a){t=u;break}}t||(o=!0,(t=document.createElement("script")).charset="utf-8",t.timeout=120,r.nc&&t.setAttribute("nonce",r.nc),t.setAttribute("data-webpack",f+a),t.src=e),d[e]=[c];var s=(c,a)=>{t.onerror=t.onload=null,clearTimeout(l);var f=d[e];if(delete d[e],t.parentNode&&t.parentNode.removeChild(t),f&&f.forEach((e=>e(a))),c)return c(a)},l=setTimeout(s.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=s.bind(null,t.onerror),t.onload=s.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/",r.gca=function(e){return e={10703425:"6972",17896441:"7918",52044914:"3818",56927624:"6160","935f2afb":"53","9a2f436b":"88","0f34283b":"174",d1f5632b:"727",e5af0a5c:"908",a39fba33:"909",bb019f97:"1071",bc9808f4:"1334",c61243a5:"1734","5c2cce4e":"1890","94c292bb":"2326",bd9ddaf7:"2354",ec123d05:"2446","49d6c00f":"2512",d3c74fc5:"2599","166ccb0c":"2608","021dfd6a":"2639","5fde1817":"2757","5554be2c":"2817","641f1acd":"2900",ec57d471:"2917","2bf59882":"3117","44a65385":"3148","1eaa7d1e":"3178","3b8c55ea":"3217","4df0a92e":"3272","2c8f7a48":"3276","3cd533c2":"3431",d4f5e55a:"3535","82dc478c":"3569",f736db6d:"3575","88f14c76":"3739","50198c52":"3792",c5beed23:"3881",aeef22cf:"3902","6bf84c41":"3979",f43a06cf:"4052",e8eea433:"4087","1d798de6":"4147","972722f4":"4242","5b27bca1":"4360","5acd1b26":"4412","91e7212c":"4684","87b1afb5":"4744","2a51f6ab":"4889","4649c564":"5227","0487f087":"5258",f62b367a:"5280",a608976b:"5609","9495aadd":"5719","34e9d761":"5725","1c361767":"5729",ebe4a411:"5838","6fb081b8":"5983",ddf369fb:"6022","51ce7319":"6147","4c3f1b83":"6278",f1c3c228:"6313",beec482e:"6366","1de66f17":"6633","5942c4f9":"6637","0b5c9aa2":"6693","49146ea8":"6874","652d9580":"6913",d589d3a7:"7162",d1e64eb6:"7166","78c63844":"7190","1d06bd5e":"7457","24a4b54e":"7511",d4ae7331:"7522",bfca638c:"7607",cc0a2bf3:"7789",c4432a16:"7861",afe7c26a:"7882","900bf023":"7998",a8d55bef:"8074","01c2b708":"8089",f8edec0b:"8198","3b62c223":"8201","55c57bd6":"8411",af2b8099:"8462","5327fe66":"8582",d523083d:"9094","6944cb31":"9184","849d26d9":"9214","4ca68d7b":"9445",ee622a22:"9466","1be78505":"9514","37c80295":"9530","6d50d705":"9630",f4d79f1d:"9653","0e384e19":"9671","85d52a4f":"9758","4c4e1a30":"9761",ccf30e44:"9801","402bfe77":"9805","14eb3368":"9817",de4274db:"9854"}[e]||e,r.p+r.u(e)},(()=>{var e={1303:0,532:0};r.f.j=(c,a)=>{var d=r.o(e,c)?e[c]:void 0;if(0!==d)if(d)a.push(d[2]);else if(/^(1303|532)$/.test(c))e[c]=0;else{var f=new Promise(((a,f)=>d=e[c]=[a,f]));a.push(d[2]=f);var b=r.p+r.u(c),t=new Error;r.l(b,(a=>{if(r.o(e,c)&&(0!==(d=e[c])&&(e[c]=void 0),d)){var f=a&&("load"===a.type?"missing":a.type),b=a&&a.target&&a.target.src;t.message="Loading chunk "+c+" failed.\n("+f+": "+b+")",t.name="ChunkLoadError",t.type=f,t.request=b,d[1](t)}}),"chunk-"+c,c)}},r.O.j=c=>0===e[c];var c=(c,a)=>{var d,f,b=a[0],t=a[1],o=a[2],n=0;if(b.some((c=>0!==e[c]))){for(d in t)r.o(t,d)&&(r.m[d]=t[d]);if(o)var i=o(r)}for(c&&c(a);n<b.length;n++)f=b[n],r.o(e,f)&&e[f]&&e[f][0](),e[f]=0;return r.O(i)},a=self.webpackChunkesp_dash_docs=self.webpackChunkesp_dash_docs||[];a.forEach(c.bind(null,0)),a.push=c.bind(null,a.push.bind(a))})()})(); \ No newline at end of file diff --git a/cards/air/index.html b/cards/air/index.html index 4fb4c073..87faf9b7 100644 --- a/cards/air/index.html +++ b/cards/air/index.html @@ -6,14 +6,14 @@ <title data-rh="true">Air Card | DASH Docs - - - + + +
-

Air Card

This feature is available in DASH Pro only.

Preview:

Preview

This card adds a distinctive air/wind icon, and just like generic card you can add a symbol which will be appended to your data. This card can be used to show something related to air pressure/wind speed etc.


Type:

AIR_CARD


Valid Data Types:

  • int
  • float
  • String

Initializer:

/* 
Air Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )
*/
Card card1(&dashboard, AIR_CARD, "Power Consumption", "kWh");

Updaters:

card1.update(int value);
card1.update(float value);
card1.update(String value);

Or you can also update the symbol along with the value like this:

card1.update(value, "kWh");


- - +

Air Card

This feature is available in DASH Pro only.

Preview:

Preview

This card adds a distinctive air/wind icon, and just like generic card you can add a symbol which will be appended to your data. This card can be used to show something related to air pressure/wind speed etc.


Type:

AIR_CARD


Valid Data Types:

  • int
  • float
  • String

Initializer:

/* 
Air Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )
*/
Card card1(&dashboard, AIR_CARD, "Power Consumption", "kWh");

Updaters:

card1.update(int value);
card1.update(float value);
card1.update(String value);

Or you can also update the symbol along with the value like this:

card1.update(value, "kWh");


+ + \ No newline at end of file diff --git a/cards/button/index.html b/cards/button/index.html index 1c4ee0ee..a9d11775 100644 --- a/cards/button/index.html +++ b/cards/button/index.html @@ -6,14 +6,14 @@ Toggle Button | DASH Docs - - - + + +
-

Toggle Button

Preview:

Button Card Preview Button Card Preview

Button card adds a interactive toggle button to your dashboard. This provides you with a simple 1 or 0 input from your dashboard.


Type:

BUTTON_CARD


Valid Data Types:

  • int

Initializer:

/* 
Button Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name)
*/
Card card1(&dashboard, BUTTON_CARD, "Test Button");

Callback:

Button card requires a callback function which will be executed when we receive a input from our dashboard. In this example, we will use the attachCallback function and provide a lambda function with a boolean argument.

In the case of button card, the value sent by your dashboard will be opposite of your current value. For Example: If your button is set to 0, then clicking that button on dashboard will trigger this callback with 1.

Note: You need to call the update function and sendUpdates immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard.

/*
We provide our attachCallback with a lambda function to handle incomming data
`value` is the boolean sent from your dashboard
*/
card1.attachCallback([&](int value){
Serial.println("[Card1] Button Callback Triggered: "+String((value == 1)?"true":"false"));
card1.update(value);
dashboard.sendUpdates();
});

Updaters:

card1.update(1);
card1.update(0);


- - +

Toggle Button

Preview:

Button Card Preview Button Card Preview

Button card adds a interactive toggle button to your dashboard. This provides you with a simple 1 or 0 input from your dashboard.


Type:

BUTTON_CARD


Valid Data Types:

  • int

Initializer:

/* 
Button Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name)
*/
Card card1(&dashboard, BUTTON_CARD, "Test Button");

Callback:

Button card requires a callback function which will be executed when we receive a input from our dashboard. In this example, we will use the attachCallback function and provide a lambda function with a boolean argument.

In the case of button card, the value sent by your dashboard will be opposite of your current value. For Example: If your button is set to 0, then clicking that button on dashboard will trigger this callback with 1.

Note: You need to call the update function and sendUpdates immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard.

/*
We provide our attachCallback with a lambda function to handle incomming data
`value` is the boolean sent from your dashboard
*/
card1.attachCallback([&](int value){
Serial.println("[Card1] Button Callback Triggered: "+String((value == 1)?"true":"false"));
card1.update(value);
dashboard.sendUpdates();
});

Updaters:

card1.update(1);
card1.update(0);


+ + \ No newline at end of file diff --git a/cards/dropdown/index.html b/cards/dropdown/index.html index eaaa66bf..c952414b 100644 --- a/cards/dropdown/index.html +++ b/cards/dropdown/index.html @@ -6,14 +6,14 @@ Dropdown Card | DASH Docs - - - + + +
-

Dropdown Card

This feature is available in DASH Pro only.

Preview:

Preview Preview

This card adds a dropdown selectable list on your dashboard. You can pass "," comma separated list as it's secondary value with unlimited number of choices.


Type:

DROPDOWN_CARD


Valid Data Types:

  • String

Initializer:

/* 
Dropdown Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* choices )
*/
Card card1(&dashboard, DROPDOWN_CARD, "Test Dropdown", "Option1,Option2,Option3,Option4");

Callback:

The Dropdown Card requires a callback function that will be invoked when input is received from the dashboard. This function should utilize the attachCallback method and provide a lambda function with a const char* parameter.

Note: It's essential to immediately invoke the update function and sendUpdates after receiving a value in the callback. Failure to do so will result in the user's input not being registered on the dashboard.

/*
Here, we use a lambda function within attachCallback to handle incoming data.
`value` represents the const char value sent from your dashboard which is equal to selected value.
*/
card1.attachCallback([&](const char* value){
Serial.println("[Card1] Dropdown Callback Triggered: "+String(value));
card1.update(value);
dashboard.sendUpdates();
});

Updaters:

This will change the selected value of our dropdown:

card1.update(const char* value);

Or you can also update the choices along with the value like this:

// This will change the selected value and update the choices as well
card1.update(const char* value, const char* choices);


- - +

Dropdown Card

This feature is available in DASH Pro only.

Preview:

Preview Preview

This card adds a dropdown selectable list on your dashboard. You can pass "," comma separated list as it's secondary value with unlimited number of choices.


Type:

DROPDOWN_CARD


Valid Data Types:

  • String

Initializer:

/* 
Dropdown Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* choices )
*/
Card card1(&dashboard, DROPDOWN_CARD, "Test Dropdown", "Option1,Option2,Option3,Option4");

Callback:

The Dropdown Card requires a callback function that will be invoked when input is received from the dashboard. This function should utilize the attachCallback method and provide a lambda function with a const char* parameter.

Note: It's essential to immediately invoke the update function and sendUpdates after receiving a value in the callback. Failure to do so will result in the user's input not being registered on the dashboard.

/*
Here, we use a lambda function within attachCallback to handle incoming data.
`value` represents the const char value sent from your dashboard which is equal to selected value.
*/
card1.attachCallback([&](const char* value){
Serial.println("[Card1] Dropdown Callback Triggered: "+String(value));
card1.update(value);
dashboard.sendUpdates();
});

Updaters:

This will change the selected value of our dropdown:

card1.update(const char* value);

Or you can also update the choices along with the value like this:

// This will change the selected value and update the choices as well
card1.update(const char* value, const char* choices);


+ + \ No newline at end of file diff --git a/cards/energy/index.html b/cards/energy/index.html index 8342466d..2bb67601 100644 --- a/cards/energy/index.html +++ b/cards/energy/index.html @@ -6,14 +6,14 @@ Energy Card | DASH Docs - - - + + +
-

Energy Card

This feature is available in DASH Pro only.

Preview:

Energy Card Preview

This card adds a distinctive energy/power icon, and just like generic card you can add a symbol which will be appended to your data. This card can be used to show something related to power consumption and usage etc.


Type:

ENERGY_CARD


Valid Data Types:

  • int
  • float
  • String

Initializer:

/* 
Energy Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )
*/
Card card1(&dashboard, ENERGY_CARD, "Power Consumption", "kWh");

Updaters:

card1.update(int value);
card1.update(float value);
card1.update(String value);

Or you can also update the symbol along with the value like this:

card1.update(value, "kWh");


- - +

Energy Card

This feature is available in DASH Pro only.

Preview:

Energy Card Preview

This card adds a distinctive energy/power icon, and just like generic card you can add a symbol which will be appended to your data. This card can be used to show something related to power consumption and usage etc.


Type:

ENERGY_CARD


Valid Data Types:

  • int
  • float
  • String

Initializer:

/* 
Energy Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )
*/
Card card1(&dashboard, ENERGY_CARD, "Power Consumption", "kWh");

Updaters:

card1.update(int value);
card1.update(float value);
card1.update(String value);

Or you can also update the symbol along with the value like this:

card1.update(value, "kWh");


+ + \ No newline at end of file diff --git a/cards/generic/index.html b/cards/generic/index.html index ad220df9..a5dc9e43 100644 --- a/cards/generic/index.html +++ b/cards/generic/index.html @@ -6,14 +6,14 @@ Generic Card | DASH Docs - - - + + +
-

Generic Card

Preview:

Preview

Generic card is the 'fits-all-types' card, which you can use to display any kind of value. It's mostly used when you want to display numbers, strings etc which don't relate to any other card in the list.

Note: If you can't find the card which you are looking for, you can always raise request for more cards on the repository by creating an issue.

Type:

GENERIC_CARD


Valid Data Types:

  • int
  • bool
  • float
  • String

Initializer:

/* 
Generic Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )
*/
Card card1(&dashboard, GENERIC_CARD, "Generic1");

Updaters:

card1.update(int value);
card1.update(bool value);
card1.update(float value);
card1.update(String value);


- - +

Generic Card

Preview:

Preview

Generic card is the 'fits-all-types' card, which you can use to display any kind of value. It's mostly used when you want to display numbers, strings etc which don't relate to any other card in the list.

Note: If you can't find the card which you are looking for, you can always raise request for more cards on the repository by creating an issue.

Type:

GENERIC_CARD


Valid Data Types:

  • int
  • bool
  • float
  • String

Initializer:

/* 
Generic Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )
*/
Card card1(&dashboard, GENERIC_CARD, "Generic1");

Updaters:

card1.update(int value);
card1.update(bool value);
card1.update(float value);
card1.update(String value);


+ + \ No newline at end of file diff --git a/cards/humidity/index.html b/cards/humidity/index.html index 294a9372..fcf1f578 100644 --- a/cards/humidity/index.html +++ b/cards/humidity/index.html @@ -6,14 +6,14 @@ Humidity Card | DASH Docs - - - + + +
-

Humidity Card

Preview:

Preview

This card adds a distinctive humidity icon, and just like generic card you can add a symbol which will be appended to your data.


Type:

HUMIDITY_CARD


Valid Data Types:

  • int
  • float
  • String

Initializer:

/* 
Humidity Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )
*/
Card card1(&dashboard, HUMIDITY_CARD, "Humidity1", "%");

Updaters:

card1.update(int value);
card1.update(float value);
card1.update(String value);

Or you can also update the symbol along with the value like this:

card1.update(value, "RH");


- - +

Humidity Card

Preview:

Preview

This card adds a distinctive humidity icon, and just like generic card you can add a symbol which will be appended to your data.


Type:

HUMIDITY_CARD


Valid Data Types:

  • int
  • float
  • String

Initializer:

/* 
Humidity Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )
*/
Card card1(&dashboard, HUMIDITY_CARD, "Humidity1", "%");

Updaters:

card1.update(int value);
card1.update(float value);
card1.update(String value);

Or you can also update the symbol along with the value like this:

card1.update(value, "RH");


+ + \ No newline at end of file diff --git a/cards/image/index.html b/cards/image/index.html index b4a3f874..75372dc7 100644 --- a/cards/image/index.html +++ b/cards/image/index.html @@ -6,14 +6,14 @@ Image Card | DASH Docs - - - + + +
-

Image Card

This feature is available in DASH Pro only.

Preview:

Preview

This card adds a image on your dashboard. You can pass a absolute URL to this card and it will load that image within this card on the dashboard. If the size is a bit small for you, then you can even make the card bigger by using the size value together with setSize function.


Type:

IMAGE_CARD


Valid Data Types:

  • String

Initializer:

/* 
Image Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* size )
*/
Card card1(&dashboard, IMAGE_CARD, "Test Image", "lg");

Updaters:

After initialization, you will have to provide the URL of the image which you want to display.

card1.update(const char* url);

Or you can also update the size of image using the second parameter. Supported sizes: "lg" and "xl"

// This will change the selected value and update the choices as well
card1.update(const char* url, const char* size);


- - +

Image Card

This feature is available in DASH Pro only.

Preview:

Preview

This card adds a image on your dashboard. You can pass a absolute URL to this card and it will load that image within this card on the dashboard. If the size is a bit small for you, then you can even make the card bigger by using the size value together with setSize function.


Type:

IMAGE_CARD


Valid Data Types:

  • String

Initializer:

/* 
Image Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* size )
*/
Card card1(&dashboard, IMAGE_CARD, "Test Image", "lg");

Updaters:

After initialization, you will have to provide the URL of the image which you want to display.

card1.update(const char* url);

Or you can also update the size of image using the second parameter. Supported sizes: "lg" and "xl"

// This will change the selected value and update the choices as well
card1.update(const char* url, const char* size);


+ + \ No newline at end of file diff --git a/cards/joystick/index.html b/cards/joystick/index.html index 69ffc414..c519122a 100644 --- a/cards/joystick/index.html +++ b/cards/joystick/index.html @@ -6,15 +6,15 @@ Joystick Card | DASH Docs - - - + + +
-

Joystick Card

This feature is available in DASH Pro only.

Preview:

Preview

This card adds a joystick to your dashboard to control some stuff and provides you with easy to interpret directional data via callback. You can even lock direction of the joystick to X or Y axis.


Type:

JOYSTICK_CARD


Initializer:

/* 
Joystick Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* directionLock (optional) )
*/
Card joystick(&dashboard, JOYSTICK_CARD, "Joystick 1");

Direction Lock:

You can lock joystick to X or Y Axis:

Supply it with lockX as 4th argument and it will lock to X axis.

Card joystick(&dashboard, JOYSTICK_CARD, "Joystick 1", "lockX");

Supply it with lockY as 4th argument and it will lock to Y axis.

Card joystick(&dashboard, JOYSTICK_CARD, "Joystick 1", "lockY");

By default, joystick works on both axis.

Callback:

Joystick Card requires a callback function which will be called when we receive a input from our dashboard. In setup block, we will be calling our attachCallback function and provide a lambda (callback) function with a const char* (character array) argument.

Joystick card has 2 callbacks, directional and coordinates:

Directional Callback:

This callback will return the active direction of your joystick when it's moved. It will be one of the following:

  • up
  • down
  • left
  • right
  • idle
/*
We provide our attachCallback with a lambda function to handle incomming data
`value` is the direction of joystick 'up', 'down', 'left', 'right' or 'idle'
*/
joystick.attachCallback([&](const char* direction){
Serial.println("[Joystick] Current Direction: "+String(direction));
});
Coordinates Callback:

This callback will return the active coordinates of the thumb of your joystick when it's moved. It will provide x and y coordinates which ranges from -60 to 60 on each axis.

In case of X axis: -60 is left, 60 is right. -For Y axis: -60 is up, and 60 is bottom.

/*
We provide our attachCallback with a lambda function to handle incomming data.
In this case, we will be getting x and y axis coordinates in range of -60 to 60
*/
joystick.attachCallback([&](int8_t x, int8_t y){
Serial.printf("[Joystick] X Axis: %d, Y Axis: %d\n", x, y);
});


- - +

Joystick Card

This feature is available in DASH Pro only.

Preview:

Preview

This card adds a joystick to your dashboard to control some stuff and provides you with easy to interpret directional data via callback. You can even lock direction of the joystick to X or Y axis.


Type:

JOYSTICK_CARD


Initializer:

/* 
Joystick Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* directionLock (optional) )
*/
Card joystick(&dashboard, JOYSTICK_CARD, "Joystick 1");

Direction Lock:

You can lock joystick to X or Y Axis:

Supply it with lockX as 4th argument and it will lock to X axis.

Card joystick(&dashboard, JOYSTICK_CARD, "Joystick 1", "lockX");

Supply it with lockY as 4th argument and it will lock to Y axis.

Card joystick(&dashboard, JOYSTICK_CARD, "Joystick 1", "lockY");

By default, joystick works on both axis.

Callback:

Joystick Card requires a callback function which will be called when we receive a input from our dashboard. In setup block, we will be calling our attachCallback function and provide a lambda (callback) function with a const char* (character array) argument.

Joystick card has 2 callbacks, directional and coordinates:

Directional Callback:

This callback will return the active direction of your joystick when it's moved. It will be one of the following:

  • up
  • down
  • left
  • right
  • idle
/*
We provide our attachCallback with a lambda function to handle incomming data
`value` is the direction of joystick 'up', 'down', 'left', 'right' or 'idle'
*/
joystick.attachCallback([&](const char* direction){
Serial.println("[Joystick] Current Direction: "+String(direction));
});
Coordinates Callback:

This callback will return the active coordinates of the thumb of your joystick when it's moved. It will provide x and y coordinates which ranges from -60 to 60 on each axis.

In case of X axis: -60 is left, 60 is right. +For Y axis: -60 is up, and 60 is bottom.

/*
We provide our attachCallback with a lambda function to handle incomming data.
In this case, we will be getting x and y axis coordinates in range of -60 to 60
*/
joystick.attachCallback([&](int8_t x, int8_t y){
Serial.printf("[Joystick] X Axis: %d, Y Axis: %d\n", x, y);
});


+ + \ No newline at end of file diff --git a/cards/progress/index.html b/cards/progress/index.html index 090a50e3..ca712244 100644 --- a/cards/progress/index.html +++ b/cards/progress/index.html @@ -6,14 +6,14 @@ Progress Card | DASH Docs - - - + + +
-

Progress Card

Preview:

Preview

This card displays a horizontal range based on a integer or a float value. It makes data visualization user friendly.


Type:

PROGRESS_CARD


Valid Data Types:

  • int
  • float

Initializer:

With progress card, Initializer requires min & max range.

/* 
Progress Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional), int min, int max)
*/
Card card1(&dashboard, PROGRESS_CARD, "Progress1", "", 0, 255);

Updaters:

card1.update(int value);
card1.update(float value);

Or, update symbol along your value:

card1.update(244, "%");
- - +

Progress Card

Preview:

Preview

This card displays a horizontal range based on a integer or a float value. It makes data visualization user friendly.


Type:

PROGRESS_CARD


Valid Data Types:

  • int
  • float

Initializer:

With progress card, Initializer requires min & max range.

/* 
Progress Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional), int min, int max)
*/
Card card1(&dashboard, PROGRESS_CARD, "Progress1", "", 0, 255);

Updaters:

card1.update(int value);
card1.update(float value);

Or, update symbol along your value:

card1.update(244, "%");
+ + \ No newline at end of file diff --git a/cards/push-button/index.html b/cards/push-button/index.html index aea1bb69..56d0d676 100644 --- a/cards/push-button/index.html +++ b/cards/push-button/index.html @@ -6,14 +6,14 @@ Push Button Card | DASH Docs - - - + + +
-

Push Button Card

This feature is available in DASH Pro only.

Preview:

Push Button Card Preview

Push button card adds a static button on your dashboard which has no state. Whenever a user clicks this button, it triggers a callback.


Type:

PUSH_BUTTON_CARD


Initializer:

/* 
Button Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name)
*/
Card card1(&dashboard, PUSH_BUTTON_CARD, "Push Button");

Callback:

Push button card will trigger a callback on every click by user, there is no need to update or sendUpdates to dashboard because there is no state.

/*
We provide our attachCallback with a lambda function to handle trigger
*/
card1.attachCallback([&](){
Serial.println("[Card1] Push Button Triggered");
});


- - +

Push Button Card

This feature is available in DASH Pro only.

Preview:

Push Button Card Preview

Push button card adds a static button on your dashboard which has no state. Whenever a user clicks this button, it triggers a callback.


Type:

PUSH_BUTTON_CARD


Initializer:

/* 
Button Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name)
*/
Card card1(&dashboard, PUSH_BUTTON_CARD, "Push Button");

Callback:

Push button card will trigger a callback on every click by user, there is no need to update or sendUpdates to dashboard because there is no state.

/*
We provide our attachCallback with a lambda function to handle trigger
*/
card1.attachCallback([&](){
Serial.println("[Card1] Push Button Triggered");
});


+ + \ No newline at end of file diff --git a/cards/slider/index.html b/cards/slider/index.html index e9f3a84d..f7f4e0ab 100644 --- a/cards/slider/index.html +++ b/cards/slider/index.html @@ -6,14 +6,14 @@ Slider Card | DASH Docs - - - + + +
-

Slider Card

Preview:

Preview

This card adds a interactive horizontal slider to your dashboard. Slider card is useful when you require a integer input within a certain range. ( Example use case: LED brightness control )


Type:

SLIDER_CARD


Valid Data Types:

  • int

Initializer:

With slider card, Initializer requires min & max range.

/* 
Slider Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional), int min, int max)
*/
Card card1(&dashboard, SLIDER_CARD, "Test Slider", "", 0, 255);

Callback:

Slider Card requires a callback function which will be called when we receive a input from our dashboard. We will be calling our attachCallback function and provide a lambda function with a int argument.

Note: You need to call the update function and sendUpdates immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard.

/*
We provide our attachCallback with a lambda function to handle incomming data
`value` is the boolean sent from your dashboard
*/
card1.attachCallback([&](int value){
Serial.println("[Card1] Slider Callback Triggered: "+String(value));
card1.update(value);
dashboard.sendUpdates();
});

Updaters:

card1.update(int value);

Or, update symbol along your value:

card1.update(244, "%");
- - +

Slider Card

Preview:

Preview

This card adds a interactive horizontal slider to your dashboard. Slider card is useful when you require a integer input within a certain range. ( Example use case: LED brightness control )


Type:

SLIDER_CARD


Valid Data Types:

  • int

Initializer:

With slider card, Initializer requires min & max range.

/* 
Slider Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional), int min, int max)
*/
Card card1(&dashboard, SLIDER_CARD, "Test Slider", "", 0, 255);

Callback:

Slider Card requires a callback function which will be called when we receive a input from our dashboard. We will be calling our attachCallback function and provide a lambda function with a int argument.

Note: You need to call the update function and sendUpdates immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard.

/*
We provide our attachCallback with a lambda function to handle incomming data
`value` is the boolean sent from your dashboard
*/
card1.attachCallback([&](int value){
Serial.println("[Card1] Slider Callback Triggered: "+String(value));
card1.update(value);
dashboard.sendUpdates();
});

Updaters:

card1.update(int value);

Or, update symbol along your value:

card1.update(244, "%");
+ + \ No newline at end of file diff --git a/cards/status/index.html b/cards/status/index.html index dd72d581..c133c630 100644 --- a/cards/status/index.html +++ b/cards/status/index.html @@ -6,14 +6,14 @@ Status Card | DASH Docs - - - + + +
-

Status Card

Preview:

PreviewPreviewPreviewPreview

As it's name suggests, status card is used to display some kind of status on your dashboard. It can show 4 different kinds of status along with a short message.


Type:

STATUS_CARD


Valid Data Types:

  • String

Valid Statuses:

  • "success" - Green
  • "danger" - Red
  • "warning" - Yellow
  • "idle" - Grey

Initializer:

/* 
Status Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* status (optional) )
*/
Card card1(&dashboard, STATUS_CARD, "Test Status", "success");

Updaters:

Status card updater allows you to set a message:

card1.update("message");

Or, message + status at the same time:

card1.update("Message", "success");
- - +

Status Card

Preview:

PreviewPreviewPreviewPreview

As it's name suggests, status card is used to display some kind of status on your dashboard. It can show 4 different kinds of status along with a short message.


Type:

STATUS_CARD


Valid Data Types:

  • String

Valid Statuses:

  • "success" - Green
  • "danger" - Red
  • "warning" - Yellow
  • "idle" - Grey

Initializer:

/* 
Status Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* status (optional) )
*/
Card card1(&dashboard, STATUS_CARD, "Test Status", "success");

Updaters:

Status card updater allows you to set a message:

card1.update("message");

Or, message + status at the same time:

card1.update("Message", "success");
+ + \ No newline at end of file diff --git a/cards/temperature/index.html b/cards/temperature/index.html index d6e23620..d5751558 100644 --- a/cards/temperature/index.html +++ b/cards/temperature/index.html @@ -6,14 +6,14 @@ Temperature Card | DASH Docs - - - + + +
-

Temperature Card

Preview:

Preview

This card adds a distinctive temperature icon, and just like generic card you can add a symbol which will be appended to your data.


Type:

TEMPERATURE_CARD


Valid Data Types:

  • int
  • float
  • String

Initializer:

/* 
Temperature Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )
*/
Card card1(&dashboard, TEMPERATURE_CARD, "Temperature1", "°C");

Updaters:

card1.update(int value);
card1.update(float value);
card1.update(String value);

Or you can also update the symbol along with the value like this:

card1.update(value, "°F");


- - +

Temperature Card

Preview:

Preview

This card adds a distinctive temperature icon, and just like generic card you can add a symbol which will be appended to your data.


Type:

TEMPERATURE_CARD


Valid Data Types:

  • int
  • float
  • String

Initializer:

/* 
Temperature Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )
*/
Card card1(&dashboard, TEMPERATURE_CARD, "Temperature1", "°C");

Updaters:

card1.update(int value);
card1.update(float value);
card1.update(String value);

Or you can also update the symbol along with the value like this:

card1.update(value, "°F");


+ + \ No newline at end of file diff --git a/cards/text-input/index.html b/cards/text-input/index.html index a0ece55f..fceba627 100644 --- a/cards/text-input/index.html +++ b/cards/text-input/index.html @@ -6,14 +6,14 @@ Text Input Card | DASH Docs - - - + + +
-

Text Input Card

This feature is available in DASH Pro only.

Preview:

Text Input Card Preview

Text Input Card gives you the ability to take String input from user and save them in your application. It provides you with a input box on the dashboard where user can send back text to your application.

This card is very useful for saving WiFi credentials, passwords and general information.


Type:

TEXT_INPUT_CARD


Valid Data Types:

  • String
  • char

Initializer:

/* 
Energy Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name)
*/
Card card1(&dashboard, TEXT_INPUT_CARD, "User Email");

Callback:

Text Input Card requires a callback function which will be called when we receive a input from our dashboard. In setup block, we will be calling our attachCallback function and provide a lambda (callback) function with a const char* (character array) argument.

Note: You need to call the update function and sendUpdates immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard and it will keep the card stuck in 'waiting' phase.

/*
We provide our attachCallback with a lambda function to handle incomming data
*/
card1.attachCallback([&](const char* value){
Serial.println("[Card1] Text Input Callback Triggered: "+String(value));
card1.update(value);
dashboard.sendUpdates();
});

Updaters:

card1.update(const char* value);
card1.update(String value);
- - +

Text Input Card

This feature is available in DASH Pro only.

Preview:

Text Input Card Preview

Text Input Card gives you the ability to take String input from user and save them in your application. It provides you with a input box on the dashboard where user can send back text to your application.

This card is very useful for saving WiFi credentials, passwords and general information.


Type:

TEXT_INPUT_CARD


Valid Data Types:

  • String
  • char

Initializer:

/* 
Energy Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name)
*/
Card card1(&dashboard, TEXT_INPUT_CARD, "User Email");

Callback:

Text Input Card requires a callback function which will be called when we receive a input from our dashboard. In setup block, we will be calling our attachCallback function and provide a lambda (callback) function with a const char* (character array) argument.

Note: You need to call the update function and sendUpdates immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard and it will keep the card stuck in 'waiting' phase.

/*
We provide our attachCallback with a lambda function to handle incomming data
*/
card1.attachCallback([&](const char* value){
Serial.println("[Card1] Text Input Callback Triggered: "+String(value));
card1.update(value);
dashboard.sendUpdates();
});

Updaters:

card1.update(const char* value);
card1.update(String value);
+ + \ No newline at end of file diff --git a/cards/week-selector/index.html b/cards/week-selector/index.html index b588e89d..aa6b8286 100644 --- a/cards/week-selector/index.html +++ b/cards/week-selector/index.html @@ -6,14 +6,14 @@ Week Selector Card | DASH Docs - - - + + +
-

Week Selector Card

This feature is available in DASH Pro only.

Preview:

Week Selector Card Preview

Week selector card gives you a nice card in which days are selectable by users. This type of card is very useful in many scenarios. The output of the card is comma , separated string on days which were selected by the user.


Type:

WEEK_SELECTOR_CARD


Valid Data Types:

  • String
  • char

Initializer:

/* 
Energy Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name)
*/
Card card1(&dashboard, WEEK_SELECTOR_CARD, "Select Days");

Callback:

Week selector card requires a callback function which will be called when we receive a input from our dashboard. In our setup block, we will be calling our attachCallback function and provide a lambda (callback) function with a const char* (character array) argument. Whenever a user selects a day, this callback will be triggered with a comma , separated list of days which indicate what was selected by user.

Note: You need to call the update function and sendUpdates immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard and it will keep the card stuck in 'waiting' phase.

/*
We provide our attachCallback with a lambda function to handle incomming data
Example Value: mon,tue,wed,thu,fri,sat,sun
*/
card1.attachCallback([&](const char* days){
Serial.println("[Card1] Week Selector Triggered: "+String(days));
card1.update(value);
dashboard.sendUpdates();
});

Updaters:

You can also select or deselect values depending on your logic. You just need to supply the updater with a comma , separated list of days. Order of days in this string doesn't matter. Example: Supplying tue,mon,thu will show Monday, Tuesday & Thursday as selected on Week Selector Card.

card1.update(const char* value);
card1.update(String value);
- - +

Week Selector Card

This feature is available in DASH Pro only.

Preview:

Week Selector Card Preview

Week selector card gives you a nice card in which days are selectable by users. This type of card is very useful in many scenarios. The output of the card is comma , separated string on days which were selected by the user.


Type:

WEEK_SELECTOR_CARD


Valid Data Types:

  • String
  • char

Initializer:

/* 
Energy Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name)
*/
Card card1(&dashboard, WEEK_SELECTOR_CARD, "Select Days");

Callback:

Week selector card requires a callback function which will be called when we receive a input from our dashboard. In our setup block, we will be calling our attachCallback function and provide a lambda (callback) function with a const char* (character array) argument. Whenever a user selects a day, this callback will be triggered with a comma , separated list of days which indicate what was selected by user.

Note: You need to call the update function and sendUpdates immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard and it will keep the card stuck in 'waiting' phase.

/*
We provide our attachCallback with a lambda function to handle incomming data
Example Value: mon,tue,wed,thu,fri,sat,sun
*/
card1.attachCallback([&](const char* days){
Serial.println("[Card1] Week Selector Triggered: "+String(days));
card1.update(value);
dashboard.sendUpdates();
});

Updaters:

You can also select or deselect values depending on your logic. You just need to supply the updater with a comma , separated list of days. Order of days in this string doesn't matter. Example: Supplying tue,mon,thu will show Monday, Tuesday & Thursday as selected on Week Selector Card.

card1.update(const char* value);
card1.update(String value);
+ + \ No newline at end of file diff --git a/charts/area/index.html b/charts/area/index.html index 21395631..8dfe9fb9 100644 --- a/charts/area/index.html +++ b/charts/area/index.html @@ -6,14 +6,14 @@ Area Chart | DASH Docs - - - + + +
-

Area Chart

This feature is available in DASH Pro only.

Preview:

Preview

Type:

AREA_CHART


Valid Data Types for X-Axis:

  • int
  • float
  • String

Valid Data Types for Y-Axis:

  • int
  • float

Initializer:

/* 
Area Chart
Valid Arguments: (ESPDash dashboard, Card Type, const char* name )
*/
Chart chart1(&dashboard, AREA_CHART, "Chart Name");

Updaters:

For X-Axis:

X-Axis updater uses updateX function.

/*
Data for X Axis of our Chart
This array can be of: `int` / `float` or `String`

Note: this array should be kept in global scope. i.e. it should never be deleted from memory.
*/
String XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
or
(String array[], size_t array_size)
or
(const char* array[], size_t array_size)
*/
chart1.updateX(XAxis, 7);
For Y-Axis:

Y-Axis updater uses updateY function.

/*
Data for Y Axis of our Chart
This array can be of: `int` or `float`

Note: this array should be kept in global scope. i.e. it should never be deleted from memory.
*/
int YAxis[] = {0, 0, 0, 0, 0, 0, 0};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
*/
chart1.updateY(YAxis, 7);
- - +

Area Chart

This feature is available in DASH Pro only.

Preview:

Preview

Type:

AREA_CHART


Valid Data Types for X-Axis:

  • int
  • float
  • String

Valid Data Types for Y-Axis:

  • int
  • float

Initializer:

/* 
Area Chart
Valid Arguments: (ESPDash dashboard, Card Type, const char* name )
*/
Chart chart1(&dashboard, AREA_CHART, "Chart Name");

Updaters:

For X-Axis:

X-Axis updater uses updateX function.

/*
Data for X Axis of our Chart
This array can be of: `int` / `float` or `String`

Note: this array should be kept in global scope. i.e. it should never be deleted from memory.
*/
String XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
or
(String array[], size_t array_size)
or
(const char* array[], size_t array_size)
*/
chart1.updateX(XAxis, 7);
For Y-Axis:

Y-Axis updater uses updateY function.

/*
Data for Y Axis of our Chart
This array can be of: `int` or `float`

Note: this array should be kept in global scope. i.e. it should never be deleted from memory.
*/
int YAxis[] = {0, 0, 0, 0, 0, 0, 0};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
*/
chart1.updateY(YAxis, 7);
+ + \ No newline at end of file diff --git a/charts/bar/index.html b/charts/bar/index.html index 75e4e694..9cb72d17 100644 --- a/charts/bar/index.html +++ b/charts/bar/index.html @@ -6,14 +6,14 @@ Bar Chart | DASH Docs - - - + + +
-

Bar Chart

Preview:

Preview

Type:

BAR_CHART


Valid Data Types for X-Axis:

  • int
  • float
  • String
  • const char*

Valid Data Types for Y-Axis:

  • int
  • float

Initializer:

/* 
Bar Chart
Valid Arguments: (ESPDash dashboard, Card Type, const char* name )
*/
Chart chart1(&dashboard, BAR_CHART, "Chart Name");

Updaters:

For X-Axis:

X-Axis updater uses updateX function.

/*
Data for X Axis of our Chart
This array can be of: `int` / `float` or `String`

Note: this array should be kept in global scope. i.e. it should never be deleted from memory.
*/
String XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
or
(String array[], size_t array_size)
or
(const char* array[], size_t array_size)
*/
chart1.updateX(XAxis, 7);
For Y-Axis:

Y-Axis updater uses updateY function.

/*
Data for Y Axis of our Chart
This array can be of: `int` or `float`

Note: this array should be kept in global scope. i.e. it should never be deleted from memory.
*/
int YAxis[] = {0, 0, 0, 0, 0, 0, 0};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
*/
chart1.updateY(YAxis, 7);
- - +

Bar Chart

Preview:

Preview

Type:

BAR_CHART


Valid Data Types for X-Axis:

  • int
  • float
  • String
  • const char*

Valid Data Types for Y-Axis:

  • int
  • float

Initializer:

/* 
Bar Chart
Valid Arguments: (ESPDash dashboard, Card Type, const char* name )
*/
Chart chart1(&dashboard, BAR_CHART, "Chart Name");

Updaters:

For X-Axis:

X-Axis updater uses updateX function.

/*
Data for X Axis of our Chart
This array can be of: `int` / `float` or `String`

Note: this array should be kept in global scope. i.e. it should never be deleted from memory.
*/
String XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
or
(String array[], size_t array_size)
or
(const char* array[], size_t array_size)
*/
chart1.updateX(XAxis, 7);
For Y-Axis:

Y-Axis updater uses updateY function.

/*
Data for Y Axis of our Chart
This array can be of: `int` or `float`

Note: this array should be kept in global scope. i.e. it should never be deleted from memory.
*/
int YAxis[] = {0, 0, 0, 0, 0, 0, 0};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
*/
chart1.updateY(YAxis, 7);
+ + \ No newline at end of file diff --git a/charts/line/index.html b/charts/line/index.html index beb6a655..cd03046a 100644 --- a/charts/line/index.html +++ b/charts/line/index.html @@ -6,14 +6,14 @@ Line Chart | DASH Docs - - - + + +
-

Line Chart

This feature is available in DASH Pro only.

Preview:

Preview


Type:

LINE_CHART


Valid Data Types for X-Axis:

  • int
  • float
  • String
  • const char*

Valid Data Types for Y-Axis:

  • int
  • float

Initializer:

/* 
Line Chart
Valid Arguments: (ESPDash dashboard, Card Type, const char* name )
*/
Chart chart1(&dashboard, LINE_CHART, "Chart Name");

Updaters:

For X-Axis:

X-Axis updater uses updateX function.

/*
Data for X Axis of our Chart
This array can be of: `int` / `float` or `String`

Note: this array should be kept in global scope. i.e. it should never be deleted from memory.
*/
String XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
or
(String array[], size_t array_size)
or
(const char* array[], size_t array_size)
*/
chart1.updateX(XAxis, 7);
For Y-Axis:

Y-Axis updater uses updateY function.

/*
Data for Y Axis of our Chart
This array can be of: `int` or `float`

Note: this array should be kept in global scope. i.e. it should never be deleted from memory.
*/
int YAxis[] = {0, 0, 0, 0, 0, 0, 0};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
*/
chart1.updateY(YAxis, 7);
- - +

Line Chart

This feature is available in DASH Pro only.

Preview:

Preview


Type:

LINE_CHART


Valid Data Types for X-Axis:

  • int
  • float
  • String
  • const char*

Valid Data Types for Y-Axis:

  • int
  • float

Initializer:

/* 
Line Chart
Valid Arguments: (ESPDash dashboard, Card Type, const char* name )
*/
Chart chart1(&dashboard, LINE_CHART, "Chart Name");

Updaters:

For X-Axis:

X-Axis updater uses updateX function.

/*
Data for X Axis of our Chart
This array can be of: `int` / `float` or `String`

Note: this array should be kept in global scope. i.e. it should never be deleted from memory.
*/
String XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
or
(String array[], size_t array_size)
or
(const char* array[], size_t array_size)
*/
chart1.updateX(XAxis, 7);
For Y-Axis:

Y-Axis updater uses updateY function.

/*
Data for Y Axis of our Chart
This array can be of: `int` or `float`

Note: this array should be kept in global scope. i.e. it should never be deleted from memory.
*/
int YAxis[] = {0, 0, 0, 0, 0, 0, 0};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
*/
chart1.updateY(YAxis, 7);
+ + \ No newline at end of file diff --git a/charts/pie/index.html b/charts/pie/index.html index 964a2f43..d400f1a9 100644 --- a/charts/pie/index.html +++ b/charts/pie/index.html @@ -6,14 +6,14 @@ Pie Chart | DASH Docs - - - + + +
-

Pie Chart

This feature is available in DASH Pro only.

Preview:

Preview

Type:

PIE_CHART


Valid Data Types for X-Axis:

  • int
  • float
  • String
  • const char*

Valid Data Types for Y-Axis:

  • int
  • float

Initializer:

/* 
Pie Chart
Valid Arguments: (ESPDash dashboard, Card Type, const char* name )
*/
Chart chart1(&dashboard, PIE_CHART, "Chart Name");

Updaters:

For X-Axis:

X-Axis updater uses updateX function.

/*
Data for X Axis of our Chart
This array can be of: `int` / `float` or `String`

Note: this array should be kept in global scope. i.e. it should never be deleted from memory.
*/
String XAxis[] = {"Biscuits", "Cookies", "Milk", "Thing4", "Thing5"};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
or
(String array[], size_t array_size)
or
(const char* array[], size_t array_size)
*/
chart1.updateX(XAxis, 5);
For Y-Axis:

Y-Axis updater uses updateY function.

/*
Data for Y Axis of our Chart
This array can be of: `int` or `float`

Note: this array should be kept in global scope. i.e. it should never be deleted from memory.
*/
int YAxis[] = {0, 0, 0, 0, 0};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
*/
chart1.updateY(YAxis, 5);
- - +

Pie Chart

This feature is available in DASH Pro only.

Preview:

Preview

Type:

PIE_CHART


Valid Data Types for X-Axis:

  • int
  • float
  • String
  • const char*

Valid Data Types for Y-Axis:

  • int
  • float

Initializer:

/* 
Pie Chart
Valid Arguments: (ESPDash dashboard, Card Type, const char* name )
*/
Chart chart1(&dashboard, PIE_CHART, "Chart Name");

Updaters:

For X-Axis:

X-Axis updater uses updateX function.

/*
Data for X Axis of our Chart
This array can be of: `int` / `float` or `String`

Note: this array should be kept in global scope. i.e. it should never be deleted from memory.
*/
String XAxis[] = {"Biscuits", "Cookies", "Milk", "Thing4", "Thing5"};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
or
(String array[], size_t array_size)
or
(const char* array[], size_t array_size)
*/
chart1.updateX(XAxis, 5);
For Y-Axis:

Y-Axis updater uses updateY function.

/*
Data for Y Axis of our Chart
This array can be of: `int` or `float`

Note: this array should be kept in global scope. i.e. it should never be deleted from memory.
*/
int YAxis[] = {0, 0, 0, 0, 0};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
*/
chart1.updateY(YAxis, 5);
+ + \ No newline at end of file diff --git a/concept/index.html b/concept/index.html index a57ae79c..b19ca607 100644 --- a/concept/index.html +++ b/concept/index.html @@ -6,14 +6,14 @@ Concept of DASH | DASH Docs - - - + + +
-

Concept of DASH

In this article, we are going to look at how the internals of ESP-DASH are stacked up, as well as understand the how everything works with eachother inside the library.

Note: If you looking to get started with ESP-DASH quickly, you can skip this article.

Concept Diagram

DASH contains the following classes which you will use in your application:

  • Networking Class (ESPDash.h)
  • Card Class (Card.h)
  • Chart Class (Chart.h)
  • Statistic Class (Statistic.h)
  • Tab Class (Tab.h) ( Pro Version Only )

The whole idea of ESP-DASH is to make a complete dashboard by using data classes ( as shown in figure above ). The data classes connect with ESP-DASH main class using pointers which handles all the networking and relays realtime updates to the open dashboards.

Let's understand the purpose of each class:

1. Networking Class (ESPDash.h)

The networking class handles all the networking stuff including serving the DASH webpage from program memory of the microcontroller and also to maintain the WebSocket connection with every connected client. Apart from networking, with the release of V4, you can now also configure the webpage according to your application. This includes changing page title, logo etc. ( Go to "Extra Features" to know more ).

2. Card Class (Card.h)

The card class is a data storage class in ESP-DASH which is used to create various types of cards on the dashboard. The only purpose of this class is to store the data + configuration in stack or heap depending on your use case and to keep track of the changes in data for realtime updates.

3. Chart Class (Chart.h)

The chart class is an data storage class which is used to store the X & Y axis arrays to create various types of charts on the dashboard. This class is a bit different from "card" class as to keep the memory footprint low, it doesn't stores the data in the class itself. Instead it smartly stores the pointer to arrays so that data can be read on demand without actually copying all the array in the memory.

Note: If you are migrating from V3, Please look at the migration guide to know more.

4. Statistic Class (Statistic.h)

The statistic class is used to create custom user defined statistics which will be displayed in the statistics page. Statistics in ESP-DASH's sense are simple key-value pairs which you can send to dashboard to report small but useful data.

5. Tab Class (Tab.h) ( Pro )

The tab class in DASH Pro is also an data class which is used to create multiple pages. Therefore, you are now not limited to the "Overview" page and can create multiple pages to host different cards & charts.

- - +

Concept of DASH

In this article, we are going to look at how the internals of ESP-DASH are stacked up, as well as understand the how everything works with eachother inside the library.

Note: If you looking to get started with ESP-DASH quickly, you can skip this article.

Concept Diagram

DASH contains the following classes which you will use in your application:

  • Networking Class (ESPDash.h)
  • Card Class (Card.h)
  • Chart Class (Chart.h)
  • Statistic Class (Statistic.h)
  • Tab Class (Tab.h) ( Pro Version Only )

The whole idea of ESP-DASH is to make a complete dashboard by using data classes ( as shown in figure above ). The data classes connect with ESP-DASH main class using pointers which handles all the networking and relays realtime updates to the open dashboards.

Let's understand the purpose of each class:

1. Networking Class (ESPDash.h)

The networking class handles all the networking stuff including serving the DASH webpage from program memory of the microcontroller and also to maintain the WebSocket connection with every connected client. Apart from networking, with the release of V4, you can now also configure the webpage according to your application. This includes changing page title, logo etc. ( Go to "Extra Features" to know more ).

2. Card Class (Card.h)

The card class is a data storage class in ESP-DASH which is used to create various types of cards on the dashboard. The only purpose of this class is to store the data + configuration in stack or heap depending on your use case and to keep track of the changes in data for realtime updates.

3. Chart Class (Chart.h)

The chart class is an data storage class which is used to store the X & Y axis arrays to create various types of charts on the dashboard. This class is a bit different from "card" class as to keep the memory footprint low, it doesn't stores the data in the class itself. Instead it smartly stores the pointer to arrays so that data can be read on demand without actually copying all the array in the memory.

Note: If you are migrating from V3, Please look at the migration guide to know more.

4. Statistic Class (Statistic.h)

The statistic class is used to create custom user defined statistics which will be displayed in the statistics page. Statistics in ESP-DASH's sense are simple key-value pairs which you can send to dashboard to report small but useful data.

5. Tab Class (Tab.h) ( Pro )

The tab class in DASH Pro is also an data class which is used to create multiple pages. Therefore, you are now not limited to the "Overview" page and can create multiple pages to host different cards & charts.

+ + \ No newline at end of file diff --git a/custom-statistics/index.html b/custom-statistics/index.html index 0a342ab5..8e128ef2 100644 --- a/custom-statistics/index.html +++ b/custom-statistics/index.html @@ -6,14 +6,14 @@ Statistics | DASH Docs - - - + + +
-

Statistics

Concept Diagram

ESP-DASH has a dedicated page called "Statistics" on the dashboard which contain key-value pairs of system statistics ( heap, flash usage etc. ) by default. With the launch of ESP-DASH V4, user defined statistics are now also part of the library! You can now add your own statitics to this page. 🎉

Note: System statistics can be turned off any time, you may look at Disable Statistics page.

Example

Initializer:
Statistic stat1(&dashboard, "Key", "Value");
Update Value:
stat1.set("New Value");
Update both Key & Value:
stat1.set("New Key", "New Value");
- - +

Statistics

Concept Diagram

ESP-DASH has a dedicated page called "Statistics" on the dashboard which contain key-value pairs of system statistics ( heap, flash usage etc. ) by default. With the launch of ESP-DASH V4, user defined statistics are now also part of the library! You can now add your own statitics to this page. 🎉

Note: System statistics can be turned off any time, you may look at Disable Statistics page.

Example

Initializer:
Statistic stat1(&dashboard, "Key", "Value");
Update Value:
stat1.set("New Value");
Update both Key & Value:
stat1.set("New Key", "New Value");
+ + \ No newline at end of file diff --git a/features/authentication/index.html b/features/authentication/index.html index 3c0e9cf1..8fdc381f 100644 --- a/features/authentication/index.html +++ b/features/authentication/index.html @@ -6,14 +6,14 @@ User Authentication | DASH Docs - - - + + +
-

User Authentication

Energy Card Preview

ESP-DASH comes with basic HTTP authentication support. You can enable basic HTTP based user authentication to control who can view your dashboard using setAuthentication function.

Example:

dashboard.setAuthentication("username", "password");
- - +

User Authentication

Energy Card Preview

ESP-DASH comes with basic HTTP authentication support. You can enable basic HTTP based user authentication to control who can view your dashboard using setAuthentication function.

Example:

dashboard.setAuthentication("username", "password");
+ + \ No newline at end of file diff --git a/features/brotli-compression/index.html b/features/brotli-compression/index.html index aada6efd..dab8fbae 100644 --- a/features/brotli-compression/index.html +++ b/features/brotli-compression/index.html @@ -6,14 +6,14 @@ Brotli Compression | DASH Docs - - - + + +
-

Brotli Compression

This feature is available in DASH Pro only.


Preview

With ESP-DASH Pro v4.3.0 or more, there is an option to enable Brotli compression to further reduce the size of webpage (dashboard) and provide you more space for your code. We've noticed 40% extra reduction in size over gzip compression (default).

Please note that Brotli compression is only supported by Safari browser with unencrpyted HTTP protocol. Due to constraints set by other browsers ( Chrome, Edge, Firefox etc. ) you need to use HTTPS for brotli compression to work properly.

Note: Broti compression is disabled by default. It's up to user to enable brotli if the above conditions are fine for your use-case.

How to enable:

You can switch to brotli compression by setting DASH_USE_BROTLI_COMPRESSION to 1 in dash_webpage.h.

  1. Open dash_webpage.h in src directory of ESP-DASH Pro library.
  2. Locate DASH_USE_BROTLI_COMPRESSION
  3. Set it to 1
  4. That's it. Save, compile and upload again to your microcontroller.
- - +

Brotli Compression

This feature is available in DASH Pro only.


Preview

With ESP-DASH Pro v4.3.0 or more, there is an option to enable Brotli compression to further reduce the size of webpage (dashboard) and provide you more space for your code. We've noticed 40% extra reduction in size over gzip compression (default).

Please note that Brotli compression is only supported by Safari browser with unencrpyted HTTP protocol. Due to constraints set by other browsers ( Chrome, Edge, Firefox etc. ) you need to use HTTPS for brotli compression to work properly.

Note: Broti compression is disabled by default. It's up to user to enable brotli if the above conditions are fine for your use-case.

How to enable:

You can switch to brotli compression by setting DASH_USE_BROTLI_COMPRESSION to 1 in dash_webpage.h.

  1. Open dash_webpage.h in src directory of ESP-DASH Pro library.
  2. Locate DASH_USE_BROTLI_COMPRESSION
  3. Set it to 1
  4. That's it. Save, compile and upload again to your microcontroller.
+ + \ No newline at end of file diff --git a/features/chartanimations/index.html b/features/chartanimations/index.html index 86ffa623..abb55439 100644 --- a/features/chartanimations/index.html +++ b/features/chartanimations/index.html @@ -6,14 +6,14 @@ Toggle Animation | DASH Docs - - - + + +
-

Toggle Animation

This feature is available in DASH Pro only.


You can enable/disable chart animations with ease using the setChartAnimations function of ESPDash class. This is particularly helpful if you are updating your charts at an very fast pace.

Note: Chart animations are enabled by default.

Usage:

You can put this function anywhere in your setup block:

To Disble:
dashboard.setChartAnimations(false); // Disable Chart Animations
To Enable:
dashboard.setChartAnimations(true); // Enable Chart Animations
- - +

Toggle Animation

This feature is available in DASH Pro only.


You can enable/disable chart animations with ease using the setChartAnimations function of ESPDash class. This is particularly helpful if you are updating your charts at an very fast pace.

Note: Chart animations are enabled by default.

Usage:

You can put this function anywhere in your setup block:

To Disble:
dashboard.setChartAnimations(false); // Disable Chart Animations
To Enable:
dashboard.setChartAnimations(true); // Enable Chart Animations
+ + \ No newline at end of file diff --git a/features/custom-logo/index.html b/features/custom-logo/index.html index f9814bc2..e00dd9d2 100644 --- a/features/custom-logo/index.html +++ b/features/custom-logo/index.html @@ -6,14 +6,14 @@ Custom Logo | DASH Docs - - - + + +
-

Custom Logo

This feature is available in DASH Pro only.


Energy Card Preview Energy Card Preview

If you are not familiar with the interface yet, the dashboard has an sidebar which can be expanded and collapsed, in that case the logo switches between "mini" and "large" scale version.

Both these logos can be changed by the user by modifying the logo.h & logo.cpp file in the library source directory.

The logo used in DASH is image file converted to byte array. We'll go through the process below:

What you'll need

  • You'll need a compatible logo image ( jpeg / png / gif / tif etc. ) or an SVG file ( recommended due to small file size ). Important: Please make sure your image is optimized and small in file size.
  • Know the MIME file type of your image. You can use HTTPStrip's mime utility.

Step 1: Procedure to convert logo into byte array

  1. Go to File2Raw Utility ( I created this utility a few years back for the purpose of converting files into byte array for C++ applications ).
  2. Select your logo.
  3. Select "Gzip Compress" & "Use PROGMEM (Arduino)".
  4. Click "Convert".

Step 2: Setting custom logo in sketch

Now once your custom logo has been prepared, let's set it in our ESP-DASH Pro library. To do so, the library contains 2 files which contain the variable that govern 'mini' and 'large' logos used by our webpage.

  1. Go to logo.h
  2. Set DASH_MINI_LOGO_MIME to your image file type. To find your file's mime type, use this utility: https://www.htmlstrip.com/mime-file-type-checker
  3. Set DASH_MINI_LOGO_WIDTH & DASH_MINI_LOGO_HEIGHT according to your desired size which will be displayed on the webpage.
  4. Replace the array length of DASH_MINI_LOGO with the newly generated array length.
  5. Now open logo.cpp
  6. Replace the data inside DASH_MINI_LOGO with new data generated just before using File2Raw.

Once done, you may repeat the same steps as above for DASH_LARGE_LOGO.

- - +

Custom Logo

This feature is available in DASH Pro only.


Energy Card Preview Energy Card Preview

If you are not familiar with the interface yet, the dashboard has an sidebar which can be expanded and collapsed, in that case the logo switches between "mini" and "large" scale version.

Both these logos can be changed by the user by modifying the logo.h & logo.cpp file in the library source directory.

The logo used in DASH is image file converted to byte array. We'll go through the process below:

What you'll need

  • You'll need a compatible logo image ( jpeg / png / gif / tif etc. ) or an SVG file ( recommended due to small file size ). Important: Please make sure your image is optimized and small in file size.
  • Know the MIME file type of your image. You can use HTTPStrip's mime utility.

Step 1: Procedure to convert logo into byte array

  1. Go to File2Raw Utility ( I created this utility a few years back for the purpose of converting files into byte array for C++ applications ).
  2. Select your logo.
  3. Select "Gzip Compress" & "Use PROGMEM (Arduino)".
  4. Click "Convert".

Step 2: Setting custom logo in sketch

Now once your custom logo has been prepared, let's set it in our ESP-DASH Pro library. To do so, the library contains 2 files which contain the variable that govern 'mini' and 'large' logos used by our webpage.

  1. Go to logo.h
  2. Set DASH_MINI_LOGO_MIME to your image file type. To find your file's mime type, use this utility: https://www.htmlstrip.com/mime-file-type-checker
  3. Set DASH_MINI_LOGO_WIDTH & DASH_MINI_LOGO_HEIGHT according to your desired size which will be displayed on the webpage.
  4. Replace the array length of DASH_MINI_LOGO with the newly generated array length.
  5. Now open logo.cpp
  6. Replace the data inside DASH_MINI_LOGO with new data generated just before using File2Raw.

Once done, you may repeat the same steps as above for DASH_LARGE_LOGO.

+ + \ No newline at end of file diff --git a/features/custom-uri/index.html b/features/custom-uri/index.html index 8d3e1c7e..2c478b27 100644 --- a/features/custom-uri/index.html +++ b/features/custom-uri/index.html @@ -6,14 +6,14 @@ Custom URI | DASH Docs - - - + + +
-

Custom URI

If you want to serve ESPDash at a path other than 'root' (ie. http://<Your IP>/) then you can use the constructor to supply the path of your choice.

Example:

ESPDash dashboard(&server, "/dash");

This will result in ESPDash being served at http://<Your IP>/dash.

- - +

Custom URI

If you want to serve ESPDash at a path other than 'root' (ie. http://<Your IP>/) then you can use the constructor to supply the path of your choice.

Example:

ESPDash dashboard(&server, "/dash");

This will result in ESPDash being served at http://<Your IP>/dash.

+ + \ No newline at end of file diff --git a/features/disable-stats/index.html b/features/disable-stats/index.html index cf60d4b7..1943b8c6 100644 --- a/features/disable-stats/index.html +++ b/features/disable-stats/index.html @@ -6,14 +6,14 @@ Disable Statistics | DASH Docs - - - + + +
-

Disable Statistics

You can disable system statistics by using setting false in ESPDash class constructor.

Example:

If no custom URI is defined (second parameter):

ESPDash dashboard(&server, false);

If using a using custom URI (third parameter):

ESPDash dashbord(&server, "/", false);

If you would like to completely disable and hide the statistics tab from the sidebar, please use the above example and make sure you don't have any custom statistics. By doing so, it will automatically hide the "statistics" tab from sidebar.

- - +

Disable Statistics

You can disable system statistics by using setting false in ESPDash class constructor.

Example:

If no custom URI is defined (second parameter):

ESPDash dashboard(&server, false);

If using a using custom URI (third parameter):

ESPDash dashbord(&server, "/", false);

If you would like to completely disable and hide the statistics tab from the sidebar, please use the above example and make sure you don't have any custom statistics. By doing so, it will automatically hide the "statistics" tab from sidebar.

+ + \ No newline at end of file diff --git a/features/indexing/index.html b/features/indexing/index.html index c6b7ff3d..2dfaa5c5 100644 --- a/features/indexing/index.html +++ b/features/indexing/index.html @@ -6,14 +6,14 @@ Card Indexing | DASH Docs - - - + + +
-

Card Indexing

This feature is available in DASH Pro only.


Energy Card Preview

ESP-DASH Pro provides you with a setIndex function in both cards and charts to modify the position of them on the dashboard.

Example:

card1.setIndex(0);

Indexing works in ascending format. The lowest card index will be placed in the front of the list and the highest index will be put in the end. It allows you to set the layout according to your wish.

- - +

Card Indexing

This feature is available in DASH Pro only.


Energy Card Preview

ESP-DASH Pro provides you with a setIndex function in both cards and charts to modify the position of them on the dashboard.

Example:

card1.setIndex(0);

Indexing works in ascending format. The lowest card index will be placed in the front of the list and the highest index will be put in the end. It allows you to set the layout according to your wish.

+ + \ No newline at end of file diff --git a/features/sizing/index.html b/features/sizing/index.html index a57a61a6..ea7a5bee 100644 --- a/features/sizing/index.html +++ b/features/sizing/index.html @@ -6,14 +6,14 @@ Custom Card Size | DASH Docs - - - + + +
-

Custom Card Size

This feature is available in DASH Pro only.


Energy Card Preview

ESP-DASH Pro allows you to change the size of your cards & charts by providing you the setSize function. This function allows you to set a responsive width for your widgets without actually modifying the whole webpage.

Reference

Card sizing consists of breakpoints for an responsive layout that scales up or down to every screen size. The valid value for each breakpoint is 1 to 12.

To understand better, the breakpoints are as follows:

  • xs - Small Smartphone
  • sm - Normal Smartphone
  • md - Tablet
  • lg - HD laptop
  • xl - Full HD laptop
  • xxl - 2K display and above
Option 1:
  // This reference can be found in Card.h
void setSize(const uint8_t xs, const uint8_t sm, const uint8_t md, const uint8_t lg, const uint8_t xl, const uint8_t xxl);
Option 2:
  // These references can be found in Card.h
struct CardSize {
uint8_t xs;
uint8_t sm;
uint8_t md;
uint8_t lg;
uint8_t xl;
uint8_t xxl;
};

void setSize(const CardSize &size);

Example

Option 1:
card1.setSize(12, 12, 6, 4, 3, 2);
Option 2:
card1.setSize({
.xs = 12,
.sm = 12,
.md = 6,
.lg = 4,
.xl = 3,
.xxl = 2
});
- - +

Custom Card Size

This feature is available in DASH Pro only.


Energy Card Preview

ESP-DASH Pro allows you to change the size of your cards & charts by providing you the setSize function. This function allows you to set a responsive width for your widgets without actually modifying the whole webpage.

Reference

Card sizing consists of breakpoints for an responsive layout that scales up or down to every screen size. The valid value for each breakpoint is 1 to 12.

To understand better, the breakpoints are as follows:

  • xs - Small Smartphone
  • sm - Normal Smartphone
  • md - Tablet
  • lg - HD laptop
  • xl - Full HD laptop
  • xxl - 2K display and above
Option 1:
  // This reference can be found in Card.h
void setSize(const uint8_t xs, const uint8_t sm, const uint8_t md, const uint8_t lg, const uint8_t xl, const uint8_t xxl);
Option 2:
  // These references can be found in Card.h
struct CardSize {
uint8_t xs;
uint8_t sm;
uint8_t md;
uint8_t lg;
uint8_t xl;
uint8_t xxl;
};

void setSize(const CardSize &size);

Example

Option 1:
card1.setSize(12, 12, 6, 4, 3, 2);
Option 2:
card1.setSize({
.xs = 12,
.sm = 12,
.md = 6,
.lg = 4,
.xl = 3,
.xxl = 2
});
+ + \ No newline at end of file diff --git a/features/title/index.html b/features/title/index.html index b1f65afb..e06134d4 100644 --- a/features/title/index.html +++ b/features/title/index.html @@ -6,14 +6,14 @@ Custom Title | DASH Docs - - - + + +
-

Custom Title

This feature is available in DASH Pro only.


Energy Card Preview

ESP-DASH Pro provides you with a setTitle function in the main ESPDash class. You can use this function to change the default title of your dashboard.

Example:

dashboard.setTitle("New Dashboard XYZ");
- - +

Custom Title

This feature is available in DASH Pro only.


Energy Card Preview

ESP-DASH Pro provides you with a setTitle function in the main ESPDash class. You can use this function to change the default title of your dashboard.

Example:

dashboard.setTitle("New Dashboard XYZ");
+ + \ No newline at end of file diff --git a/getting-started/index.html b/getting-started/index.html index cfd2b28b..ba74bca2 100644 --- a/getting-started/index.html +++ b/getting-started/index.html @@ -6,14 +6,14 @@ Getting Started | DASH Docs - - - + + +
-

Getting Started

To get started with ESP-DASH, we will be creating our basic example step by step and learn what each setup does:


Part 1: Include Dependencies

We have used conditional compilation in this part therefore the code will work for both ESP8266 & ESP32.

#include <Arduino.h>
#if defined(ESP8266)
/* ESP8266 Dependencies */
#include <ESP8266WiFi.h>
#include <ESPAsyncTCP.h>
#include <ESPAsyncWebServer.h>
#elif defined(ESP32)
/* ESP32 Dependencies */
#include <WiFi.h>
#include <AsyncTCP.h>
#include <ESPAsyncWebServer.h>
#endif
#include <ESPDash.h>

Part 2: Create AsyncWebServer Instance

Create an AsyncWebServer instance on default "80" port.

Note: You are not restricted to a single dashboard. You can host as many dashboards as you want on multiple ports.

/* Start Webserver */
AsyncWebServer server(80);

Part 3: Attach ESP-DASH Instance

Pass the AsyncWebServer instance to ESPDash's instance. Internally the ESPDash will hook to AsyncWebServer for handling all the networking tasks.

Note: You can still use the same AsyncWebServer instance for other tasks.

/* Attach ESP-DASH to AsyncWebServer */
ESPDash dashboard(&server);

Part 4: Create Cards

In this step, we will creating ESP-DASH cards and passing our dasboard instance as a first argument so that they can add / remove themselves.

After we are done with this guide, Please take a look at Cards section to know more about the types of cards available to us.

/* 
Dashboard Cards
Format - (Dashboard Instance, Card Type, Card Name, Card Symbol(optional) )
*/
Card temperature(&dashboard, TEMPERATURE_CARD, "Temperature", "°C");
Card humidity(&dashboard, HUMIDITY_CARD, "Humidity", "%");

Part 5: Setup Block

In our setup block, we will be adding the usual WiFi connectivity stuff and then start our AsyncWebServer with server.begin();.

void setup() {
Serial.begin(115200);

/* Connect WiFi */
WiFi.mode(WIFI_STA);
WiFi.begin("ssid", "password");
if (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.printf("WiFi Failed!\n");
return;
}
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());

/* Start AsyncWebServer */
server.begin();
}

Part 5: Loop Block

In our loop block, we will be doing 2 things:

  1. Updating card values
  2. Sending updates to our dashboard
1. Updating Card Values

Remember the 'Cards' we created in 4th part? We will now access those cards by their variable and update them using the update function which is provided with our card's class:

temperature.update((int)random(0, 50));
2. Sending updates to our Dashboard

Once we have updated values of our card(s), we will call the sendUpdates() function of our dashboard instance and it will send new card values to every connected client in real time.

dashboard.sendUpdates();

Technically speaking, You can call these functions anywhere in your sketch, but for demonstration purposes we have called them in our loop block.

Complete Loop Block:
void loop() {
/* Update Card Values */
temperature.update((int)random(0, 50));
humidity.update((int)random(0, 100));

/* Send Updates to our Dashboard (realtime) */
dashboard.sendUpdates();

/*
Delay is just for demonstration purposes in this example,
Replace this code with 'millis interval' in your final project.
*/
delay(3000);
}

Final Code

That's it! Now we can just upload this sketch to our MCU and access the dashboard via it's IP address. ( Make sure to change the ssid and password in our sketch according to your Access Point )

/*
-----------------------
ESPDASH - Basic Example
-----------------------

Skill Level: Intermediate

In this example we will be creating a basic dashboard which consists
of some cards and then update them in realtime ( at 3s interval ).

Github: https://github.com/ayushsharma82/ESP-DASH
WiKi: https://ayushsharma82.github.io/ESP-DASH/

Works with both ESP8266 & ESP32
*/

#include <Arduino.h>
#if defined(ESP8266)
/* ESP8266 Dependencies */
#include <ESP8266WiFi.h>
#include <ESPAsyncTCP.h>
#include <ESPAsyncWebServer.h>
#elif defined(ESP32)
/* ESP32 Dependencies */
#include <WiFi.h>
#include <AsyncTCP.h>
#include <ESPAsyncWebServer.h>
#endif
#include <ESPDash.h>


/* Your WiFi Credentials */
const char* ssid = ""; // SSID
const char* password = ""; // Password

/* Start Webserver */
AsyncWebServer server(80);

/* Attach ESP-DASH to AsyncWebServer */
ESPDash dashboard(&server);

/*
Dashboard Cards
Format - (Dashboard Instance, Card Type, Card Name, Card Symbol(optional) )
*/
Card temperature(&dashboard, TEMPERATURE_CARD, "Temperature", "°C");
Card humidity(&dashboard, HUMIDITY_CARD, "Humidity", "%");


void setup() {
Serial.begin(115200);

/* Connect WiFi */
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
if (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.printf("WiFi Failed!\n");
return;
}
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());

/* Start AsyncWebServer */
server.begin();
}

void loop() {
/* Update Card Values */
temperature.update((int)random(0, 50));
humidity.update((int)random(0, 100));

/* Send Updates to our Dashboard (realtime) */
dashboard.sendUpdates();

/*
Delay is just for demonstration purposes in this example,
Replace this code with 'millis interval' in your final project.
*/
delay(3000);
}
- - +

Getting Started

To get started with ESP-DASH, we will be creating our basic example step by step and learn what each setup does:


Part 1: Include Dependencies

We have used conditional compilation in this part therefore the code will work for both ESP8266 & ESP32.

#include <Arduino.h>
#if defined(ESP8266)
/* ESP8266 Dependencies */
#include <ESP8266WiFi.h>
#include <ESPAsyncTCP.h>
#include <ESPAsyncWebServer.h>
#elif defined(ESP32)
/* ESP32 Dependencies */
#include <WiFi.h>
#include <AsyncTCP.h>
#include <ESPAsyncWebServer.h>
#endif
#include <ESPDash.h>

Part 2: Create AsyncWebServer Instance

Create an AsyncWebServer instance on default "80" port.

Note: You are not restricted to a single dashboard. You can host as many dashboards as you want on multiple ports.

/* Start Webserver */
AsyncWebServer server(80);

Part 3: Attach ESP-DASH Instance

Pass the AsyncWebServer instance to ESPDash's instance. Internally the ESPDash will hook to AsyncWebServer for handling all the networking tasks.

Note: You can still use the same AsyncWebServer instance for other tasks.

/* Attach ESP-DASH to AsyncWebServer */
ESPDash dashboard(&server);

Part 4: Create Cards

In this step, we will creating ESP-DASH cards and passing our dasboard instance as a first argument so that they can add / remove themselves.

After we are done with this guide, Please take a look at Cards section to know more about the types of cards available to us.

/* 
Dashboard Cards
Format - (Dashboard Instance, Card Type, Card Name, Card Symbol(optional) )
*/
Card temperature(&dashboard, TEMPERATURE_CARD, "Temperature", "°C");
Card humidity(&dashboard, HUMIDITY_CARD, "Humidity", "%");

Part 5: Setup Block

In our setup block, we will be adding the usual WiFi connectivity stuff and then start our AsyncWebServer with server.begin();.

void setup() {
Serial.begin(115200);

/* Connect WiFi */
WiFi.mode(WIFI_STA);
WiFi.begin("ssid", "password");
if (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.printf("WiFi Failed!\n");
return;
}
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());

/* Start AsyncWebServer */
server.begin();
}

Part 5: Loop Block

In our loop block, we will be doing 2 things:

  1. Updating card values
  2. Sending updates to our dashboard
1. Updating Card Values

Remember the 'Cards' we created in 4th part? We will now access those cards by their variable and update them using the update function which is provided with our card's class:

temperature.update((int)random(0, 50));
2. Sending updates to our Dashboard

Once we have updated values of our card(s), we will call the sendUpdates() function of our dashboard instance and it will send new card values to every connected client in real time.

dashboard.sendUpdates();

Technically speaking, You can call these functions anywhere in your sketch, but for demonstration purposes we have called them in our loop block.

Complete Loop Block:
void loop() {
/* Update Card Values */
temperature.update((int)random(0, 50));
humidity.update((int)random(0, 100));

/* Send Updates to our Dashboard (realtime) */
dashboard.sendUpdates();

/*
Delay is just for demonstration purposes in this example,
Replace this code with 'millis interval' in your final project.
*/
delay(3000);
}

Final Code

That's it! Now we can just upload this sketch to our MCU and access the dashboard via it's IP address. ( Make sure to change the ssid and password in our sketch according to your Access Point )

/*
-----------------------
ESPDASH - Basic Example
-----------------------

Skill Level: Intermediate

In this example we will be creating a basic dashboard which consists
of some cards and then update them in realtime ( at 3s interval ).

Github: https://github.com/ayushsharma82/ESP-DASH
WiKi: https://ayushsharma82.github.io/ESP-DASH/

Works with both ESP8266 & ESP32
*/

#include <Arduino.h>
#if defined(ESP8266)
/* ESP8266 Dependencies */
#include <ESP8266WiFi.h>
#include <ESPAsyncTCP.h>
#include <ESPAsyncWebServer.h>
#elif defined(ESP32)
/* ESP32 Dependencies */
#include <WiFi.h>
#include <AsyncTCP.h>
#include <ESPAsyncWebServer.h>
#endif
#include <ESPDash.h>


/* Your WiFi Credentials */
const char* ssid = ""; // SSID
const char* password = ""; // Password

/* Start Webserver */
AsyncWebServer server(80);

/* Attach ESP-DASH to AsyncWebServer */
ESPDash dashboard(&server);

/*
Dashboard Cards
Format - (Dashboard Instance, Card Type, Card Name, Card Symbol(optional) )
*/
Card temperature(&dashboard, TEMPERATURE_CARD, "Temperature", "°C");
Card humidity(&dashboard, HUMIDITY_CARD, "Humidity", "%");


void setup() {
Serial.begin(115200);

/* Connect WiFi */
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
if (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.printf("WiFi Failed!\n");
return;
}
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());

/* Start AsyncWebServer */
server.begin();
}

void loop() {
/* Update Card Values */
temperature.update((int)random(0, 50));
humidity.update((int)random(0, 100));

/* Send Updates to our Dashboard (realtime) */
dashboard.sendUpdates();

/*
Delay is just for demonstration purposes in this example,
Replace this code with 'millis interval' in your final project.
*/
delay(3000);
}
+ + \ No newline at end of file diff --git a/img/dash-splash.png b/img/dash-splash.png index ff591f35..fb5ac228 100644 Binary files a/img/dash-splash.png and b/img/dash-splash.png differ diff --git a/index.html b/index.html index d75060b9..b63ba6d0 100644 --- a/index.html +++ b/index.html @@ -6,14 +6,14 @@ Intro | DASH Docs - - - + + +
-



   


So as many would ask, what is ESP-DASH? In simple words - It's a UI library for ESP32 & ESP8266 microcontrollers that let you generate a fully capable dashboard. It can moulded in any way possible to suit your application needs.

Here are a few things by which you benefit by using ESP-DASH in your project:

  • 🔥 Automatic webpage generation.
  • ⏱️ Realtime updates to all connected clients.
  • 🎷 No need to learn HTML/CSS/JS. ESP-DASH provides you with a C++ interface.
  • 🛫 Ready to use components for your data.
  • 🏀 It's dynamic! Add or remove components anytime from the webpage.
  • 📈 Inbuilt charts support.

Note: This documentation serves both the versions of ESP-DASH ( Lite - Open Source and Pro ). Therefore, if you notice "(Pro)" mentioned on any of the features in the documentation, that means it is only available in ESP-DASH Pro.

Preview:

- - +



   


So as many would ask, what is ESP-DASH? In simple words - It's a UI library for ESP32 & ESP8266 microcontrollers that let you generate a fully capable dashboard. It can moulded in any way possible to suit your application needs.

Here are a few things by which you benefit by using ESP-DASH in your project:

  • 🔥 Automatic webpage generation.
  • ⏱️ Realtime updates to all connected clients.
  • 🎷 No need to learn HTML/CSS/JS. ESP-DASH provides you with a C++ interface.
  • 🛫 Ready to use components for your data.
  • 🏀 It's dynamic! Add or remove components anytime from the webpage.
  • 📈 Inbuilt charts support.

Note: This documentation serves both the versions of ESP-DASH ( Lite - Open Source and Pro ). Therefore, if you notice "(Pro)" mentioned on any of the features in the documentation, that means it is only available in ESP-DASH Pro.

Preview:

+ + \ No newline at end of file diff --git a/installation/index.html b/installation/index.html index f7342e6c..7beb626d 100644 --- a/installation/index.html +++ b/installation/index.html @@ -6,14 +6,14 @@ Installation | DASH Docs - - - + + +
-

Installation

ESP-DASH depends on the following open-source libraries/boards. Make sure to install them before you install ESP-DASH.

For ESP8266:
For ESP32:

Installing ESP-DASH

1. Directly Through Arduino IDE - Library Manager

Go to Sketch > Include Library > Library Manager > Search for "ESP-DASH" > Install

2. Manual Install

For Windows:
  • Download the Repository
  • Extract the .zip in Documents > Arduino > Libraries > {Place "ESP-DASH" folder Here}
For Linux:
  • Download the Repository
  • Extract the .zip in Sketchbook > Libraries > {Place "ESP-DASH" folder Here}

3. Import through Arduino IDE

  • Download the Repository
  • Go to Sketch > Include Library > Add .zip Library > Select the Downloaded .zip File.
- - +

Installation

ESP-DASH depends on the following open-source libraries/boards. Make sure to install them before you install ESP-DASH.

For ESP8266:
For ESP32:

Installing ESP-DASH

1. Directly Through Arduino IDE - Library Manager

Go to Sketch > Include Library > Library Manager > Search for "ESP-DASH" > Install

2. Manual Install

For Windows:
  • Download the Repository
  • Extract the .zip in Documents > Arduino > Libraries > {Place "ESP-DASH" folder Here}
For Linux:
  • Download the Repository
  • Extract the .zip in Sketchbook > Libraries > {Place "ESP-DASH" folder Here}

3. Import through Arduino IDE

  • Download the Repository
  • Go to Sketch > Include Library > Add .zip Library > Select the Downloaded .zip File.
+ + \ No newline at end of file diff --git a/migrate/index.html b/migrate/index.html index 135e37a9..0b4e040a 100644 --- a/migrate/index.html +++ b/migrate/index.html @@ -6,14 +6,14 @@ Migration Guide | DASH Docs - - - + + +
-

Migration Guide

Note: If you are currently using ESP-DASH V3 or ESP-DASH Pro ( previous releases <= v4.0.8 ), then this article is for you.

This article will cover all the minor and breaking changing which come as part of switching your existing codebase to ESP-DASH V4. DASH V4 was made with backwards compatibility in mind therefore there are not many changes to the existing functionality, which means you can get started using it in a few minutes!:

⚠️ Minor Changes:

  • The second argument of ESPDash Class constructor now only disables system statistics. ESPDash(AsyncWebServer* server, bool enable_default_stats = true);. The statistics tab now gets automatically hidden when there are no custom stats added by user and when default (system) statistics are disabled as well.

  • The sendUpdates(bool force); function now has a force argument which can be used to force refresh the whole layout on connected dashboards.

⚒️ Breaking Changes:

Button Callback

The button callback now gets called with a int rather than bool which lead to issues. The value returned by callback will be 1 or 0.

// New Button Callback
button.attachCallback([&](int value){
button.update(value);
dashboard.sendUpdates();
});

Charts

There is a major overhaul inside the library for the charts functionality to improve reliability of host microcontroller.

Previously, ESP-DASH would copy the whole X & Y axis array into SRAM of your ESP8266/ESP32 microcontroller, which was fine for smaller arrays but quickly led to crashes whenever somebody tried to use a large dataset.

With V4, the library only keeps the pointer to the dataset which will be used for the charts. This in return lets you use a large array for charts without memory hogging the microcontroller! :D

As part of this critical fix, now you need to keep the dataset ( X & Y axis ) arrays into the global scope all the time and then provide a reference of these array to the library along with it's size. The only thing which you need to change is that if you were creating a array into heap, ( i.e inside a function ) now you need to shift it into global scope. Carefully study the following reference: Benchmark Example

- - +

Migration Guide

Note: If you are currently using ESP-DASH V3 or ESP-DASH Pro ( previous releases <= v4.0.8 ), then this article is for you.

This article will cover all the minor and breaking changing which come as part of switching your existing codebase to ESP-DASH V4. DASH V4 was made with backwards compatibility in mind therefore there are not many changes to the existing functionality, which means you can get started using it in a few minutes!:

⚠️ Minor Changes:

  • The second argument of ESPDash Class constructor now only disables system statistics. ESPDash(AsyncWebServer* server, bool enable_default_stats = true);. The statistics tab now gets automatically hidden when there are no custom stats added by user and when default (system) statistics are disabled as well.

  • The sendUpdates(bool force); function now has a force argument which can be used to force refresh the whole layout on connected dashboards.

⚒️ Breaking Changes:

Button Callback

The button callback now gets called with a int rather than bool which lead to issues. The value returned by callback will be 1 or 0.

// New Button Callback
button.attachCallback([&](int value){
button.update(value);
dashboard.sendUpdates();
});

Charts

There is a major overhaul inside the library for the charts functionality to improve reliability of host microcontroller.

Previously, ESP-DASH would copy the whole X & Y axis array into SRAM of your ESP8266/ESP32 microcontroller, which was fine for smaller arrays but quickly led to crashes whenever somebody tried to use a large dataset.

With V4, the library only keeps the pointer to the dataset which will be used for the charts. This in return lets you use a large array for charts without memory hogging the microcontroller! :D

As part of this critical fix, now you need to keep the dataset ( X & Y axis ) arrays into the global scope all the time and then provide a reference of these array to the library along with it's size. The only thing which you need to change is that if you were creating a array into heap, ( i.e inside a function ) now you need to shift it into global scope. Carefully study the following reference: Benchmark Example

+ + \ No newline at end of file diff --git a/more-examples/index.html b/more-examples/index.html index 75605302..9daf9877 100644 --- a/more-examples/index.html +++ b/more-examples/index.html @@ -6,14 +6,14 @@ Examples | DASH Docs - - - + + +
-

Examples

There are many example sketches in our repository. You can check those out to know more about what you can do with ESP-DASH. We have contructed every example with very clear documentation so there is less obstruction in your learning process.

You can find those examples in the repository.

- - +

Examples

There are many example sketches in our repository. You can check those out to know more about what you can do with ESP-DASH. We have contructed every example with very clear documentation so there is less obstruction in your learning process.

You can find those examples in the repository.

+ + \ No newline at end of file diff --git a/next/cards/air/index.html b/next/cards/air/index.html index 77f960da..d00bab46 100644 --- a/next/cards/air/index.html +++ b/next/cards/air/index.html @@ -6,14 +6,14 @@ Air Card | DASH Docs - - - + + +
-

Air Card

This feature is available in DASH Pro only.

Preview:

Preview

This card adds a distinctive air/wind icon, and just like generic card you can add a symbol which will be appended to your data. This card can be used to show something related to air pressure/wind speed etc.


Type:

AIR_CARD


Valid Data Types:

  • int
  • float
  • String

Initializer:

/* 
Air Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )
*/
Card card1(&dashboard, AIR_CARD, "Power Consumption", "kWh");

Updaters:

card1.update(int value);
card1.update(float value);
card1.update(String value);

Or you can also update the symbol along with the value like this:

card1.update(value, "kWh");


- - +

Air Card

This feature is available in DASH Pro only.

Preview:

Preview

This card adds a distinctive air/wind icon, and just like generic card you can add a symbol which will be appended to your data. This card can be used to show something related to air pressure/wind speed etc.


Type:

AIR_CARD


Valid Data Types:

  • int
  • float
  • String

Initializer:

/* 
Air Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )
*/
Card card1(&dashboard, AIR_CARD, "Power Consumption", "kWh");

Updaters:

card1.update(int value);
card1.update(float value);
card1.update(String value);

Or you can also update the symbol along with the value like this:

card1.update(value, "kWh");


+ + \ No newline at end of file diff --git a/next/cards/button/index.html b/next/cards/button/index.html index 51cda9c2..fb408928 100644 --- a/next/cards/button/index.html +++ b/next/cards/button/index.html @@ -6,14 +6,14 @@ Toggle Button | DASH Docs - - - + + +
-

Toggle Button

Preview:

Button Card Preview Button Card Preview

Button card adds a interactive toggle button to your dashboard. This provides you with a simple 1 or 0 input from your dashboard.


Type:

BUTTON_CARD


Valid Data Types:

  • int

Initializer:

/* 
Button Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name)
*/
Card card1(&dashboard, BUTTON_CARD, "Test Button");

Callback:

Button card requires a callback function which will be executed when we receive a input from our dashboard. In this example, we will use the attachCallback function and provide a lambda function with a boolean argument.

In the case of button card, the value sent by your dashboard will be opposite of your current value. For Example: If your button is set to 0, then clicking that button on dashboard will trigger this callback with 1.

Note: You need to call the update function and sendUpdates immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard.

/*
We provide our attachCallback with a lambda function to handle incomming data
`value` is the boolean sent from your dashboard
*/
card1.attachCallback([&](int value){
Serial.println("[Card1] Button Callback Triggered: "+String((value == 1)?"true":"false"));
card1.update(value);
dashboard.sendUpdates();
});

Updaters:

card1.update(1);
card1.update(0);


- - +

Toggle Button

Preview:

Button Card Preview Button Card Preview

Button card adds a interactive toggle button to your dashboard. This provides you with a simple 1 or 0 input from your dashboard.


Type:

BUTTON_CARD


Valid Data Types:

  • int

Initializer:

/* 
Button Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name)
*/
Card card1(&dashboard, BUTTON_CARD, "Test Button");

Callback:

Button card requires a callback function which will be executed when we receive a input from our dashboard. In this example, we will use the attachCallback function and provide a lambda function with a boolean argument.

In the case of button card, the value sent by your dashboard will be opposite of your current value. For Example: If your button is set to 0, then clicking that button on dashboard will trigger this callback with 1.

Note: You need to call the update function and sendUpdates immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard.

/*
We provide our attachCallback with a lambda function to handle incomming data
`value` is the boolean sent from your dashboard
*/
card1.attachCallback([&](int value){
Serial.println("[Card1] Button Callback Triggered: "+String((value == 1)?"true":"false"));
card1.update(value);
dashboard.sendUpdates();
});

Updaters:

card1.update(1);
card1.update(0);


+ + \ No newline at end of file diff --git a/next/cards/dropdown/index.html b/next/cards/dropdown/index.html index 0e3a85f0..0cb63510 100644 --- a/next/cards/dropdown/index.html +++ b/next/cards/dropdown/index.html @@ -6,14 +6,14 @@ Dropdown Card | DASH Docs - - - + + +
-

Dropdown Card

This feature is available in DASH Pro only.

Preview:

Preview Preview

This card adds a dropdown selectable list on your dashboard. You can pass "," comma separated list as it's secondary value with unlimited number of choices.


Type:

DROPDOWN_CARD


Valid Data Types:

  • String

Initializer:

/* 
Dropdown Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* choices )
*/
Card card1(&dashboard, DROPDOWN_CARD, "Test Dropdown", "Option1,Option2,Option3,Option4");

Callback:

The Dropdown Card requires a callback function that will be invoked when input is received from the dashboard. This function should utilize the attachCallback method and provide a lambda function with a const char* parameter.

Note: It's essential to immediately invoke the update function and sendUpdates after receiving a value in the callback. Failure to do so will result in the user's input not being registered on the dashboard.

/*
Here, we use a lambda function within attachCallback to handle incoming data.
`value` represents the const char value sent from your dashboard which is equal to selected value.
*/
card1.attachCallback([&](const char* value){
Serial.println("[Card1] Dropdown Callback Triggered: "+String(value));
card1.update(value);
dashboard.sendUpdates();
});

Updaters:

This will change the selected value of our dropdown:

card1.update(const char* value);

Or you can also update the choices along with the value like this:

// This will change the selected value and update the choices as well
card1.update(const char* value, const char* choices);


- - +

Dropdown Card

This feature is available in DASH Pro only.

Preview:

Preview Preview

This card adds a dropdown selectable list on your dashboard. You can pass "," comma separated list as it's secondary value with unlimited number of choices.


Type:

DROPDOWN_CARD


Valid Data Types:

  • String

Initializer:

/* 
Dropdown Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* choices )
*/
Card card1(&dashboard, DROPDOWN_CARD, "Test Dropdown", "Option1,Option2,Option3,Option4");

Callback:

The Dropdown Card requires a callback function that will be invoked when input is received from the dashboard. This function should utilize the attachCallback method and provide a lambda function with a const char* parameter.

Note: It's essential to immediately invoke the update function and sendUpdates after receiving a value in the callback. Failure to do so will result in the user's input not being registered on the dashboard.

/*
Here, we use a lambda function within attachCallback to handle incoming data.
`value` represents the const char value sent from your dashboard which is equal to selected value.
*/
card1.attachCallback([&](const char* value){
Serial.println("[Card1] Dropdown Callback Triggered: "+String(value));
card1.update(value);
dashboard.sendUpdates();
});

Updaters:

This will change the selected value of our dropdown:

card1.update(const char* value);

Or you can also update the choices along with the value like this:

// This will change the selected value and update the choices as well
card1.update(const char* value, const char* choices);


+ + \ No newline at end of file diff --git a/next/cards/energy/index.html b/next/cards/energy/index.html index b787b0f3..72237fec 100644 --- a/next/cards/energy/index.html +++ b/next/cards/energy/index.html @@ -6,14 +6,14 @@ Energy Card | DASH Docs - - - + + +
-

Energy Card

This feature is available in DASH Pro only.

Preview:

Energy Card Preview

This card adds a distinctive energy/power icon, and just like generic card you can add a symbol which will be appended to your data. This card can be used to show something related to power consumption and usage etc.


Type:

ENERGY_CARD


Valid Data Types:

  • int
  • float
  • String

Initializer:

/* 
Energy Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )
*/
Card card1(&dashboard, ENERGY_CARD, "Power Consumption", "kWh");

Updaters:

card1.update(int value);
card1.update(float value);
card1.update(String value);

Or you can also update the symbol along with the value like this:

card1.update(value, "kWh");


- - +

Energy Card

This feature is available in DASH Pro only.

Preview:

Energy Card Preview

This card adds a distinctive energy/power icon, and just like generic card you can add a symbol which will be appended to your data. This card can be used to show something related to power consumption and usage etc.


Type:

ENERGY_CARD


Valid Data Types:

  • int
  • float
  • String

Initializer:

/* 
Energy Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )
*/
Card card1(&dashboard, ENERGY_CARD, "Power Consumption", "kWh");

Updaters:

card1.update(int value);
card1.update(float value);
card1.update(String value);

Or you can also update the symbol along with the value like this:

card1.update(value, "kWh");


+ + \ No newline at end of file diff --git a/next/cards/generic/index.html b/next/cards/generic/index.html index 4c68564f..6a21ab96 100644 --- a/next/cards/generic/index.html +++ b/next/cards/generic/index.html @@ -6,14 +6,14 @@ Generic Card | DASH Docs - - - + + +
-

Generic Card

Preview:

Preview

Generic card is the 'fits-all-types' card, which you can use to display any kind of value. It's mostly used when you want to display numbers, strings etc which don't relate to any other card in the list.

Note: If you can't find the card which you are looking for, you can always raise request for more cards on the repository by creating an issue.

Type:

GENERIC_CARD


Valid Data Types:

  • int
  • bool
  • float
  • String

Initializer:

/* 
Generic Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )
*/
Card card1(&dashboard, GENERIC_CARD, "Generic1");

Updaters:

card1.update(int value);
card1.update(bool value);
card1.update(float value);
card1.update(String value);


- - +

Generic Card

Preview:

Preview

Generic card is the 'fits-all-types' card, which you can use to display any kind of value. It's mostly used when you want to display numbers, strings etc which don't relate to any other card in the list.

Note: If you can't find the card which you are looking for, you can always raise request for more cards on the repository by creating an issue.

Type:

GENERIC_CARD


Valid Data Types:

  • int
  • bool
  • float
  • String

Initializer:

/* 
Generic Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )
*/
Card card1(&dashboard, GENERIC_CARD, "Generic1");

Updaters:

card1.update(int value);
card1.update(bool value);
card1.update(float value);
card1.update(String value);


+ + \ No newline at end of file diff --git a/next/cards/humidity/index.html b/next/cards/humidity/index.html index f8cd076d..e1f85458 100644 --- a/next/cards/humidity/index.html +++ b/next/cards/humidity/index.html @@ -6,14 +6,14 @@ Humidity Card | DASH Docs - - - + + +
-

Humidity Card

Preview:

Preview

This card adds a distinctive humidity icon, and just like generic card you can add a symbol which will be appended to your data.


Type:

HUMIDITY_CARD


Valid Data Types:

  • int
  • float
  • String

Initializer:

/* 
Humidity Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )
*/
Card card1(&dashboard, HUMIDITY_CARD, "Humidity1", "%");

Updaters:

card1.update(int value);
card1.update(float value);
card1.update(String value);

Or you can also update the symbol along with the value like this:

card1.update(value, "RH");


- - +

Humidity Card

Preview:

Preview

This card adds a distinctive humidity icon, and just like generic card you can add a symbol which will be appended to your data.


Type:

HUMIDITY_CARD


Valid Data Types:

  • int
  • float
  • String

Initializer:

/* 
Humidity Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )
*/
Card card1(&dashboard, HUMIDITY_CARD, "Humidity1", "%");

Updaters:

card1.update(int value);
card1.update(float value);
card1.update(String value);

Or you can also update the symbol along with the value like this:

card1.update(value, "RH");


+ + \ No newline at end of file diff --git a/next/cards/image/index.html b/next/cards/image/index.html index f68a183f..baae0565 100644 --- a/next/cards/image/index.html +++ b/next/cards/image/index.html @@ -6,14 +6,14 @@ Image Card | DASH Docs - - - + + +
-

Image Card

This feature is available in DASH Pro only.

Preview:

Preview

This card adds a image on your dashboard. You can pass a absolute URL to this card and it will load that image within this card on the dashboard. If the size is a bit small for you, then you can even make the card bigger by using the size value together with setSize function.


Type:

IMAGE_CARD


Valid Data Types:

  • String

Initializer:

/* 
Image Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* size )
*/
Card card1(&dashboard, IMAGE_CARD, "Test Image", "lg");

Updaters:

After initialization, you will have to provide the URL of the image which you want to display.

card1.update(const char* url);

Or you can also update the size of image using the second parameter. Supported sizes: "lg" and "xl"

// This will change the selected value and update the choices as well
card1.update(const char* url, const char* size);


- - +

Image Card

This feature is available in DASH Pro only.

Preview:

Preview

This card adds a image on your dashboard. You can pass a absolute URL to this card and it will load that image within this card on the dashboard. If the size is a bit small for you, then you can even make the card bigger by using the size value together with setSize function.


Type:

IMAGE_CARD


Valid Data Types:

  • String

Initializer:

/* 
Image Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* size )
*/
Card card1(&dashboard, IMAGE_CARD, "Test Image", "lg");

Updaters:

After initialization, you will have to provide the URL of the image which you want to display.

card1.update(const char* url);

Or you can also update the size of image using the second parameter. Supported sizes: "lg" and "xl"

// This will change the selected value and update the choices as well
card1.update(const char* url, const char* size);


+ + \ No newline at end of file diff --git a/next/cards/joystick/index.html b/next/cards/joystick/index.html index c31791f1..46e76cd9 100644 --- a/next/cards/joystick/index.html +++ b/next/cards/joystick/index.html @@ -6,15 +6,15 @@ Joystick Card | DASH Docs - - - + + +
-

Joystick Card

This feature is available in DASH Pro only.

Preview:

Preview

This card adds a joystick to your dashboard to control some stuff and provides you with easy to interpret directional data via callback. You can even lock direction of the joystick to X or Y axis.


Type:

JOYSTICK_CARD


Initializer:

/* 
Joystick Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* directionLock (optional) )
*/
Card joystick(&dashboard, JOYSTICK_CARD, "Joystick 1");

Direction Lock:

You can lock joystick to X or Y Axis:

Supply it with lockX as 4th argument and it will lock to X axis.

Card joystick(&dashboard, JOYSTICK_CARD, "Joystick 1", "lockX");

Supply it with lockY as 4th argument and it will lock to Y axis.

Card joystick(&dashboard, JOYSTICK_CARD, "Joystick 1", "lockY");

By default, joystick works on both axis.

Callback:

Joystick Card requires a callback function which will be called when we receive a input from our dashboard. In setup block, we will be calling our attachCallback function and provide a lambda (callback) function with a const char* (character array) argument.

Joystick card has 2 callbacks, directional and coordinates:

Directional Callback:

This callback will return the active direction of your joystick when it's moved. It will be one of the following:

  • up
  • down
  • left
  • right
  • idle
/*
We provide our attachCallback with a lambda function to handle incomming data
`value` is the direction of joystick 'up', 'down', 'left', 'right' or 'idle'
*/
joystick.attachCallback([&](const char* direction){
Serial.println("[Joystick] Current Direction: "+String(direction));
});
Coordinates Callback:

This callback will return the active coordinates of the thumb of your joystick when it's moved. It will provide x and y coordinates which ranges from -60 to 60 on each axis.

In case of X axis: -60 is left, 60 is right. -For Y axis: -60 is up, and 60 is bottom.

/*
We provide our attachCallback with a lambda function to handle incomming data.
In this case, we will be getting x and y axis coordinates in range of -60 to 60
*/
joystick.attachCallback([&](int8_t x, int8_t y){
Serial.printf("[Joystick] X Axis: %d, Y Axis: %d\n", x, y);
});


- - +

Joystick Card

This feature is available in DASH Pro only.

Preview:

Preview

This card adds a joystick to your dashboard to control some stuff and provides you with easy to interpret directional data via callback. You can even lock direction of the joystick to X or Y axis.


Type:

JOYSTICK_CARD


Initializer:

/* 
Joystick Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* directionLock (optional) )
*/
Card joystick(&dashboard, JOYSTICK_CARD, "Joystick 1");

Direction Lock:

You can lock joystick to X or Y Axis:

Supply it with lockX as 4th argument and it will lock to X axis.

Card joystick(&dashboard, JOYSTICK_CARD, "Joystick 1", "lockX");

Supply it with lockY as 4th argument and it will lock to Y axis.

Card joystick(&dashboard, JOYSTICK_CARD, "Joystick 1", "lockY");

By default, joystick works on both axis.

Callback:

Joystick Card requires a callback function which will be called when we receive a input from our dashboard. In setup block, we will be calling our attachCallback function and provide a lambda (callback) function with a const char* (character array) argument.

Joystick card has 2 callbacks, directional and coordinates:

Directional Callback:

This callback will return the active direction of your joystick when it's moved. It will be one of the following:

  • up
  • down
  • left
  • right
  • idle
/*
We provide our attachCallback with a lambda function to handle incomming data
`value` is the direction of joystick 'up', 'down', 'left', 'right' or 'idle'
*/
joystick.attachCallback([&](const char* direction){
Serial.println("[Joystick] Current Direction: "+String(direction));
});
Coordinates Callback:

This callback will return the active coordinates of the thumb of your joystick when it's moved. It will provide x and y coordinates which ranges from -60 to 60 on each axis.

In case of X axis: -60 is left, 60 is right. +For Y axis: -60 is up, and 60 is bottom.

/*
We provide our attachCallback with a lambda function to handle incomming data.
In this case, we will be getting x and y axis coordinates in range of -60 to 60
*/
joystick.attachCallback([&](int8_t x, int8_t y){
Serial.printf("[Joystick] X Axis: %d, Y Axis: %d\n", x, y);
});


+ + \ No newline at end of file diff --git a/next/cards/progress/index.html b/next/cards/progress/index.html index be72fb57..8e8b25ad 100644 --- a/next/cards/progress/index.html +++ b/next/cards/progress/index.html @@ -6,14 +6,14 @@ Progress Card | DASH Docs - - - + + +
-

Progress Card

Preview:

Preview

This card displays a horizontal range based on a integer or a float value. It makes data visualization user friendly.


Type:

PROGRESS_CARD


Valid Data Types:

  • int
  • float

Initializer:

With progress card, Initializer requires min & max range.

/* 
Progress Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional), int min, int max)
*/
Card card1(&dashboard, PROGRESS_CARD, "Progress1", "", 0, 255);

Updaters:

card1.update(int value);
card1.update(float value);

Or, update symbol along your value:

card1.update(244, "%");
- - +

Progress Card

Preview:

Preview

This card displays a horizontal range based on a integer or a float value. It makes data visualization user friendly.


Type:

PROGRESS_CARD


Valid Data Types:

  • int
  • float

Initializer:

With progress card, Initializer requires min & max range.

/* 
Progress Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional), int min, int max)
*/
Card card1(&dashboard, PROGRESS_CARD, "Progress1", "", 0, 255);

Updaters:

card1.update(int value);
card1.update(float value);

Or, update symbol along your value:

card1.update(244, "%");
+ + \ No newline at end of file diff --git a/next/cards/push-button/index.html b/next/cards/push-button/index.html index aca89b4c..6e36e929 100644 --- a/next/cards/push-button/index.html +++ b/next/cards/push-button/index.html @@ -6,14 +6,14 @@ Push Button Card | DASH Docs - - - + + +
-

Push Button Card

This feature is available in DASH Pro only.

Preview:

Push Button Card Preview

Push button card adds a static button on your dashboard which has no state. Whenever a user clicks this button, it triggers a callback.


Type:

PUSH_BUTTON_CARD


Initializer:

/* 
Button Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name)
*/
Card card1(&dashboard, PUSH_BUTTON_CARD, "Push Button");

Callback:

Push button card will trigger a callback on every click by user, there is no need to update or sendUpdates to dashboard because there is no state.

/*
We provide our attachCallback with a lambda function to handle trigger
*/
card1.attachCallback([&](){
Serial.println("[Card1] Push Button Triggered");
});


- - +

Push Button Card

This feature is available in DASH Pro only.

Preview:

Push Button Card Preview

Push button card adds a static button on your dashboard which has no state. Whenever a user clicks this button, it triggers a callback.


Type:

PUSH_BUTTON_CARD


Initializer:

/* 
Button Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name)
*/
Card card1(&dashboard, PUSH_BUTTON_CARD, "Push Button");

Callback:

Push button card will trigger a callback on every click by user, there is no need to update or sendUpdates to dashboard because there is no state.

/*
We provide our attachCallback with a lambda function to handle trigger
*/
card1.attachCallback([&](){
Serial.println("[Card1] Push Button Triggered");
});


+ + \ No newline at end of file diff --git a/next/cards/slider/index.html b/next/cards/slider/index.html index 97ae3eae..b0305128 100644 --- a/next/cards/slider/index.html +++ b/next/cards/slider/index.html @@ -6,14 +6,14 @@ Slider Card | DASH Docs - - - + + +
-

Slider Card

Preview:

Preview

This card adds a interactive horizontal slider to your dashboard. Slider card is useful when you require a integer input within a certain range. ( Example use case: LED brightness control )


Type:

SLIDER_CARD


Valid Data Types:

  • int

Initializer:

With slider card, Initializer requires min & max range.

/* 
Slider Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional), int min, int max)
*/
Card card1(&dashboard, SLIDER_CARD, "Test Slider", "", 0, 255);

Callback:

Slider Card requires a callback function which will be called when we receive a input from our dashboard. We will be calling our attachCallback function and provide a lambda function with a int argument.

Note: You need to call the update function and sendUpdates immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard.

/*
We provide our attachCallback with a lambda function to handle incomming data
`value` is the boolean sent from your dashboard
*/
card1.attachCallback([&](int value){
Serial.println("[Card1] Slider Callback Triggered: "+String(value));
card1.update(value);
dashboard.sendUpdates();
});

Updaters:

card1.update(int value);

Or, update symbol along your value:

card1.update(244, "%");
- - +

Slider Card

Preview:

Preview

This card adds a interactive horizontal slider to your dashboard. Slider card is useful when you require a integer input within a certain range. ( Example use case: LED brightness control )


Type:

SLIDER_CARD


Valid Data Types:

  • int

Initializer:

With slider card, Initializer requires min & max range.

/* 
Slider Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional), int min, int max)
*/
Card card1(&dashboard, SLIDER_CARD, "Test Slider", "", 0, 255);

Callback:

Slider Card requires a callback function which will be called when we receive a input from our dashboard. We will be calling our attachCallback function and provide a lambda function with a int argument.

Note: You need to call the update function and sendUpdates immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard.

/*
We provide our attachCallback with a lambda function to handle incomming data
`value` is the boolean sent from your dashboard
*/
card1.attachCallback([&](int value){
Serial.println("[Card1] Slider Callback Triggered: "+String(value));
card1.update(value);
dashboard.sendUpdates();
});

Updaters:

card1.update(int value);

Or, update symbol along your value:

card1.update(244, "%");
+ + \ No newline at end of file diff --git a/next/cards/status/index.html b/next/cards/status/index.html index 3cf079eb..4b6b119f 100644 --- a/next/cards/status/index.html +++ b/next/cards/status/index.html @@ -6,14 +6,14 @@ Status Card | DASH Docs - - - + + +
-

Status Card

Preview:

PreviewPreviewPreviewPreview

As it's name suggests, status card is used to display some kind of status on your dashboard. It can show 4 different kinds of status along with a short message.


Type:

STATUS_CARD


Valid Data Types:

  • String

Valid Statuses:

  • "success" - Green
  • "danger" - Red
  • "warning" - Yellow
  • "idle" - Grey

Initializer:

/* 
Status Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* status (optional) )
*/
Card card1(&dashboard, STATUS_CARD, "Test Status", "success");

Updaters:

Status card updater allows you to set a message:

card1.update("message");

Or, message + status at the same time:

card1.update("Message", "success");
- - +

Status Card

Preview:

PreviewPreviewPreviewPreview

As it's name suggests, status card is used to display some kind of status on your dashboard. It can show 4 different kinds of status along with a short message.


Type:

STATUS_CARD


Valid Data Types:

  • String

Valid Statuses:

  • "success" - Green
  • "danger" - Red
  • "warning" - Yellow
  • "idle" - Grey

Initializer:

/* 
Status Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* status (optional) )
*/
Card card1(&dashboard, STATUS_CARD, "Test Status", "success");

Updaters:

Status card updater allows you to set a message:

card1.update("message");

Or, message + status at the same time:

card1.update("Message", "success");
+ + \ No newline at end of file diff --git a/next/cards/temperature/index.html b/next/cards/temperature/index.html index b89e07e5..42733dde 100644 --- a/next/cards/temperature/index.html +++ b/next/cards/temperature/index.html @@ -6,14 +6,14 @@ Temperature Card | DASH Docs - - - + + +
-

Temperature Card

Preview:

Preview

This card adds a distinctive temperature icon, and just like generic card you can add a symbol which will be appended to your data.


Type:

TEMPERATURE_CARD


Valid Data Types:

  • int
  • float
  • String

Initializer:

/* 
Temperature Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )
*/
Card card1(&dashboard, TEMPERATURE_CARD, "Temperature1", "°C");

Updaters:

card1.update(int value);
card1.update(float value);
card1.update(String value);

Or you can also update the symbol along with the value like this:

card1.update(value, "°F");


- - +

Temperature Card

Preview:

Preview

This card adds a distinctive temperature icon, and just like generic card you can add a symbol which will be appended to your data.


Type:

TEMPERATURE_CARD


Valid Data Types:

  • int
  • float
  • String

Initializer:

/* 
Temperature Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )
*/
Card card1(&dashboard, TEMPERATURE_CARD, "Temperature1", "°C");

Updaters:

card1.update(int value);
card1.update(float value);
card1.update(String value);

Or you can also update the symbol along with the value like this:

card1.update(value, "°F");


+ + \ No newline at end of file diff --git a/next/cards/text-input/index.html b/next/cards/text-input/index.html index a759bc70..aad7d1ed 100644 --- a/next/cards/text-input/index.html +++ b/next/cards/text-input/index.html @@ -6,14 +6,14 @@ Text Input Card | DASH Docs - - - + + +
-

Text Input Card

This feature is available in DASH Pro only.

Preview:

Text Input Card Preview

Text Input Card gives you the ability to take String input from user and save them in your application. It provides you with a input box on the dashboard where user can send back text to your application.

This card is very useful for saving WiFi credentials, passwords and general information.


Type:

TEXT_INPUT_CARD


Valid Data Types:

  • String
  • char

Initializer:

/* 
Energy Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name)
*/
Card card1(&dashboard, TEXT_INPUT_CARD, "User Email");

Callback:

Text Input Card requires a callback function which will be called when we receive a input from our dashboard. In setup block, we will be calling our attachCallback function and provide a lambda (callback) function with a const char* (character array) argument.

Note: You need to call the update function and sendUpdates immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard and it will keep the card stuck in 'waiting' phase.

/*
We provide our attachCallback with a lambda function to handle incomming data
*/
card1.attachCallback([&](const char* value){
Serial.println("[Card1] Text Input Callback Triggered: "+String(value));
card1.update(value);
dashboard.sendUpdates();
});

Updaters:

card1.update(const char* value);
card1.update(String value);
- - +

Text Input Card

This feature is available in DASH Pro only.

Preview:

Text Input Card Preview

Text Input Card gives you the ability to take String input from user and save them in your application. It provides you with a input box on the dashboard where user can send back text to your application.

This card is very useful for saving WiFi credentials, passwords and general information.


Type:

TEXT_INPUT_CARD


Valid Data Types:

  • String
  • char

Initializer:

/* 
Energy Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name)
*/
Card card1(&dashboard, TEXT_INPUT_CARD, "User Email");

Callback:

Text Input Card requires a callback function which will be called when we receive a input from our dashboard. In setup block, we will be calling our attachCallback function and provide a lambda (callback) function with a const char* (character array) argument.

Note: You need to call the update function and sendUpdates immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard and it will keep the card stuck in 'waiting' phase.

/*
We provide our attachCallback with a lambda function to handle incomming data
*/
card1.attachCallback([&](const char* value){
Serial.println("[Card1] Text Input Callback Triggered: "+String(value));
card1.update(value);
dashboard.sendUpdates();
});

Updaters:

card1.update(const char* value);
card1.update(String value);
+ + \ No newline at end of file diff --git a/next/cards/week-selector/index.html b/next/cards/week-selector/index.html index 21d3fd54..0e0d6f8f 100644 --- a/next/cards/week-selector/index.html +++ b/next/cards/week-selector/index.html @@ -6,14 +6,14 @@ Week Selector Card | DASH Docs - - - + + +
-

Week Selector Card

This feature is available in DASH Pro only.

Preview:

Week Selector Card Preview

Week selector card gives you a nice card in which days are selectable by users. This type of card is very useful in many scenarios. The output of the card is comma , separated string on days which were selected by the user.


Type:

WEEK_SELECTOR_CARD


Valid Data Types:

  • String
  • char

Initializer:

/* 
Energy Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name)
*/
Card card1(&dashboard, WEEK_SELECTOR_CARD, "Select Days");

Callback:

Week selector card requires a callback function which will be called when we receive a input from our dashboard. In our setup block, we will be calling our attachCallback function and provide a lambda (callback) function with a const char* (character array) argument. Whenever a user selects a day, this callback will be triggered with a comma , separated list of days which indicate what was selected by user.

Note: You need to call the update function and sendUpdates immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard and it will keep the card stuck in 'waiting' phase.

/*
We provide our attachCallback with a lambda function to handle incomming data
Example Value: mon,tue,wed,thu,fri,sat,sun
*/
card1.attachCallback([&](const char* days){
Serial.println("[Card1] Week Selector Triggered: "+String(days));
card1.update(value);
dashboard.sendUpdates();
});

Updaters:

You can also select or deselect values depending on your logic. You just need to supply the updater with a comma , separated list of days. Order of days in this string doesn't matter. Example: Supplying tue,mon,thu will show Monday, Tuesday & Thursday as selected on Week Selector Card.

card1.update(const char* value);
card1.update(String value);
- - +

Week Selector Card

This feature is available in DASH Pro only.

Preview:

Week Selector Card Preview

Week selector card gives you a nice card in which days are selectable by users. This type of card is very useful in many scenarios. The output of the card is comma , separated string on days which were selected by the user.


Type:

WEEK_SELECTOR_CARD


Valid Data Types:

  • String
  • char

Initializer:

/* 
Energy Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name)
*/
Card card1(&dashboard, WEEK_SELECTOR_CARD, "Select Days");

Callback:

Week selector card requires a callback function which will be called when we receive a input from our dashboard. In our setup block, we will be calling our attachCallback function and provide a lambda (callback) function with a const char* (character array) argument. Whenever a user selects a day, this callback will be triggered with a comma , separated list of days which indicate what was selected by user.

Note: You need to call the update function and sendUpdates immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard and it will keep the card stuck in 'waiting' phase.

/*
We provide our attachCallback with a lambda function to handle incomming data
Example Value: mon,tue,wed,thu,fri,sat,sun
*/
card1.attachCallback([&](const char* days){
Serial.println("[Card1] Week Selector Triggered: "+String(days));
card1.update(value);
dashboard.sendUpdates();
});

Updaters:

You can also select or deselect values depending on your logic. You just need to supply the updater with a comma , separated list of days. Order of days in this string doesn't matter. Example: Supplying tue,mon,thu will show Monday, Tuesday & Thursday as selected on Week Selector Card.

card1.update(const char* value);
card1.update(String value);
+ + \ No newline at end of file diff --git a/next/charts/area/index.html b/next/charts/area/index.html index 12a638e8..e4c3c348 100644 --- a/next/charts/area/index.html +++ b/next/charts/area/index.html @@ -6,14 +6,14 @@ Area Chart | DASH Docs - - - + + +
-

Area Chart

This feature is available in DASH Pro only.

Preview:

Preview

Type:

AREA_CHART


Valid Data Types for X-Axis:

  • int
  • float
  • String

Valid Data Types for Y-Axis:

  • int
  • float

Initializer:

/* 
Area Chart
Valid Arguments: (ESPDash dashboard, Card Type, const char* name )
*/
Chart chart1(&dashboard, AREA_CHART, "Chart Name");

Updaters:

For X-Axis:

X-Axis updater uses updateX function.

/*
Data for X Axis of our Chart
This array can be of: `int` / `float` or `String`

Note: this array should be kept in global scope. i.e. it should never be deleted from memory.
*/
String XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
or
(String array[], size_t array_size)
or
(const char* array[], size_t array_size)
*/
chart1.updateX(XAxis, 7);
For Y-Axis:

Y-Axis updater uses updateY function.

/*
Data for Y Axis of our Chart
This array can be of: `int` or `float`

Note: this array should be kept in global scope. i.e. it should never be deleted from memory.
*/
int YAxis[] = {0, 0, 0, 0, 0, 0, 0};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
*/
chart1.updateY(YAxis, 7);
- - +

Area Chart

This feature is available in DASH Pro only.

Preview:

Preview

Type:

AREA_CHART


Valid Data Types for X-Axis:

  • int
  • float
  • String

Valid Data Types for Y-Axis:

  • int
  • float

Initializer:

/* 
Area Chart
Valid Arguments: (ESPDash dashboard, Card Type, const char* name )
*/
Chart chart1(&dashboard, AREA_CHART, "Chart Name");

Updaters:

For X-Axis:

X-Axis updater uses updateX function.

/*
Data for X Axis of our Chart
This array can be of: `int` / `float` or `String`

Note: this array should be kept in global scope. i.e. it should never be deleted from memory.
*/
String XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
or
(String array[], size_t array_size)
or
(const char* array[], size_t array_size)
*/
chart1.updateX(XAxis, 7);
For Y-Axis:

Y-Axis updater uses updateY function.

/*
Data for Y Axis of our Chart
This array can be of: `int` or `float`

Note: this array should be kept in global scope. i.e. it should never be deleted from memory.
*/
int YAxis[] = {0, 0, 0, 0, 0, 0, 0};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
*/
chart1.updateY(YAxis, 7);
+ + \ No newline at end of file diff --git a/next/charts/bar/index.html b/next/charts/bar/index.html index 444e2e5f..291ed386 100644 --- a/next/charts/bar/index.html +++ b/next/charts/bar/index.html @@ -6,14 +6,14 @@ Bar Chart | DASH Docs - - - + + +
-

Bar Chart

Preview:

Preview

Type:

BAR_CHART


Valid Data Types for X-Axis:

  • int
  • float
  • String
  • const char*

Valid Data Types for Y-Axis:

  • int
  • float

Initializer:

/* 
Bar Chart
Valid Arguments: (ESPDash dashboard, Card Type, const char* name )
*/
Chart chart1(&dashboard, BAR_CHART, "Chart Name");

Updaters:

For X-Axis:

X-Axis updater uses updateX function.

/*
Data for X Axis of our Chart
This array can be of: `int` / `float` or `String`

Note: this array should be kept in global scope. i.e. it should never be deleted from memory.
*/
String XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
or
(String array[], size_t array_size)
or
(const char* array[], size_t array_size)
*/
chart1.updateX(XAxis, 7);
For Y-Axis:

Y-Axis updater uses updateY function.

/*
Data for Y Axis of our Chart
This array can be of: `int` or `float`

Note: this array should be kept in global scope. i.e. it should never be deleted from memory.
*/
int YAxis[] = {0, 0, 0, 0, 0, 0, 0};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
*/
chart1.updateY(YAxis, 7);
- - +

Bar Chart

Preview:

Preview

Type:

BAR_CHART


Valid Data Types for X-Axis:

  • int
  • float
  • String
  • const char*

Valid Data Types for Y-Axis:

  • int
  • float

Initializer:

/* 
Bar Chart
Valid Arguments: (ESPDash dashboard, Card Type, const char* name )
*/
Chart chart1(&dashboard, BAR_CHART, "Chart Name");

Updaters:

For X-Axis:

X-Axis updater uses updateX function.

/*
Data for X Axis of our Chart
This array can be of: `int` / `float` or `String`

Note: this array should be kept in global scope. i.e. it should never be deleted from memory.
*/
String XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
or
(String array[], size_t array_size)
or
(const char* array[], size_t array_size)
*/
chart1.updateX(XAxis, 7);
For Y-Axis:

Y-Axis updater uses updateY function.

/*
Data for Y Axis of our Chart
This array can be of: `int` or `float`

Note: this array should be kept in global scope. i.e. it should never be deleted from memory.
*/
int YAxis[] = {0, 0, 0, 0, 0, 0, 0};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
*/
chart1.updateY(YAxis, 7);
+ + \ No newline at end of file diff --git a/next/charts/line/index.html b/next/charts/line/index.html index b40ab48b..0abe10da 100644 --- a/next/charts/line/index.html +++ b/next/charts/line/index.html @@ -6,14 +6,14 @@ Line Chart | DASH Docs - - - + + +
-

Line Chart

This feature is available in DASH Pro only.

Preview:

Preview


Type:

LINE_CHART


Valid Data Types for X-Axis:

  • int
  • float
  • String
  • const char*

Valid Data Types for Y-Axis:

  • int
  • float

Initializer:

/* 
Line Chart
Valid Arguments: (ESPDash dashboard, Card Type, const char* name )
*/
Chart chart1(&dashboard, LINE_CHART, "Chart Name");

Updaters:

For X-Axis:

X-Axis updater uses updateX function.

/*
Data for X Axis of our Chart
This array can be of: `int` / `float` or `String`

Note: this array should be kept in global scope. i.e. it should never be deleted from memory.
*/
String XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
or
(String array[], size_t array_size)
or
(const char* array[], size_t array_size)
*/
chart1.updateX(XAxis, 7);
For Y-Axis:

Y-Axis updater uses updateY function.

/*
Data for Y Axis of our Chart
This array can be of: `int` or `float`

Note: this array should be kept in global scope. i.e. it should never be deleted from memory.
*/
int YAxis[] = {0, 0, 0, 0, 0, 0, 0};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
*/
chart1.updateY(YAxis, 7);
- - +

Line Chart

This feature is available in DASH Pro only.

Preview:

Preview


Type:

LINE_CHART


Valid Data Types for X-Axis:

  • int
  • float
  • String
  • const char*

Valid Data Types for Y-Axis:

  • int
  • float

Initializer:

/* 
Line Chart
Valid Arguments: (ESPDash dashboard, Card Type, const char* name )
*/
Chart chart1(&dashboard, LINE_CHART, "Chart Name");

Updaters:

For X-Axis:

X-Axis updater uses updateX function.

/*
Data for X Axis of our Chart
This array can be of: `int` / `float` or `String`

Note: this array should be kept in global scope. i.e. it should never be deleted from memory.
*/
String XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
or
(String array[], size_t array_size)
or
(const char* array[], size_t array_size)
*/
chart1.updateX(XAxis, 7);
For Y-Axis:

Y-Axis updater uses updateY function.

/*
Data for Y Axis of our Chart
This array can be of: `int` or `float`

Note: this array should be kept in global scope. i.e. it should never be deleted from memory.
*/
int YAxis[] = {0, 0, 0, 0, 0, 0, 0};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
*/
chart1.updateY(YAxis, 7);
+ + \ No newline at end of file diff --git a/next/charts/pie/index.html b/next/charts/pie/index.html index 0921db22..2d817696 100644 --- a/next/charts/pie/index.html +++ b/next/charts/pie/index.html @@ -6,14 +6,14 @@ Pie Chart | DASH Docs - - - + + +
-

Pie Chart

This feature is available in DASH Pro only.

Preview:

Preview

Type:

PIE_CHART


Valid Data Types for X-Axis:

  • int
  • float
  • String
  • const char*

Valid Data Types for Y-Axis:

  • int
  • float

Initializer:

/* 
Pie Chart
Valid Arguments: (ESPDash dashboard, Card Type, const char* name )
*/
Chart chart1(&dashboard, PIE_CHART, "Chart Name");

Updaters:

For X-Axis:

X-Axis updater uses updateX function.

/*
Data for X Axis of our Chart
This array can be of: `int` / `float` or `String`

Note: this array should be kept in global scope. i.e. it should never be deleted from memory.
*/
String XAxis[] = {"Biscuits", "Cookies", "Milk", "Thing4", "Thing5"};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
or
(String array[], size_t array_size)
or
(const char* array[], size_t array_size)
*/
chart1.updateX(XAxis, 5);
For Y-Axis:

Y-Axis updater uses updateY function.

/*
Data for Y Axis of our Chart
This array can be of: `int` or `float`

Note: this array should be kept in global scope. i.e. it should never be deleted from memory.
*/
int YAxis[] = {0, 0, 0, 0, 0};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
*/
chart1.updateY(YAxis, 5);
- - +

Pie Chart

This feature is available in DASH Pro only.

Preview:

Preview

Type:

PIE_CHART


Valid Data Types for X-Axis:

  • int
  • float
  • String
  • const char*

Valid Data Types for Y-Axis:

  • int
  • float

Initializer:

/* 
Pie Chart
Valid Arguments: (ESPDash dashboard, Card Type, const char* name )
*/
Chart chart1(&dashboard, PIE_CHART, "Chart Name");

Updaters:

For X-Axis:

X-Axis updater uses updateX function.

/*
Data for X Axis of our Chart
This array can be of: `int` / `float` or `String`

Note: this array should be kept in global scope. i.e. it should never be deleted from memory.
*/
String XAxis[] = {"Biscuits", "Cookies", "Milk", "Thing4", "Thing5"};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
or
(String array[], size_t array_size)
or
(const char* array[], size_t array_size)
*/
chart1.updateX(XAxis, 5);
For Y-Axis:

Y-Axis updater uses updateY function.

/*
Data for Y Axis of our Chart
This array can be of: `int` or `float`

Note: this array should be kept in global scope. i.e. it should never be deleted from memory.
*/
int YAxis[] = {0, 0, 0, 0, 0};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
*/
chart1.updateY(YAxis, 5);
+ + \ No newline at end of file diff --git a/next/concept/index.html b/next/concept/index.html index 2d7f0e9b..e8f3cc48 100644 --- a/next/concept/index.html +++ b/next/concept/index.html @@ -6,14 +6,14 @@ Concept of DASH | DASH Docs - - - + + +
-

Concept of DASH

In this article, we are going to look at how the internals of ESP-DASH are stacked up, as well as understand the how everything works with eachother inside the library.

Note: If you looking to get started with ESP-DASH quickly, you can skip this article.

Concept Diagram

DASH contains the following classes which you will use in your application:

  • Networking Class (ESPDash.h)
  • Card Class (Card.h)
  • Chart Class (Chart.h)
  • Statistic Class (Statistic.h)
  • Tab Class (Tab.h) ( Pro Version Only )

The whole idea of ESP-DASH is to make a complete dashboard by using data classes ( as shown in figure above ). The data classes connect with ESP-DASH main class using pointers which handles all the networking and relays realtime updates to the open dashboards.

Let's understand the purpose of each class:

1. Networking Class (ESPDash.h)

The networking class handles all the networking stuff including serving the DASH webpage from program memory of the microcontroller and also to maintain the WebSocket connection with every connected client. Apart from networking, with the release of V4, you can now also configure the webpage according to your application. This includes changing page title, logo etc. ( Go to "Extra Features" to know more ).

2. Card Class (Card.h)

The card class is a data storage class in ESP-DASH which is used to create various types of cards on the dashboard. The only purpose of this class is to store the data + configuration in stack or heap depending on your use case and to keep track of the changes in data for realtime updates.

3. Chart Class (Chart.h)

The chart class is an data storage class which is used to store the X & Y axis arrays to create various types of charts on the dashboard. This class is a bit different from "card" class as to keep the memory footprint low, it doesn't stores the data in the class itself. Instead it smartly stores the pointer to arrays so that data can be read on demand without actually copying all the array in the memory.

Note: If you are migrating from V3, Please look at the migration guide to know more.

4. Statistic Class (Statistic.h)

The statistic class is used to create custom user defined statistics which will be displayed in the statistics page. Statistics in ESP-DASH's sense are simple key-value pairs which you can send to dashboard to report small but useful data.

5. Tab Class (Tab.h) ( Pro )

The tab class in DASH Pro is also an data class which is used to create multiple pages. Therefore, you are now not limited to the "Overview" page and can create multiple pages to host different cards & charts.

- - +

Concept of DASH

In this article, we are going to look at how the internals of ESP-DASH are stacked up, as well as understand the how everything works with eachother inside the library.

Note: If you looking to get started with ESP-DASH quickly, you can skip this article.

Concept Diagram

DASH contains the following classes which you will use in your application:

  • Networking Class (ESPDash.h)
  • Card Class (Card.h)
  • Chart Class (Chart.h)
  • Statistic Class (Statistic.h)
  • Tab Class (Tab.h) ( Pro Version Only )

The whole idea of ESP-DASH is to make a complete dashboard by using data classes ( as shown in figure above ). The data classes connect with ESP-DASH main class using pointers which handles all the networking and relays realtime updates to the open dashboards.

Let's understand the purpose of each class:

1. Networking Class (ESPDash.h)

The networking class handles all the networking stuff including serving the DASH webpage from program memory of the microcontroller and also to maintain the WebSocket connection with every connected client. Apart from networking, with the release of V4, you can now also configure the webpage according to your application. This includes changing page title, logo etc. ( Go to "Extra Features" to know more ).

2. Card Class (Card.h)

The card class is a data storage class in ESP-DASH which is used to create various types of cards on the dashboard. The only purpose of this class is to store the data + configuration in stack or heap depending on your use case and to keep track of the changes in data for realtime updates.

3. Chart Class (Chart.h)

The chart class is an data storage class which is used to store the X & Y axis arrays to create various types of charts on the dashboard. This class is a bit different from "card" class as to keep the memory footprint low, it doesn't stores the data in the class itself. Instead it smartly stores the pointer to arrays so that data can be read on demand without actually copying all the array in the memory.

Note: If you are migrating from V3, Please look at the migration guide to know more.

4. Statistic Class (Statistic.h)

The statistic class is used to create custom user defined statistics which will be displayed in the statistics page. Statistics in ESP-DASH's sense are simple key-value pairs which you can send to dashboard to report small but useful data.

5. Tab Class (Tab.h) ( Pro )

The tab class in DASH Pro is also an data class which is used to create multiple pages. Therefore, you are now not limited to the "Overview" page and can create multiple pages to host different cards & charts.

+ + \ No newline at end of file diff --git a/next/custom-statistics/index.html b/next/custom-statistics/index.html index 370aaac2..15e6d1ea 100644 --- a/next/custom-statistics/index.html +++ b/next/custom-statistics/index.html @@ -6,14 +6,14 @@ Statistics | DASH Docs - - - + + +
-

Statistics

Concept Diagram

ESP-DASH has a dedicated page called "Statistics" on the dashboard which contain key-value pairs of system statistics ( heap, flash usage etc. ) by default. With the launch of ESP-DASH V4, user defined statistics are now also part of the library! You can now add your own statitics to this page. 🎉

Note: System statistics can be turned off any time, you may look at Disable Statistics page.

Example

Initializer:
Statistic stat1(&dashboard, "Key", "Value");
Update Value:
stat1.set("New Value");
Update both Key & Value:
stat1.set("New Key", "New Value");
- - +

Statistics

Concept Diagram

ESP-DASH has a dedicated page called "Statistics" on the dashboard which contain key-value pairs of system statistics ( heap, flash usage etc. ) by default. With the launch of ESP-DASH V4, user defined statistics are now also part of the library! You can now add your own statitics to this page. 🎉

Note: System statistics can be turned off any time, you may look at Disable Statistics page.

Example

Initializer:
Statistic stat1(&dashboard, "Key", "Value");
Update Value:
stat1.set("New Value");
Update both Key & Value:
stat1.set("New Key", "New Value");
+ + \ No newline at end of file diff --git a/next/features/authentication/index.html b/next/features/authentication/index.html index a6907584..73e05344 100644 --- a/next/features/authentication/index.html +++ b/next/features/authentication/index.html @@ -6,14 +6,14 @@ User Authentication | DASH Docs - - - + + +
-

User Authentication

Energy Card Preview

ESP-DASH comes with basic HTTP authentication support. You can enable basic HTTP based user authentication to control who can view your dashboard using setAuthentication function.

Example:

dashboard.setAuthentication("username", "password");
- - +

User Authentication

Energy Card Preview

ESP-DASH comes with basic HTTP authentication support. You can enable basic HTTP based user authentication to control who can view your dashboard using setAuthentication function.

Example:

dashboard.setAuthentication("username", "password");
+ + \ No newline at end of file diff --git a/next/features/brotli-compression/index.html b/next/features/brotli-compression/index.html index 79ce6336..b6efbff1 100644 --- a/next/features/brotli-compression/index.html +++ b/next/features/brotli-compression/index.html @@ -6,14 +6,14 @@ Brotli Compression | DASH Docs - - - + + +
-

Brotli Compression

This feature is available in DASH Pro only.


Preview

With ESP-DASH Pro v4.3.0 or more, there is an option to enable Brotli compression to further reduce the size of webpage (dashboard) and provide you more space for your code. We've noticed 40% extra reduction in size over gzip compression (default).

Please note that Brotli compression is only supported by Safari browser with unencrpyted HTTP protocol. Due to constraints set by other browsers ( Chrome, Edge, Firefox etc. ) you need to use HTTPS for brotli compression to work properly.

Note: Broti compression is disabled by default. It's up to user to enable brotli if the above conditions are fine for your use-case.

How to enable:

You can switch to brotli compression by setting DASH_USE_BROTLI_COMPRESSION to 1 in dash_webpage.h.

  1. Open dash_webpage.h in src directory of ESP-DASH Pro library.
  2. Locate DASH_USE_BROTLI_COMPRESSION
  3. Set it to 1
  4. That's it. Save, compile and upload again to your microcontroller.
- - +

Brotli Compression

This feature is available in DASH Pro only.


Preview

With ESP-DASH Pro v4.3.0 or more, there is an option to enable Brotli compression to further reduce the size of webpage (dashboard) and provide you more space for your code. We've noticed 40% extra reduction in size over gzip compression (default).

Please note that Brotli compression is only supported by Safari browser with unencrpyted HTTP protocol. Due to constraints set by other browsers ( Chrome, Edge, Firefox etc. ) you need to use HTTPS for brotli compression to work properly.

Note: Broti compression is disabled by default. It's up to user to enable brotli if the above conditions are fine for your use-case.

How to enable:

You can switch to brotli compression by setting DASH_USE_BROTLI_COMPRESSION to 1 in dash_webpage.h.

  1. Open dash_webpage.h in src directory of ESP-DASH Pro library.
  2. Locate DASH_USE_BROTLI_COMPRESSION
  3. Set it to 1
  4. That's it. Save, compile and upload again to your microcontroller.
+ + \ No newline at end of file diff --git a/next/features/chartanimations/index.html b/next/features/chartanimations/index.html index 69525af7..8b7b3a71 100644 --- a/next/features/chartanimations/index.html +++ b/next/features/chartanimations/index.html @@ -6,14 +6,14 @@ Toggle Animation | DASH Docs - - - + + +
-

Toggle Animation

This feature is available in DASH Pro only.


You can enable/disable chart animations with ease using the setChartAnimations function of ESPDash class. This is particularly helpful if you are updating your charts at an very fast pace.

Note: Chart animations are enabled by default.

Usage:

You can put this function anywhere in your setup block:

To Disble:
dashboard.setChartAnimations(false); // Disable Chart Animations
To Enable:
dashboard.setChartAnimations(true); // Enable Chart Animations
- - +

Toggle Animation

This feature is available in DASH Pro only.


You can enable/disable chart animations with ease using the setChartAnimations function of ESPDash class. This is particularly helpful if you are updating your charts at an very fast pace.

Note: Chart animations are enabled by default.

Usage:

You can put this function anywhere in your setup block:

To Disble:
dashboard.setChartAnimations(false); // Disable Chart Animations
To Enable:
dashboard.setChartAnimations(true); // Enable Chart Animations
+ + \ No newline at end of file diff --git a/next/features/custom-logo/index.html b/next/features/custom-logo/index.html index c1726eeb..5bf38cb8 100644 --- a/next/features/custom-logo/index.html +++ b/next/features/custom-logo/index.html @@ -6,14 +6,14 @@ Custom Logo | DASH Docs - - - + + +
-

Custom Logo

This feature is available in DASH Pro only.


Energy Card Preview Energy Card Preview

If you are not familiar with the interface yet, the dashboard has an sidebar which can be expanded and collapsed, in that case the logo switches between "mini" and "large" scale version.

Both these logos can be changed by the user by modifying the logo.h & logo.cpp file in the library source directory.

The logo used in DASH is image file converted to byte array. We'll go through the process below:

What you'll need

  • You'll need a compatible logo image ( jpeg / png / gif / tif etc. ) or an SVG file ( recommended due to small file size ). Important: Please make sure your image is optimized and small in file size.
  • Know the MIME file type of your image. You can use HTTPStrip's mime utility.

Step 1: Procedure to convert logo into byte array

  1. Go to File2Raw Utility ( I created this utility a few years back for the purpose of converting files into byte array for C++ applications ).
  2. Select your logo.
  3. Select "Gzip Compress" & "Use PROGMEM (Arduino)".
  4. Click "Convert".

Step 2: Setting custom logo in sketch

Now once your custom logo has been prepared, let's set it in our ESP-DASH Pro library. To do so, the library contains 2 files which contain the variable that govern 'mini' and 'large' logos used by our webpage.

  1. Go to logo.h
  2. Set DASH_MINI_LOGO_MIME to your image file type. To find your file's mime type, use this utility: https://www.htmlstrip.com/mime-file-type-checker
  3. Set DASH_MINI_LOGO_WIDTH & DASH_MINI_LOGO_HEIGHT according to your desired size which will be displayed on the webpage.
  4. Replace the array length of DASH_MINI_LOGO with the newly generated array length.
  5. Now open logo.cpp
  6. Replace the data inside DASH_MINI_LOGO with new data generated just before using File2Raw.

Once done, you may repeat the same steps as above for DASH_LARGE_LOGO.

- - +

Custom Logo

This feature is available in DASH Pro only.


Energy Card Preview Energy Card Preview

If you are not familiar with the interface yet, the dashboard has an sidebar which can be expanded and collapsed, in that case the logo switches between "mini" and "large" scale version.

Both these logos can be changed by the user by modifying the logo.h & logo.cpp file in the library source directory.

The logo used in DASH is image file converted to byte array. We'll go through the process below:

What you'll need

  • You'll need a compatible logo image ( jpeg / png / gif / tif etc. ) or an SVG file ( recommended due to small file size ). Important: Please make sure your image is optimized and small in file size.
  • Know the MIME file type of your image. You can use HTTPStrip's mime utility.

Step 1: Procedure to convert logo into byte array

  1. Go to File2Raw Utility ( I created this utility a few years back for the purpose of converting files into byte array for C++ applications ).
  2. Select your logo.
  3. Select "Gzip Compress" & "Use PROGMEM (Arduino)".
  4. Click "Convert".

Step 2: Setting custom logo in sketch

Now once your custom logo has been prepared, let's set it in our ESP-DASH Pro library. To do so, the library contains 2 files which contain the variable that govern 'mini' and 'large' logos used by our webpage.

  1. Go to logo.h
  2. Set DASH_MINI_LOGO_MIME to your image file type. To find your file's mime type, use this utility: https://www.htmlstrip.com/mime-file-type-checker
  3. Set DASH_MINI_LOGO_WIDTH & DASH_MINI_LOGO_HEIGHT according to your desired size which will be displayed on the webpage.
  4. Replace the array length of DASH_MINI_LOGO with the newly generated array length.
  5. Now open logo.cpp
  6. Replace the data inside DASH_MINI_LOGO with new data generated just before using File2Raw.

Once done, you may repeat the same steps as above for DASH_LARGE_LOGO.

+ + \ No newline at end of file diff --git a/next/features/custom-uri/index.html b/next/features/custom-uri/index.html index 4ddc1a7e..76043173 100644 --- a/next/features/custom-uri/index.html +++ b/next/features/custom-uri/index.html @@ -6,14 +6,14 @@ Custom URI | DASH Docs - - - + + +
-

Custom URI

If you want to serve ESPDash at a path other than 'root' (ie. http://<Your IP>/) then you can use the constructor to supply the path of your choice.

Example:

ESPDash dashboard(&server, "/dash");

This will result in ESPDash being served at http://<Your IP>/dash.

- - +

Custom URI

If you want to serve ESPDash at a path other than 'root' (ie. http://<Your IP>/) then you can use the constructor to supply the path of your choice.

Example:

ESPDash dashboard(&server, "/dash");

This will result in ESPDash being served at http://<Your IP>/dash.

+ + \ No newline at end of file diff --git a/next/features/disable-stats/index.html b/next/features/disable-stats/index.html index 3aca326e..35d9ddfe 100644 --- a/next/features/disable-stats/index.html +++ b/next/features/disable-stats/index.html @@ -6,14 +6,14 @@ Disable Statistics | DASH Docs - - - + + +
-

Disable Statistics

You can disable system statistics by using setting false in ESPDash class constructor.

Example:

If no custom URI is defined (second parameter):

ESPDash dashboard(&server, false);

If using a using custom URI (third parameter):

ESPDash dashbord(&server, "/", false);

If you would like to completely disable and hide the statistics tab from the sidebar, please use the above example and make sure you don't have any custom statistics. By doing so, it will automatically hide the "statistics" tab from sidebar.

- - +

Disable Statistics

You can disable system statistics by using setting false in ESPDash class constructor.

Example:

If no custom URI is defined (second parameter):

ESPDash dashboard(&server, false);

If using a using custom URI (third parameter):

ESPDash dashbord(&server, "/", false);

If you would like to completely disable and hide the statistics tab from the sidebar, please use the above example and make sure you don't have any custom statistics. By doing so, it will automatically hide the "statistics" tab from sidebar.

+ + \ No newline at end of file diff --git a/next/features/indexing/index.html b/next/features/indexing/index.html index d90eef81..8ca51be8 100644 --- a/next/features/indexing/index.html +++ b/next/features/indexing/index.html @@ -6,14 +6,14 @@ Card Indexing | DASH Docs - - - + + +
-

Card Indexing

This feature is available in DASH Pro only.


Energy Card Preview

ESP-DASH Pro provides you with a setIndex function in both cards and charts to modify the position of them on the dashboard.

Example:

card1.setIndex(0);

Indexing works in ascending format. The lowest card index will be placed in the front of the list and the highest index will be put in the end. It allows you to set the layout according to your wish.

- - +

Card Indexing

This feature is available in DASH Pro only.


Energy Card Preview

ESP-DASH Pro provides you with a setIndex function in both cards and charts to modify the position of them on the dashboard.

Example:

card1.setIndex(0);

Indexing works in ascending format. The lowest card index will be placed in the front of the list and the highest index will be put in the end. It allows you to set the layout according to your wish.

+ + \ No newline at end of file diff --git a/next/features/sizing/index.html b/next/features/sizing/index.html index 77b9ebad..0045d5ce 100644 --- a/next/features/sizing/index.html +++ b/next/features/sizing/index.html @@ -6,14 +6,14 @@ Custom Card Size | DASH Docs - - - + + +
-

Custom Card Size

This feature is available in DASH Pro only.


Energy Card Preview

ESP-DASH Pro allows you to change the size of your cards & charts by providing you the setSize function. This function allows you to set a responsive width for your widgets without actually modifying the whole webpage.

Reference

Card sizing consists of breakpoints for an responsive layout that scales up or down to every screen size. The valid value for each breakpoint is 1 to 12.

To understand better, the breakpoints are as follows:

  • xs - Small Smartphone
  • sm - Normal Smartphone
  • md - Tablet
  • lg - HD laptop
  • xl - Full HD laptop
  • xxl - 2K display and above
Option 1:
  // This reference can be found in Card.h
void setSize(const uint8_t xs, const uint8_t sm, const uint8_t md, const uint8_t lg, const uint8_t xl, const uint8_t xxl);
Option 2:
  // These references can be found in Card.h
struct CardSize {
uint8_t xs;
uint8_t sm;
uint8_t md;
uint8_t lg;
uint8_t xl;
uint8_t xxl;
};

void setSize(const CardSize &size);

Example

Option 1:
card1.setSize(12, 12, 6, 4, 3, 2);
Option 2:
card1.setSize({
.xs = 12,
.sm = 12,
.md = 6,
.lg = 4,
.xl = 3,
.xxl = 2
});
- - +

Custom Card Size

This feature is available in DASH Pro only.


Energy Card Preview

ESP-DASH Pro allows you to change the size of your cards & charts by providing you the setSize function. This function allows you to set a responsive width for your widgets without actually modifying the whole webpage.

Reference

Card sizing consists of breakpoints for an responsive layout that scales up or down to every screen size. The valid value for each breakpoint is 1 to 12.

To understand better, the breakpoints are as follows:

  • xs - Small Smartphone
  • sm - Normal Smartphone
  • md - Tablet
  • lg - HD laptop
  • xl - Full HD laptop
  • xxl - 2K display and above
Option 1:
  // This reference can be found in Card.h
void setSize(const uint8_t xs, const uint8_t sm, const uint8_t md, const uint8_t lg, const uint8_t xl, const uint8_t xxl);
Option 2:
  // These references can be found in Card.h
struct CardSize {
uint8_t xs;
uint8_t sm;
uint8_t md;
uint8_t lg;
uint8_t xl;
uint8_t xxl;
};

void setSize(const CardSize &size);

Example

Option 1:
card1.setSize(12, 12, 6, 4, 3, 2);
Option 2:
card1.setSize({
.xs = 12,
.sm = 12,
.md = 6,
.lg = 4,
.xl = 3,
.xxl = 2
});
+ + \ No newline at end of file diff --git a/next/features/title/index.html b/next/features/title/index.html index 3800bde0..097d641d 100644 --- a/next/features/title/index.html +++ b/next/features/title/index.html @@ -6,14 +6,14 @@ Custom Title | DASH Docs - - - + + +
-

Custom Title

This feature is available in DASH Pro only.


Energy Card Preview

ESP-DASH Pro provides you with a setTitle function in the main ESPDash class. You can use this function to change the default title of your dashboard.

Example:

dashboard.setTitle("New Dashboard XYZ");
- - +

Custom Title

This feature is available in DASH Pro only.


Energy Card Preview

ESP-DASH Pro provides you with a setTitle function in the main ESPDash class. You can use this function to change the default title of your dashboard.

Example:

dashboard.setTitle("New Dashboard XYZ");
+ + \ No newline at end of file diff --git a/next/getting-started/index.html b/next/getting-started/index.html index 5edf91f3..c590d75e 100644 --- a/next/getting-started/index.html +++ b/next/getting-started/index.html @@ -6,14 +6,14 @@ Getting Started | DASH Docs - - - + + +
-

Getting Started

To get started with ESP-DASH, we will be creating our basic example step by step and learn what each setup does:


Part 1: Include Dependencies

We have used conditional compilation in this part therefore the code will work for both ESP8266 & ESP32.

#include <Arduino.h>
#if defined(ESP8266)
/* ESP8266 Dependencies */
#include <ESP8266WiFi.h>
#include <ESPAsyncTCP.h>
#include <ESPAsyncWebServer.h>
#elif defined(ESP32)
/* ESP32 Dependencies */
#include <WiFi.h>
#include <AsyncTCP.h>
#include <ESPAsyncWebServer.h>
#endif
#include <ESPDash.h>

Part 2: Create AsyncWebServer Instance

Create an AsyncWebServer instance on default "80" port.

Note: You are not restricted to a single dashboard. You can host as many dashboards as you want on multiple ports.

/* Start Webserver */
AsyncWebServer server(80);

Part 3: Attach ESP-DASH Instance

Pass the AsyncWebServer instance to ESPDash's instance. Internally the ESPDash will hook to AsyncWebServer for handling all the networking tasks.

Note: You can still use the same AsyncWebServer instance for other tasks.

/* Attach ESP-DASH to AsyncWebServer */
ESPDash dashboard(&server);

Part 4: Create Cards

In this step, we will creating ESP-DASH cards and passing our dasboard instance as a first argument so that they can add / remove themselves.

After we are done with this guide, Please take a look at Cards section to know more about the types of cards available to us.

/* 
Dashboard Cards
Format - (Dashboard Instance, Card Type, Card Name, Card Symbol(optional) )
*/
Card temperature(&dashboard, TEMPERATURE_CARD, "Temperature", "°C");
Card humidity(&dashboard, HUMIDITY_CARD, "Humidity", "%");

Part 5: Setup Block

In our setup block, we will be adding the usual WiFi connectivity stuff and then start our AsyncWebServer with server.begin();.

void setup() {
Serial.begin(115200);

/* Connect WiFi */
WiFi.mode(WIFI_STA);
WiFi.begin("ssid", "password");
if (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.printf("WiFi Failed!\n");
return;
}
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());

/* Start AsyncWebServer */
server.begin();
}

Part 5: Loop Block

In our loop block, we will be doing 2 things:

  1. Updating card values
  2. Sending updates to our dashboard
1. Updating Card Values

Remember the 'Cards' we created in 4th part? We will now access those cards by their variable and update them using the update function which is provided with our card's class:

temperature.update((int)random(0, 50));
2. Sending updates to our Dashboard

Once we have updated values of our card(s), we will call the sendUpdates() function of our dashboard instance and it will send new card values to every connected client in real time.

dashboard.sendUpdates();

Technically speaking, You can call these functions anywhere in your sketch, but for demonstration purposes we have called them in our loop block.

Complete Loop Block:
void loop() {
/* Update Card Values */
temperature.update((int)random(0, 50));
humidity.update((int)random(0, 100));

/* Send Updates to our Dashboard (realtime) */
dashboard.sendUpdates();

/*
Delay is just for demonstration purposes in this example,
Replace this code with 'millis interval' in your final project.
*/
delay(3000);
}

Final Code

That's it! Now we can just upload this sketch to our MCU and access the dashboard via it's IP address. ( Make sure to change the ssid and password in our sketch according to your Access Point )

/*
-----------------------
ESPDASH - Basic Example
-----------------------

Skill Level: Intermediate

In this example we will be creating a basic dashboard which consists
of some cards and then update them in realtime ( at 3s interval ).

Github: https://github.com/ayushsharma82/ESP-DASH
WiKi: https://ayushsharma82.github.io/ESP-DASH/

Works with both ESP8266 & ESP32
*/

#include <Arduino.h>
#if defined(ESP8266)
/* ESP8266 Dependencies */
#include <ESP8266WiFi.h>
#include <ESPAsyncTCP.h>
#include <ESPAsyncWebServer.h>
#elif defined(ESP32)
/* ESP32 Dependencies */
#include <WiFi.h>
#include <AsyncTCP.h>
#include <ESPAsyncWebServer.h>
#endif
#include <ESPDash.h>


/* Your WiFi Credentials */
const char* ssid = ""; // SSID
const char* password = ""; // Password

/* Start Webserver */
AsyncWebServer server(80);

/* Attach ESP-DASH to AsyncWebServer */
ESPDash dashboard(&server);

/*
Dashboard Cards
Format - (Dashboard Instance, Card Type, Card Name, Card Symbol(optional) )
*/
Card temperature(&dashboard, TEMPERATURE_CARD, "Temperature", "°C");
Card humidity(&dashboard, HUMIDITY_CARD, "Humidity", "%");


void setup() {
Serial.begin(115200);

/* Connect WiFi */
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
if (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.printf("WiFi Failed!\n");
return;
}
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());

/* Start AsyncWebServer */
server.begin();
}

void loop() {
/* Update Card Values */
temperature.update((int)random(0, 50));
humidity.update((int)random(0, 100));

/* Send Updates to our Dashboard (realtime) */
dashboard.sendUpdates();

/*
Delay is just for demonstration purposes in this example,
Replace this code with 'millis interval' in your final project.
*/
delay(3000);
}
- - +

Getting Started

To get started with ESP-DASH, we will be creating our basic example step by step and learn what each setup does:


Part 1: Include Dependencies

We have used conditional compilation in this part therefore the code will work for both ESP8266 & ESP32.

#include <Arduino.h>
#if defined(ESP8266)
/* ESP8266 Dependencies */
#include <ESP8266WiFi.h>
#include <ESPAsyncTCP.h>
#include <ESPAsyncWebServer.h>
#elif defined(ESP32)
/* ESP32 Dependencies */
#include <WiFi.h>
#include <AsyncTCP.h>
#include <ESPAsyncWebServer.h>
#endif
#include <ESPDash.h>

Part 2: Create AsyncWebServer Instance

Create an AsyncWebServer instance on default "80" port.

Note: You are not restricted to a single dashboard. You can host as many dashboards as you want on multiple ports.

/* Start Webserver */
AsyncWebServer server(80);

Part 3: Attach ESP-DASH Instance

Pass the AsyncWebServer instance to ESPDash's instance. Internally the ESPDash will hook to AsyncWebServer for handling all the networking tasks.

Note: You can still use the same AsyncWebServer instance for other tasks.

/* Attach ESP-DASH to AsyncWebServer */
ESPDash dashboard(&server);

Part 4: Create Cards

In this step, we will creating ESP-DASH cards and passing our dasboard instance as a first argument so that they can add / remove themselves.

After we are done with this guide, Please take a look at Cards section to know more about the types of cards available to us.

/* 
Dashboard Cards
Format - (Dashboard Instance, Card Type, Card Name, Card Symbol(optional) )
*/
Card temperature(&dashboard, TEMPERATURE_CARD, "Temperature", "°C");
Card humidity(&dashboard, HUMIDITY_CARD, "Humidity", "%");

Part 5: Setup Block

In our setup block, we will be adding the usual WiFi connectivity stuff and then start our AsyncWebServer with server.begin();.

void setup() {
Serial.begin(115200);

/* Connect WiFi */
WiFi.mode(WIFI_STA);
WiFi.begin("ssid", "password");
if (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.printf("WiFi Failed!\n");
return;
}
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());

/* Start AsyncWebServer */
server.begin();
}

Part 5: Loop Block

In our loop block, we will be doing 2 things:

  1. Updating card values
  2. Sending updates to our dashboard
1. Updating Card Values

Remember the 'Cards' we created in 4th part? We will now access those cards by their variable and update them using the update function which is provided with our card's class:

temperature.update((int)random(0, 50));
2. Sending updates to our Dashboard

Once we have updated values of our card(s), we will call the sendUpdates() function of our dashboard instance and it will send new card values to every connected client in real time.

dashboard.sendUpdates();

Technically speaking, You can call these functions anywhere in your sketch, but for demonstration purposes we have called them in our loop block.

Complete Loop Block:
void loop() {
/* Update Card Values */
temperature.update((int)random(0, 50));
humidity.update((int)random(0, 100));

/* Send Updates to our Dashboard (realtime) */
dashboard.sendUpdates();

/*
Delay is just for demonstration purposes in this example,
Replace this code with 'millis interval' in your final project.
*/
delay(3000);
}

Final Code

That's it! Now we can just upload this sketch to our MCU and access the dashboard via it's IP address. ( Make sure to change the ssid and password in our sketch according to your Access Point )

/*
-----------------------
ESPDASH - Basic Example
-----------------------

Skill Level: Intermediate

In this example we will be creating a basic dashboard which consists
of some cards and then update them in realtime ( at 3s interval ).

Github: https://github.com/ayushsharma82/ESP-DASH
WiKi: https://ayushsharma82.github.io/ESP-DASH/

Works with both ESP8266 & ESP32
*/

#include <Arduino.h>
#if defined(ESP8266)
/* ESP8266 Dependencies */
#include <ESP8266WiFi.h>
#include <ESPAsyncTCP.h>
#include <ESPAsyncWebServer.h>
#elif defined(ESP32)
/* ESP32 Dependencies */
#include <WiFi.h>
#include <AsyncTCP.h>
#include <ESPAsyncWebServer.h>
#endif
#include <ESPDash.h>


/* Your WiFi Credentials */
const char* ssid = ""; // SSID
const char* password = ""; // Password

/* Start Webserver */
AsyncWebServer server(80);

/* Attach ESP-DASH to AsyncWebServer */
ESPDash dashboard(&server);

/*
Dashboard Cards
Format - (Dashboard Instance, Card Type, Card Name, Card Symbol(optional) )
*/
Card temperature(&dashboard, TEMPERATURE_CARD, "Temperature", "°C");
Card humidity(&dashboard, HUMIDITY_CARD, "Humidity", "%");


void setup() {
Serial.begin(115200);

/* Connect WiFi */
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
if (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.printf("WiFi Failed!\n");
return;
}
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());

/* Start AsyncWebServer */
server.begin();
}

void loop() {
/* Update Card Values */
temperature.update((int)random(0, 50));
humidity.update((int)random(0, 100));

/* Send Updates to our Dashboard (realtime) */
dashboard.sendUpdates();

/*
Delay is just for demonstration purposes in this example,
Replace this code with 'millis interval' in your final project.
*/
delay(3000);
}
+ + \ No newline at end of file diff --git a/next/index.html b/next/index.html index e132446f..cf8109e8 100644 --- a/next/index.html +++ b/next/index.html @@ -6,14 +6,14 @@ Intro | DASH Docs - - - + + +
-



   


So as many would ask, what is ESP-DASH? In simple words - It's a UI library for ESP32 & ESP8266 microcontrollers that let you generate a fully capable dashboard. It can moulded in any way possible to suit your application needs.

Here are a few things by which you benefit by using ESP-DASH in your project:

  • 🔥 Automatic webpage generation.
  • ⏱️ Realtime updates to all connected clients.
  • 🎷 No need to learn HTML/CSS/JS. ESP-DASH provides you with a C++ interface.
  • 🛫 Ready to use components for your data.
  • 🏀 It's dynamic! Add or remove components anytime from the webpage.
  • 📈 Inbuilt charts support.

Note: This documentation serves both the versions of ESP-DASH ( Lite - Open Source and Pro ). Therefore, if you notice "(Pro)" mentioned on any of the features in the documentation, that means it is only available in ESP-DASH Pro.

Preview:

- - +



   


So as many would ask, what is ESP-DASH? In simple words - It's a UI library for ESP32 & ESP8266 microcontrollers that let you generate a fully capable dashboard. It can moulded in any way possible to suit your application needs.

Here are a few things by which you benefit by using ESP-DASH in your project:

  • 🔥 Automatic webpage generation.
  • ⏱️ Realtime updates to all connected clients.
  • 🎷 No need to learn HTML/CSS/JS. ESP-DASH provides you with a C++ interface.
  • 🛫 Ready to use components for your data.
  • 🏀 It's dynamic! Add or remove components anytime from the webpage.
  • 📈 Inbuilt charts support.

Note: This documentation serves both the versions of ESP-DASH ( Lite - Open Source and Pro ). Therefore, if you notice "(Pro)" mentioned on any of the features in the documentation, that means it is only available in ESP-DASH Pro.

Preview:

+ + \ No newline at end of file diff --git a/next/installation/index.html b/next/installation/index.html index acb6c8dd..8df8f471 100644 --- a/next/installation/index.html +++ b/next/installation/index.html @@ -6,14 +6,14 @@ Installation | DASH Docs - - - + + +
-

Installation

ESP-DASH depends on the following open-source libraries/boards. Make sure to install them before you install ESP-DASH.

For ESP8266:
For ESP32:

Installing ESP-DASH

1. Directly Through Arduino IDE - Library Manager

Go to Sketch > Include Library > Library Manager > Search for "ESP-DASH" > Install

2. Manual Install

For Windows:
  • Download the Repository
  • Extract the .zip in Documents > Arduino > Libraries > {Place "ESP-DASH" folder Here}
For Linux:
  • Download the Repository
  • Extract the .zip in Sketchbook > Libraries > {Place "ESP-DASH" folder Here}

3. Import through Arduino IDE

  • Download the Repository
  • Go to Sketch > Include Library > Add .zip Library > Select the Downloaded .zip File.
- - +

Installation

ESP-DASH depends on the following open-source libraries/boards. Make sure to install them before you install ESP-DASH.

For ESP8266:
For ESP32:

Installing ESP-DASH

1. Directly Through Arduino IDE - Library Manager

Go to Sketch > Include Library > Library Manager > Search for "ESP-DASH" > Install

2. Manual Install

For Windows:
  • Download the Repository
  • Extract the .zip in Documents > Arduino > Libraries > {Place "ESP-DASH" folder Here}
For Linux:
  • Download the Repository
  • Extract the .zip in Sketchbook > Libraries > {Place "ESP-DASH" folder Here}

3. Import through Arduino IDE

  • Download the Repository
  • Go to Sketch > Include Library > Add .zip Library > Select the Downloaded .zip File.
+ + \ No newline at end of file diff --git a/next/migrate/index.html b/next/migrate/index.html index 36ac7904..e60cd04c 100644 --- a/next/migrate/index.html +++ b/next/migrate/index.html @@ -6,14 +6,14 @@ Migration Guide | DASH Docs - - - + + +
-

Migration Guide

Note: If you are currently using ESP-DASH V3 or ESP-DASH Pro ( previous releases <= v4.0.8 ), then this article is for you.

This article will cover all the minor and breaking changing which come as part of switching your existing codebase to ESP-DASH V4. DASH V4 was made with backwards compatibility in mind therefore there are not many changes to the existing functionality, which means you can get started using it in a few minutes!:

⚠️ Minor Changes:

  • The second argument of ESPDash Class constructor now only disables system statistics. ESPDash(AsyncWebServer* server, bool enable_default_stats = true);. The statistics tab now gets automatically hidden when there are no custom stats added by user and when default (system) statistics are disabled as well.

  • The sendUpdates(bool force); function now has a force argument which can be used to force refresh the whole layout on connected dashboards.

⚒️ Breaking Changes:

Button Callback

The button callback now gets called with a int rather than bool which lead to issues. The value returned by callback will be 1 or 0.

// New Button Callback
button.attachCallback([&](int value){
button.update(value);
dashboard.sendUpdates();
});

Charts

There is a major overhaul inside the library for the charts functionality to improve reliability of host microcontroller.

Previously, ESP-DASH would copy the whole X & Y axis array into SRAM of your ESP8266/ESP32 microcontroller, which was fine for smaller arrays but quickly led to crashes whenever somebody tried to use a large dataset.

With V4, the library only keeps the pointer to the dataset which will be used for the charts. This in return lets you use a large array for charts without memory hogging the microcontroller! :D

As part of this critical fix, now you need to keep the dataset ( X & Y axis ) arrays into the global scope all the time and then provide a reference of these array to the library along with it's size. The only thing which you need to change is that if you were creating a array into heap, ( i.e inside a function ) now you need to shift it into global scope. Carefully study the following reference: Benchmark Example

- - +

Migration Guide

Note: If you are currently using ESP-DASH V3 or ESP-DASH Pro ( previous releases <= v4.0.8 ), then this article is for you.

This article will cover all the minor and breaking changing which come as part of switching your existing codebase to ESP-DASH V4. DASH V4 was made with backwards compatibility in mind therefore there are not many changes to the existing functionality, which means you can get started using it in a few minutes!:

⚠️ Minor Changes:

  • The second argument of ESPDash Class constructor now only disables system statistics. ESPDash(AsyncWebServer* server, bool enable_default_stats = true);. The statistics tab now gets automatically hidden when there are no custom stats added by user and when default (system) statistics are disabled as well.

  • The sendUpdates(bool force); function now has a force argument which can be used to force refresh the whole layout on connected dashboards.

⚒️ Breaking Changes:

Button Callback

The button callback now gets called with a int rather than bool which lead to issues. The value returned by callback will be 1 or 0.

// New Button Callback
button.attachCallback([&](int value){
button.update(value);
dashboard.sendUpdates();
});

Charts

There is a major overhaul inside the library for the charts functionality to improve reliability of host microcontroller.

Previously, ESP-DASH would copy the whole X & Y axis array into SRAM of your ESP8266/ESP32 microcontroller, which was fine for smaller arrays but quickly led to crashes whenever somebody tried to use a large dataset.

With V4, the library only keeps the pointer to the dataset which will be used for the charts. This in return lets you use a large array for charts without memory hogging the microcontroller! :D

As part of this critical fix, now you need to keep the dataset ( X & Y axis ) arrays into the global scope all the time and then provide a reference of these array to the library along with it's size. The only thing which you need to change is that if you were creating a array into heap, ( i.e inside a function ) now you need to shift it into global scope. Carefully study the following reference: Benchmark Example

+ + \ No newline at end of file diff --git a/next/more-examples/index.html b/next/more-examples/index.html index a511d24f..601a285f 100644 --- a/next/more-examples/index.html +++ b/next/more-examples/index.html @@ -6,14 +6,14 @@ Examples | DASH Docs - - - + + +
-

Examples

There are many example sketches in our repository. You can check those out to know more about what you can do with ESP-DASH. We have contructed every example with very clear documentation so there is less obstruction in your learning process.

You can find those examples in the repository.

- - +

Examples

There are many example sketches in our repository. You can check those out to know more about what you can do with ESP-DASH. We have contructed every example with very clear documentation so there is less obstruction in your learning process.

You can find those examples in the repository.

+ + \ No newline at end of file diff --git a/next/tabs/index.html b/next/tabs/index.html index 005b34e5..436dec0d 100644 --- a/next/tabs/index.html +++ b/next/tabs/index.html @@ -6,14 +6,14 @@ Tabs | DASH Docs - - - + + +
-

Tabs

This feature is available in DASH Pro only.



Concept Diagram

Tabs in ESP-DASH allow you to create multiple pages to organize and sort your various cards & charts. This feature comes particularly useful when there are all a lot of widgets.

By default, ESP-DASH puts everything into 'Overview' Tab. If every card or chart is assigned a custom tab, then the dashboard will automatically hide the overview tab from sidebar.

Example

Initializer:

Initializer should be kept in global scope. ( ie. outside of any function in your sketch )

Tab tab1(&dashboard, "Custom Tab 1");
Set Tab:

Once a tab has been created, you need to set the tab for relevant cards and charts using setTab function of Card or Chart class. setTab accepts a pointer to the tab which we just created.

card1.setTab(&tab1);
chart1.setTab(&tab1);
- - +

Tabs

This feature is available in DASH Pro only.



Concept Diagram

Tabs in ESP-DASH allow you to create multiple pages to organize and sort your various cards & charts. This feature comes particularly useful when there are all a lot of widgets.

By default, ESP-DASH puts everything into 'Overview' Tab. If every card or chart is assigned a custom tab, then the dashboard will automatically hide the overview tab from sidebar.

Example

Initializer:

Initializer should be kept in global scope. ( ie. outside of any function in your sketch )

Tab tab1(&dashboard, "Custom Tab 1");
Set Tab:

Once a tab has been created, you need to set the tab for relevant cards and charts using setTab function of Card or Chart class. setTab accepts a pointer to the tab which we just created.

card1.setTab(&tab1);
chart1.setTab(&tab1);
+ + \ No newline at end of file diff --git a/tabs/index.html b/tabs/index.html index 56840ad9..09b8a101 100644 --- a/tabs/index.html +++ b/tabs/index.html @@ -6,14 +6,14 @@ Tabs | DASH Docs - - - + + +
-

Tabs

This feature is available in DASH Pro only.



Concept Diagram

Tabs in ESP-DASH allow you to create multiple pages to organize and sort your various cards & charts. This feature comes particularly useful when there are all a lot of widgets.

By default, ESP-DASH puts everything into 'Overview' Tab. If every card or chart is assigned a custom tab, then the dashboard will automatically hide the overview tab from sidebar.

Example

Initializer:

Initializer should be kept in global scope. ( ie. outside of any function in your sketch )

Tab tab1(&dashboard, "Custom Tab 1");
Set Tab:

Once a tab has been created, you need to set the tab for relevant cards and charts using setTab function of Card or Chart class. setTab accepts a pointer to the tab which we just created.

card1.setTab(&tab1);
chart1.setTab(&tab1);
- - +

Tabs

This feature is available in DASH Pro only.



Concept Diagram

Tabs in ESP-DASH allow you to create multiple pages to organize and sort your various cards & charts. This feature comes particularly useful when there are all a lot of widgets.

By default, ESP-DASH puts everything into 'Overview' Tab. If every card or chart is assigned a custom tab, then the dashboard will automatically hide the overview tab from sidebar.

Example

Initializer:

Initializer should be kept in global scope. ( ie. outside of any function in your sketch )

Tab tab1(&dashboard, "Custom Tab 1");
Set Tab:

Once a tab has been created, you need to set the tab for relevant cards and charts using setTab function of Card or Chart class. setTab accepts a pointer to the tab which we just created.

card1.setTab(&tab1);
chart1.setTab(&tab1);
+ + \ No newline at end of file diff --git a/v3.x.x/cards/air/index.html b/v3.x.x/cards/air/index.html index c66245fa..e7442d94 100644 --- a/v3.x.x/cards/air/index.html +++ b/v3.x.x/cards/air/index.html @@ -6,14 +6,14 @@ Air Card | DASH Docs - - - + + +
-

Air Card

This feature is available in DASH Pro only.

Preview:

Preview
Preview

This card adds a distinctive air/wind icon, and just like generic card you can add a symbol which will be appended to your data. This card can be used to show something related to air pressure/wind speed etc.


Type:

AIR_CARD


Valid Data Types:

  • int
  • float
  • String

Initializer:

/* 
Air Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )
*/
Card card1(&dashboard, AIR_CARD, "Power Consumption", "kWh");

Updaters:

card1.update(int value);
card1.update(float value);
card1.update(String value);

Or you can also update the symbol along with the value like this:

card1.update(value, "kWh");


- - +

Air Card

This feature is available in DASH Pro only.

Preview:

Preview
Preview

This card adds a distinctive air/wind icon, and just like generic card you can add a symbol which will be appended to your data. This card can be used to show something related to air pressure/wind speed etc.


Type:

AIR_CARD


Valid Data Types:

  • int
  • float
  • String

Initializer:

/* 
Air Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )
*/
Card card1(&dashboard, AIR_CARD, "Power Consumption", "kWh");

Updaters:

card1.update(int value);
card1.update(float value);
card1.update(String value);

Or you can also update the symbol along with the value like this:

card1.update(value, "kWh");


+ + \ No newline at end of file diff --git a/v3.x.x/cards/button/index.html b/v3.x.x/cards/button/index.html index ded05094..6e417684 100644 --- a/v3.x.x/cards/button/index.html +++ b/v3.x.x/cards/button/index.html @@ -6,14 +6,14 @@ Button Card | DASH Docs - - - + + +
-

Button Card

Preview:

Button Card Preview
Button Card Preview

Button card adds a interactive toggle button to your dashboard. This provides you with a simple true or false input from your dashboard.


Type:

BUTTON_CARD


Valid Data Types:

  • bool

Initializer:

/* 
Button Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name)
*/
Card card1(&dashboard, BUTTON_CARD, "Test Button");

Callback:

Button card requires a callback function which will be executed when we receive a input from our dashboard. In this example, we will use the attachCallback function and provide a lambda function with a boolean argument.

In the case of button card, the value sent by your dashboard will be opposite of your current value. For Example: If your button is set to false, then clicking that button on dashboard will trigger this callback with true.

Note: You need to call the update function and sendUpdates immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard.

/*
We provide our attachCallback with a lambda function to handle incomming data
`value` is the boolean sent from your dashboard
*/
card1.attachCallback([&](bool value){
Serial.println("[Card1] Button Callback Triggered: "+String((value)?"true":"false"));
card1.update(value);
dashboard.sendUpdates();
});

Updaters:

card1.update(true);
card1.update(false);


- - +

Button Card

Preview:

Button Card Preview
Button Card Preview

Button card adds a interactive toggle button to your dashboard. This provides you with a simple true or false input from your dashboard.


Type:

BUTTON_CARD


Valid Data Types:

  • bool

Initializer:

/* 
Button Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name)
*/
Card card1(&dashboard, BUTTON_CARD, "Test Button");

Callback:

Button card requires a callback function which will be executed when we receive a input from our dashboard. In this example, we will use the attachCallback function and provide a lambda function with a boolean argument.

In the case of button card, the value sent by your dashboard will be opposite of your current value. For Example: If your button is set to false, then clicking that button on dashboard will trigger this callback with true.

Note: You need to call the update function and sendUpdates immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard.

/*
We provide our attachCallback with a lambda function to handle incomming data
`value` is the boolean sent from your dashboard
*/
card1.attachCallback([&](bool value){
Serial.println("[Card1] Button Callback Triggered: "+String((value)?"true":"false"));
card1.update(value);
dashboard.sendUpdates();
});

Updaters:

card1.update(true);
card1.update(false);


+ + \ No newline at end of file diff --git a/v3.x.x/cards/energy/index.html b/v3.x.x/cards/energy/index.html index 37ba16bb..046bdd33 100644 --- a/v3.x.x/cards/energy/index.html +++ b/v3.x.x/cards/energy/index.html @@ -6,14 +6,14 @@ Energy Card | DASH Docs - - - + + +
-

Energy Card

This feature is available in DASH Pro only.

Preview:

Energy Card Preview

This card adds a distinctive energy/power icon, and just like generic card you can add a symbol which will be appended to your data. This card can be used to show something related to power consumption and usage etc.


Type:

ENERGY_CARD


Valid Data Types:

  • int
  • float
  • String

Initializer:

/* 
Energy Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )
*/
Card card1(&dashboard, ENERGY_CARD, "Power Consumption", "kWh");

Updaters:

card1.update(int value);
card1.update(float value);
card1.update(String value);

Or you can also update the symbol along with the value like this:

card1.update(value, "kWh");


- - +

Energy Card

This feature is available in DASH Pro only.

Preview:

Energy Card Preview

This card adds a distinctive energy/power icon, and just like generic card you can add a symbol which will be appended to your data. This card can be used to show something related to power consumption and usage etc.


Type:

ENERGY_CARD


Valid Data Types:

  • int
  • float
  • String

Initializer:

/* 
Energy Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )
*/
Card card1(&dashboard, ENERGY_CARD, "Power Consumption", "kWh");

Updaters:

card1.update(int value);
card1.update(float value);
card1.update(String value);

Or you can also update the symbol along with the value like this:

card1.update(value, "kWh");


+ + \ No newline at end of file diff --git a/v3.x.x/cards/generic/index.html b/v3.x.x/cards/generic/index.html index b36ea8e8..e2c9ce3a 100644 --- a/v3.x.x/cards/generic/index.html +++ b/v3.x.x/cards/generic/index.html @@ -6,14 +6,14 @@ Generic Card | DASH Docs - - - + + +
-

Generic Card

Preview:

Preview

Generic card is the 'fits-all-types' card, which you can use to display any kind of value. It's mostly used when you want to display numbers, strings etc which don't relate to any other card in the list.

Note: If you can't find the card which you are looking for, you can always raise request for more cards on the repository by creating an issue.

Type:

GENERIC_CARD


Valid Data Types:

  • int
  • bool
  • float
  • String

Initializer:

/* 
Generic Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )
*/
Card card1(&dashboard, GENERIC_CARD, "Generic1");

Updaters:

card1.update(int value);
card1.update(bool value);
card1.update(float value);
card1.update(String value);


- - +

Generic Card

Preview:

Preview

Generic card is the 'fits-all-types' card, which you can use to display any kind of value. It's mostly used when you want to display numbers, strings etc which don't relate to any other card in the list.

Note: If you can't find the card which you are looking for, you can always raise request for more cards on the repository by creating an issue.

Type:

GENERIC_CARD


Valid Data Types:

  • int
  • bool
  • float
  • String

Initializer:

/* 
Generic Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )
*/
Card card1(&dashboard, GENERIC_CARD, "Generic1");

Updaters:

card1.update(int value);
card1.update(bool value);
card1.update(float value);
card1.update(String value);


+ + \ No newline at end of file diff --git a/v3.x.x/cards/humidity/index.html b/v3.x.x/cards/humidity/index.html index 20f5b99c..39531cf7 100644 --- a/v3.x.x/cards/humidity/index.html +++ b/v3.x.x/cards/humidity/index.html @@ -6,14 +6,14 @@ Humidity Card | DASH Docs - - - + + +
-

Humidity Card

Preview:

Preview

This card adds a distinctive humidity icon, and just like generic card you can add a symbol which will be appended to your data.


Type:

HUMIDITY_CARD


Valid Data Types:

  • int
  • float
  • String

Initializer:

/* 
Humidity Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )
*/
Card card1(&dashboard, HUMIDITY_CARD, "Humidity1", "%");

Updaters:

card1.update(int value);
card1.update(float value);
card1.update(String value);

Or you can also update the symbol along with the value like this:

card1.update(value, "RH");


- - +

Humidity Card

Preview:

Preview

This card adds a distinctive humidity icon, and just like generic card you can add a symbol which will be appended to your data.


Type:

HUMIDITY_CARD


Valid Data Types:

  • int
  • float
  • String

Initializer:

/* 
Humidity Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )
*/
Card card1(&dashboard, HUMIDITY_CARD, "Humidity1", "%");

Updaters:

card1.update(int value);
card1.update(float value);
card1.update(String value);

Or you can also update the symbol along with the value like this:

card1.update(value, "RH");


+ + \ No newline at end of file diff --git a/v3.x.x/cards/joystick/index.html b/v3.x.x/cards/joystick/index.html index f871ac1b..5b97bed0 100644 --- a/v3.x.x/cards/joystick/index.html +++ b/v3.x.x/cards/joystick/index.html @@ -6,15 +6,15 @@ Joystick Card | DASH Docs - - - + + +
-

Joystick Card

This feature is available in DASH Pro only.

Preview:


Preview

This card adds a joystick to your dashboard to control some stuff and provides you with easy to interpret directional data via callback. You can even lock direction of the joystick to X or Y axis.


Type:

JOYSTICK_CARD


Initializer:

/* 
Joystick Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* directionLock (optional) )
*/
Card joystick(&dashboard, JOYSTICK_CARD, "Joystick 1");

Direction Lock:

You can lock joystick to X or Y Axis:

Supply it with lockX as 4th argument and it will lock to X axis.

Card joystick(&dashboard, JOYSTICK_CARD, "Joystick 1", "lockX");

Supply it with lockY as 4th argument and it will lock to Y axis.

Card joystick(&dashboard, JOYSTICK_CARD, "Joystick 1", "lockY");

By default, joystick works on both axis.

Callback:

Joystick Card requires a callback function which will be called when we receive a input from our dashboard. In setup block, we will be calling our attachCallback function and provide a lambda (callback) function with a const char* (character array) argument.

Joystick card has 2 callbacks, directional and coordinates:

Directional Callback:

This callback will return the active direction of your joystick when it's moved. It will be one of the following:

  • up
  • down
  • left
  • right
  • idle
/*
We provide our attachCallback with a lambda function to handle incomming data
`value` is the direction of joystick 'up', 'down', 'left', 'right' or 'idle'
*/
joystick.attachCallback([&](const char* direction){
Serial.println("[Joystick] Current Direction: "+String(direction));
});
Coordinates Callback:

This callback will return the active coordinates of the thumb of your joystick when it's moved. It will provide x and y coordinates which ranges from -60 to 60 on each axis.

In case of X axis: -60 is left, 60 is right. -For Y axis: -60 is up, and 60 is bottom.

/*
We provide our attachCallback with a lambda function to handle incomming data.
In this case, we will be getting x and y axis coordinates in range of -60 to 60
*/
joystick.attachCallback([&](int8_t x, int8_t y){
Serial.printf("[Joystick] X Axis: %d, Y Axis: %d\n", x, y);
});


- - +

Joystick Card

This feature is available in DASH Pro only.

Preview:


Preview

This card adds a joystick to your dashboard to control some stuff and provides you with easy to interpret directional data via callback. You can even lock direction of the joystick to X or Y axis.


Type:

JOYSTICK_CARD


Initializer:

/* 
Joystick Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* directionLock (optional) )
*/
Card joystick(&dashboard, JOYSTICK_CARD, "Joystick 1");

Direction Lock:

You can lock joystick to X or Y Axis:

Supply it with lockX as 4th argument and it will lock to X axis.

Card joystick(&dashboard, JOYSTICK_CARD, "Joystick 1", "lockX");

Supply it with lockY as 4th argument and it will lock to Y axis.

Card joystick(&dashboard, JOYSTICK_CARD, "Joystick 1", "lockY");

By default, joystick works on both axis.

Callback:

Joystick Card requires a callback function which will be called when we receive a input from our dashboard. In setup block, we will be calling our attachCallback function and provide a lambda (callback) function with a const char* (character array) argument.

Joystick card has 2 callbacks, directional and coordinates:

Directional Callback:

This callback will return the active direction of your joystick when it's moved. It will be one of the following:

  • up
  • down
  • left
  • right
  • idle
/*
We provide our attachCallback with a lambda function to handle incomming data
`value` is the direction of joystick 'up', 'down', 'left', 'right' or 'idle'
*/
joystick.attachCallback([&](const char* direction){
Serial.println("[Joystick] Current Direction: "+String(direction));
});
Coordinates Callback:

This callback will return the active coordinates of the thumb of your joystick when it's moved. It will provide x and y coordinates which ranges from -60 to 60 on each axis.

In case of X axis: -60 is left, 60 is right. +For Y axis: -60 is up, and 60 is bottom.

/*
We provide our attachCallback with a lambda function to handle incomming data.
In this case, we will be getting x and y axis coordinates in range of -60 to 60
*/
joystick.attachCallback([&](int8_t x, int8_t y){
Serial.printf("[Joystick] X Axis: %d, Y Axis: %d\n", x, y);
});


+ + \ No newline at end of file diff --git a/v3.x.x/cards/progress/index.html b/v3.x.x/cards/progress/index.html index d6bc28e1..9456106b 100644 --- a/v3.x.x/cards/progress/index.html +++ b/v3.x.x/cards/progress/index.html @@ -6,14 +6,14 @@ Progress Card | DASH Docs - - - + + +
-

Progress Card

Preview:

Preview

This card displays a horizontal range based on a integer or a float value. It makes data visualization user friendly.


Type:

PROGRESS_CARD


Valid Data Types:

  • int
  • float

Initializer:

With progress card, Initializer requires min & max range.

/* 
Progress Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional), int min, int max)
*/
Card card1(&dashboard, PROGRESS_CARD, "Progress1", "", 0, 255);

Updaters:

card1.update(int value);
card1.update(float value);

Or, update symbol along your value:

card1.update(244, "%");
- - +

Progress Card

Preview:

Preview

This card displays a horizontal range based on a integer or a float value. It makes data visualization user friendly.


Type:

PROGRESS_CARD


Valid Data Types:

  • int
  • float

Initializer:

With progress card, Initializer requires min & max range.

/* 
Progress Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional), int min, int max)
*/
Card card1(&dashboard, PROGRESS_CARD, "Progress1", "", 0, 255);

Updaters:

card1.update(int value);
card1.update(float value);

Or, update symbol along your value:

card1.update(244, "%");
+ + \ No newline at end of file diff --git a/v3.x.x/cards/slider/index.html b/v3.x.x/cards/slider/index.html index d6a1b7c5..9b67d1d5 100644 --- a/v3.x.x/cards/slider/index.html +++ b/v3.x.x/cards/slider/index.html @@ -6,14 +6,14 @@ Slider Card | DASH Docs - - - + + +
-

Slider Card

Preview:


Preview

This card adds a interactive horizontal slider to your dashboard. Slider card is useful when you require a integer input within a certain range. ( Example use case: LED brightness control )


Type:

SLIDER_CARD


Valid Data Types:

  • int

Initializer:

With slider card, Initializer requires min & max range.

/* 
Slider Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional), int min, int max)
*/
Card card1(&dashboard, SLIDER_CARD, "Test Slider", "", 0, 255);

Callback:

Slider Card requires a callback function which will be called when we receive a input from our dashboard. We will be calling our attachCallback function and provide a lambda function with a int argument.

Note: You need to call the update function and sendUpdates immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard.

/*
We provide our attachCallback with a lambda function to handle incomming data
`value` is the boolean sent from your dashboard
*/
card1.attachCallback([&](int value){
Serial.println("[Card1] Slider Callback Triggered: "+String(value));
card1.update(value);
dashboard.sendUpdates();
});

Updaters:

card1.update(int value);

Or, update symbol along your value:

card1.update(244, "%");
- - +

Slider Card

Preview:


Preview

This card adds a interactive horizontal slider to your dashboard. Slider card is useful when you require a integer input within a certain range. ( Example use case: LED brightness control )


Type:

SLIDER_CARD


Valid Data Types:

  • int

Initializer:

With slider card, Initializer requires min & max range.

/* 
Slider Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional), int min, int max)
*/
Card card1(&dashboard, SLIDER_CARD, "Test Slider", "", 0, 255);

Callback:

Slider Card requires a callback function which will be called when we receive a input from our dashboard. We will be calling our attachCallback function and provide a lambda function with a int argument.

Note: You need to call the update function and sendUpdates immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard.

/*
We provide our attachCallback with a lambda function to handle incomming data
`value` is the boolean sent from your dashboard
*/
card1.attachCallback([&](int value){
Serial.println("[Card1] Slider Callback Triggered: "+String(value));
card1.update(value);
dashboard.sendUpdates();
});

Updaters:

card1.update(int value);

Or, update symbol along your value:

card1.update(244, "%");
+ + \ No newline at end of file diff --git a/v3.x.x/cards/status/index.html b/v3.x.x/cards/status/index.html index 1a597e4a..5b1834f8 100644 --- a/v3.x.x/cards/status/index.html +++ b/v3.x.x/cards/status/index.html @@ -6,14 +6,14 @@ Status Card | DASH Docs - - - + + +
-

Status Card

Preview:

PreviewPreviewPreviewPreview

As it's name suggests, status card is used to display some kind of status on your dashboard. It can show 4 different kinds of status along with a short message.


Type:

STATUS_CARD


Valid Data Types:

  • String

Valid Statuses:

  • "success" - Green
  • "danger" - Red
  • "warning" - Yellow
  • "idle" - Grey

Initializer:

/* 
Status Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* status (optional) )
*/
Card card1(&dashboard, STATUS_CARD, "Test Status", "success");

Updaters:

Status card updater allows you to set a message:

card1.update("message");

Or, message + status at the same time:

card1.update("Message", "success");
- - +

Status Card

Preview:

PreviewPreviewPreviewPreview

As it's name suggests, status card is used to display some kind of status on your dashboard. It can show 4 different kinds of status along with a short message.


Type:

STATUS_CARD


Valid Data Types:

  • String

Valid Statuses:

  • "success" - Green
  • "danger" - Red
  • "warning" - Yellow
  • "idle" - Grey

Initializer:

/* 
Status Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* status (optional) )
*/
Card card1(&dashboard, STATUS_CARD, "Test Status", "success");

Updaters:

Status card updater allows you to set a message:

card1.update("message");

Or, message + status at the same time:

card1.update("Message", "success");
+ + \ No newline at end of file diff --git a/v3.x.x/cards/temperature/index.html b/v3.x.x/cards/temperature/index.html index 97a2df66..47cb8a0f 100644 --- a/v3.x.x/cards/temperature/index.html +++ b/v3.x.x/cards/temperature/index.html @@ -6,14 +6,14 @@ Temperature Card | DASH Docs - - - + + +
-

Temperature Card

Preview:

Preview

This card adds a distinctive temperature icon, and just like generic card you can add a symbol which will be appended to your data.


Type:

TEMPERATURE_CARD


Valid Data Types:

  • int
  • float
  • String

Initializer:

/* 
Temperature Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )
*/
Card card1(&dashboard, TEMPERATURE_CARD, "Temperature1", "°C");

Updaters:

card1.update(int value);
card1.update(float value);
card1.update(String value);

Or you can also update the symbol along with the value like this:

card1.update(value, "°F");


- - +

Temperature Card

Preview:

Preview

This card adds a distinctive temperature icon, and just like generic card you can add a symbol which will be appended to your data.


Type:

TEMPERATURE_CARD


Valid Data Types:

  • int
  • float
  • String

Initializer:

/* 
Temperature Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name, const char* symbol (optional) )
*/
Card card1(&dashboard, TEMPERATURE_CARD, "Temperature1", "°C");

Updaters:

card1.update(int value);
card1.update(float value);
card1.update(String value);

Or you can also update the symbol along with the value like this:

card1.update(value, "°F");


+ + \ No newline at end of file diff --git a/v3.x.x/cards/text-input/index.html b/v3.x.x/cards/text-input/index.html index ee1bbe21..1849ee4c 100644 --- a/v3.x.x/cards/text-input/index.html +++ b/v3.x.x/cards/text-input/index.html @@ -6,14 +6,14 @@ Text Input Card | DASH Docs - - - + + +
-

Text Input Card

This feature is available in DASH Pro only.

Preview:

Energy Card Preview

Text Input Card gives you the ability to take String input from user and save them in your application. It provides you with a input box on the dashboard where user can send back text to your application.

This card is very useful for saving WiFi credentials, passwords and general information.


Type:

TEXT_INPUT_CARD


Valid Data Types:

  • String

Initializer:

/* 
Energy Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name)
*/
Card card1(&dashboard, TEXT_INPUT_CARD, "User Email");

Callback:

Text Input Card requires a callback function which will be called when we receive a input from our dashboard. In setup block, we will be calling our attachCallback function and provide a lambda (callback) function with a const char* (character array) argument.

Note: You need to call the update function and sendUpdates immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard and it will keep the card stuck in 'waiting' phase.

/*
We provide our attachCallback with a lambda function to handle incomming data
`value` is the boolean sent from your dashboard
*/
card1.attachCallback([&](const char* value){
Serial.println("[Card1] Text Input Callback Triggered: "+String(value));
card1.update(value);
dashboard.sendUpdates();
});

Updaters:

card1.update(const char* value);
card1.update(String value);
- - +

Text Input Card

This feature is available in DASH Pro only.

Preview:

Energy Card Preview

Text Input Card gives you the ability to take String input from user and save them in your application. It provides you with a input box on the dashboard where user can send back text to your application.

This card is very useful for saving WiFi credentials, passwords and general information.


Type:

TEXT_INPUT_CARD


Valid Data Types:

  • String

Initializer:

/* 
Energy Card
Valid Arguments: (ESPDash dashboard, Card Type, const char* name)
*/
Card card1(&dashboard, TEXT_INPUT_CARD, "User Email");

Callback:

Text Input Card requires a callback function which will be called when we receive a input from our dashboard. In setup block, we will be calling our attachCallback function and provide a lambda (callback) function with a const char* (character array) argument.

Note: You need to call the update function and sendUpdates immediately once you receive the value in callback. Otherwise user input will not be registered on dashboard and it will keep the card stuck in 'waiting' phase.

/*
We provide our attachCallback with a lambda function to handle incomming data
`value` is the boolean sent from your dashboard
*/
card1.attachCallback([&](const char* value){
Serial.println("[Card1] Text Input Callback Triggered: "+String(value));
card1.update(value);
dashboard.sendUpdates();
});

Updaters:

card1.update(const char* value);
card1.update(String value);
+ + \ No newline at end of file diff --git a/v3.x.x/category/cards/index.html b/v3.x.x/category/cards/index.html index c40358a0..0ac4b3bc 100644 --- a/v3.x.x/category/cards/index.html +++ b/v3.x.x/category/cards/index.html @@ -6,14 +6,14 @@ Cards | DASH Docs - - - + + + - - + + + \ No newline at end of file diff --git a/v3.x.x/category/charts/index.html b/v3.x.x/category/charts/index.html index 15404802..71b9e14c 100644 --- a/v3.x.x/category/charts/index.html +++ b/v3.x.x/category/charts/index.html @@ -6,14 +6,14 @@ Charts | DASH Docs - - - + + +
-
Version: v3.x.x

Charts

Charts let you display historical records and arrays in a easy-to-undestand manner. Charts in ESP-DASH are extremely useful when it comes to display data over span of time. The following charts are included in the library:

- - +
Version: v3.x.x

Charts

Charts let you display historical records and arrays in a easy-to-undestand manner. Charts in ESP-DASH are extremely useful when it comes to display data over span of time. The following charts are included in the library:

+ + \ No newline at end of file diff --git a/v3.x.x/charts/area/index.html b/v3.x.x/charts/area/index.html index 0ac65005..289bede0 100644 --- a/v3.x.x/charts/area/index.html +++ b/v3.x.x/charts/area/index.html @@ -6,14 +6,14 @@ Area Chart | DASH Docs - - - + + +
-

Area Chart

This feature is available in DASH Pro only.

Preview:

Preview

Similar to line chart, area chart fills the space below it with a color. You can aggregate large amount of data in form of arrays and display them in a area chart.


Type:

AREA_CHART


Valid Data Types for X-Axis:

  • int
  • float
  • String

Valid Data Types for Y-Axis:

  • int
  • float

Initializer:

/* 
Area Chart
Valid Arguments: (ESPDash dashboard, Card Type, const char* name )
*/
Chart chart1(&dashboard, AREA_CHART, "Chart Name");

Updaters:

For X-Axis:

X-Axis updater uses updateX function.

/*
Data for X Axis of our Chart
This array can be of: `int` / `float` or `String`
*/
String XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
or
(String array[], size_t array_size)
*/
chart1.updateX(XAxis, 7);
For Y-Axis:

Y-Axis updater uses updateY function.

/*
Data for Y Axis of our Chart
This array can be of: `int` or `float`
*/
int YAxis[] = {0, 0, 0, 0, 0, 0, 0};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
*/
chart1.updateY(YAxis, 7);
- - +

Area Chart

This feature is available in DASH Pro only.

Preview:

Preview

Similar to line chart, area chart fills the space below it with a color. You can aggregate large amount of data in form of arrays and display them in a area chart.


Type:

AREA_CHART


Valid Data Types for X-Axis:

  • int
  • float
  • String

Valid Data Types for Y-Axis:

  • int
  • float

Initializer:

/* 
Area Chart
Valid Arguments: (ESPDash dashboard, Card Type, const char* name )
*/
Chart chart1(&dashboard, AREA_CHART, "Chart Name");

Updaters:

For X-Axis:

X-Axis updater uses updateX function.

/*
Data for X Axis of our Chart
This array can be of: `int` / `float` or `String`
*/
String XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
or
(String array[], size_t array_size)
*/
chart1.updateX(XAxis, 7);
For Y-Axis:

Y-Axis updater uses updateY function.

/*
Data for Y Axis of our Chart
This array can be of: `int` or `float`
*/
int YAxis[] = {0, 0, 0, 0, 0, 0, 0};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
*/
chart1.updateY(YAxis, 7);
+ + \ No newline at end of file diff --git a/v3.x.x/charts/bar/index.html b/v3.x.x/charts/bar/index.html index 54f513bd..00789f1d 100644 --- a/v3.x.x/charts/bar/index.html +++ b/v3.x.x/charts/bar/index.html @@ -6,14 +6,14 @@ Bar Chart | DASH Docs - - - + + +
-

Bar Chart

Preview:

Preview

It's a bar chart. period.

You can aggregate large amount of data in form of arrays and display them in a bar chart.


Type:

BAR_CHART


Valid Data Types for X-Axis:

  • int
  • float
  • String

Valid Data Types for Y-Axis:

  • int
  • float

Initializer:

/* 
Bar Chart
Valid Arguments: (ESPDash dashboard, Card Type, const char* name )
*/
Chart chart1(&dashboard, BAR_CHART, "Chart Name");

Updaters:

For X-Axis:

X-Axis updater uses updateX function.

/*
Data for X Axis of our Chart
This array can be of: `int` / `float` or `String`
*/
String XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
or
(String array[], size_t array_size)
*/
chart1.updateX(XAxis, 7);
For Y-Axis:

Y-Axis updater uses updateY function.

/*
Data for Y Axis of our Chart
This array can be of: `int` or `float`
*/
int YAxis[] = {0, 0, 0, 0, 0, 0, 0};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
*/
chart1.updateY(YAxis, 7);
- - +

Bar Chart

Preview:

Preview

It's a bar chart. period.

You can aggregate large amount of data in form of arrays and display them in a bar chart.


Type:

BAR_CHART


Valid Data Types for X-Axis:

  • int
  • float
  • String

Valid Data Types for Y-Axis:

  • int
  • float

Initializer:

/* 
Bar Chart
Valid Arguments: (ESPDash dashboard, Card Type, const char* name )
*/
Chart chart1(&dashboard, BAR_CHART, "Chart Name");

Updaters:

For X-Axis:

X-Axis updater uses updateX function.

/*
Data for X Axis of our Chart
This array can be of: `int` / `float` or `String`
*/
String XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
or
(String array[], size_t array_size)
*/
chart1.updateX(XAxis, 7);
For Y-Axis:

Y-Axis updater uses updateY function.

/*
Data for Y Axis of our Chart
This array can be of: `int` or `float`
*/
int YAxis[] = {0, 0, 0, 0, 0, 0, 0};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
*/
chart1.updateY(YAxis, 7);
+ + \ No newline at end of file diff --git a/v3.x.x/charts/line/index.html b/v3.x.x/charts/line/index.html index 7520e690..75fd5c29 100644 --- a/v3.x.x/charts/line/index.html +++ b/v3.x.x/charts/line/index.html @@ -6,14 +6,14 @@ Line Chart | DASH Docs - - - + + +
-

Line Chart

This feature is available in DASH Pro only.

Preview:

Preview

Second form of chart in ESP-DASH is the line chart. It lets you have linear data displayed in form of a connected line istead of bars. You can aggregate large amount of data in form of arrays and display them in a line chart.


Type:

LINE_CHART


Valid Data Types for X-Axis:

  • int
  • float
  • String

Valid Data Types for Y-Axis:

  • int
  • float

Initializer:

/* 
Line Chart
Valid Arguments: (ESPDash dashboard, Card Type, const char* name )
*/
Chart chart1(&dashboard, LINE_CHART, "Chart Name");

Updaters:

For X-Axis:

X-Axis updater uses updateX function.

/*
Data for X Axis of our Chart
This array can be of: `int` / `float` or `String`
*/
String XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
or
(String array[], size_t array_size)
*/
chart1.updateX(XAxis, 7);
For Y-Axis:

Y-Axis updater uses updateY function.

/*
Data for Y Axis of our Chart
This array can be of: `int` or `float`
*/
int YAxis[] = {0, 0, 0, 0, 0, 0, 0};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
*/
chart1.updateY(YAxis, 7);
- - +

Line Chart

This feature is available in DASH Pro only.

Preview:

Preview

Second form of chart in ESP-DASH is the line chart. It lets you have linear data displayed in form of a connected line istead of bars. You can aggregate large amount of data in form of arrays and display them in a line chart.


Type:

LINE_CHART


Valid Data Types for X-Axis:

  • int
  • float
  • String

Valid Data Types for Y-Axis:

  • int
  • float

Initializer:

/* 
Line Chart
Valid Arguments: (ESPDash dashboard, Card Type, const char* name )
*/
Chart chart1(&dashboard, LINE_CHART, "Chart Name");

Updaters:

For X-Axis:

X-Axis updater uses updateX function.

/*
Data for X Axis of our Chart
This array can be of: `int` / `float` or `String`
*/
String XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
or
(String array[], size_t array_size)
*/
chart1.updateX(XAxis, 7);
For Y-Axis:

Y-Axis updater uses updateY function.

/*
Data for Y Axis of our Chart
This array can be of: `int` or `float`
*/
int YAxis[] = {0, 0, 0, 0, 0, 0, 0};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
*/
chart1.updateY(YAxis, 7);
+ + \ No newline at end of file diff --git a/v3.x.x/charts/pie/index.html b/v3.x.x/charts/pie/index.html index 70f9605c..60ca3a9f 100644 --- a/v3.x.x/charts/pie/index.html +++ b/v3.x.x/charts/pie/index.html @@ -6,14 +6,14 @@ Pie Chart | DASH Docs - - - + + +
-

Pie Chart

This feature is available in DASH Pro only.

Preview:

Preview

Pie chart is a circular chart used for displaying various data where you can represent your data in a circular form.


Type:

PIE_CHART


Valid Data Types for X-Axis:

  • int
  • float
  • String

Valid Data Types for Y-Axis:

  • int
  • float

Initializer:

/* 
Pie Chart
Valid Arguments: (ESPDash dashboard, Card Type, const char* name )
*/
Chart chart1(&dashboard, PIE_CHART, "Chart Name");

Updaters:

For X-Axis:

X-Axis updater uses updateX function.

/*
Data for X Axis of our Chart
This array can be of: `int` / `float` or `String`
*/
String XAxis[] = {"Biscuits", "Cookies", "Milk", "Thing4", "Thing5"};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
or
(String array[], size_t array_size)
*/
chart1.updateX(XAxis, 5);
For Y-Axis:

Y-Axis updater uses updateY function.

/*
Data for Y Axis of our Chart
This array can be of: `int` or `float`
*/
int YAxis[] = {0, 0, 0, 0, 0};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
*/
chart1.updateY(YAxis, 5);
- - +

Pie Chart

This feature is available in DASH Pro only.

Preview:

Preview

Pie chart is a circular chart used for displaying various data where you can represent your data in a circular form.


Type:

PIE_CHART


Valid Data Types for X-Axis:

  • int
  • float
  • String

Valid Data Types for Y-Axis:

  • int
  • float

Initializer:

/* 
Pie Chart
Valid Arguments: (ESPDash dashboard, Card Type, const char* name )
*/
Chart chart1(&dashboard, PIE_CHART, "Chart Name");

Updaters:

For X-Axis:

X-Axis updater uses updateX function.

/*
Data for X Axis of our Chart
This array can be of: `int` / `float` or `String`
*/
String XAxis[] = {"Biscuits", "Cookies", "Milk", "Thing4", "Thing5"};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
or
(String array[], size_t array_size)
*/
chart1.updateX(XAxis, 5);
For Y-Axis:

Y-Axis updater uses updateY function.

/*
Data for Y Axis of our Chart
This array can be of: `int` or `float`
*/
int YAxis[] = {0, 0, 0, 0, 0};

/*
Update Function for Chart is as follows:
--------
(int array[], size_t array_size)
or
(float array[], size_t array_size)
*/
chart1.updateY(YAxis, 5);
+ + \ No newline at end of file diff --git a/v3.x.x/concept/index.html b/v3.x.x/concept/index.html index bc603c95..c3de9427 100644 --- a/v3.x.x/concept/index.html +++ b/v3.x.x/concept/index.html @@ -6,14 +6,14 @@ Concept of DASH | DASH Docs - - - + + +
-

Concept of DASH

The whole concept of ESP-DASH is around the idea of having 'Cards' and 'Charts' ( UI components ) on our dashboard. Therefore with V3, we divided the whole library into 3 separate classes:

  1. ESPDash ( ESPDash.h )
  2. Card ( Card.h )
  3. Chart ( Chart.h )

Concept Diagram

All of these classes serve their very own purpose and work harmoniously with a low heap footprint. Let's know more about the function of each class:

1. ESPDash Class

ESPDash class handles the networking part of our dashboard. It takes AsyncWebServer as a argument and connects itself to serve DASH V3 webpage from our MCU's program memory. This class is responsible for the transfer of card/chart data between webpage and your sketch.

2. Card Class

Our dashboard comprises of 'Cards' & 'Charts' and in our library, these are primarly data handling classes. Their main purpose is just to store data in their relevant position.

Card comprises of many sub-types ( for example: generic, temperature, humidity etc. ) which provides you great data visiualization choices.

3. Chart Class

Similar to Card Class, Chart handles the data for creating charts on our dashboard.

- - +

Concept of DASH

The whole concept of ESP-DASH is around the idea of having 'Cards' and 'Charts' ( UI components ) on our dashboard. Therefore with V3, we divided the whole library into 3 separate classes:

  1. ESPDash ( ESPDash.h )
  2. Card ( Card.h )
  3. Chart ( Chart.h )

Concept Diagram

All of these classes serve their very own purpose and work harmoniously with a low heap footprint. Let's know more about the function of each class:

1. ESPDash Class

ESPDash class handles the networking part of our dashboard. It takes AsyncWebServer as a argument and connects itself to serve DASH V3 webpage from our MCU's program memory. This class is responsible for the transfer of card/chart data between webpage and your sketch.

2. Card Class

Our dashboard comprises of 'Cards' & 'Charts' and in our library, these are primarly data handling classes. Their main purpose is just to store data in their relevant position.

Card comprises of many sub-types ( for example: generic, temperature, humidity etc. ) which provides you great data visiualization choices.

3. Chart Class

Similar to Card Class, Chart handles the data for creating charts on our dashboard.

+ + \ No newline at end of file diff --git a/v3.x.x/getting-started/index.html b/v3.x.x/getting-started/index.html index 9dea0947..a053112c 100644 --- a/v3.x.x/getting-started/index.html +++ b/v3.x.x/getting-started/index.html @@ -6,14 +6,14 @@ Getting Started | DASH Docs - - - + + +
-

Getting Started

To get started with ESP-DASH, we will be creating our basic example step by step and learn what each setup does:


Part 1: Include Dependencies

We have used conditional compilation in this part therefore the code will work for both ESP8266 & ESP32.

#include <Arduino.h>
#if defined(ESP8266)
/* ESP8266 Dependencies */
#include <ESP8266WiFi.h>
#include <ESPAsyncTCP.h>
#include <ESPAsyncWebServer.h>
#elif defined(ESP32)
/* ESP32 Dependencies */
#include <WiFi.h>
#include <AsyncTCP.h>
#include <ESPAsyncWebServer.h>
#endif
#include <ESPDash.h>



Part 2: Create AsyncWebServer Instance

/* Start Webserver */
AsyncWebServer server(80);



Part 3: Attach ESP-DASH Instance

/* Attach ESP-DASH to AsyncWebServer */
ESPDash dashboard(&server);



Part 4: Create Cards

In this step, we will creating ESP-DASH cards and passing our dasboard instance as a first argument so that they can add / remove themselves.

After we are done with this guide, Please take a look at Cards section to know more about the types of cards available to us.

/* 
Dashboard Cards
Format - (Dashboard Instance, Card Type, Card Name, Card Symbol(optional) )
*/
Card temperature(&dashboard, TEMPERATURE_CARD, "Temperature", "°C");
Card humidity(&dashboard, HUMIDITY_CARD, "Humidity", "%");



Part 5: Setup Block

In our setup block, we will be adding the usual WiFi connectivity stuff and then start our AsyncWebServer with server.begin();.

void setup() {
Serial.begin(115200);

/* Connect WiFi */
WiFi.mode(WIFI_STA);
WiFi.begin("ssid", "password");
if (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.printf("WiFi Failed!\n");
return;
}
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());

/* Start AsyncWebServer */
server.begin();
}



Part 5: Loop Block

In our loop block, we will be doing 2 things:

  1. Updating card values
  2. Sending updates to our dashboard
1. Updating Card Values

Remember the 'Cards' we created in 4th part? We will now access those cards by their variable and update them using the update function which is provided with our card's class:

temperature.update((int)random(0, 50));
2. Sending updates to our Dashboard

Once we have updated values of our card(s), we will call the sendUpdates() function of our dashboard instance and it will send new card values to every connected client in real time.

dashboard.sendUpdates();

Technically speaking, You can call these functions anywhere in your sketch, but for demonstration purposes we have called them in our loop block.

Complete Loop Block:
void loop() {
/* Update Card Values */
temperature.update((int)random(0, 50));
humidity.update((int)random(0, 100));

/* Send Updates to our Dashboard (realtime) */
dashboard.sendUpdates();

/*
Delay is just for demonstration purposes in this example,
Replace this code with 'millis interval' in your final project.
*/
delay(3000);
}



Final Code

That's it! Now we can just upload this sketch to our MCU and access the dashboard via it's IP address. ( Make sure to change the ssid and password in our sketch according to your Access Point )

/*
-----------------------
ESPDASH - Basic Example
-----------------------

Skill Level: Intermediate

In this example we will be creating a basic dashboard which consists
of some cards and then update them in realtime ( at 3s interval ).

Github: https://github.com/ayushsharma82/ESP-DASH
WiKi: https://ayushsharma82.github.io/ESP-DASH/

Works with both ESP8266 & ESP32
*/

#include <Arduino.h>
#if defined(ESP8266)
/* ESP8266 Dependencies */
#include <ESP8266WiFi.h>
#include <ESPAsyncTCP.h>
#include <ESPAsyncWebServer.h>
#elif defined(ESP32)
/* ESP32 Dependencies */
#include <WiFi.h>
#include <AsyncTCP.h>
#include <ESPAsyncWebServer.h>
#endif
#include <ESPDash.h>


/* Your WiFi Credentials */
const char* ssid = ""; // SSID
const char* password = ""; // Password

/* Start Webserver */
AsyncWebServer server(80);

/* Attach ESP-DASH to AsyncWebServer */
ESPDash dashboard(&server);

/*
Dashboard Cards
Format - (Dashboard Instance, Card Type, Card Name, Card Symbol(optional) )
*/
Card temperature(&dashboard, TEMPERATURE_CARD, "Temperature", "°C");
Card humidity(&dashboard, HUMIDITY_CARD, "Humidity", "%");


void setup() {
Serial.begin(115200);

/* Connect WiFi */
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
if (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.printf("WiFi Failed!\n");
return;
}
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());

/* Start AsyncWebServer */
server.begin();
}

void loop() {
/* Update Card Values */
temperature.update((int)random(0, 50));
humidity.update((int)random(0, 100));

/* Send Updates to our Dashboard (realtime) */
dashboard.sendUpdates();

/*
Delay is just for demonstration purposes in this example,
Replace this code with 'millis interval' in your final project.
*/
delay(3000);
}
- - +

Getting Started

To get started with ESP-DASH, we will be creating our basic example step by step and learn what each setup does:


Part 1: Include Dependencies

We have used conditional compilation in this part therefore the code will work for both ESP8266 & ESP32.

#include <Arduino.h>
#if defined(ESP8266)
/* ESP8266 Dependencies */
#include <ESP8266WiFi.h>
#include <ESPAsyncTCP.h>
#include <ESPAsyncWebServer.h>
#elif defined(ESP32)
/* ESP32 Dependencies */
#include <WiFi.h>
#include <AsyncTCP.h>
#include <ESPAsyncWebServer.h>
#endif
#include <ESPDash.h>



Part 2: Create AsyncWebServer Instance

/* Start Webserver */
AsyncWebServer server(80);



Part 3: Attach ESP-DASH Instance

/* Attach ESP-DASH to AsyncWebServer */
ESPDash dashboard(&server);



Part 4: Create Cards

In this step, we will creating ESP-DASH cards and passing our dasboard instance as a first argument so that they can add / remove themselves.

After we are done with this guide, Please take a look at Cards section to know more about the types of cards available to us.

/* 
Dashboard Cards
Format - (Dashboard Instance, Card Type, Card Name, Card Symbol(optional) )
*/
Card temperature(&dashboard, TEMPERATURE_CARD, "Temperature", "°C");
Card humidity(&dashboard, HUMIDITY_CARD, "Humidity", "%");



Part 5: Setup Block

In our setup block, we will be adding the usual WiFi connectivity stuff and then start our AsyncWebServer with server.begin();.

void setup() {
Serial.begin(115200);

/* Connect WiFi */
WiFi.mode(WIFI_STA);
WiFi.begin("ssid", "password");
if (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.printf("WiFi Failed!\n");
return;
}
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());

/* Start AsyncWebServer */
server.begin();
}



Part 5: Loop Block

In our loop block, we will be doing 2 things:

  1. Updating card values
  2. Sending updates to our dashboard
1. Updating Card Values

Remember the 'Cards' we created in 4th part? We will now access those cards by their variable and update them using the update function which is provided with our card's class:

temperature.update((int)random(0, 50));
2. Sending updates to our Dashboard

Once we have updated values of our card(s), we will call the sendUpdates() function of our dashboard instance and it will send new card values to every connected client in real time.

dashboard.sendUpdates();

Technically speaking, You can call these functions anywhere in your sketch, but for demonstration purposes we have called them in our loop block.

Complete Loop Block:
void loop() {
/* Update Card Values */
temperature.update((int)random(0, 50));
humidity.update((int)random(0, 100));

/* Send Updates to our Dashboard (realtime) */
dashboard.sendUpdates();

/*
Delay is just for demonstration purposes in this example,
Replace this code with 'millis interval' in your final project.
*/
delay(3000);
}



Final Code

That's it! Now we can just upload this sketch to our MCU and access the dashboard via it's IP address. ( Make sure to change the ssid and password in our sketch according to your Access Point )

/*
-----------------------
ESPDASH - Basic Example
-----------------------

Skill Level: Intermediate

In this example we will be creating a basic dashboard which consists
of some cards and then update them in realtime ( at 3s interval ).

Github: https://github.com/ayushsharma82/ESP-DASH
WiKi: https://ayushsharma82.github.io/ESP-DASH/

Works with both ESP8266 & ESP32
*/

#include <Arduino.h>
#if defined(ESP8266)
/* ESP8266 Dependencies */
#include <ESP8266WiFi.h>
#include <ESPAsyncTCP.h>
#include <ESPAsyncWebServer.h>
#elif defined(ESP32)
/* ESP32 Dependencies */
#include <WiFi.h>
#include <AsyncTCP.h>
#include <ESPAsyncWebServer.h>
#endif
#include <ESPDash.h>


/* Your WiFi Credentials */
const char* ssid = ""; // SSID
const char* password = ""; // Password

/* Start Webserver */
AsyncWebServer server(80);

/* Attach ESP-DASH to AsyncWebServer */
ESPDash dashboard(&server);

/*
Dashboard Cards
Format - (Dashboard Instance, Card Type, Card Name, Card Symbol(optional) )
*/
Card temperature(&dashboard, TEMPERATURE_CARD, "Temperature", "°C");
Card humidity(&dashboard, HUMIDITY_CARD, "Humidity", "%");


void setup() {
Serial.begin(115200);

/* Connect WiFi */
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
if (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.printf("WiFi Failed!\n");
return;
}
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());

/* Start AsyncWebServer */
server.begin();
}

void loop() {
/* Update Card Values */
temperature.update((int)random(0, 50));
humidity.update((int)random(0, 100));

/* Send Updates to our Dashboard (realtime) */
dashboard.sendUpdates();

/*
Delay is just for demonstration purposes in this example,
Replace this code with 'millis interval' in your final project.
*/
delay(3000);
}
+ + \ No newline at end of file diff --git a/v3.x.x/index.html b/v3.x.x/index.html index 2479f27d..fa5518fb 100644 --- a/v3.x.x/index.html +++ b/v3.x.x/index.html @@ -6,14 +6,14 @@ Intro | DASH Docs - - - + + +
-






  



ESP-DASH is a C++ library for creating functional & real-time dashboards for ESP8266 & ESP32 microcontrollers. It provides you with easy to use functions and lets you create a dashboard accessible on your module's IP address.

- - +






  



ESP-DASH is a C++ library for creating functional & real-time dashboards for ESP8266 & ESP32 microcontrollers. It provides you with easy to use functions and lets you create a dashboard accessible on your module's IP address.

+ + \ No newline at end of file diff --git a/v3.x.x/indexing/index.html b/v3.x.x/indexing/index.html index 5aa0bae7..0a066e93 100644 --- a/v3.x.x/indexing/index.html +++ b/v3.x.x/indexing/index.html @@ -6,14 +6,14 @@ Card Indexing | DASH Docs - - - + + +
-

Card Indexing

This feature is available in DASH Pro only.


Energy Card Preview

ESP-DASH Pro provides you with a setIndex function in both cards and charts to modify the position of them on the dashboard.

Example:

card1.setIndex(0);

Indexing works in ascending format. The lowest card index will be placed in the front of the list and the highest index will be put in the end. It allows you to set the layout according to your wish.

- - +

Card Indexing

This feature is available in DASH Pro only.


Energy Card Preview

ESP-DASH Pro provides you with a setIndex function in both cards and charts to modify the position of them on the dashboard.

Example:

card1.setIndex(0);

Indexing works in ascending format. The lowest card index will be placed in the front of the list and the highest index will be put in the end. It allows you to set the layout according to your wish.

+ + \ No newline at end of file diff --git a/v3.x.x/installation/index.html b/v3.x.x/installation/index.html index 305c0610..c49cf0d9 100644 --- a/v3.x.x/installation/index.html +++ b/v3.x.x/installation/index.html @@ -6,14 +6,14 @@ Installation | DASH Docs - - - + + +
-

Installation

ESP-DASH depends on the following open-source libraries/boards. Make sure to install them before you install ESP-DASH.

For ESP8266:
For ESP32:

Installing ESP-DASH

1. Directly Through Arduino IDE - Library Manager

Go to Sketch > Include Library > Library Manager > Search for "ESP-DASH" > Install

2. Manual Install

For Windows:
  • Download the Repository
  • Extract the .zip in Documents > Arduino > Libraries > {Place "ESP-DASH" folder Here}
For Linux:
  • Download the Repository
  • Extract the .zip in Sketchbook > Libraries > {Place "ESP-DASH" folder Here}

3. Import through Arduino IDE

  • Download the Repository
  • Go to Sketch > Include Library > Add .zip Library > Select the Downloaded .zip File.
- - +

Installation

ESP-DASH depends on the following open-source libraries/boards. Make sure to install them before you install ESP-DASH.

For ESP8266:
For ESP32:

Installing ESP-DASH

1. Directly Through Arduino IDE - Library Manager

Go to Sketch > Include Library > Library Manager > Search for "ESP-DASH" > Install

2. Manual Install

For Windows:
  • Download the Repository
  • Extract the .zip in Documents > Arduino > Libraries > {Place "ESP-DASH" folder Here}
For Linux:
  • Download the Repository
  • Extract the .zip in Sketchbook > Libraries > {Place "ESP-DASH" folder Here}

3. Import through Arduino IDE

  • Download the Repository
  • Go to Sketch > Include Library > Add .zip Library > Select the Downloaded .zip File.
+ + \ No newline at end of file diff --git a/v3.x.x/more-examples/index.html b/v3.x.x/more-examples/index.html index 178f3d34..661a4bbd 100644 --- a/v3.x.x/more-examples/index.html +++ b/v3.x.x/more-examples/index.html @@ -6,14 +6,14 @@ Examples | DASH Docs - - - + + +
-

Examples

There are many example sketches in our repository. You can check those out to know more about what you can do with ESP-DASH.

We have contructed every example with very clear documentation so there is less obstruction in your learning process.

You can find those examples here.

- - +

Examples

There are many example sketches in our repository. You can check those out to know more about what you can do with ESP-DASH.

We have contructed every example with very clear documentation so there is less obstruction in your learning process.

You can find those examples here.

+ + \ No newline at end of file