Initial commit with Quarto website

This commit is contained in:
root 2025-04-06 10:51:02 +00:00
commit e90e9bce56
32 changed files with 6516 additions and 0 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,461 @@
:root {
--quarto-scss-export-gray-300: #{$gray-300};
--quarto-scss-export-gray-500: #{$gray-500};
--quarto-scss-export-gray-600: #{$gray-600};
--quarto-scss-export-gray-800: #{$gray-800};
--quarto-scss-export-card-cap-bg: #{$card-cap-bg};
--quarto-scss-export-border-color: #{$border-color};
--quarto-scss-export-text-muted: #{$text-muted};
--quarto-scss-export-white: #{$white};
--quarto-scss-export-gray-100: #{$gray-100};
--quarto-scss-export-gray-200: #{$gray-200};
--quarto-scss-export-gray-400: #{$gray-400};
--quarto-scss-export-gray-700: #{$gray-700};
--quarto-scss-export-gray-900: #{$gray-900};
--quarto-scss-export-black: #{$black};
--quarto-scss-export-blue: #{$blue};
--quarto-scss-export-indigo: #{$indigo};
--quarto-scss-export-purple: #{$purple};
--quarto-scss-export-pink: #{$pink};
--quarto-scss-export-red: #{$red};
--quarto-scss-export-orange: #{$orange};
--quarto-scss-export-yellow: #{$yellow};
--quarto-scss-export-green: #{$green};
--quarto-scss-export-teal: #{$teal};
--quarto-scss-export-cyan: #{$cyan};
--quarto-scss-export-primary: #{$primary};
--quarto-scss-export-secondary: #{$secondary};
--quarto-scss-export-success: #{$success};
--quarto-scss-export-info: #{$info};
--quarto-scss-export-warning: #{$warning};
--quarto-scss-export-danger: #{$danger};
--quarto-scss-export-light: #{$light};
--quarto-scss-export-dark: #{$dark};
--quarto-scss-export-body-color: #{$body-color};
--quarto-scss-export-title-banner-color: #{$title-banner-color};
--quarto-scss-export-title-banner-bg: #{$title-banner-bg};
--quarto-scss-export-btn-code-copy-color: #{$btn-code-copy-color};
--quarto-scss-export-btn-code-copy-color-active: #{$btn-code-copy-color-active};
--quarto-scss-export-sidebar-bg: #{$sidebar-bg};
--quarto-scss-export-link-color: #{$link-color};
--quarto-scss-export-link-color-bg: #{$link-color-bg};
--quarto-scss-export-code-color: #{$code-color};
--quarto-scss-export-code-bg: #{$code-bg};
--quarto-scss-export-toc-color: #{$toc-color};
--quarto-scss-export-toc-active-border: #{$toc-active-border};
--quarto-scss-export-toc-inactive-border: #{$toc-inactive-border};
--quarto-scss-export-navbar-default: #{$navbar-default};
--quarto-scss-export-navbar-hl-override: #{$navbar-hl-override};
--quarto-scss-export-navbar-bg: #{$navbar-bg};
--quarto-scss-export-btn-bg: #{$btn-bg};
--quarto-scss-export-btn-fg: #{$btn-fg};
--quarto-scss-export-body-contrast-bg: #{$body-contrast-bg};
--quarto-scss-export-body-contrast-color: #{$body-contrast-color};
--quarto-scss-export-navbar-fg: #{$navbar-fg};
--quarto-scss-export-navbar-hl: #{$navbar-hl};
--quarto-scss-export-navbar-brand: #{$navbar-brand};
--quarto-scss-export-navbar-brand-hl: #{$navbar-brand-hl};
--quarto-scss-export-navbar-toggler-border-color: #{$navbar-toggler-border-color};
--quarto-scss-export-navbar-hover-color: #{$navbar-hover-color};
--quarto-scss-export-navbar-disabled-color: #{$navbar-disabled-color};
--quarto-scss-export-sidebar-fg: #{$sidebar-fg};
--quarto-scss-export-title-block-color: #{$title-block-color};
--quarto-scss-export-title-block-contast-color: #{$title-block-contast-color};
--quarto-scss-export-footer-bg: #{$footer-bg};
--quarto-scss-export-footer-fg: #{$footer-fg};
--quarto-scss-export-popover-bg: #{$popover-bg};
--quarto-scss-export-input-bg: #{$input-bg};
--quarto-scss-export-input-border-color: #{$input-border-color};
--quarto-scss-export-code-annotation-higlight-color: #{$code-annotation-higlight-color};
--quarto-scss-export-code-annotation-higlight-bg: #{$code-annotation-higlight-bg};
--quarto-scss-export-table-group-separator-color: #{$table-group-separator-color};
--quarto-scss-export-table-group-separator-color-lighter: #{$table-group-separator-color-lighter};
--quarto-scss-export-link-decoration: #{$link-decoration};
--quarto-scss-export-table-border-color: #{$table-border-color};
--quarto-scss-export-sidebar-glass-bg: #{$sidebar-glass-bg};
--quarto-scss-export-color-contrast-dark: #{$color-contrast-dark};
--quarto-scss-export-color-contrast-light: #{$color-contrast-light};
--quarto-scss-export-blue-100: #{$blue-100};
--quarto-scss-export-blue-200: #{$blue-200};
--quarto-scss-export-blue-300: #{$blue-300};
--quarto-scss-export-blue-400: #{$blue-400};
--quarto-scss-export-blue-500: #{$blue-500};
--quarto-scss-export-blue-600: #{$blue-600};
--quarto-scss-export-blue-700: #{$blue-700};
--quarto-scss-export-blue-800: #{$blue-800};
--quarto-scss-export-blue-900: #{$blue-900};
--quarto-scss-export-indigo-100: #{$indigo-100};
--quarto-scss-export-indigo-200: #{$indigo-200};
--quarto-scss-export-indigo-300: #{$indigo-300};
--quarto-scss-export-indigo-400: #{$indigo-400};
--quarto-scss-export-indigo-500: #{$indigo-500};
--quarto-scss-export-indigo-600: #{$indigo-600};
--quarto-scss-export-indigo-700: #{$indigo-700};
--quarto-scss-export-indigo-800: #{$indigo-800};
--quarto-scss-export-indigo-900: #{$indigo-900};
--quarto-scss-export-purple-100: #{$purple-100};
--quarto-scss-export-purple-200: #{$purple-200};
--quarto-scss-export-purple-300: #{$purple-300};
--quarto-scss-export-purple-400: #{$purple-400};
--quarto-scss-export-purple-500: #{$purple-500};
--quarto-scss-export-purple-600: #{$purple-600};
--quarto-scss-export-purple-700: #{$purple-700};
--quarto-scss-export-purple-800: #{$purple-800};
--quarto-scss-export-purple-900: #{$purple-900};
--quarto-scss-export-pink-100: #{$pink-100};
--quarto-scss-export-pink-200: #{$pink-200};
--quarto-scss-export-pink-300: #{$pink-300};
--quarto-scss-export-pink-400: #{$pink-400};
--quarto-scss-export-pink-500: #{$pink-500};
--quarto-scss-export-pink-600: #{$pink-600};
--quarto-scss-export-pink-700: #{$pink-700};
--quarto-scss-export-pink-800: #{$pink-800};
--quarto-scss-export-pink-900: #{$pink-900};
--quarto-scss-export-red-100: #{$red-100};
--quarto-scss-export-red-200: #{$red-200};
--quarto-scss-export-red-300: #{$red-300};
--quarto-scss-export-red-400: #{$red-400};
--quarto-scss-export-red-500: #{$red-500};
--quarto-scss-export-red-600: #{$red-600};
--quarto-scss-export-red-700: #{$red-700};
--quarto-scss-export-red-800: #{$red-800};
--quarto-scss-export-red-900: #{$red-900};
--quarto-scss-export-orange-100: #{$orange-100};
--quarto-scss-export-orange-200: #{$orange-200};
--quarto-scss-export-orange-300: #{$orange-300};
--quarto-scss-export-orange-400: #{$orange-400};
--quarto-scss-export-orange-500: #{$orange-500};
--quarto-scss-export-orange-600: #{$orange-600};
--quarto-scss-export-orange-700: #{$orange-700};
--quarto-scss-export-orange-800: #{$orange-800};
--quarto-scss-export-orange-900: #{$orange-900};
--quarto-scss-export-yellow-100: #{$yellow-100};
--quarto-scss-export-yellow-200: #{$yellow-200};
--quarto-scss-export-yellow-300: #{$yellow-300};
--quarto-scss-export-yellow-400: #{$yellow-400};
--quarto-scss-export-yellow-500: #{$yellow-500};
--quarto-scss-export-yellow-600: #{$yellow-600};
--quarto-scss-export-yellow-700: #{$yellow-700};
--quarto-scss-export-yellow-800: #{$yellow-800};
--quarto-scss-export-yellow-900: #{$yellow-900};
--quarto-scss-export-green-100: #{$green-100};
--quarto-scss-export-green-200: #{$green-200};
--quarto-scss-export-green-300: #{$green-300};
--quarto-scss-export-green-400: #{$green-400};
--quarto-scss-export-green-500: #{$green-500};
--quarto-scss-export-green-600: #{$green-600};
--quarto-scss-export-green-700: #{$green-700};
--quarto-scss-export-green-800: #{$green-800};
--quarto-scss-export-green-900: #{$green-900};
--quarto-scss-export-teal-100: #{$teal-100};
--quarto-scss-export-teal-200: #{$teal-200};
--quarto-scss-export-teal-300: #{$teal-300};
--quarto-scss-export-teal-400: #{$teal-400};
--quarto-scss-export-teal-500: #{$teal-500};
--quarto-scss-export-teal-600: #{$teal-600};
--quarto-scss-export-teal-700: #{$teal-700};
--quarto-scss-export-teal-800: #{$teal-800};
--quarto-scss-export-teal-900: #{$teal-900};
--quarto-scss-export-cyan-100: #{$cyan-100};
--quarto-scss-export-cyan-200: #{$cyan-200};
--quarto-scss-export-cyan-300: #{$cyan-300};
--quarto-scss-export-cyan-400: #{$cyan-400};
--quarto-scss-export-cyan-500: #{$cyan-500};
--quarto-scss-export-cyan-600: #{$cyan-600};
--quarto-scss-export-cyan-700: #{$cyan-700};
--quarto-scss-export-cyan-800: #{$cyan-800};
--quarto-scss-export-cyan-900: #{$cyan-900};
--quarto-scss-export-default: #{$default};
--quarto-scss-export-primary-text-emphasis: #{$primary-text-emphasis};
--quarto-scss-export-secondary-text-emphasis: #{$secondary-text-emphasis};
--quarto-scss-export-success-text-emphasis: #{$success-text-emphasis};
--quarto-scss-export-info-text-emphasis: #{$info-text-emphasis};
--quarto-scss-export-warning-text-emphasis: #{$warning-text-emphasis};
--quarto-scss-export-danger-text-emphasis: #{$danger-text-emphasis};
--quarto-scss-export-light-text-emphasis: #{$light-text-emphasis};
--quarto-scss-export-dark-text-emphasis: #{$dark-text-emphasis};
--quarto-scss-export-primary-bg-subtle: #{$primary-bg-subtle};
--quarto-scss-export-secondary-bg-subtle: #{$secondary-bg-subtle};
--quarto-scss-export-success-bg-subtle: #{$success-bg-subtle};
--quarto-scss-export-info-bg-subtle: #{$info-bg-subtle};
--quarto-scss-export-warning-bg-subtle: #{$warning-bg-subtle};
--quarto-scss-export-danger-bg-subtle: #{$danger-bg-subtle};
--quarto-scss-export-light-bg-subtle: #{$light-bg-subtle};
--quarto-scss-export-dark-bg-subtle: #{$dark-bg-subtle};
--quarto-scss-export-primary-border-subtle: #{$primary-border-subtle};
--quarto-scss-export-secondary-border-subtle: #{$secondary-border-subtle};
--quarto-scss-export-success-border-subtle: #{$success-border-subtle};
--quarto-scss-export-info-border-subtle: #{$info-border-subtle};
--quarto-scss-export-warning-border-subtle: #{$warning-border-subtle};
--quarto-scss-export-danger-border-subtle: #{$danger-border-subtle};
--quarto-scss-export-light-border-subtle: #{$light-border-subtle};
--quarto-scss-export-dark-border-subtle: #{$dark-border-subtle};
--quarto-scss-export-body-text-align: #{$body-text-align};
--quarto-scss-export-body-bg: #{$body-bg};
--quarto-scss-export-body-secondary-color: #{$body-secondary-color};
--quarto-scss-export-body-secondary-bg: #{$body-secondary-bg};
--quarto-scss-export-body-tertiary-color: #{$body-tertiary-color};
--quarto-scss-export-body-tertiary-bg: #{$body-tertiary-bg};
--quarto-scss-export-body-emphasis-color: #{$body-emphasis-color};
--quarto-scss-export-link-hover-color: #{$link-hover-color};
--quarto-scss-export-link-hover-decoration: #{$link-hover-decoration};
--quarto-scss-export-border-color-translucent: #{$border-color-translucent};
--quarto-scss-export-component-active-bg: #{$component-active-bg};
--quarto-scss-export-component-active-color: #{$component-active-color};
--quarto-scss-export-focus-ring-color: #{$focus-ring-color};
--quarto-scss-export-headings-font-family: #{$headings-font-family};
--quarto-scss-export-headings-font-style: #{$headings-font-style};
--quarto-scss-export-display-font-family: #{$display-font-family};
--quarto-scss-export-display-font-style: #{$display-font-style};
--quarto-scss-export-blockquote-footer-color: #{$blockquote-footer-color};
--quarto-scss-export-blockquote-border-color: #{$blockquote-border-color};
--quarto-scss-export-hr-bg-color: #{$hr-bg-color};
--quarto-scss-export-hr-height: #{$hr-height};
--quarto-scss-export-hr-border-color: #{$hr-border-color};
--quarto-scss-export-legend-font-weight: #{$legend-font-weight};
--quarto-scss-export-mark-bg: #{$mark-bg};
--quarto-scss-export-table-color: #{$table-color};
--quarto-scss-export-table-bg: #{$table-bg};
--quarto-scss-export-table-accent-bg: #{$table-accent-bg};
--quarto-scss-export-table-th-font-weight: #{$table-th-font-weight};
--quarto-scss-export-table-striped-color: #{$table-striped-color};
--quarto-scss-export-table-striped-bg: #{$table-striped-bg};
--quarto-scss-export-table-active-color: #{$table-active-color};
--quarto-scss-export-table-active-bg: #{$table-active-bg};
--quarto-scss-export-table-hover-color: #{$table-hover-color};
--quarto-scss-export-table-hover-bg: #{$table-hover-bg};
--quarto-scss-export-table-caption-color: #{$table-caption-color};
--quarto-scss-export-input-btn-font-family: #{$input-btn-font-family};
--quarto-scss-export-input-btn-focus-color: #{$input-btn-focus-color};
--quarto-scss-export-btn-color: #{$btn-color};
--quarto-scss-export-btn-font-family: #{$btn-font-family};
--quarto-scss-export-btn-white-space: #{$btn-white-space};
--quarto-scss-export-btn-link-color: #{$btn-link-color};
--quarto-scss-export-btn-link-hover-color: #{$btn-link-hover-color};
--quarto-scss-export-btn-link-disabled-color: #{$btn-link-disabled-color};
--quarto-scss-export-form-text-font-style: #{$form-text-font-style};
--quarto-scss-export-form-text-font-weight: #{$form-text-font-weight};
--quarto-scss-export-form-text-color: #{$form-text-color};
--quarto-scss-export-form-label-font-size: #{$form-label-font-size};
--quarto-scss-export-form-label-font-style: #{$form-label-font-style};
--quarto-scss-export-form-label-font-weight: #{$form-label-font-weight};
--quarto-scss-export-form-label-color: #{$form-label-color};
--quarto-scss-export-input-font-family: #{$input-font-family};
--quarto-scss-export-input-disabled-color: #{$input-disabled-color};
--quarto-scss-export-input-disabled-bg: #{$input-disabled-bg};
--quarto-scss-export-input-disabled-border-color: #{$input-disabled-border-color};
--quarto-scss-export-input-color: #{$input-color};
--quarto-scss-export-input-focus-bg: #{$input-focus-bg};
--quarto-scss-export-input-focus-border-color: #{$input-focus-border-color};
--quarto-scss-export-input-focus-color: #{$input-focus-color};
--quarto-scss-export-input-placeholder-color: #{$input-placeholder-color};
--quarto-scss-export-input-plaintext-color: #{$input-plaintext-color};
--quarto-scss-export-form-check-label-color: #{$form-check-label-color};
--quarto-scss-export-form-check-transition: #{$form-check-transition};
--quarto-scss-export-form-check-input-bg: #{$form-check-input-bg};
--quarto-scss-export-form-check-input-focus-border: #{$form-check-input-focus-border};
--quarto-scss-export-form-check-input-checked-color: #{$form-check-input-checked-color};
--quarto-scss-export-form-check-input-checked-bg-color: #{$form-check-input-checked-bg-color};
--quarto-scss-export-form-check-input-checked-border-color: #{$form-check-input-checked-border-color};
--quarto-scss-export-form-check-input-indeterminate-color: #{$form-check-input-indeterminate-color};
--quarto-scss-export-form-check-input-indeterminate-bg-color: #{$form-check-input-indeterminate-bg-color};
--quarto-scss-export-form-check-input-indeterminate-border-color: #{$form-check-input-indeterminate-border-color};
--quarto-scss-export-form-switch-color: #{$form-switch-color};
--quarto-scss-export-form-switch-focus-color: #{$form-switch-focus-color};
--quarto-scss-export-form-switch-checked-color: #{$form-switch-checked-color};
--quarto-scss-export-input-group-addon-color: #{$input-group-addon-color};
--quarto-scss-export-input-group-addon-bg: #{$input-group-addon-bg};
--quarto-scss-export-input-group-addon-border-color: #{$input-group-addon-border-color};
--quarto-scss-export-form-select-font-family: #{$form-select-font-family};
--quarto-scss-export-form-select-color: #{$form-select-color};
--quarto-scss-export-form-select-bg: #{$form-select-bg};
--quarto-scss-export-form-select-disabled-color: #{$form-select-disabled-color};
--quarto-scss-export-form-select-disabled-bg: #{$form-select-disabled-bg};
--quarto-scss-export-form-select-disabled-border-color: #{$form-select-disabled-border-color};
--quarto-scss-export-form-select-indicator-color: #{$form-select-indicator-color};
--quarto-scss-export-form-select-border-color: #{$form-select-border-color};
--quarto-scss-export-form-select-focus-border-color: #{$form-select-focus-border-color};
--quarto-scss-export-form-range-track-bg: #{$form-range-track-bg};
--quarto-scss-export-form-range-thumb-bg: #{$form-range-thumb-bg};
--quarto-scss-export-form-range-thumb-active-bg: #{$form-range-thumb-active-bg};
--quarto-scss-export-form-range-thumb-disabled-bg: #{$form-range-thumb-disabled-bg};
--quarto-scss-export-form-file-button-color: #{$form-file-button-color};
--quarto-scss-export-form-file-button-bg: #{$form-file-button-bg};
--quarto-scss-export-form-file-button-hover-bg: #{$form-file-button-hover-bg};
--quarto-scss-export-form-floating-label-disabled-color: #{$form-floating-label-disabled-color};
--quarto-scss-export-form-feedback-font-style: #{$form-feedback-font-style};
--quarto-scss-export-form-feedback-valid-color: #{$form-feedback-valid-color};
--quarto-scss-export-form-feedback-invalid-color: #{$form-feedback-invalid-color};
--quarto-scss-export-form-feedback-icon-valid-color: #{$form-feedback-icon-valid-color};
--quarto-scss-export-form-feedback-icon-invalid-color: #{$form-feedback-icon-invalid-color};
--quarto-scss-export-form-valid-color: #{$form-valid-color};
--quarto-scss-export-form-valid-border-color: #{$form-valid-border-color};
--quarto-scss-export-form-invalid-color: #{$form-invalid-color};
--quarto-scss-export-form-invalid-border-color: #{$form-invalid-border-color};
--quarto-scss-export-nav-link-font-size: #{$nav-link-font-size};
--quarto-scss-export-nav-link-font-weight: #{$nav-link-font-weight};
--quarto-scss-export-nav-link-color: #{$nav-link-color};
--quarto-scss-export-nav-link-hover-color: #{$nav-link-hover-color};
--quarto-scss-export-nav-link-disabled-color: #{$nav-link-disabled-color};
--quarto-scss-export-nav-tabs-border-color: #{$nav-tabs-border-color};
--quarto-scss-export-nav-tabs-link-hover-border-color: #{$nav-tabs-link-hover-border-color};
--quarto-scss-export-nav-tabs-link-active-color: #{$nav-tabs-link-active-color};
--quarto-scss-export-nav-tabs-link-active-bg: #{$nav-tabs-link-active-bg};
--quarto-scss-export-nav-pills-link-active-bg: #{$nav-pills-link-active-bg};
--quarto-scss-export-nav-pills-link-active-color: #{$nav-pills-link-active-color};
--quarto-scss-export-nav-underline-link-active-color: #{$nav-underline-link-active-color};
--quarto-scss-export-navbar-padding-x: #{$navbar-padding-x};
--quarto-scss-export-navbar-light-contrast: #{$navbar-light-contrast};
--quarto-scss-export-navbar-dark-contrast: #{$navbar-dark-contrast};
--quarto-scss-export-navbar-light-icon-color: #{$navbar-light-icon-color};
--quarto-scss-export-navbar-dark-icon-color: #{$navbar-dark-icon-color};
--quarto-scss-export-dropdown-color: #{$dropdown-color};
--quarto-scss-export-dropdown-bg: #{$dropdown-bg};
--quarto-scss-export-dropdown-border-color: #{$dropdown-border-color};
--quarto-scss-export-dropdown-divider-bg: #{$dropdown-divider-bg};
--quarto-scss-export-dropdown-link-color: #{$dropdown-link-color};
--quarto-scss-export-dropdown-link-hover-color: #{$dropdown-link-hover-color};
--quarto-scss-export-dropdown-link-hover-bg: #{$dropdown-link-hover-bg};
--quarto-scss-export-dropdown-link-active-bg: #{$dropdown-link-active-bg};
--quarto-scss-export-dropdown-link-active-color: #{$dropdown-link-active-color};
--quarto-scss-export-dropdown-link-disabled-color: #{$dropdown-link-disabled-color};
--quarto-scss-export-dropdown-header-color: #{$dropdown-header-color};
--quarto-scss-export-dropdown-dark-color: #{$dropdown-dark-color};
--quarto-scss-export-dropdown-dark-bg: #{$dropdown-dark-bg};
--quarto-scss-export-dropdown-dark-border-color: #{$dropdown-dark-border-color};
--quarto-scss-export-dropdown-dark-divider-bg: #{$dropdown-dark-divider-bg};
--quarto-scss-export-dropdown-dark-box-shadow: #{$dropdown-dark-box-shadow};
--quarto-scss-export-dropdown-dark-link-color: #{$dropdown-dark-link-color};
--quarto-scss-export-dropdown-dark-link-hover-color: #{$dropdown-dark-link-hover-color};
--quarto-scss-export-dropdown-dark-link-hover-bg: #{$dropdown-dark-link-hover-bg};
--quarto-scss-export-dropdown-dark-link-active-color: #{$dropdown-dark-link-active-color};
--quarto-scss-export-dropdown-dark-link-active-bg: #{$dropdown-dark-link-active-bg};
--quarto-scss-export-dropdown-dark-link-disabled-color: #{$dropdown-dark-link-disabled-color};
--quarto-scss-export-dropdown-dark-header-color: #{$dropdown-dark-header-color};
--quarto-scss-export-pagination-color: #{$pagination-color};
--quarto-scss-export-pagination-bg: #{$pagination-bg};
--quarto-scss-export-pagination-border-color: #{$pagination-border-color};
--quarto-scss-export-pagination-focus-color: #{$pagination-focus-color};
--quarto-scss-export-pagination-focus-bg: #{$pagination-focus-bg};
--quarto-scss-export-pagination-hover-color: #{$pagination-hover-color};
--quarto-scss-export-pagination-hover-bg: #{$pagination-hover-bg};
--quarto-scss-export-pagination-hover-border-color: #{$pagination-hover-border-color};
--quarto-scss-export-pagination-active-color: #{$pagination-active-color};
--quarto-scss-export-pagination-active-bg: #{$pagination-active-bg};
--quarto-scss-export-pagination-active-border-color: #{$pagination-active-border-color};
--quarto-scss-export-pagination-disabled-color: #{$pagination-disabled-color};
--quarto-scss-export-pagination-disabled-bg: #{$pagination-disabled-bg};
--quarto-scss-export-pagination-disabled-border-color: #{$pagination-disabled-border-color};
--quarto-scss-export-card-title-color: #{$card-title-color};
--quarto-scss-export-card-subtitle-color: #{$card-subtitle-color};
--quarto-scss-export-card-border-color: #{$card-border-color};
--quarto-scss-export-card-box-shadow: #{$card-box-shadow};
--quarto-scss-export-card-cap-color: #{$card-cap-color};
--quarto-scss-export-card-height: #{$card-height};
--quarto-scss-export-card-color: #{$card-color};
--quarto-scss-export-card-bg: #{$card-bg};
--quarto-scss-export-accordion-color: #{$accordion-color};
--quarto-scss-export-accordion-bg: #{$accordion-bg};
--quarto-scss-export-accordion-border-color: #{$accordion-border-color};
--quarto-scss-export-accordion-button-color: #{$accordion-button-color};
--quarto-scss-export-accordion-button-bg: #{$accordion-button-bg};
--quarto-scss-export-accordion-button-active-bg: #{$accordion-button-active-bg};
--quarto-scss-export-accordion-button-active-color: #{$accordion-button-active-color};
--quarto-scss-export-accordion-button-focus-border-color: #{$accordion-button-focus-border-color};
--quarto-scss-export-accordion-icon-color: #{$accordion-icon-color};
--quarto-scss-export-accordion-icon-active-color: #{$accordion-icon-active-color};
--quarto-scss-export-tooltip-color: #{$tooltip-color};
--quarto-scss-export-tooltip-bg: #{$tooltip-bg};
--quarto-scss-export-tooltip-margin: #{$tooltip-margin};
--quarto-scss-export-tooltip-arrow-color: #{$tooltip-arrow-color};
--quarto-scss-export-form-feedback-tooltip-line-height: #{$form-feedback-tooltip-line-height};
--quarto-scss-export-popover-border-color: #{$popover-border-color};
--quarto-scss-export-popover-header-bg: #{$popover-header-bg};
--quarto-scss-export-popover-body-color: #{$popover-body-color};
--quarto-scss-export-popover-arrow-color: #{$popover-arrow-color};
--quarto-scss-export-popover-arrow-outer-color: #{$popover-arrow-outer-color};
--quarto-scss-export-toast-color: #{$toast-color};
--quarto-scss-export-toast-background-color: #{$toast-background-color};
--quarto-scss-export-toast-border-color: #{$toast-border-color};
--quarto-scss-export-toast-header-color: #{$toast-header-color};
--quarto-scss-export-toast-header-background-color: #{$toast-header-background-color};
--quarto-scss-export-toast-header-border-color: #{$toast-header-border-color};
--quarto-scss-export-badge-color: #{$badge-color};
--quarto-scss-export-modal-content-color: #{$modal-content-color};
--quarto-scss-export-modal-content-bg: #{$modal-content-bg};
--quarto-scss-export-modal-content-border-color: #{$modal-content-border-color};
--quarto-scss-export-modal-backdrop-bg: #{$modal-backdrop-bg};
--quarto-scss-export-modal-header-border-color: #{$modal-header-border-color};
--quarto-scss-export-modal-footer-bg: #{$modal-footer-bg};
--quarto-scss-export-modal-footer-border-color: #{$modal-footer-border-color};
--quarto-scss-export-progress-bg: #{$progress-bg};
--quarto-scss-export-progress-bar-color: #{$progress-bar-color};
--quarto-scss-export-progress-bar-bg: #{$progress-bar-bg};
--quarto-scss-export-list-group-color: #{$list-group-color};
--quarto-scss-export-list-group-bg: #{$list-group-bg};
--quarto-scss-export-list-group-border-color: #{$list-group-border-color};
--quarto-scss-export-list-group-hover-bg: #{$list-group-hover-bg};
--quarto-scss-export-list-group-active-bg: #{$list-group-active-bg};
--quarto-scss-export-list-group-active-color: #{$list-group-active-color};
--quarto-scss-export-list-group-active-border-color: #{$list-group-active-border-color};
--quarto-scss-export-list-group-disabled-color: #{$list-group-disabled-color};
--quarto-scss-export-list-group-disabled-bg: #{$list-group-disabled-bg};
--quarto-scss-export-list-group-action-color: #{$list-group-action-color};
--quarto-scss-export-list-group-action-hover-color: #{$list-group-action-hover-color};
--quarto-scss-export-list-group-action-active-color: #{$list-group-action-active-color};
--quarto-scss-export-list-group-action-active-bg: #{$list-group-action-active-bg};
--quarto-scss-export-thumbnail-bg: #{$thumbnail-bg};
--quarto-scss-export-thumbnail-border-color: #{$thumbnail-border-color};
--quarto-scss-export-figure-caption-color: #{$figure-caption-color};
--quarto-scss-export-breadcrumb-font-size: #{$breadcrumb-font-size};
--quarto-scss-export-breadcrumb-bg: #{$breadcrumb-bg};
--quarto-scss-export-breadcrumb-divider-color: #{$breadcrumb-divider-color};
--quarto-scss-export-breadcrumb-active-color: #{$breadcrumb-active-color};
--quarto-scss-export-breadcrumb-border-radius: #{$breadcrumb-border-radius};
--quarto-scss-export-carousel-control-color: #{$carousel-control-color};
--quarto-scss-export-carousel-indicator-active-bg: #{$carousel-indicator-active-bg};
--quarto-scss-export-carousel-caption-color: #{$carousel-caption-color};
--quarto-scss-export-carousel-dark-indicator-active-bg: #{$carousel-dark-indicator-active-bg};
--quarto-scss-export-carousel-dark-caption-color: #{$carousel-dark-caption-color};
--quarto-scss-export-btn-close-color: #{$btn-close-color};
--quarto-scss-export-offcanvas-border-color: #{$offcanvas-border-color};
--quarto-scss-export-offcanvas-bg-color: #{$offcanvas-bg-color};
--quarto-scss-export-offcanvas-color: #{$offcanvas-color};
--quarto-scss-export-offcanvas-backdrop-bg: #{$offcanvas-backdrop-bg};
--quarto-scss-export-code-color-dark: #{$code-color-dark};
--quarto-scss-export-kbd-color: #{$kbd-color};
--quarto-scss-export-kbd-bg: #{$kbd-bg};
--quarto-scss-export-nested-kbd-font-weight: #{$nested-kbd-font-weight};
--quarto-scss-export-pre-bg: #{$pre-bg};
--quarto-scss-export-pre-color: #{$pre-color};
--quarto-scss-export-bslib-sidebar-bg: #{$bslib-sidebar-bg};
--quarto-scss-export-bslib-sidebar-toggle-bg: #{$bslib-sidebar-toggle-bg};
--quarto-scss-export-bslib-page-sidebar-title-bg: #{$bslib-page-sidebar-title-bg};
--quarto-scss-export-bslib-page-sidebar-title-color: #{$bslib-page-sidebar-title-color};
--quarto-scss-export-sidebar-color: #{$sidebar-color};
--quarto-scss-export-sidebar-hover-color: #{$sidebar-hover-color};
--quarto-scss-export-sidebar-disabled-color: #{$sidebar-disabled-color};
--quarto-scss-export-valuebox-bg-primary: #{$valuebox-bg-primary};
--quarto-scss-export-valuebox-bg-secondary: #{$valuebox-bg-secondary};
--quarto-scss-export-valuebox-bg-success: #{$valuebox-bg-success};
--quarto-scss-export-valuebox-bg-info: #{$valuebox-bg-info};
--quarto-scss-export-valuebox-bg-warning: #{$valuebox-bg-warning};
--quarto-scss-export-valuebox-bg-danger: #{$valuebox-bg-danger};
--quarto-scss-export-valuebox-bg-light: #{$valuebox-bg-light};
--quarto-scss-export-valuebox-bg-dark: #{$valuebox-bg-dark};
--quarto-scss-export-mermaid-bg-color: #{$mermaid-bg-color};
--quarto-scss-export-mermaid-edge-color: #{$mermaid-edge-color};
--quarto-scss-export-mermaid-node-fg-color: #{$mermaid-node-fg-color};
--quarto-scss-export-mermaid-fg-color: #{$mermaid-fg-color};
--quarto-scss-export-mermaid-fg-color--lighter: #{$mermaid-fg-color--lighter};
--quarto-scss-export-mermaid-fg-color--lightest: #{$mermaid-fg-color--lightest};
--quarto-scss-export-mermaid-label-bg-color: #{$mermaid-label-bg-color};
--quarto-scss-export-mermaid-label-fg-color: #{$mermaid-label-fg-color};
--quarto-scss-export-mermaid-node-bg-color: #{$mermaid-node-bg-color};
--quarto-scss-export-code-block-border-left-color: #{$code-block-border-left-color};
--quarto-scss-export-callout-color-note: #{$callout-color-note};
--quarto-scss-export-callout-color-tip: #{$callout-color-tip};
--quarto-scss-export-callout-color-important: #{$callout-color-important};
--quarto-scss-export-callout-color-caution: #{$callout-color-caution};
--quarto-scss-export-callout-color-warning: #{$callout-color-warning};
}

Binary file not shown.

1
.quarto/xref/67271bd5 Normal file
View file

@ -0,0 +1 @@
{"entries":[],"headings":[]}

8
.quarto/xref/INDEX Normal file
View file

@ -0,0 +1,8 @@
{
"index.qmd": {
"index.html": "d99f7c3a"
},
"about.qmd": {
"about.html": "67271bd5"
}
}

1
.quarto/xref/d99f7c3a Normal file
View file

@ -0,0 +1 @@
{"entries":[],"headings":[]}

21
_quarto.yml Normal file
View file

@ -0,0 +1,21 @@
project:
type: website
website:
title: "VIRTUOS WORLD Documentation"
navbar:
left:
- href: index.qmd
text: Home
- about.qmd
format:
html:
theme:
- cosmo
- brand
css: styles.css
toc: true

545
_site/about.html Normal file
View file

@ -0,0 +1,545 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.7.21">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>About VIRTUOS WORLD Documentation</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle;
}
</style>
<script src="site_libs/quarto-nav/quarto-nav.js"></script>
<script src="site_libs/quarto-nav/headroom.min.js"></script>
<script src="site_libs/clipboard/clipboard.min.js"></script>
<script src="site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="site_libs/quarto-search/fuse.min.js"></script>
<script src="site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="./">
<script src="site_libs/quarto-html/quarto.js" type="module"></script>
<script src="site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
<script src="site_libs/quarto-html/popper.min.js"></script>
<script src="site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="site_libs/quarto-html/anchor.min.js"></script>
<link href="site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="site_libs/quarto-html/quarto-syntax-highlighting-b2bd955b7378b94aa8c2ba4fafa553c9.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="site_libs/bootstrap/bootstrap.min.js"></script>
<link href="site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="site_libs/bootstrap/bootstrap-0813dcf0c0fbb2745f2010876f3afe2b.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,
"collapse-after": 3,
"panel-placement": "end",
"type": "overlay",
"limit": 50,
"keyboard-shortcut": [
"f",
"/",
"s"
],
"show-item-context": false,
"language": {
"search-no-results-text": "No results",
"search-matching-documents-text": "matching documents",
"search-copy-link-title": "Copy link to search",
"search-hide-matches-text": "Hide additional matches",
"search-more-match-text": "more match in this document",
"search-more-matches-text": "more matches in this document",
"search-clear-button-title": "Clear",
"search-text-placeholder": "",
"search-detached-cancel-button-title": "Cancel",
"search-submit-button-title": "Submit",
"search-label": "Search"
}
}</script>
<link rel="stylesheet" href="styles.css">
</head>
<body class="nav-fixed quarto-light">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top">
<nav class="navbar navbar-expand-lg " data-bs-theme="dark">
<div class="navbar-container container-fluid">
<div class="navbar-brand-container mx-auto">
<a class="navbar-brand" href="./index.html">
<span class="navbar-title">VIRTUOS WORLD Documentation</span>
</a>
</div>
<div id="quarto-search" class="" title="Search"></div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Toggle navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav navbar-nav-scroll me-auto">
<li class="nav-item">
<a class="nav-link" href="./index.html">
<span class="menu-text">Home</span></a>
</li>
<li class="nav-item">
<a class="nav-link active" href="./about.html" aria-current="page">
<span class="menu-text">About</span></a>
</li>
</ul>
</div> <!-- /navcollapse -->
<div class="quarto-navbar-tools">
</div>
</div> <!-- /container-fluid -->
</nav>
</header>
<!-- content -->
<div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
<!-- sidebar -->
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar zindex-bottom">
</div>
<!-- main -->
<main class="content" id="quarto-document-content">
<header id="title-block-header" class="quarto-title-block default">
<div class="quarto-title">
<h1 class="title">About</h1>
</div>
<div class="quarto-title-meta">
</div>
</header>
<p>About this site</p>
</main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
placement: 'right',
icon: icon
};
anchorJS.add('.anchored');
const isCodeAnnotation = (el) => {
for (const clz of el.classList) {
if (clz.startsWith('code-annotation-')) {
return true;
}
}
return false;
}
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copied!");
let tooltip;
if (window.bootstrap) {
button.setAttribute("data-bs-toggle", "tooltip");
button.setAttribute("data-bs-placement", "left");
button.setAttribute("data-bs-title", "Copied!");
tooltip = new bootstrap.Tooltip(button,
{ trigger: "manual",
customClass: "code-copy-button-tooltip",
offset: [0, -8]});
tooltip.show();
}
setTimeout(function() {
if (tooltip) {
tooltip.hide();
button.removeAttribute("data-bs-title");
button.removeAttribute("data-bs-toggle");
button.removeAttribute("data-bs-placement");
}
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp('/' + window.location.host + '/');
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
// undo the damage that might have been done by quarto-nav.js in the case of
// links that we want to consider external
if (link.dataset.originalHref !== undefined) {
link.href = link.dataset.originalHref;
}
}
}
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
const config = {
allowHTML: true,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'quarto',
placement: 'bottom-start',
};
if (contentFn) {
config.content = contentFn;
}
if (onTriggerFn) {
config.onTrigger = onTriggerFn;
}
if (onUntriggerFn) {
config.onUntrigger = onUntriggerFn;
}
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
// use id or data attribute instead here
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note) {
return note.innerHTML;
} else {
return "";
}
});
}
const xrefs = window.document.querySelectorAll('a.quarto-xref');
const processXRef = (id, note) => {
// Strip column container classes
const stripColumnClz = (el) => {
el.classList.remove("page-full", "page-columns");
if (el.children) {
for (const child of el.children) {
stripColumnClz(child);
}
}
}
stripColumnClz(note)
if (id === null || id.startsWith('sec-')) {
// Special case sections, only their first couple elements
const container = document.createElement("div");
if (note.children && note.children.length > 2) {
container.appendChild(note.children[0].cloneNode(true));
for (let i = 1; i < note.children.length; i++) {
const child = note.children[i];
if (child.tagName === "P" && child.innerText === "") {
continue;
} else {
container.appendChild(child.cloneNode(true));
break;
}
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(container);
}
return container.innerHTML
} else {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
return note.innerHTML;
}
} else {
// Remove any anchor links if they are present
const anchorLink = note.querySelector('a.anchorjs-link');
if (anchorLink) {
anchorLink.remove();
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
return note.innerHTML;
}
}
}
for (var i=0; i<xrefs.length; i++) {
const xref = xrefs[i];
tippyHover(xref, undefined, function(instance) {
instance.disable();
let url = xref.getAttribute('href');
let hash = undefined;
if (url.startsWith('#')) {
hash = url;
} else {
try { hash = new URL(url).hash; } catch {}
}
if (hash) {
const id = hash.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note !== null) {
try {
const html = processXRef(id, note.cloneNode(true));
instance.setContent(html);
} finally {
instance.enable();
instance.show();
}
} else {
// See if we can fetch this
fetch(url.split('#')[0])
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.getElementById(id);
if (note !== null) {
const html = processXRef(id, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
} else {
// See if we can fetch a full url (with no hash to target)
// This is a special case and we should probably do some content thinning / targeting
fetch(url)
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.querySelector('main.content');
if (note !== null) {
// This should only happen for chapter cross references
// (since there is no id in the URL)
// remove the first header
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
note.children[0].remove();
}
const html = processXRef(null, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
}, function(instance) {
});
}
let selectedAnnoteEl;
const selectorForAnnotation = ( cell, annotation) => {
let cellAttr = 'data-code-cell="' + cell + '"';
let lineAttr = 'data-code-annotation="' + annotation + '"';
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
return selector;
}
const selectCodeLines = (annoteEl) => {
const doc = window.document;
const targetCell = annoteEl.getAttribute("data-target-cell");
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
const lineIds = lines.map((line) => {
return targetCell + "-" + line;
})
let top = null;
let height = null;
let parent = null;
if (lineIds.length > 0) {
//compute the position of the single el (top and bottom and make a div)
const el = window.document.getElementById(lineIds[0]);
top = el.offsetTop;
height = el.offsetHeight;
parent = el.parentElement.parentElement;
if (lineIds.length > 1) {
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
height = bottom - top;
}
if (top !== null && height !== null && parent !== null) {
// cook up a div (if necessary) and position it
let div = window.document.getElementById("code-annotation-line-highlight");
if (div === null) {
div = window.document.createElement("div");
div.setAttribute("id", "code-annotation-line-highlight");
div.style.position = 'absolute';
parent.appendChild(div);
}
div.style.top = top - 2 + "px";
div.style.height = height + 4 + "px";
div.style.left = 0;
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
if (gutterDiv === null) {
gutterDiv = window.document.createElement("div");
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
gutterDiv.style.position = 'absolute';
const codeCell = window.document.getElementById(targetCell);
const gutter = codeCell.querySelector('.code-annotation-gutter');
gutter.appendChild(gutterDiv);
}
gutterDiv.style.top = top - 2 + "px";
gutterDiv.style.height = height + 4 + "px";
}
selectedAnnoteEl = annoteEl;
}
};
const unselectCodeLines = () => {
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
elementsIds.forEach((elId) => {
const div = window.document.getElementById(elId);
if (div) {
div.remove();
}
});
selectedAnnoteEl = undefined;
};
// Handle positioning of the toggle
window.addEventListener(
"resize",
throttle(() => {
elRect = undefined;
if (selectedAnnoteEl) {
selectCodeLines(selectedAnnoteEl);
}
}, 10)
);
function throttle(fn, ms) {
let throttle = false;
let timer;
return (...args) => {
if(!throttle) { // first call gets through
fn.apply(this, args);
throttle = true;
} else { // all the others get throttled
if(timer) clearTimeout(timer); // cancel #2
timer = setTimeout(() => {
fn.apply(this, args);
timer = throttle = false;
}, ms);
}
};
}
// Attach click handler to the DT
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
for (const annoteDlNode of annoteDls) {
annoteDlNode.addEventListener('click', (event) => {
const clickedEl = event.target;
if (clickedEl !== selectedAnnoteEl) {
unselectCodeLines();
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
if (activeEl) {
activeEl.classList.remove('code-annotation-active');
}
selectCodeLines(clickedEl);
clickedEl.classList.add('code-annotation-active');
} else {
// Unselect the line
unselectCodeLines();
clickedEl.classList.remove('code-annotation-active');
}
});
}
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
const cites = parentEl.dataset.cites;
if (cites) {
return {
el,
cites: cites.split(' ')
};
} else {
return findCites(el.parentElement)
}
} else {
return undefined;
}
};
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const citeInfo = findCites(ref);
if (citeInfo) {
tippyHover(citeInfo.el, function() {
var popup = window.document.createElement('div');
citeInfo.cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
}
});
</script>
</div> <!-- /content -->
</body></html>

546
_site/index.html Normal file
View file

@ -0,0 +1,546 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.7.21">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>VIRTUOS WORLD Documentation</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle;
}
</style>
<script src="site_libs/quarto-nav/quarto-nav.js"></script>
<script src="site_libs/quarto-nav/headroom.min.js"></script>
<script src="site_libs/clipboard/clipboard.min.js"></script>
<script src="site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="site_libs/quarto-search/fuse.min.js"></script>
<script src="site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="./">
<script src="site_libs/quarto-html/quarto.js" type="module"></script>
<script src="site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
<script src="site_libs/quarto-html/popper.min.js"></script>
<script src="site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="site_libs/quarto-html/anchor.min.js"></script>
<link href="site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="site_libs/quarto-html/quarto-syntax-highlighting-b2bd955b7378b94aa8c2ba4fafa553c9.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="site_libs/bootstrap/bootstrap.min.js"></script>
<link href="site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="site_libs/bootstrap/bootstrap-0813dcf0c0fbb2745f2010876f3afe2b.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,
"collapse-after": 3,
"panel-placement": "end",
"type": "overlay",
"limit": 50,
"keyboard-shortcut": [
"f",
"/",
"s"
],
"show-item-context": false,
"language": {
"search-no-results-text": "No results",
"search-matching-documents-text": "matching documents",
"search-copy-link-title": "Copy link to search",
"search-hide-matches-text": "Hide additional matches",
"search-more-match-text": "more match in this document",
"search-more-matches-text": "more matches in this document",
"search-clear-button-title": "Clear",
"search-text-placeholder": "",
"search-detached-cancel-button-title": "Cancel",
"search-submit-button-title": "Submit",
"search-label": "Search"
}
}</script>
<link rel="stylesheet" href="styles.css">
</head>
<body class="nav-fixed quarto-light">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top">
<nav class="navbar navbar-expand-lg " data-bs-theme="dark">
<div class="navbar-container container-fluid">
<div class="navbar-brand-container mx-auto">
<a class="navbar-brand" href="./index.html">
<span class="navbar-title">VIRTUOS WORLD Documentation</span>
</a>
</div>
<div id="quarto-search" class="" title="Search"></div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Toggle navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav navbar-nav-scroll me-auto">
<li class="nav-item">
<a class="nav-link active" href="./index.html" aria-current="page">
<span class="menu-text">Home</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="./about.html">
<span class="menu-text">About</span></a>
</li>
</ul>
</div> <!-- /navcollapse -->
<div class="quarto-navbar-tools">
</div>
</div> <!-- /container-fluid -->
</nav>
</header>
<!-- content -->
<div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
<!-- sidebar -->
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar zindex-bottom">
</div>
<!-- main -->
<main class="content" id="quarto-document-content">
<header id="title-block-header" class="quarto-title-block default">
<div class="quarto-title">
<h1 class="title">VIRTUOS WORLD Documentation</h1>
</div>
<div class="quarto-title-meta">
</div>
</header>
<p>This is a Quarto website.</p>
<p>To learn more about Quarto websites visit <a href="https://quarto.org/docs/websites" class="uri">https://quarto.org/docs/websites</a>.</p>
</main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
placement: 'right',
icon: icon
};
anchorJS.add('.anchored');
const isCodeAnnotation = (el) => {
for (const clz of el.classList) {
if (clz.startsWith('code-annotation-')) {
return true;
}
}
return false;
}
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copied!");
let tooltip;
if (window.bootstrap) {
button.setAttribute("data-bs-toggle", "tooltip");
button.setAttribute("data-bs-placement", "left");
button.setAttribute("data-bs-title", "Copied!");
tooltip = new bootstrap.Tooltip(button,
{ trigger: "manual",
customClass: "code-copy-button-tooltip",
offset: [0, -8]});
tooltip.show();
}
setTimeout(function() {
if (tooltip) {
tooltip.hide();
button.removeAttribute("data-bs-title");
button.removeAttribute("data-bs-toggle");
button.removeAttribute("data-bs-placement");
}
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp('/' + window.location.host + '/');
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
// undo the damage that might have been done by quarto-nav.js in the case of
// links that we want to consider external
if (link.dataset.originalHref !== undefined) {
link.href = link.dataset.originalHref;
}
}
}
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
const config = {
allowHTML: true,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'quarto',
placement: 'bottom-start',
};
if (contentFn) {
config.content = contentFn;
}
if (onTriggerFn) {
config.onTrigger = onTriggerFn;
}
if (onUntriggerFn) {
config.onUntrigger = onUntriggerFn;
}
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
// use id or data attribute instead here
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note) {
return note.innerHTML;
} else {
return "";
}
});
}
const xrefs = window.document.querySelectorAll('a.quarto-xref');
const processXRef = (id, note) => {
// Strip column container classes
const stripColumnClz = (el) => {
el.classList.remove("page-full", "page-columns");
if (el.children) {
for (const child of el.children) {
stripColumnClz(child);
}
}
}
stripColumnClz(note)
if (id === null || id.startsWith('sec-')) {
// Special case sections, only their first couple elements
const container = document.createElement("div");
if (note.children && note.children.length > 2) {
container.appendChild(note.children[0].cloneNode(true));
for (let i = 1; i < note.children.length; i++) {
const child = note.children[i];
if (child.tagName === "P" && child.innerText === "") {
continue;
} else {
container.appendChild(child.cloneNode(true));
break;
}
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(container);
}
return container.innerHTML
} else {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
return note.innerHTML;
}
} else {
// Remove any anchor links if they are present
const anchorLink = note.querySelector('a.anchorjs-link');
if (anchorLink) {
anchorLink.remove();
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
return note.innerHTML;
}
}
}
for (var i=0; i<xrefs.length; i++) {
const xref = xrefs[i];
tippyHover(xref, undefined, function(instance) {
instance.disable();
let url = xref.getAttribute('href');
let hash = undefined;
if (url.startsWith('#')) {
hash = url;
} else {
try { hash = new URL(url).hash; } catch {}
}
if (hash) {
const id = hash.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note !== null) {
try {
const html = processXRef(id, note.cloneNode(true));
instance.setContent(html);
} finally {
instance.enable();
instance.show();
}
} else {
// See if we can fetch this
fetch(url.split('#')[0])
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.getElementById(id);
if (note !== null) {
const html = processXRef(id, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
} else {
// See if we can fetch a full url (with no hash to target)
// This is a special case and we should probably do some content thinning / targeting
fetch(url)
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.querySelector('main.content');
if (note !== null) {
// This should only happen for chapter cross references
// (since there is no id in the URL)
// remove the first header
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
note.children[0].remove();
}
const html = processXRef(null, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
}, function(instance) {
});
}
let selectedAnnoteEl;
const selectorForAnnotation = ( cell, annotation) => {
let cellAttr = 'data-code-cell="' + cell + '"';
let lineAttr = 'data-code-annotation="' + annotation + '"';
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
return selector;
}
const selectCodeLines = (annoteEl) => {
const doc = window.document;
const targetCell = annoteEl.getAttribute("data-target-cell");
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
const lineIds = lines.map((line) => {
return targetCell + "-" + line;
})
let top = null;
let height = null;
let parent = null;
if (lineIds.length > 0) {
//compute the position of the single el (top and bottom and make a div)
const el = window.document.getElementById(lineIds[0]);
top = el.offsetTop;
height = el.offsetHeight;
parent = el.parentElement.parentElement;
if (lineIds.length > 1) {
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
height = bottom - top;
}
if (top !== null && height !== null && parent !== null) {
// cook up a div (if necessary) and position it
let div = window.document.getElementById("code-annotation-line-highlight");
if (div === null) {
div = window.document.createElement("div");
div.setAttribute("id", "code-annotation-line-highlight");
div.style.position = 'absolute';
parent.appendChild(div);
}
div.style.top = top - 2 + "px";
div.style.height = height + 4 + "px";
div.style.left = 0;
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
if (gutterDiv === null) {
gutterDiv = window.document.createElement("div");
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
gutterDiv.style.position = 'absolute';
const codeCell = window.document.getElementById(targetCell);
const gutter = codeCell.querySelector('.code-annotation-gutter');
gutter.appendChild(gutterDiv);
}
gutterDiv.style.top = top - 2 + "px";
gutterDiv.style.height = height + 4 + "px";
}
selectedAnnoteEl = annoteEl;
}
};
const unselectCodeLines = () => {
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
elementsIds.forEach((elId) => {
const div = window.document.getElementById(elId);
if (div) {
div.remove();
}
});
selectedAnnoteEl = undefined;
};
// Handle positioning of the toggle
window.addEventListener(
"resize",
throttle(() => {
elRect = undefined;
if (selectedAnnoteEl) {
selectCodeLines(selectedAnnoteEl);
}
}, 10)
);
function throttle(fn, ms) {
let throttle = false;
let timer;
return (...args) => {
if(!throttle) { // first call gets through
fn.apply(this, args);
throttle = true;
} else { // all the others get throttled
if(timer) clearTimeout(timer); // cancel #2
timer = setTimeout(() => {
fn.apply(this, args);
timer = throttle = false;
}, ms);
}
};
}
// Attach click handler to the DT
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
for (const annoteDlNode of annoteDls) {
annoteDlNode.addEventListener('click', (event) => {
const clickedEl = event.target;
if (clickedEl !== selectedAnnoteEl) {
unselectCodeLines();
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
if (activeEl) {
activeEl.classList.remove('code-annotation-active');
}
selectCodeLines(clickedEl);
clickedEl.classList.add('code-annotation-active');
} else {
// Unselect the line
unselectCodeLines();
clickedEl.classList.remove('code-annotation-active');
}
});
}
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
const cites = parentEl.dataset.cites;
if (cites) {
return {
el,
cites: cites.split(' ')
};
} else {
return findCites(el.parentElement)
}
} else {
return undefined;
}
};
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const citeInfo = findCites(ref);
if (citeInfo) {
tippyHover(citeInfo.el, function() {
var popup = window.document.createElement('div');
citeInfo.cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
}
});
</script>
</div> <!-- /content -->
</body></html>

16
_site/search.json Normal file
View file

@ -0,0 +1,16 @@
[
{
"objectID": "about.html",
"href": "about.html",
"title": "About",
"section": "",
"text": "About this site"
},
{
"objectID": "index.html",
"href": "index.html",
"title": "VIRTUOS WORLD Documentation",
"section": "",
"text": "This is a Quarto website.\nTo learn more about Quarto websites visit https://quarto.org/docs/websites."
}
]

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,205 @@
/* quarto syntax highlight colors */
:root {
--quarto-hl-ot-color: #003B4F;
--quarto-hl-at-color: #657422;
--quarto-hl-ss-color: #20794D;
--quarto-hl-an-color: #5E5E5E;
--quarto-hl-fu-color: #4758AB;
--quarto-hl-st-color: #20794D;
--quarto-hl-cf-color: #003B4F;
--quarto-hl-op-color: #5E5E5E;
--quarto-hl-er-color: #AD0000;
--quarto-hl-bn-color: #AD0000;
--quarto-hl-al-color: #AD0000;
--quarto-hl-va-color: #111111;
--quarto-hl-bu-color: inherit;
--quarto-hl-ex-color: inherit;
--quarto-hl-pp-color: #AD0000;
--quarto-hl-in-color: #5E5E5E;
--quarto-hl-vs-color: #20794D;
--quarto-hl-wa-color: #5E5E5E;
--quarto-hl-do-color: #5E5E5E;
--quarto-hl-im-color: #00769E;
--quarto-hl-ch-color: #20794D;
--quarto-hl-dt-color: #AD0000;
--quarto-hl-fl-color: #AD0000;
--quarto-hl-co-color: #5E5E5E;
--quarto-hl-cv-color: #5E5E5E;
--quarto-hl-cn-color: #8f5902;
--quarto-hl-sc-color: #5E5E5E;
--quarto-hl-dv-color: #AD0000;
--quarto-hl-kw-color: #003B4F;
}
/* other quarto variables */
:root {
--quarto-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
}
pre > code.sourceCode > span {
color: #003B4F;
}
code span {
color: #003B4F;
}
code.sourceCode > span {
color: #003B4F;
}
div.sourceCode,
div.sourceCode pre.sourceCode {
color: #003B4F;
}
code span.ot {
color: #003B4F;
font-style: inherit;
}
code span.at {
color: #657422;
font-style: inherit;
}
code span.ss {
color: #20794D;
font-style: inherit;
}
code span.an {
color: #5E5E5E;
font-style: inherit;
}
code span.fu {
color: #4758AB;
font-style: inherit;
}
code span.st {
color: #20794D;
font-style: inherit;
}
code span.cf {
color: #003B4F;
font-weight: bold;
font-style: inherit;
}
code span.op {
color: #5E5E5E;
font-style: inherit;
}
code span.er {
color: #AD0000;
font-style: inherit;
}
code span.bn {
color: #AD0000;
font-style: inherit;
}
code span.al {
color: #AD0000;
font-style: inherit;
}
code span.va {
color: #111111;
font-style: inherit;
}
code span.bu {
font-style: inherit;
}
code span.ex {
font-style: inherit;
}
code span.pp {
color: #AD0000;
font-style: inherit;
}
code span.in {
color: #5E5E5E;
font-style: inherit;
}
code span.vs {
color: #20794D;
font-style: inherit;
}
code span.wa {
color: #5E5E5E;
font-style: italic;
}
code span.do {
color: #5E5E5E;
font-style: italic;
}
code span.im {
color: #00769E;
font-style: inherit;
}
code span.ch {
color: #20794D;
font-style: inherit;
}
code span.dt {
color: #AD0000;
font-style: inherit;
}
code span.fl {
color: #AD0000;
font-style: inherit;
}
code span.co {
color: #5E5E5E;
font-style: inherit;
}
code span.cv {
color: #5E5E5E;
font-style: italic;
}
code span.cn {
color: #8f5902;
font-style: inherit;
}
code span.sc {
color: #5E5E5E;
font-style: inherit;
}
code span.dv {
color: #AD0000;
font-style: inherit;
}
code span.kw {
color: #003B4F;
font-weight: bold;
font-style: inherit;
}
.prevent-inlining {
content: "</";
}
/*# sourceMappingURL=bd9315517b35d1ca99281302af408dd3.css.map */

View file

@ -0,0 +1,845 @@
import * as tabsets from "./tabsets/tabsets.js";
const sectionChanged = new CustomEvent("quarto-sectionChanged", {
detail: {},
bubbles: true,
cancelable: false,
composed: false,
});
const layoutMarginEls = () => {
// Find any conflicting margin elements and add margins to the
// top to prevent overlap
const marginChildren = window.document.querySelectorAll(
".column-margin.column-container > *, .margin-caption, .aside"
);
let lastBottom = 0;
for (const marginChild of marginChildren) {
if (marginChild.offsetParent !== null) {
// clear the top margin so we recompute it
marginChild.style.marginTop = null;
const top = marginChild.getBoundingClientRect().top + window.scrollY;
if (top < lastBottom) {
const marginChildStyle = window.getComputedStyle(marginChild);
const marginBottom = parseFloat(marginChildStyle["marginBottom"]);
const margin = lastBottom - top + marginBottom;
marginChild.style.marginTop = `${margin}px`;
}
const styles = window.getComputedStyle(marginChild);
const marginTop = parseFloat(styles["marginTop"]);
lastBottom = top + marginChild.getBoundingClientRect().height + marginTop;
}
}
};
window.document.addEventListener("DOMContentLoaded", function (_event) {
// Recompute the position of margin elements anytime the body size changes
if (window.ResizeObserver) {
const resizeObserver = new window.ResizeObserver(
throttle(() => {
layoutMarginEls();
if (
window.document.body.getBoundingClientRect().width < 990 &&
isReaderMode()
) {
quartoToggleReader();
}
}, 50)
);
resizeObserver.observe(window.document.body);
}
const tocEl = window.document.querySelector('nav.toc-active[role="doc-toc"]');
const sidebarEl = window.document.getElementById("quarto-sidebar");
const leftTocEl = window.document.getElementById("quarto-sidebar-toc-left");
const marginSidebarEl = window.document.getElementById(
"quarto-margin-sidebar"
);
// function to determine whether the element has a previous sibling that is active
const prevSiblingIsActiveLink = (el) => {
const sibling = el.previousElementSibling;
if (sibling && sibling.tagName === "A") {
return sibling.classList.contains("active");
} else {
return false;
}
};
// dispatch for htmlwidgets
// they use slideenter event to trigger resize
function fireSlideEnter() {
const event = window.document.createEvent("Event");
event.initEvent("slideenter", true, true);
window.document.dispatchEvent(event);
}
const tabs = window.document.querySelectorAll('a[data-bs-toggle="tab"]');
tabs.forEach((tab) => {
tab.addEventListener("shown.bs.tab", fireSlideEnter);
});
// dispatch for shiny
// they use BS shown and hidden events to trigger rendering
function distpatchShinyEvents(previous, current) {
if (window.jQuery) {
if (previous) {
window.jQuery(previous).trigger("hidden");
}
if (current) {
window.jQuery(current).trigger("shown");
}
}
}
// tabby.js listener: Trigger event for htmlwidget and shiny
document.addEventListener(
"tabby",
function (event) {
fireSlideEnter();
distpatchShinyEvents(event.detail.previousTab, event.detail.tab);
},
false
);
// Track scrolling and mark TOC links as active
// get table of contents and sidebar (bail if we don't have at least one)
const tocLinks = tocEl
? [...tocEl.querySelectorAll("a[data-scroll-target]")]
: [];
const makeActive = (link) => tocLinks[link].classList.add("active");
const removeActive = (link) => tocLinks[link].classList.remove("active");
const removeAllActive = () =>
[...Array(tocLinks.length).keys()].forEach((link) => removeActive(link));
// activate the anchor for a section associated with this TOC entry
tocLinks.forEach((link) => {
link.addEventListener("click", () => {
if (link.href.indexOf("#") !== -1) {
const anchor = link.href.split("#")[1];
const heading = window.document.querySelector(
`[data-anchor-id="${anchor}"]`
);
if (heading) {
// Add the class
heading.classList.add("reveal-anchorjs-link");
// function to show the anchor
const handleMouseout = () => {
heading.classList.remove("reveal-anchorjs-link");
heading.removeEventListener("mouseout", handleMouseout);
};
// add a function to clear the anchor when the user mouses out of it
heading.addEventListener("mouseout", handleMouseout);
}
}
});
});
const sections = tocLinks.map((link) => {
const target = link.getAttribute("data-scroll-target");
if (target.startsWith("#")) {
return window.document.getElementById(decodeURI(`${target.slice(1)}`));
} else {
return window.document.querySelector(decodeURI(`${target}`));
}
});
const sectionMargin = 200;
let currentActive = 0;
// track whether we've initialized state the first time
let init = false;
const updateActiveLink = () => {
// The index from bottom to top (e.g. reversed list)
let sectionIndex = -1;
if (
window.innerHeight + window.pageYOffset >=
window.document.body.offsetHeight
) {
// This is the no-scroll case where last section should be the active one
sectionIndex = 0;
} else {
// This finds the last section visible on screen that should be made active
sectionIndex = [...sections].reverse().findIndex((section) => {
if (section) {
return window.pageYOffset >= section.offsetTop - sectionMargin;
} else {
return false;
}
});
}
if (sectionIndex > -1) {
const current = sections.length - sectionIndex - 1;
if (current !== currentActive) {
removeAllActive();
currentActive = current;
makeActive(current);
if (init) {
window.dispatchEvent(sectionChanged);
}
init = true;
}
}
};
const inHiddenRegion = (top, bottom, hiddenRegions) => {
for (const region of hiddenRegions) {
if (top <= region.bottom && bottom >= region.top) {
return true;
}
}
return false;
};
const categorySelector = "header.quarto-title-block .quarto-category";
const activateCategories = (href) => {
// Find any categories
// Surround them with a link pointing back to:
// #category=Authoring
try {
const categoryEls = window.document.querySelectorAll(categorySelector);
for (const categoryEl of categoryEls) {
const categoryText = categoryEl.textContent;
if (categoryText) {
const link = `${href}#category=${encodeURIComponent(categoryText)}`;
const linkEl = window.document.createElement("a");
linkEl.setAttribute("href", link);
for (const child of categoryEl.childNodes) {
linkEl.append(child);
}
categoryEl.appendChild(linkEl);
}
}
} catch {
// Ignore errors
}
};
function hasTitleCategories() {
return window.document.querySelector(categorySelector) !== null;
}
function offsetRelativeUrl(url) {
const offset = getMeta("quarto:offset");
return offset ? offset + url : url;
}
function offsetAbsoluteUrl(url) {
const offset = getMeta("quarto:offset");
const baseUrl = new URL(offset, window.location);
const projRelativeUrl = url.replace(baseUrl, "");
if (projRelativeUrl.startsWith("/")) {
return projRelativeUrl;
} else {
return "/" + projRelativeUrl;
}
}
// read a meta tag value
function getMeta(metaName) {
const metas = window.document.getElementsByTagName("meta");
for (let i = 0; i < metas.length; i++) {
if (metas[i].getAttribute("name") === metaName) {
return metas[i].getAttribute("content");
}
}
return "";
}
async function findAndActivateCategories() {
// Categories search with listing only use path without query
const currentPagePath = offsetAbsoluteUrl(
window.location.origin + window.location.pathname
);
const response = await fetch(offsetRelativeUrl("listings.json"));
if (response.status == 200) {
return response.json().then(function (listingPaths) {
const listingHrefs = [];
for (const listingPath of listingPaths) {
const pathWithoutLeadingSlash = listingPath.listing.substring(1);
for (const item of listingPath.items) {
const encodedItem = encodeURI(item);
if (
encodedItem === currentPagePath ||
encodedItem === currentPagePath + "index.html"
) {
// Resolve this path against the offset to be sure
// we already are using the correct path to the listing
// (this adjusts the listing urls to be rooted against
// whatever root the page is actually running against)
const relative = offsetRelativeUrl(pathWithoutLeadingSlash);
const baseUrl = window.location;
const resolvedPath = new URL(relative, baseUrl);
listingHrefs.push(resolvedPath.pathname);
break;
}
}
}
// Look up the tree for a nearby linting and use that if we find one
const nearestListing = findNearestParentListing(
offsetAbsoluteUrl(window.location.pathname),
listingHrefs
);
if (nearestListing) {
activateCategories(nearestListing);
} else {
// See if the referrer is a listing page for this item
const referredRelativePath = offsetAbsoluteUrl(document.referrer);
const referrerListing = listingHrefs.find((listingHref) => {
const isListingReferrer =
listingHref === referredRelativePath ||
listingHref === referredRelativePath + "index.html";
return isListingReferrer;
});
if (referrerListing) {
// Try to use the referrer if possible
activateCategories(referrerListing);
} else if (listingHrefs.length > 0) {
// Otherwise, just fall back to the first listing
activateCategories(listingHrefs[0]);
}
}
});
}
}
if (hasTitleCategories()) {
findAndActivateCategories();
}
const findNearestParentListing = (href, listingHrefs) => {
if (!href || !listingHrefs) {
return undefined;
}
// Look up the tree for a nearby linting and use that if we find one
const relativeParts = href.substring(1).split("/");
while (relativeParts.length > 0) {
const path = relativeParts.join("/");
for (const listingHref of listingHrefs) {
if (listingHref.startsWith(path)) {
return listingHref;
}
}
relativeParts.pop();
}
return undefined;
};
const manageSidebarVisiblity = (el, placeholderDescriptor) => {
let isVisible = true;
let elRect;
return (hiddenRegions) => {
if (el === null) {
return;
}
// Find the last element of the TOC
const lastChildEl = el.lastElementChild;
if (lastChildEl) {
// Converts the sidebar to a menu
const convertToMenu = () => {
for (const child of el.children) {
child.style.opacity = 0;
child.style.overflow = "hidden";
child.style.pointerEvents = "none";
}
nexttick(() => {
const toggleContainer = window.document.createElement("div");
toggleContainer.style.width = "100%";
toggleContainer.classList.add("zindex-over-content");
toggleContainer.classList.add("quarto-sidebar-toggle");
toggleContainer.classList.add("headroom-target"); // Marks this to be managed by headeroom
toggleContainer.id = placeholderDescriptor.id;
toggleContainer.style.position = "fixed";
const toggleIcon = window.document.createElement("i");
toggleIcon.classList.add("quarto-sidebar-toggle-icon");
toggleIcon.classList.add("bi");
toggleIcon.classList.add("bi-caret-down-fill");
const toggleTitle = window.document.createElement("div");
const titleEl = window.document.body.querySelector(
placeholderDescriptor.titleSelector
);
if (titleEl) {
toggleTitle.append(
titleEl.textContent || titleEl.innerText,
toggleIcon
);
}
toggleTitle.classList.add("zindex-over-content");
toggleTitle.classList.add("quarto-sidebar-toggle-title");
toggleContainer.append(toggleTitle);
const toggleContents = window.document.createElement("div");
toggleContents.classList = el.classList;
toggleContents.classList.add("zindex-over-content");
toggleContents.classList.add("quarto-sidebar-toggle-contents");
for (const child of el.children) {
if (child.id === "toc-title") {
continue;
}
const clone = child.cloneNode(true);
clone.style.opacity = 1;
clone.style.pointerEvents = null;
clone.style.display = null;
toggleContents.append(clone);
}
toggleContents.style.height = "0px";
const positionToggle = () => {
// position the element (top left of parent, same width as parent)
if (!elRect) {
elRect = el.getBoundingClientRect();
}
toggleContainer.style.left = `${elRect.left}px`;
toggleContainer.style.top = `${elRect.top}px`;
toggleContainer.style.width = `${elRect.width}px`;
};
positionToggle();
toggleContainer.append(toggleContents);
el.parentElement.prepend(toggleContainer);
// Process clicks
let tocShowing = false;
// Allow the caller to control whether this is dismissed
// when it is clicked (e.g. sidebar navigation supports
// opening and closing the nav tree, so don't dismiss on click)
const clickEl = placeholderDescriptor.dismissOnClick
? toggleContainer
: toggleTitle;
const closeToggle = () => {
if (tocShowing) {
toggleContainer.classList.remove("expanded");
toggleContents.style.height = "0px";
tocShowing = false;
}
};
// Get rid of any expanded toggle if the user scrolls
window.document.addEventListener(
"scroll",
throttle(() => {
closeToggle();
}, 50)
);
// Handle positioning of the toggle
window.addEventListener(
"resize",
throttle(() => {
elRect = undefined;
positionToggle();
}, 50)
);
window.addEventListener("quarto-hrChanged", () => {
elRect = undefined;
});
// Process the click
clickEl.onclick = () => {
if (!tocShowing) {
toggleContainer.classList.add("expanded");
toggleContents.style.height = null;
tocShowing = true;
} else {
closeToggle();
}
};
});
};
// Converts a sidebar from a menu back to a sidebar
const convertToSidebar = () => {
for (const child of el.children) {
child.style.opacity = 1;
child.style.overflow = null;
child.style.pointerEvents = null;
}
const placeholderEl = window.document.getElementById(
placeholderDescriptor.id
);
if (placeholderEl) {
placeholderEl.remove();
}
el.classList.remove("rollup");
};
if (isReaderMode()) {
convertToMenu();
isVisible = false;
} else {
// Find the top and bottom o the element that is being managed
const elTop = el.offsetTop;
const elBottom =
elTop + lastChildEl.offsetTop + lastChildEl.offsetHeight;
if (!isVisible) {
// If the element is current not visible reveal if there are
// no conflicts with overlay regions
if (!inHiddenRegion(elTop, elBottom, hiddenRegions)) {
convertToSidebar();
isVisible = true;
}
} else {
// If the element is visible, hide it if it conflicts with overlay regions
// and insert a placeholder toggle (or if we're in reader mode)
if (inHiddenRegion(elTop, elBottom, hiddenRegions)) {
convertToMenu();
isVisible = false;
}
}
}
}
};
};
const tabEls = document.querySelectorAll('a[data-bs-toggle="tab"]');
for (const tabEl of tabEls) {
const id = tabEl.getAttribute("data-bs-target");
if (id) {
const columnEl = document.querySelector(
`${id} .column-margin, .tabset-margin-content`
);
if (columnEl)
tabEl.addEventListener("shown.bs.tab", function (event) {
const el = event.srcElement;
if (el) {
const visibleCls = `${el.id}-margin-content`;
// walk up until we find a parent tabset
let panelTabsetEl = el.parentElement;
while (panelTabsetEl) {
if (panelTabsetEl.classList.contains("panel-tabset")) {
break;
}
panelTabsetEl = panelTabsetEl.parentElement;
}
if (panelTabsetEl) {
const prevSib = panelTabsetEl.previousElementSibling;
if (
prevSib &&
prevSib.classList.contains("tabset-margin-container")
) {
const childNodes = prevSib.querySelectorAll(
".tabset-margin-content"
);
for (const childEl of childNodes) {
if (childEl.classList.contains(visibleCls)) {
childEl.classList.remove("collapse");
} else {
childEl.classList.add("collapse");
}
}
}
}
}
layoutMarginEls();
});
}
}
// Manage the visibility of the toc and the sidebar
const marginScrollVisibility = manageSidebarVisiblity(marginSidebarEl, {
id: "quarto-toc-toggle",
titleSelector: "#toc-title",
dismissOnClick: true,
});
const sidebarScrollVisiblity = manageSidebarVisiblity(sidebarEl, {
id: "quarto-sidebarnav-toggle",
titleSelector: ".title",
dismissOnClick: false,
});
let tocLeftScrollVisibility;
if (leftTocEl) {
tocLeftScrollVisibility = manageSidebarVisiblity(leftTocEl, {
id: "quarto-lefttoc-toggle",
titleSelector: "#toc-title",
dismissOnClick: true,
});
}
// Find the first element that uses formatting in special columns
const conflictingEls = window.document.body.querySelectorAll(
'[class^="column-"], [class*=" column-"], aside, [class*="margin-caption"], [class*=" margin-caption"], [class*="margin-ref"], [class*=" margin-ref"]'
);
// Filter all the possibly conflicting elements into ones
// the do conflict on the left or ride side
const arrConflictingEls = Array.from(conflictingEls);
const leftSideConflictEls = arrConflictingEls.filter((el) => {
if (el.tagName === "ASIDE") {
return false;
}
return Array.from(el.classList).find((className) => {
return (
className !== "column-body" &&
className.startsWith("column-") &&
!className.endsWith("right") &&
!className.endsWith("container") &&
className !== "column-margin"
);
});
});
const rightSideConflictEls = arrConflictingEls.filter((el) => {
if (el.tagName === "ASIDE") {
return true;
}
const hasMarginCaption = Array.from(el.classList).find((className) => {
return className == "margin-caption";
});
if (hasMarginCaption) {
return true;
}
return Array.from(el.classList).find((className) => {
return (
className !== "column-body" &&
!className.endsWith("container") &&
className.startsWith("column-") &&
!className.endsWith("left")
);
});
});
const kOverlapPaddingSize = 10;
function toRegions(els) {
return els.map((el) => {
const boundRect = el.getBoundingClientRect();
const top =
boundRect.top +
document.documentElement.scrollTop -
kOverlapPaddingSize;
return {
top,
bottom: top + el.scrollHeight + 2 * kOverlapPaddingSize,
};
});
}
let hasObserved = false;
const visibleItemObserver = (els) => {
let visibleElements = [...els];
const intersectionObserver = new IntersectionObserver(
(entries, _observer) => {
entries.forEach((entry) => {
if (entry.isIntersecting) {
if (visibleElements.indexOf(entry.target) === -1) {
visibleElements.push(entry.target);
}
} else {
visibleElements = visibleElements.filter((visibleEntry) => {
return visibleEntry !== entry;
});
}
});
if (!hasObserved) {
hideOverlappedSidebars();
}
hasObserved = true;
},
{}
);
els.forEach((el) => {
intersectionObserver.observe(el);
});
return {
getVisibleEntries: () => {
return visibleElements;
},
};
};
const rightElementObserver = visibleItemObserver(rightSideConflictEls);
const leftElementObserver = visibleItemObserver(leftSideConflictEls);
const hideOverlappedSidebars = () => {
marginScrollVisibility(toRegions(rightElementObserver.getVisibleEntries()));
sidebarScrollVisiblity(toRegions(leftElementObserver.getVisibleEntries()));
if (tocLeftScrollVisibility) {
tocLeftScrollVisibility(
toRegions(leftElementObserver.getVisibleEntries())
);
}
};
window.quartoToggleReader = () => {
// Applies a slow class (or removes it)
// to update the transition speed
const slowTransition = (slow) => {
const manageTransition = (id, slow) => {
const el = document.getElementById(id);
if (el) {
if (slow) {
el.classList.add("slow");
} else {
el.classList.remove("slow");
}
}
};
manageTransition("TOC", slow);
manageTransition("quarto-sidebar", slow);
};
const readerMode = !isReaderMode();
setReaderModeValue(readerMode);
// If we're entering reader mode, slow the transition
if (readerMode) {
slowTransition(readerMode);
}
highlightReaderToggle(readerMode);
hideOverlappedSidebars();
// If we're exiting reader mode, restore the non-slow transition
if (!readerMode) {
slowTransition(!readerMode);
}
};
const highlightReaderToggle = (readerMode) => {
const els = document.querySelectorAll(".quarto-reader-toggle");
if (els) {
els.forEach((el) => {
if (readerMode) {
el.classList.add("reader");
} else {
el.classList.remove("reader");
}
});
}
};
const setReaderModeValue = (val) => {
if (window.location.protocol !== "file:") {
window.localStorage.setItem("quarto-reader-mode", val);
} else {
localReaderMode = val;
}
};
const isReaderMode = () => {
if (window.location.protocol !== "file:") {
return window.localStorage.getItem("quarto-reader-mode") === "true";
} else {
return localReaderMode;
}
};
let localReaderMode = null;
const tocOpenDepthStr = tocEl?.getAttribute("data-toc-expanded");
const tocOpenDepth = tocOpenDepthStr ? Number(tocOpenDepthStr) : 1;
// Walk the TOC and collapse/expand nodes
// Nodes are expanded if:
// - they are top level
// - they have children that are 'active' links
// - they are directly below an link that is 'active'
const walk = (el, depth) => {
// Tick depth when we enter a UL
if (el.tagName === "UL") {
depth = depth + 1;
}
// It this is active link
let isActiveNode = false;
if (el.tagName === "A" && el.classList.contains("active")) {
isActiveNode = true;
}
// See if there is an active child to this element
let hasActiveChild = false;
for (const child of el.children) {
hasActiveChild = walk(child, depth) || hasActiveChild;
}
// Process the collapse state if this is an UL
if (el.tagName === "UL") {
if (tocOpenDepth === -1 && depth > 1) {
// toc-expand: false
el.classList.add("collapse");
} else if (
depth <= tocOpenDepth ||
hasActiveChild ||
prevSiblingIsActiveLink(el)
) {
el.classList.remove("collapse");
} else {
el.classList.add("collapse");
}
// untick depth when we leave a UL
depth = depth - 1;
}
return hasActiveChild || isActiveNode;
};
// walk the TOC and expand / collapse any items that should be shown
if (tocEl) {
updateActiveLink();
walk(tocEl, 0);
}
// Throttle the scroll event and walk peridiocally
window.document.addEventListener(
"scroll",
throttle(() => {
if (tocEl) {
updateActiveLink();
walk(tocEl, 0);
}
if (!isReaderMode()) {
hideOverlappedSidebars();
}
}, 5)
);
window.addEventListener(
"resize",
throttle(() => {
if (tocEl) {
updateActiveLink();
walk(tocEl, 0);
}
if (!isReaderMode()) {
hideOverlappedSidebars();
}
}, 10)
);
hideOverlappedSidebars();
highlightReaderToggle(isReaderMode());
});
tabsets.init();
function throttle(func, wait) {
let waiting = false;
return function () {
if (!waiting) {
func.apply(this, arguments);
waiting = true;
setTimeout(function () {
waiting = false;
}, wait);
}
};
}
function nexttick(func) {
return setTimeout(func, 0);
}

View file

@ -0,0 +1,95 @@
// grouped tabsets
export function init() {
window.addEventListener("pageshow", (_event) => {
function getTabSettings() {
const data = localStorage.getItem("quarto-persistent-tabsets-data");
if (!data) {
localStorage.setItem("quarto-persistent-tabsets-data", "{}");
return {};
}
if (data) {
return JSON.parse(data);
}
}
function setTabSettings(data) {
localStorage.setItem(
"quarto-persistent-tabsets-data",
JSON.stringify(data)
);
}
function setTabState(groupName, groupValue) {
const data = getTabSettings();
data[groupName] = groupValue;
setTabSettings(data);
}
function toggleTab(tab, active) {
const tabPanelId = tab.getAttribute("aria-controls");
const tabPanel = document.getElementById(tabPanelId);
if (active) {
tab.classList.add("active");
tabPanel.classList.add("active");
} else {
tab.classList.remove("active");
tabPanel.classList.remove("active");
}
}
function toggleAll(selectedGroup, selectorsToSync) {
for (const [thisGroup, tabs] of Object.entries(selectorsToSync)) {
const active = selectedGroup === thisGroup;
for (const tab of tabs) {
toggleTab(tab, active);
}
}
}
function findSelectorsToSyncByLanguage() {
const result = {};
const tabs = Array.from(
document.querySelectorAll(`div[data-group] a[id^='tabset-']`)
);
for (const item of tabs) {
const div = item.parentElement.parentElement.parentElement;
const group = div.getAttribute("data-group");
if (!result[group]) {
result[group] = {};
}
const selectorsToSync = result[group];
const value = item.innerHTML;
if (!selectorsToSync[value]) {
selectorsToSync[value] = [];
}
selectorsToSync[value].push(item);
}
return result;
}
function setupSelectorSync() {
const selectorsToSync = findSelectorsToSyncByLanguage();
Object.entries(selectorsToSync).forEach(([group, tabSetsByValue]) => {
Object.entries(tabSetsByValue).forEach(([value, items]) => {
items.forEach((item) => {
item.addEventListener("click", (_event) => {
setTabState(group, value);
toggleAll(value, selectorsToSync[group]);
});
});
});
});
return selectorsToSync;
}
const selectorsToSync = setupSelectorSync();
for (const [group, selectedName] of Object.entries(getTabSettings())) {
const selectors = selectorsToSync[group];
// it's possible that stale state gives us empty selections, so we explicitly check here.
if (selectors) {
toggleAll(selectedName, selectors);
}
}
});
}

View file

@ -0,0 +1 @@
.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,7 @@
/*!
* headroom.js v0.12.0 - Give your page some headroom. Hide your header until you need it
* Copyright (c) 2020 Nick Williams - http://wicky.nillia.ms/headroom.js
* License: MIT
*/
!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(t=t||self).Headroom=n()}(this,function(){"use strict";function t(){return"undefined"!=typeof window}function d(t){return function(t){return t&&t.document&&function(t){return 9===t.nodeType}(t.document)}(t)?function(t){var n=t.document,o=n.body,s=n.documentElement;return{scrollHeight:function(){return Math.max(o.scrollHeight,s.scrollHeight,o.offsetHeight,s.offsetHeight,o.clientHeight,s.clientHeight)},height:function(){return t.innerHeight||s.clientHeight||o.clientHeight},scrollY:function(){return void 0!==t.pageYOffset?t.pageYOffset:(s||o.parentNode||o).scrollTop}}}(t):function(t){return{scrollHeight:function(){return Math.max(t.scrollHeight,t.offsetHeight,t.clientHeight)},height:function(){return Math.max(t.offsetHeight,t.clientHeight)},scrollY:function(){return t.scrollTop}}}(t)}function n(t,s,e){var n,o=function(){var n=!1;try{var t={get passive(){n=!0}};window.addEventListener("test",t,t),window.removeEventListener("test",t,t)}catch(t){n=!1}return n}(),i=!1,r=d(t),l=r.scrollY(),a={};function c(){var t=Math.round(r.scrollY()),n=r.height(),o=r.scrollHeight();a.scrollY=t,a.lastScrollY=l,a.direction=l<t?"down":"up",a.distance=Math.abs(t-l),a.isOutOfBounds=t<0||o<t+n,a.top=t<=s.offset[a.direction],a.bottom=o<=t+n,a.toleranceExceeded=a.distance>s.tolerance[a.direction],e(a),l=t,i=!1}function h(){i||(i=!0,n=requestAnimationFrame(c))}var u=!!o&&{passive:!0,capture:!1};return t.addEventListener("scroll",h,u),c(),{destroy:function(){cancelAnimationFrame(n),t.removeEventListener("scroll",h,u)}}}function o(t){return t===Object(t)?t:{down:t,up:t}}function s(t,n){n=n||{},Object.assign(this,s.options,n),this.classes=Object.assign({},s.options.classes,n.classes),this.elem=t,this.tolerance=o(this.tolerance),this.offset=o(this.offset),this.initialised=!1,this.frozen=!1}return s.prototype={constructor:s,init:function(){return s.cutsTheMustard&&!this.initialised&&(this.addClass("initial"),this.initialised=!0,setTimeout(function(t){t.scrollTracker=n(t.scroller,{offset:t.offset,tolerance:t.tolerance},t.update.bind(t))},100,this)),this},destroy:function(){this.initialised=!1,Object.keys(this.classes).forEach(this.removeClass,this),this.scrollTracker.destroy()},unpin:function(){!this.hasClass("pinned")&&this.hasClass("unpinned")||(this.addClass("unpinned"),this.removeClass("pinned"),this.onUnpin&&this.onUnpin.call(this))},pin:function(){this.hasClass("unpinned")&&(this.addClass("pinned"),this.removeClass("unpinned"),this.onPin&&this.onPin.call(this))},freeze:function(){this.frozen=!0,this.addClass("frozen")},unfreeze:function(){this.frozen=!1,this.removeClass("frozen")},top:function(){this.hasClass("top")||(this.addClass("top"),this.removeClass("notTop"),this.onTop&&this.onTop.call(this))},notTop:function(){this.hasClass("notTop")||(this.addClass("notTop"),this.removeClass("top"),this.onNotTop&&this.onNotTop.call(this))},bottom:function(){this.hasClass("bottom")||(this.addClass("bottom"),this.removeClass("notBottom"),this.onBottom&&this.onBottom.call(this))},notBottom:function(){this.hasClass("notBottom")||(this.addClass("notBottom"),this.removeClass("bottom"),this.onNotBottom&&this.onNotBottom.call(this))},shouldUnpin:function(t){return"down"===t.direction&&!t.top&&t.toleranceExceeded},shouldPin:function(t){return"up"===t.direction&&t.toleranceExceeded||t.top},addClass:function(t){this.elem.classList.add.apply(this.elem.classList,this.classes[t].split(" "))},removeClass:function(t){this.elem.classList.remove.apply(this.elem.classList,this.classes[t].split(" "))},hasClass:function(t){return this.classes[t].split(" ").every(function(t){return this.classList.contains(t)},this.elem)},update:function(t){t.isOutOfBounds||!0!==this.frozen&&(t.top?this.top():this.notTop(),t.bottom?this.bottom():this.notBottom(),this.shouldUnpin(t)?this.unpin():this.shouldPin(t)&&this.pin())}},s.options={tolerance:{up:0,down:0},offset:0,scroller:t()?window:null,classes:{frozen:"headroom--frozen",pinned:"headroom--pinned",unpinned:"headroom--unpinned",top:"headroom--top",notTop:"headroom--not-top",bottom:"headroom--bottom",notBottom:"headroom--not-bottom",initial:"headroom"}},s.cutsTheMustard=!!(t()&&function(){}.bind&&"classList"in document.documentElement&&Object.assign&&Object.keys&&requestAnimationFrame),s});

View file

@ -0,0 +1,325 @@
const headroomChanged = new CustomEvent("quarto-hrChanged", {
detail: {},
bubbles: true,
cancelable: false,
composed: false,
});
const announceDismiss = () => {
const annEl = window.document.getElementById("quarto-announcement");
if (annEl) {
annEl.remove();
const annId = annEl.getAttribute("data-announcement-id");
window.localStorage.setItem(`quarto-announce-${annId}`, "true");
}
};
const announceRegister = () => {
const annEl = window.document.getElementById("quarto-announcement");
if (annEl) {
const annId = annEl.getAttribute("data-announcement-id");
const isDismissed =
window.localStorage.getItem(`quarto-announce-${annId}`) || false;
if (isDismissed) {
announceDismiss();
return;
} else {
annEl.classList.remove("hidden");
}
const actionEl = annEl.querySelector(".quarto-announcement-action");
if (actionEl) {
actionEl.addEventListener("click", function (e) {
e.preventDefault();
// Hide the bar immediately
announceDismiss();
});
}
}
};
window.document.addEventListener("DOMContentLoaded", function () {
let init = false;
announceRegister();
// Manage the back to top button, if one is present.
let lastScrollTop = window.pageYOffset || document.documentElement.scrollTop;
const scrollDownBuffer = 5;
const scrollUpBuffer = 35;
const btn = document.getElementById("quarto-back-to-top");
const hideBackToTop = () => {
btn.style.display = "none";
};
const showBackToTop = () => {
btn.style.display = "inline-block";
};
if (btn) {
window.document.addEventListener(
"scroll",
function () {
const currentScrollTop =
window.pageYOffset || document.documentElement.scrollTop;
// Shows and hides the button 'intelligently' as the user scrolls
if (currentScrollTop - scrollDownBuffer > lastScrollTop) {
hideBackToTop();
lastScrollTop = currentScrollTop <= 0 ? 0 : currentScrollTop;
} else if (currentScrollTop < lastScrollTop - scrollUpBuffer) {
showBackToTop();
lastScrollTop = currentScrollTop <= 0 ? 0 : currentScrollTop;
}
// Show the button at the bottom, hides it at the top
if (currentScrollTop <= 0) {
hideBackToTop();
} else if (
window.innerHeight + currentScrollTop >=
document.body.offsetHeight
) {
showBackToTop();
}
},
false
);
}
function throttle(func, wait) {
var timeout;
return function () {
const context = this;
const args = arguments;
const later = function () {
clearTimeout(timeout);
timeout = null;
func.apply(context, args);
};
if (!timeout) {
timeout = setTimeout(later, wait);
}
};
}
function headerOffset() {
// Set an offset if there is are fixed top navbar
const headerEl = window.document.querySelector("header.fixed-top");
if (headerEl) {
return headerEl.clientHeight;
} else {
return 0;
}
}
function footerOffset() {
const footerEl = window.document.querySelector("footer.footer");
if (footerEl) {
return footerEl.clientHeight;
} else {
return 0;
}
}
function dashboardOffset() {
const dashboardNavEl = window.document.getElementById(
"quarto-dashboard-header"
);
if (dashboardNavEl !== null) {
return dashboardNavEl.clientHeight;
} else {
return 0;
}
}
function updateDocumentOffsetWithoutAnimation() {
updateDocumentOffset(false);
}
function updateDocumentOffset(animated) {
// set body offset
const topOffset = headerOffset();
const bodyOffset = topOffset + footerOffset() + dashboardOffset();
const bodyEl = window.document.body;
bodyEl.setAttribute("data-bs-offset", topOffset);
bodyEl.style.paddingTop = topOffset + "px";
// deal with sidebar offsets
const sidebars = window.document.querySelectorAll(
".sidebar, .headroom-target"
);
sidebars.forEach((sidebar) => {
if (!animated) {
sidebar.classList.add("notransition");
// Remove the no transition class after the animation has time to complete
setTimeout(function () {
sidebar.classList.remove("notransition");
}, 201);
}
if (window.Headroom && sidebar.classList.contains("sidebar-unpinned")) {
sidebar.style.top = "0";
sidebar.style.maxHeight = "100vh";
} else {
sidebar.style.top = topOffset + "px";
sidebar.style.maxHeight = "calc(100vh - " + topOffset + "px)";
}
});
// allow space for footer
const mainContainer = window.document.querySelector(".quarto-container");
if (mainContainer) {
mainContainer.style.minHeight = "calc(100vh - " + bodyOffset + "px)";
}
// link offset
let linkStyle = window.document.querySelector("#quarto-target-style");
if (!linkStyle) {
linkStyle = window.document.createElement("style");
linkStyle.setAttribute("id", "quarto-target-style");
window.document.head.appendChild(linkStyle);
}
while (linkStyle.firstChild) {
linkStyle.removeChild(linkStyle.firstChild);
}
if (topOffset > 0) {
linkStyle.appendChild(
window.document.createTextNode(`
section:target::before {
content: "";
display: block;
height: ${topOffset}px;
margin: -${topOffset}px 0 0;
}`)
);
}
if (init) {
window.dispatchEvent(headroomChanged);
}
init = true;
}
// initialize headroom
var header = window.document.querySelector("#quarto-header");
if (header && window.Headroom) {
const headroom = new window.Headroom(header, {
tolerance: 5,
onPin: function () {
const sidebars = window.document.querySelectorAll(
".sidebar, .headroom-target"
);
sidebars.forEach((sidebar) => {
sidebar.classList.remove("sidebar-unpinned");
});
updateDocumentOffset();
},
onUnpin: function () {
const sidebars = window.document.querySelectorAll(
".sidebar, .headroom-target"
);
sidebars.forEach((sidebar) => {
sidebar.classList.add("sidebar-unpinned");
});
updateDocumentOffset();
},
});
headroom.init();
let frozen = false;
window.quartoToggleHeadroom = function () {
if (frozen) {
headroom.unfreeze();
frozen = false;
} else {
headroom.freeze();
frozen = true;
}
};
}
window.addEventListener(
"hashchange",
function (e) {
if (
getComputedStyle(document.documentElement).scrollBehavior !== "smooth"
) {
window.scrollTo(0, window.pageYOffset - headerOffset());
}
},
false
);
// Observe size changed for the header
const headerEl = window.document.querySelector("header.fixed-top");
if (headerEl && window.ResizeObserver) {
const observer = new window.ResizeObserver(() => {
setTimeout(updateDocumentOffsetWithoutAnimation, 0);
});
observer.observe(headerEl, {
attributes: true,
childList: true,
characterData: true,
});
} else {
window.addEventListener(
"resize",
throttle(updateDocumentOffsetWithoutAnimation, 50)
);
}
setTimeout(updateDocumentOffsetWithoutAnimation, 250);
// fixup index.html links if we aren't on the filesystem
if (window.location.protocol !== "file:") {
const links = window.document.querySelectorAll("a");
for (let i = 0; i < links.length; i++) {
if (links[i].href) {
links[i].dataset.originalHref = links[i].href;
links[i].href = links[i].href.replace(/\/index\.html/, "/");
}
}
// Fixup any sharing links that require urls
// Append url to any sharing urls
const sharingLinks = window.document.querySelectorAll(
"a.sidebar-tools-main-item, a.quarto-navigation-tool, a.quarto-navbar-tools, a.quarto-navbar-tools-item"
);
for (let i = 0; i < sharingLinks.length; i++) {
const sharingLink = sharingLinks[i];
const href = sharingLink.getAttribute("href");
if (href) {
sharingLink.setAttribute(
"href",
href.replace("|url|", window.location.href)
);
}
}
// Scroll the active navigation item into view, if necessary
const navSidebar = window.document.querySelector("nav#quarto-sidebar");
if (navSidebar) {
// Find the active item
const activeItem = navSidebar.querySelector("li.sidebar-item a.active");
if (activeItem) {
// Wait for the scroll height and height to resolve by observing size changes on the
// nav element that is scrollable
const resizeObserver = new ResizeObserver((_entries) => {
// The bottom of the element
const elBottom = activeItem.offsetTop;
const viewBottom = navSidebar.scrollTop + navSidebar.clientHeight;
// The element height and scroll height are the same, then we are still loading
if (viewBottom !== navSidebar.scrollHeight) {
// Determine if the item isn't visible and scroll to it
if (elBottom >= viewBottom) {
navSidebar.scrollTop = elBottom;
}
// stop observing now since we've completed the scroll
resizeObserver.unobserve(navSidebar);
}
});
resizeObserver.observe(navSidebar);
}
}
}
});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

1
_site/styles.css Normal file
View file

@ -0,0 +1 @@
/* css styles */

5
about.qmd Normal file
View file

@ -0,0 +1,5 @@
---
title: "About"
---
About this site

7
index.qmd Normal file
View file

@ -0,0 +1,7 @@
---
title: "VIRTUOS WORLD Documentation"
---
This is a Quarto website.
To learn more about Quarto websites visit <https://quarto.org/docs/websites>.

1
styles.css Normal file
View file

@ -0,0 +1 @@
/* css styles */