Text correction
This commit is contained in:
316
_site/site_libs/bootstrap/bootstrap-icons.css
vendored
316
_site/site_libs/bootstrap/bootstrap-icons.css
vendored
@ -1,7 +1,8 @@
|
||||
@font-face {
|
||||
font-display: block;
|
||||
font-family: "bootstrap-icons";
|
||||
src:
|
||||
url("./bootstrap-icons.woff?524846017b983fc8ded9325d94ed40f3") format("woff");
|
||||
url("./bootstrap-icons.woff?2ab2cbbe07fcebb53bdaa7313bb290f2") format("woff");
|
||||
}
|
||||
|
||||
.bi::before,
|
||||
@ -1702,3 +1703,316 @@ url("./bootstrap-icons.woff?524846017b983fc8ded9325d94ed40f3") format("woff");
|
||||
.bi-filetype-json::before { content: "\f791"; }
|
||||
.bi-filetype-pptx::before { content: "\f792"; }
|
||||
.bi-filetype-xlsx::before { content: "\f793"; }
|
||||
.bi-1-circle-1::before { content: "\f794"; }
|
||||
.bi-1-circle-fill-1::before { content: "\f795"; }
|
||||
.bi-1-circle-fill::before { content: "\f796"; }
|
||||
.bi-1-circle::before { content: "\f797"; }
|
||||
.bi-1-square-fill::before { content: "\f798"; }
|
||||
.bi-1-square::before { content: "\f799"; }
|
||||
.bi-2-circle-1::before { content: "\f79a"; }
|
||||
.bi-2-circle-fill-1::before { content: "\f79b"; }
|
||||
.bi-2-circle-fill::before { content: "\f79c"; }
|
||||
.bi-2-circle::before { content: "\f79d"; }
|
||||
.bi-2-square-fill::before { content: "\f79e"; }
|
||||
.bi-2-square::before { content: "\f79f"; }
|
||||
.bi-3-circle-1::before { content: "\f7a0"; }
|
||||
.bi-3-circle-fill-1::before { content: "\f7a1"; }
|
||||
.bi-3-circle-fill::before { content: "\f7a2"; }
|
||||
.bi-3-circle::before { content: "\f7a3"; }
|
||||
.bi-3-square-fill::before { content: "\f7a4"; }
|
||||
.bi-3-square::before { content: "\f7a5"; }
|
||||
.bi-4-circle-1::before { content: "\f7a6"; }
|
||||
.bi-4-circle-fill-1::before { content: "\f7a7"; }
|
||||
.bi-4-circle-fill::before { content: "\f7a8"; }
|
||||
.bi-4-circle::before { content: "\f7a9"; }
|
||||
.bi-4-square-fill::before { content: "\f7aa"; }
|
||||
.bi-4-square::before { content: "\f7ab"; }
|
||||
.bi-5-circle-1::before { content: "\f7ac"; }
|
||||
.bi-5-circle-fill-1::before { content: "\f7ad"; }
|
||||
.bi-5-circle-fill::before { content: "\f7ae"; }
|
||||
.bi-5-circle::before { content: "\f7af"; }
|
||||
.bi-5-square-fill::before { content: "\f7b0"; }
|
||||
.bi-5-square::before { content: "\f7b1"; }
|
||||
.bi-6-circle-1::before { content: "\f7b2"; }
|
||||
.bi-6-circle-fill-1::before { content: "\f7b3"; }
|
||||
.bi-6-circle-fill::before { content: "\f7b4"; }
|
||||
.bi-6-circle::before { content: "\f7b5"; }
|
||||
.bi-6-square-fill::before { content: "\f7b6"; }
|
||||
.bi-6-square::before { content: "\f7b7"; }
|
||||
.bi-7-circle-1::before { content: "\f7b8"; }
|
||||
.bi-7-circle-fill-1::before { content: "\f7b9"; }
|
||||
.bi-7-circle-fill::before { content: "\f7ba"; }
|
||||
.bi-7-circle::before { content: "\f7bb"; }
|
||||
.bi-7-square-fill::before { content: "\f7bc"; }
|
||||
.bi-7-square::before { content: "\f7bd"; }
|
||||
.bi-8-circle-1::before { content: "\f7be"; }
|
||||
.bi-8-circle-fill-1::before { content: "\f7bf"; }
|
||||
.bi-8-circle-fill::before { content: "\f7c0"; }
|
||||
.bi-8-circle::before { content: "\f7c1"; }
|
||||
.bi-8-square-fill::before { content: "\f7c2"; }
|
||||
.bi-8-square::before { content: "\f7c3"; }
|
||||
.bi-9-circle-1::before { content: "\f7c4"; }
|
||||
.bi-9-circle-fill-1::before { content: "\f7c5"; }
|
||||
.bi-9-circle-fill::before { content: "\f7c6"; }
|
||||
.bi-9-circle::before { content: "\f7c7"; }
|
||||
.bi-9-square-fill::before { content: "\f7c8"; }
|
||||
.bi-9-square::before { content: "\f7c9"; }
|
||||
.bi-airplane-engines-fill::before { content: "\f7ca"; }
|
||||
.bi-airplane-engines::before { content: "\f7cb"; }
|
||||
.bi-airplane-fill::before { content: "\f7cc"; }
|
||||
.bi-airplane::before { content: "\f7cd"; }
|
||||
.bi-alexa::before { content: "\f7ce"; }
|
||||
.bi-alipay::before { content: "\f7cf"; }
|
||||
.bi-android::before { content: "\f7d0"; }
|
||||
.bi-android2::before { content: "\f7d1"; }
|
||||
.bi-box-fill::before { content: "\f7d2"; }
|
||||
.bi-box-seam-fill::before { content: "\f7d3"; }
|
||||
.bi-browser-chrome::before { content: "\f7d4"; }
|
||||
.bi-browser-edge::before { content: "\f7d5"; }
|
||||
.bi-browser-firefox::before { content: "\f7d6"; }
|
||||
.bi-browser-safari::before { content: "\f7d7"; }
|
||||
.bi-c-circle-1::before { content: "\f7d8"; }
|
||||
.bi-c-circle-fill-1::before { content: "\f7d9"; }
|
||||
.bi-c-circle-fill::before { content: "\f7da"; }
|
||||
.bi-c-circle::before { content: "\f7db"; }
|
||||
.bi-c-square-fill::before { content: "\f7dc"; }
|
||||
.bi-c-square::before { content: "\f7dd"; }
|
||||
.bi-capsule-pill::before { content: "\f7de"; }
|
||||
.bi-capsule::before { content: "\f7df"; }
|
||||
.bi-car-front-fill::before { content: "\f7e0"; }
|
||||
.bi-car-front::before { content: "\f7e1"; }
|
||||
.bi-cassette-fill::before { content: "\f7e2"; }
|
||||
.bi-cassette::before { content: "\f7e3"; }
|
||||
.bi-cc-circle-1::before { content: "\f7e4"; }
|
||||
.bi-cc-circle-fill-1::before { content: "\f7e5"; }
|
||||
.bi-cc-circle-fill::before { content: "\f7e6"; }
|
||||
.bi-cc-circle::before { content: "\f7e7"; }
|
||||
.bi-cc-square-fill::before { content: "\f7e8"; }
|
||||
.bi-cc-square::before { content: "\f7e9"; }
|
||||
.bi-cup-hot-fill::before { content: "\f7ea"; }
|
||||
.bi-cup-hot::before { content: "\f7eb"; }
|
||||
.bi-currency-rupee::before { content: "\f7ec"; }
|
||||
.bi-dropbox::before { content: "\f7ed"; }
|
||||
.bi-escape::before { content: "\f7ee"; }
|
||||
.bi-fast-forward-btn-fill::before { content: "\f7ef"; }
|
||||
.bi-fast-forward-btn::before { content: "\f7f0"; }
|
||||
.bi-fast-forward-circle-fill::before { content: "\f7f1"; }
|
||||
.bi-fast-forward-circle::before { content: "\f7f2"; }
|
||||
.bi-fast-forward-fill::before { content: "\f7f3"; }
|
||||
.bi-fast-forward::before { content: "\f7f4"; }
|
||||
.bi-filetype-sql::before { content: "\f7f5"; }
|
||||
.bi-fire::before { content: "\f7f6"; }
|
||||
.bi-google-play::before { content: "\f7f7"; }
|
||||
.bi-h-circle-1::before { content: "\f7f8"; }
|
||||
.bi-h-circle-fill-1::before { content: "\f7f9"; }
|
||||
.bi-h-circle-fill::before { content: "\f7fa"; }
|
||||
.bi-h-circle::before { content: "\f7fb"; }
|
||||
.bi-h-square-fill::before { content: "\f7fc"; }
|
||||
.bi-h-square::before { content: "\f7fd"; }
|
||||
.bi-indent::before { content: "\f7fe"; }
|
||||
.bi-lungs-fill::before { content: "\f7ff"; }
|
||||
.bi-lungs::before { content: "\f800"; }
|
||||
.bi-microsoft-teams::before { content: "\f801"; }
|
||||
.bi-p-circle-1::before { content: "\f802"; }
|
||||
.bi-p-circle-fill-1::before { content: "\f803"; }
|
||||
.bi-p-circle-fill::before { content: "\f804"; }
|
||||
.bi-p-circle::before { content: "\f805"; }
|
||||
.bi-p-square-fill::before { content: "\f806"; }
|
||||
.bi-p-square::before { content: "\f807"; }
|
||||
.bi-pass-fill::before { content: "\f808"; }
|
||||
.bi-pass::before { content: "\f809"; }
|
||||
.bi-prescription::before { content: "\f80a"; }
|
||||
.bi-prescription2::before { content: "\f80b"; }
|
||||
.bi-r-circle-1::before { content: "\f80c"; }
|
||||
.bi-r-circle-fill-1::before { content: "\f80d"; }
|
||||
.bi-r-circle-fill::before { content: "\f80e"; }
|
||||
.bi-r-circle::before { content: "\f80f"; }
|
||||
.bi-r-square-fill::before { content: "\f810"; }
|
||||
.bi-r-square::before { content: "\f811"; }
|
||||
.bi-repeat-1::before { content: "\f812"; }
|
||||
.bi-repeat::before { content: "\f813"; }
|
||||
.bi-rewind-btn-fill::before { content: "\f814"; }
|
||||
.bi-rewind-btn::before { content: "\f815"; }
|
||||
.bi-rewind-circle-fill::before { content: "\f816"; }
|
||||
.bi-rewind-circle::before { content: "\f817"; }
|
||||
.bi-rewind-fill::before { content: "\f818"; }
|
||||
.bi-rewind::before { content: "\f819"; }
|
||||
.bi-train-freight-front-fill::before { content: "\f81a"; }
|
||||
.bi-train-freight-front::before { content: "\f81b"; }
|
||||
.bi-train-front-fill::before { content: "\f81c"; }
|
||||
.bi-train-front::before { content: "\f81d"; }
|
||||
.bi-train-lightrail-front-fill::before { content: "\f81e"; }
|
||||
.bi-train-lightrail-front::before { content: "\f81f"; }
|
||||
.bi-truck-front-fill::before { content: "\f820"; }
|
||||
.bi-truck-front::before { content: "\f821"; }
|
||||
.bi-ubuntu::before { content: "\f822"; }
|
||||
.bi-unindent::before { content: "\f823"; }
|
||||
.bi-unity::before { content: "\f824"; }
|
||||
.bi-universal-access-circle::before { content: "\f825"; }
|
||||
.bi-universal-access::before { content: "\f826"; }
|
||||
.bi-virus::before { content: "\f827"; }
|
||||
.bi-virus2::before { content: "\f828"; }
|
||||
.bi-wechat::before { content: "\f829"; }
|
||||
.bi-yelp::before { content: "\f82a"; }
|
||||
.bi-sign-stop-fill::before { content: "\f82b"; }
|
||||
.bi-sign-stop-lights-fill::before { content: "\f82c"; }
|
||||
.bi-sign-stop-lights::before { content: "\f82d"; }
|
||||
.bi-sign-stop::before { content: "\f82e"; }
|
||||
.bi-sign-turn-left-fill::before { content: "\f82f"; }
|
||||
.bi-sign-turn-left::before { content: "\f830"; }
|
||||
.bi-sign-turn-right-fill::before { content: "\f831"; }
|
||||
.bi-sign-turn-right::before { content: "\f832"; }
|
||||
.bi-sign-turn-slight-left-fill::before { content: "\f833"; }
|
||||
.bi-sign-turn-slight-left::before { content: "\f834"; }
|
||||
.bi-sign-turn-slight-right-fill::before { content: "\f835"; }
|
||||
.bi-sign-turn-slight-right::before { content: "\f836"; }
|
||||
.bi-sign-yield-fill::before { content: "\f837"; }
|
||||
.bi-sign-yield::before { content: "\f838"; }
|
||||
.bi-ev-station-fill::before { content: "\f839"; }
|
||||
.bi-ev-station::before { content: "\f83a"; }
|
||||
.bi-fuel-pump-diesel-fill::before { content: "\f83b"; }
|
||||
.bi-fuel-pump-diesel::before { content: "\f83c"; }
|
||||
.bi-fuel-pump-fill::before { content: "\f83d"; }
|
||||
.bi-fuel-pump::before { content: "\f83e"; }
|
||||
.bi-0-circle-fill::before { content: "\f83f"; }
|
||||
.bi-0-circle::before { content: "\f840"; }
|
||||
.bi-0-square-fill::before { content: "\f841"; }
|
||||
.bi-0-square::before { content: "\f842"; }
|
||||
.bi-rocket-fill::before { content: "\f843"; }
|
||||
.bi-rocket-takeoff-fill::before { content: "\f844"; }
|
||||
.bi-rocket-takeoff::before { content: "\f845"; }
|
||||
.bi-rocket::before { content: "\f846"; }
|
||||
.bi-stripe::before { content: "\f847"; }
|
||||
.bi-subscript::before { content: "\f848"; }
|
||||
.bi-superscript::before { content: "\f849"; }
|
||||
.bi-trello::before { content: "\f84a"; }
|
||||
.bi-envelope-at-fill::before { content: "\f84b"; }
|
||||
.bi-envelope-at::before { content: "\f84c"; }
|
||||
.bi-regex::before { content: "\f84d"; }
|
||||
.bi-text-wrap::before { content: "\f84e"; }
|
||||
.bi-sign-dead-end-fill::before { content: "\f84f"; }
|
||||
.bi-sign-dead-end::before { content: "\f850"; }
|
||||
.bi-sign-do-not-enter-fill::before { content: "\f851"; }
|
||||
.bi-sign-do-not-enter::before { content: "\f852"; }
|
||||
.bi-sign-intersection-fill::before { content: "\f853"; }
|
||||
.bi-sign-intersection-side-fill::before { content: "\f854"; }
|
||||
.bi-sign-intersection-side::before { content: "\f855"; }
|
||||
.bi-sign-intersection-t-fill::before { content: "\f856"; }
|
||||
.bi-sign-intersection-t::before { content: "\f857"; }
|
||||
.bi-sign-intersection-y-fill::before { content: "\f858"; }
|
||||
.bi-sign-intersection-y::before { content: "\f859"; }
|
||||
.bi-sign-intersection::before { content: "\f85a"; }
|
||||
.bi-sign-merge-left-fill::before { content: "\f85b"; }
|
||||
.bi-sign-merge-left::before { content: "\f85c"; }
|
||||
.bi-sign-merge-right-fill::before { content: "\f85d"; }
|
||||
.bi-sign-merge-right::before { content: "\f85e"; }
|
||||
.bi-sign-no-left-turn-fill::before { content: "\f85f"; }
|
||||
.bi-sign-no-left-turn::before { content: "\f860"; }
|
||||
.bi-sign-no-parking-fill::before { content: "\f861"; }
|
||||
.bi-sign-no-parking::before { content: "\f862"; }
|
||||
.bi-sign-no-right-turn-fill::before { content: "\f863"; }
|
||||
.bi-sign-no-right-turn::before { content: "\f864"; }
|
||||
.bi-sign-railroad-fill::before { content: "\f865"; }
|
||||
.bi-sign-railroad::before { content: "\f866"; }
|
||||
.bi-building-add::before { content: "\f867"; }
|
||||
.bi-building-check::before { content: "\f868"; }
|
||||
.bi-building-dash::before { content: "\f869"; }
|
||||
.bi-building-down::before { content: "\f86a"; }
|
||||
.bi-building-exclamation::before { content: "\f86b"; }
|
||||
.bi-building-fill-add::before { content: "\f86c"; }
|
||||
.bi-building-fill-check::before { content: "\f86d"; }
|
||||
.bi-building-fill-dash::before { content: "\f86e"; }
|
||||
.bi-building-fill-down::before { content: "\f86f"; }
|
||||
.bi-building-fill-exclamation::before { content: "\f870"; }
|
||||
.bi-building-fill-gear::before { content: "\f871"; }
|
||||
.bi-building-fill-lock::before { content: "\f872"; }
|
||||
.bi-building-fill-slash::before { content: "\f873"; }
|
||||
.bi-building-fill-up::before { content: "\f874"; }
|
||||
.bi-building-fill-x::before { content: "\f875"; }
|
||||
.bi-building-fill::before { content: "\f876"; }
|
||||
.bi-building-gear::before { content: "\f877"; }
|
||||
.bi-building-lock::before { content: "\f878"; }
|
||||
.bi-building-slash::before { content: "\f879"; }
|
||||
.bi-building-up::before { content: "\f87a"; }
|
||||
.bi-building-x::before { content: "\f87b"; }
|
||||
.bi-buildings-fill::before { content: "\f87c"; }
|
||||
.bi-buildings::before { content: "\f87d"; }
|
||||
.bi-bus-front-fill::before { content: "\f87e"; }
|
||||
.bi-bus-front::before { content: "\f87f"; }
|
||||
.bi-ev-front-fill::before { content: "\f880"; }
|
||||
.bi-ev-front::before { content: "\f881"; }
|
||||
.bi-globe-americas::before { content: "\f882"; }
|
||||
.bi-globe-asia-australia::before { content: "\f883"; }
|
||||
.bi-globe-central-south-asia::before { content: "\f884"; }
|
||||
.bi-globe-europe-africa::before { content: "\f885"; }
|
||||
.bi-house-add-fill::before { content: "\f886"; }
|
||||
.bi-house-add::before { content: "\f887"; }
|
||||
.bi-house-check-fill::before { content: "\f888"; }
|
||||
.bi-house-check::before { content: "\f889"; }
|
||||
.bi-house-dash-fill::before { content: "\f88a"; }
|
||||
.bi-house-dash::before { content: "\f88b"; }
|
||||
.bi-house-down-fill::before { content: "\f88c"; }
|
||||
.bi-house-down::before { content: "\f88d"; }
|
||||
.bi-house-exclamation-fill::before { content: "\f88e"; }
|
||||
.bi-house-exclamation::before { content: "\f88f"; }
|
||||
.bi-house-gear-fill::before { content: "\f890"; }
|
||||
.bi-house-gear::before { content: "\f891"; }
|
||||
.bi-house-lock-fill::before { content: "\f892"; }
|
||||
.bi-house-lock::before { content: "\f893"; }
|
||||
.bi-house-slash-fill::before { content: "\f894"; }
|
||||
.bi-house-slash::before { content: "\f895"; }
|
||||
.bi-house-up-fill::before { content: "\f896"; }
|
||||
.bi-house-up::before { content: "\f897"; }
|
||||
.bi-house-x-fill::before { content: "\f898"; }
|
||||
.bi-house-x::before { content: "\f899"; }
|
||||
.bi-person-add::before { content: "\f89a"; }
|
||||
.bi-person-down::before { content: "\f89b"; }
|
||||
.bi-person-exclamation::before { content: "\f89c"; }
|
||||
.bi-person-fill-add::before { content: "\f89d"; }
|
||||
.bi-person-fill-check::before { content: "\f89e"; }
|
||||
.bi-person-fill-dash::before { content: "\f89f"; }
|
||||
.bi-person-fill-down::before { content: "\f8a0"; }
|
||||
.bi-person-fill-exclamation::before { content: "\f8a1"; }
|
||||
.bi-person-fill-gear::before { content: "\f8a2"; }
|
||||
.bi-person-fill-lock::before { content: "\f8a3"; }
|
||||
.bi-person-fill-slash::before { content: "\f8a4"; }
|
||||
.bi-person-fill-up::before { content: "\f8a5"; }
|
||||
.bi-person-fill-x::before { content: "\f8a6"; }
|
||||
.bi-person-gear::before { content: "\f8a7"; }
|
||||
.bi-person-lock::before { content: "\f8a8"; }
|
||||
.bi-person-slash::before { content: "\f8a9"; }
|
||||
.bi-person-up::before { content: "\f8aa"; }
|
||||
.bi-scooter::before { content: "\f8ab"; }
|
||||
.bi-taxi-front-fill::before { content: "\f8ac"; }
|
||||
.bi-taxi-front::before { content: "\f8ad"; }
|
||||
.bi-amd::before { content: "\f8ae"; }
|
||||
.bi-database-add::before { content: "\f8af"; }
|
||||
.bi-database-check::before { content: "\f8b0"; }
|
||||
.bi-database-dash::before { content: "\f8b1"; }
|
||||
.bi-database-down::before { content: "\f8b2"; }
|
||||
.bi-database-exclamation::before { content: "\f8b3"; }
|
||||
.bi-database-fill-add::before { content: "\f8b4"; }
|
||||
.bi-database-fill-check::before { content: "\f8b5"; }
|
||||
.bi-database-fill-dash::before { content: "\f8b6"; }
|
||||
.bi-database-fill-down::before { content: "\f8b7"; }
|
||||
.bi-database-fill-exclamation::before { content: "\f8b8"; }
|
||||
.bi-database-fill-gear::before { content: "\f8b9"; }
|
||||
.bi-database-fill-lock::before { content: "\f8ba"; }
|
||||
.bi-database-fill-slash::before { content: "\f8bb"; }
|
||||
.bi-database-fill-up::before { content: "\f8bc"; }
|
||||
.bi-database-fill-x::before { content: "\f8bd"; }
|
||||
.bi-database-fill::before { content: "\f8be"; }
|
||||
.bi-database-gear::before { content: "\f8bf"; }
|
||||
.bi-database-lock::before { content: "\f8c0"; }
|
||||
.bi-database-slash::before { content: "\f8c1"; }
|
||||
.bi-database-up::before { content: "\f8c2"; }
|
||||
.bi-database-x::before { content: "\f8c3"; }
|
||||
.bi-database::before { content: "\f8c4"; }
|
||||
.bi-houses-fill::before { content: "\f8c5"; }
|
||||
.bi-houses::before { content: "\f8c6"; }
|
||||
.bi-nvidia::before { content: "\f8c7"; }
|
||||
.bi-person-vcard-fill::before { content: "\f8c8"; }
|
||||
.bi-person-vcard::before { content: "\f8c9"; }
|
||||
.bi-sina-weibo::before { content: "\f8ca"; }
|
||||
.bi-tencent-qq::before { content: "\f8cb"; }
|
||||
.bi-wikipedia::before { content: "\f8cc"; }
|
||||
|
Binary file not shown.
4
_site/site_libs/bootstrap/bootstrap.min.css
vendored
4
_site/site_libs/bootstrap/bootstrap.min.css
vendored
File diff suppressed because one or more lines are too long
4
_site/site_libs/clipboard/clipboard.min.js
vendored
4
_site/site_libs/clipboard/clipboard.min.js
vendored
File diff suppressed because one or more lines are too long
@ -55,62 +55,85 @@ div.sourceCode pre.sourceCode {
|
||||
|
||||
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-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 {
|
||||
@ -125,22 +148,27 @@ code span.do {
|
||||
|
||||
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 {
|
||||
@ -150,18 +178,22 @@ code span.cv {
|
||||
|
||||
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-style: inherit;
|
||||
}
|
||||
|
||||
.prevent-inlining {
|
||||
|
@ -5,7 +5,52 @@ const sectionChanged = new CustomEvent("quarto-sectionChanged", {
|
||||
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 > * "
|
||||
);
|
||||
|
||||
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;
|
||||
console.log({
|
||||
childtop: marginChild.getBoundingClientRect().top,
|
||||
scroll: window.scrollY,
|
||||
top,
|
||||
lastBottom,
|
||||
});
|
||||
if (top < lastBottom) {
|
||||
const margin = lastBottom - top;
|
||||
marginChild.style.marginTop = `${margin}px`;
|
||||
}
|
||||
const styles = window.getComputedStyle(marginChild);
|
||||
const marginTop = parseFloat(styles["marginTop"]);
|
||||
|
||||
console.log({
|
||||
top,
|
||||
height: marginChild.getBoundingClientRect().height,
|
||||
marginTop,
|
||||
total: top + marginChild.getBoundingClientRect().height + 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, 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");
|
||||
@ -259,6 +304,7 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
|
||||
|
||||
const manageSidebarVisiblity = (el, placeholderDescriptor) => {
|
||||
let isVisible = true;
|
||||
let elRect;
|
||||
|
||||
return (hiddenRegions) => {
|
||||
if (el === null) {
|
||||
@ -269,11 +315,6 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
|
||||
const lastChildEl = el.lastElementChild;
|
||||
|
||||
if (lastChildEl) {
|
||||
// Find the top and bottom o the element that is being managed
|
||||
const elTop = el.offsetTop;
|
||||
const elBottom =
|
||||
elTop + lastChildEl.offsetTop + lastChildEl.offsetHeight;
|
||||
|
||||
// Converts the sidebar to a menu
|
||||
const convertToMenu = () => {
|
||||
for (const child of el.children) {
|
||||
@ -281,100 +322,112 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
|
||||
child.style.overflow = "hidden";
|
||||
}
|
||||
|
||||
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";
|
||||
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 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.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 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 clone = child.cloneNode(true);
|
||||
clone.style.opacity = 1;
|
||||
clone.style.display = null;
|
||||
toggleContents.append(clone);
|
||||
}
|
||||
toggleContents.style.height = "0px";
|
||||
toggleContainer.append(toggleContents);
|
||||
el.parentElement.prepend(toggleContainer);
|
||||
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;
|
||||
}
|
||||
|
||||
// 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;
|
||||
const clone = child.cloneNode(true);
|
||||
clone.style.opacity = 1;
|
||||
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();
|
||||
|
||||
const positionToggle = () => {
|
||||
// position the element (top left of parent, same width as parent)
|
||||
const elRect = el.getBoundingClientRect();
|
||||
toggleContainer.style.left = `${elRect.left}px`;
|
||||
toggleContainer.style.top = `${elRect.top}px`;
|
||||
toggleContainer.style.width = `${elRect.width}px`;
|
||||
};
|
||||
toggleContainer.append(toggleContents);
|
||||
el.parentElement.prepend(toggleContainer);
|
||||
|
||||
// Get rid of any expanded toggle if the user scrolls
|
||||
window.document.addEventListener(
|
||||
"scroll",
|
||||
throttle(() => {
|
||||
closeToggle();
|
||||
}, 50)
|
||||
);
|
||||
// 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;
|
||||
|
||||
// Handle positioning of the toggle
|
||||
window.addEventListener(
|
||||
"resize",
|
||||
throttle(() => {
|
||||
positionToggle();
|
||||
}, 50)
|
||||
);
|
||||
positionToggle();
|
||||
const closeToggle = () => {
|
||||
if (tocShowing) {
|
||||
toggleContainer.classList.remove("expanded");
|
||||
toggleContents.style.height = "0px";
|
||||
tocShowing = false;
|
||||
}
|
||||
};
|
||||
|
||||
// Process the click
|
||||
clickEl.onclick = () => {
|
||||
if (!tocShowing) {
|
||||
toggleContainer.classList.add("expanded");
|
||||
toggleContents.style.height = null;
|
||||
tocShowing = true;
|
||||
} else {
|
||||
closeToggle();
|
||||
}
|
||||
};
|
||||
// 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
|
||||
@ -398,6 +451,11 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
|
||||
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
|
||||
@ -418,26 +476,51 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
|
||||
};
|
||||
};
|
||||
|
||||
// Find any conflicting margin elements and add margins to the
|
||||
// top to prevent overlap
|
||||
const marginChildren = window.document.querySelectorAll(
|
||||
".column-margin.column-container > * "
|
||||
);
|
||||
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;
|
||||
}
|
||||
|
||||
nexttick(() => {
|
||||
let lastBottom = 0;
|
||||
for (const marginChild of marginChildren) {
|
||||
const top = marginChild.getBoundingClientRect().top + window.scrollY;
|
||||
if (top < lastBottom) {
|
||||
const margin = lastBottom - top;
|
||||
marginChild.style.marginTop = `${margin}px`;
|
||||
}
|
||||
const styles = window.getComputedStyle(marginChild);
|
||||
const marginTop = parseFloat(styles["marginTop"]);
|
||||
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");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
lastBottom = top + marginChild.getBoundingClientRect().height + marginTop;
|
||||
layoutMarginEls();
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Manage the visibility of the toc and the sidebar
|
||||
const marginScrollVisibility = manageSidebarVisiblity(marginSidebarEl, {
|
||||
@ -506,8 +589,9 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
|
||||
const kOverlapPaddingSize = 10;
|
||||
function toRegions(els) {
|
||||
return els.map((el) => {
|
||||
const boundRect = el.getBoundingClientRect();
|
||||
const top =
|
||||
el.getBoundingClientRect().top +
|
||||
boundRect.top +
|
||||
document.documentElement.scrollTop -
|
||||
kOverlapPaddingSize;
|
||||
return {
|
||||
@ -517,11 +601,51 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
|
||||
});
|
||||
}
|
||||
|
||||
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(rightSideConflictEls));
|
||||
sidebarScrollVisiblity(toRegions(leftSideConflictEls));
|
||||
marginScrollVisibility(toRegions(rightElementObserver.getVisibleEntries()));
|
||||
sidebarScrollVisiblity(toRegions(leftElementObserver.getVisibleEntries()));
|
||||
if (tocLeftScrollVisibility) {
|
||||
tocLeftScrollVisibility(toRegions(leftSideConflictEls));
|
||||
tocLeftScrollVisibility(
|
||||
toRegions(leftElementObserver.getVisibleEntries())
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
@ -543,7 +667,6 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
|
||||
manageTransition("TOC", slow);
|
||||
manageTransition("quarto-sidebar", slow);
|
||||
};
|
||||
|
||||
const readerMode = !isReaderMode();
|
||||
setReaderModeValue(readerMode);
|
||||
|
||||
@ -590,6 +713,9 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
|
||||
};
|
||||
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
|
||||
@ -615,7 +741,13 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
|
||||
|
||||
// Process the collapse state if this is an UL
|
||||
if (el.tagName === "UL") {
|
||||
if (depth === 1 || hasActiveChild || prevSiblingIsActiveLink(el)) {
|
||||
if (tocOpenDepth === -1 && depth > 1) {
|
||||
el.classList.add("collapse");
|
||||
} else if (
|
||||
depth <= tocOpenDepth ||
|
||||
hasActiveChild ||
|
||||
prevSiblingIsActiveLink(el)
|
||||
) {
|
||||
el.classList.remove("collapse");
|
||||
} else {
|
||||
el.classList.add("collapse");
|
||||
|
@ -8,6 +8,47 @@ const headroomChanged = new CustomEvent("quarto-hrChanged", {
|
||||
window.document.addEventListener("DOMContentLoaded", function () {
|
||||
let init = false;
|
||||
|
||||
// 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 () {
|
||||
@ -149,6 +190,18 @@ window.document.addEventListener("DOMContentLoaded", function () {
|
||||
};
|
||||
}
|
||||
|
||||
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) {
|
||||
@ -172,7 +225,9 @@ window.document.addEventListener("DOMContentLoaded", function () {
|
||||
if (window.location.protocol !== "file:") {
|
||||
const links = window.document.querySelectorAll("a");
|
||||
for (let i = 0; i < links.length; i++) {
|
||||
links[i].href = links[i].href.replace(/\/index\.html/, "/");
|
||||
if (links[i].href) {
|
||||
links[i].href = links[i].href.replace(/\/index\.html/, "/");
|
||||
}
|
||||
}
|
||||
|
||||
// Fixup any sharing links that require urls
|
||||
|
File diff suppressed because one or more lines are too long
6
_site/site_libs/quarto-search/fuse.min.js
vendored
6
_site/site_libs/quarto-search/fuse.min.js
vendored
File diff suppressed because one or more lines are too long
@ -45,7 +45,7 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
|
||||
// highlight matches on the page
|
||||
if (query !== null && mainEl) {
|
||||
// perform any highlighting
|
||||
highlight(query, mainEl);
|
||||
highlight(escapeRegExp(query), mainEl);
|
||||
|
||||
// fix up the URL to remove the q query param
|
||||
const replacementUrl = new URL(window.location);
|
||||
@ -80,23 +80,20 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
|
||||
// the media query since we generate different HTML for sidebar overlays than we do
|
||||
// for sidebar input UI)
|
||||
const detachedMediaQuery =
|
||||
quartoSearchOptions.type === "overlay"
|
||||
? "all"
|
||||
: quartoSearchOptions.location === "navbar"
|
||||
? "(max-width: 991px)"
|
||||
: "none";
|
||||
quartoSearchOptions.type === "overlay" ? "all" : "(max-width: 991px)";
|
||||
|
||||
// If configured, include the analytics client to send insights
|
||||
const plugins = configurePlugins(quartoSearchOptions);
|
||||
|
||||
let lastState = null;
|
||||
const { setIsOpen } = autocomplete({
|
||||
const { setIsOpen, setQuery, setCollections } = autocomplete({
|
||||
container: searchEl,
|
||||
detachedMediaQuery: detachedMediaQuery,
|
||||
defaultActiveItemId: 0,
|
||||
panelContainer: "#quarto-search-results",
|
||||
panelPlacement: quartoSearchOptions["panel-placement"],
|
||||
debug: false,
|
||||
openOnFocus: true,
|
||||
plugins,
|
||||
classNames: {
|
||||
form: "d-flex",
|
||||
@ -280,6 +277,10 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
|
||||
}
|
||||
},
|
||||
getItems({ query }) {
|
||||
if (query === null || query === "") {
|
||||
return [];
|
||||
}
|
||||
|
||||
const limit = quartoSearchOptions.limit;
|
||||
if (quartoSearchOptions.algolia) {
|
||||
return algoliaSearch(query, limit, quartoSearchOptions.algolia);
|
||||
@ -299,9 +300,15 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
|
||||
},
|
||||
templates: {
|
||||
noResults({ createElement }) {
|
||||
const hasQuery = lastState.query;
|
||||
|
||||
return createElement(
|
||||
"div",
|
||||
{ class: "quarto-search-no-results" },
|
||||
{
|
||||
class: `quarto-search-no-results${
|
||||
hasQuery ? "" : " no-query"
|
||||
}`,
|
||||
},
|
||||
language["search-no-results-text"]
|
||||
);
|
||||
},
|
||||
@ -361,6 +368,12 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
|
||||
},
|
||||
});
|
||||
|
||||
window.quartoOpenSearch = () => {
|
||||
setIsOpen(false);
|
||||
setIsOpen(true);
|
||||
focusSearchInput();
|
||||
};
|
||||
|
||||
// Remove the labeleledby attribute since it is pointing
|
||||
// to a non-existent label
|
||||
if (quartoSearchOptions.type === "overlay") {
|
||||
@ -976,6 +989,10 @@ function clearHighlight(searchterm, el) {
|
||||
}
|
||||
}
|
||||
|
||||
function escapeRegExp(string) {
|
||||
return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string
|
||||
}
|
||||
|
||||
// highlight matches
|
||||
function highlight(term, el) {
|
||||
const termRegex = new RegExp(term, "ig");
|
||||
|
Reference in New Issue
Block a user