PageSourceSearch

https://www.nestle.co.jp/themes/custom/da_vinci_code/js/dark_mode.js?tl3cyg

js nestle.co.jp collected 2026-09-24 09:15:56 UTC 3,696 bytes, 112 lines download raw bytes

1(function ($, Drupal, once) {
2  "use strict";
3
4  // Dark mode integration with Dark reader library.
5  Drupal.behaviors.dark_mode_switch_dark_reader = {
6    attach: function (context) {
7      let darkmodeCss = document.head.querySelector(".darkmode-css");
8      // Check if DarkReader is available.
9      if (typeof DarkReader !== "undefined") {
10        // Dark mode switch toggle.
11        $("#dark-mode-switch").change(function () {
12          let darkReaderEnabled = DarkReader.isEnabled();
13          let darkModeStatus = $(this).is(":checked");
14          if (darkModeStatus === false) {
15            DarkReader.disable();
16            $(this).attr("aria-checked", false);
17          } else {
18            $(this).attr("aria-checked", true);
19          }
20          updateDarkMode(darkReaderEnabled, darkModeStatus);
21          document.head.append(darkmodeCss);
22        });
23
24        $(once("dark-mode-keypress", ".custom-control-label")).on(
25          "keypress",
26          function (event) {
27            // Enter key press.
28            if (event.which === 13) {
29              let darkModeSwitch = $("#dark-mode-switch");
30              if (darkModeSwitch.is(":checked") === true) {
31                darkModeSwitch.prop("checked", false);
32                if ("theme" in localStorage) {
33                  localStorage.theme = false;
34                }
35                DarkReader.disable();
36              } else {
37                $("#dark-mode-switch").prop("checked", true);
38                let darkReaderEnabled = DarkReader.isEnabled();
39                let darkModeStatus = darkModeSwitch.is(":checked");
40
41                if (darkModeStatus === false) {
42                  DarkReader.disable();
43                } else {
44                  if ("theme" in localStorage) {
45                    localStorage.theme = true;
46                  }
47                }
48                updateDarkMode(darkReaderEnabled, darkModeStatus);
49                document.head.append(darkmodeCss);
50              }
51            }
52          },
53        );
54      }
55    },
56  };
57})(jQuery, Drupal, once);
58
59document.addEventListener("DOMContentLoaded", () => {
60  loadDarkMode();
61});
62
63function loadDarkMode() {
64  if (typeof DarkReader !== "undefined") {
65    let darkReaderEnabled = DarkReader.isEnabled();
66    let darkModeStatus = window.matchMedia(
67      "(prefers-color-scheme: dark)",
68    ).matches;
69    if ("theme" in localStorage) {
70      darkModeStatus = localStorage.theme === "false" ? false : true;
71    }
72    if (darkReaderEnabled === true) {
73      document
74        .querySelector("#dark-mode-switch")
75        .setAttribute("aria-checked", true);
76    }
77    updateDarkMode(darkReaderEnabled, darkModeStatus);
78  }
79}
80
81loadDarkMode();
82
83function updateDarkMode(darkReaderEnabled, darkModeStatus) {
84  if (darkReaderEnabled === false && darkModeStatus === true) {
85    DarkReader.setFetchMethod(window.fetch);
86
87    // Update global fetch to add query param for image-related requests only.
88    const originalFetch = window.fetch;
89    window.fetch = function (url, options) {
90      try {
91        if (typeof url === "string") {
92          const isImage = /\.(png|jpe?g|gif|svg|webp|ico)$/i.test(url);
93          // Append ?theme=da_vinci_code or &theme=da_vinci_code if query params
94          // already exist.
95          if (isImage && !url.includes("theme=da_vinci_code")) {
96            const separator = url.includes("?") ? "&" : "?";
97            url = url + separator + "theme=da_vinci_code";
98          }
99        }
100      } catch (e) {
101        console.warn("Global fetch failed:", e);
102      }
103
104      return originalFetch(url, options);
105    };
106    DarkReader.enable({
107      brightness: 100,
108      contrast: 90,
109      sepia: 10,
110    });
111  }
112}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.