aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/docs/src/templates/partials/integrations
diff options
context:
space:
mode:
author简律纯 <i@jyunko.cn>2023-12-15 09:11:47 +0800
committer简律纯 <i@jyunko.cn>2023-12-15 09:11:47 +0800
commitbe8de118db913711eb72ae5187d26e54a0055727 (patch)
tree96cd6c012dafa3f4015e54edef90df5eaaab0ddb /docs/src/templates/partials/integrations
parent9b2d27ba1d91a0d5531bc9c0d52c3887a2dfb2aa (diff)
downloadinfini-be8de118db913711eb72ae5187d26e54a0055727.tar.gz
infini-be8de118db913711eb72ae5187d26e54a0055727.zip
refactor(docs): optmst `docs` dir & `deps`
Diffstat (limited to 'docs/src/templates/partials/integrations')
-rw-r--r--docs/src/templates/partials/integrations/analytics.html49
-rw-r--r--docs/src/templates/partials/integrations/analytics/google.html97
2 files changed, 146 insertions, 0 deletions
diff --git a/docs/src/templates/partials/integrations/analytics.html b/docs/src/templates/partials/integrations/analytics.html
new file mode 100644
index 00000000..4b483046
--- /dev/null
+++ b/docs/src/templates/partials/integrations/analytics.html
@@ -0,0 +1,49 @@
+<!--
+ Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to
+ deal in the Software without restriction, including without limitation the
+ rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ IN THE SOFTWARE.
+-->
+
+<!-- Determine analytics provider -->
+{% if config.extra.analytics %}
+ {% set provider = config.extra.analytics.provider %}
+{% endif %}
+
+<!-- Set up analytics provider -->
+{% if provider %}
+ {% include "partials/integrations/analytics/" ~ provider ~ ".html" %}
+
+ <!-- Consent necessary -->
+ {% if config.extra.consent %}
+ <script>
+ if (typeof __md_analytics !== "undefined") {
+ var consent = __md_get("__consent")
+ if (consent && consent.analytics)
+ __md_analytics()
+ }
+ </script>
+
+ <!-- Consent unnecessary -->
+ {% else %}
+ <script>
+ if (typeof __md_analytics !== "undefined")
+ __md_analytics()
+ </script>
+ {% endif %}
+{% endif %}
diff --git a/docs/src/templates/partials/integrations/analytics/google.html b/docs/src/templates/partials/integrations/analytics/google.html
new file mode 100644
index 00000000..a9fa37d9
--- /dev/null
+++ b/docs/src/templates/partials/integrations/analytics/google.html
@@ -0,0 +1,97 @@
+<!--
+ Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to
+ deal in the Software without restriction, including without limitation the
+ rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ IN THE SOFTWARE.
+-->
+
+<!-- Determine analytics property -->
+{% if config.extra.analytics %}
+ {% set property = config.extra.analytics.property | d("", true) %}
+{% endif %}
+
+<!-- Integrate with Google Analytics 4 -->
+<script id="__analytics">
+ function __md_analytics() {
+ window.dataLayer = window.dataLayer || []
+ function gtag() { dataLayer.push(arguments) }
+
+ /* Set up integration and send page view */
+ gtag("js", new Date())
+ gtag("config", "{{ property }}")
+
+ /* Register event handlers after documented loaded */
+ document.addEventListener("DOMContentLoaded", function() {
+
+ /* Set up search tracking */
+ if (document.forms.search) {
+ var query = document.forms.search.query
+ query.addEventListener("blur", function() {
+ if (this.value)
+ gtag("event", "search", { search_term: this.value })
+ })
+ }
+
+ /* Set up feedback, i.e. "Was this page helpful?" */
+ document$.subscribe(function() {
+ var feedback = document.forms.feedback
+ if (typeof feedback === "undefined")
+ return
+
+ /* Send feedback to Google Analytics */
+ for (var button of feedback.querySelectorAll("[type=submit]")) {
+ button.addEventListener("click", function(ev) {
+ ev.preventDefault()
+
+ /* Retrieve and send data */
+ var page = document.location.pathname
+ var data = this.getAttribute("data-md-value")
+ gtag("event", "feedback", { page, data })
+
+ /* Disable form and show note, if given */
+ feedback.firstElementChild.disabled = true
+ var note = feedback.querySelector(
+ ".md-feedback__note [data-md-value='" + data + "']"
+ )
+ if (note)
+ note.hidden = false
+ })
+
+ /* Show feedback */
+ feedback.hidden = false
+ }
+ })
+
+ /* Send page view on location change */
+ location$.subscribe(function(url) {
+ gtag("config", "{{ property }}", {
+ page_path: url.pathname
+ })
+ })
+ })
+
+ /* Create script tag */
+ var script = document.createElement("script")
+ script.async = true
+ script.src = "https://www.googletagmanager.com/gtag/js?id={{ property }}"
+
+ /* Inject script tag */
+ var container = document.getElementById("__analytics")
+ container.insertAdjacentElement("afterEnd", script)
+ }
+</script>