Repository with sources and generator of https://larlet.fr/david/ https://larlet.fr/david/
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

9 месяцев назад
9 месяцев назад
8 месяцев назад
9 месяцев назад
9 месяцев назад
8 месяцев назад
8 месяцев назад
9 месяцев назад
9 месяцев назад
9 месяцев назад
9 месяцев назад
9 месяцев назад
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451
  1. <!DOCTYPE html><!-- This is a valid HTML5 document. -->
  2. <!-- Screen readers, SEO, extensions and so on. -->
  3. <html lang="fr">
  4. <!-- Has to be within the first 1024 bytes, hence before the `title` element
  5. See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
  6. <meta charset="utf-8">
  7. <!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
  8. <!-- The viewport meta is quite crowded and we are responsible for that.
  9. See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
  10. <meta name="viewport" content="width=device-width,initial-scale=1">
  11. <!-- Required to make a valid HTML5 document. -->
  12. <title>
  13. Étiquette #lecture
  14. — David Larlet</title>
  15. <script>
  16. function toggleTheme(themeName) {
  17. document.documentElement.classList.toggle(
  18. 'forced-dark',
  19. themeName === 'dark'
  20. )
  21. document.documentElement.classList.toggle(
  22. 'forced-light',
  23. themeName === 'light'
  24. )
  25. }
  26. const selectedTheme = localStorage.getItem('theme')
  27. if (selectedTheme !== 'undefined') {
  28. toggleTheme(selectedTheme)
  29. }
  30. </script>
  31. <!-- Documented, feel free to shoot an email. -->
  32. <link rel="stylesheet" href="/static/david/css/style_2024-03-09.css">
  33. <!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
  34. <link rel="preload"
  35. href="/static/david/css/fonts/century_supra_ot_a_regular.woff2"
  36. as="font"
  37. type="font/woff2"
  38. media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)"
  39. crossorigin>
  40. <link rel="preload"
  41. href="/static/david/css/fonts/century_supra_ot_a_bold.woff2"
  42. as="font"
  43. type="font/woff2"
  44. media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)"
  45. crossorigin>
  46. <link rel="preload"
  47. href="/static/david/css/fonts/century_supra_ot_a_italic.woff2"
  48. as="font"
  49. type="font/woff2"
  50. media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)"
  51. crossorigin>
  52. <link rel="preload"
  53. href="/static/david/css/fonts/century_supra_ot_b_regular.woff2"
  54. as="font"
  55. type="font/woff2"
  56. media="(prefers-color-scheme: dark)"
  57. crossorigin>
  58. <link rel="preload"
  59. href="/static/david/css/fonts/century_supra_ot_b_bold.woff2"
  60. as="font"
  61. type="font/woff2"
  62. media="(prefers-color-scheme: dark)"
  63. crossorigin>
  64. <link rel="preload"
  65. href="/static/david/css/fonts/century_supra_ot_b_italic.woff2"
  66. as="font"
  67. type="font/woff2"
  68. media="(prefers-color-scheme: dark)"
  69. crossorigin>
  70. <meta name="description" content="Publications relatives au tag #lecture">
  71. <!-- That good ol' feed, subscribe :). -->
  72. <link rel="alternate"
  73. type="application/atom+xml"
  74. title="Feed"
  75. href="/david/log/">
  76. <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
  77. <link rel="apple-touch-icon"
  78. sizes="180x180"
  79. href="/static/david/icons2/apple-touch-icon.png">
  80. <link rel="icon"
  81. type="image/png"
  82. sizes="32x32"
  83. href="/static/david/icons2/favicon-32x32.png">
  84. <link rel="icon"
  85. type="image/png"
  86. sizes="16x16"
  87. href="/static/david/icons2/favicon-16x16.png">
  88. <link rel="manifest" href="/static/david/icons2/site.webmanifest">
  89. <link rel="mask-icon"
  90. href="/static/david/icons2/safari-pinned-tab.svg"
  91. color="#07486c">
  92. <link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
  93. <meta name="msapplication-TileColor" content="#f7f7f7">
  94. <meta name="msapplication-config"
  95. content="/static/david/icons2/browserconfig.xml">
  96. <meta name="theme-color"
  97. content="#f7f7f7"
  98. media="(prefers-color-scheme: light)">
  99. <meta name="theme-color"
  100. content="#272727"
  101. media="(prefers-color-scheme: dark)">
  102. <!-- Is that even respected? Retrospectively? What a shAItshow…
  103. https://neil-clarke.com/block-the-bots-that-feed-ai-models-by-scraping-your-website/ -->
  104. <meta name="robots" content="noai, noimageai">
  105. <style type="text/css">
  106. details[open] summary {
  107. display: none;
  108. }
  109. </style>
  110. <body data-instant-intensity="viewport-all">
  111. <article>
  112. <header>
  113. <hgroup>
  114. <h1>#lecture</h1>
  115. <p>Publications relatives à cette étiquette</p>
  116. </hgroup>
  117. </header>
  118. <nav>
  119. <p>
  120. <a href="/david/" title="Aller à l’accueil">
  121. Accueil</a>
  122. <a rel="tags"
  123. href="/david/2024/#tags"
  124. title="Liste de toutes les étiquettes">
  125. Étiquettes</a>
  126. <a href="/david/recherche/" title="Aller à la page de recherche" rel="search" data-no-instant>Recherche</a>
  127. <a href="/david/log/" title="Accès au flux RSS">Suivre</a>
  128. </p>
  129. </nav>
  130. <h2>
  131. <a href="/david/2024/03/10/" title="Lien permanent vers cet article">Dune</a> <time datetime="2024-03-10">10 mars 2024</time>
  132. </h2>
  133. <p>Je crois bien n’être allé que 3&nbsp;fois dans une salle de cinéma ces 10&nbsp;dernières années. Et puis l’occasion s’est présentée, sans prévenir, aujourd’hui. J’avais <a href="/david/2021/10/18/">quelques retenues sur la première partie</a> mais j’attendais quand même avec impatience la suite. Et j’avais réussi à ne pas trop regarder les bandes annonces, ni les&nbsp;critiques.</p>
  134. <p><em>Note&nbsp;: ça va forcément divulgâcher un peu dans la&nbsp;suite.</em></p>
  135. <p>L’adaptation est bonne, le défi était de taille et —&nbsp;en dépit des quelques ajustements qui piquent un peu le <em>fan</em> que je suis (surtout vers la fin&#8239;!)&nbsp;— la scénarisation est cohérente. Ce qui n’était pas une mince affaire car encore une fois la temporalité n’est pas évidente et rendre l’évolution des personnages visible avec tout ce qui est censé se passer dans leur tête requiert des redéfinitions et des&nbsp;raccourcis.</p>
  136. <p>Mon erreur a probablement été de choisir de l’IMAX alors que c’était Hans “<a data-link-domain="20k.org" href="https://www.20k.org/episodes/boojstrikesback">booj</a>” Zimmer aux platines. Autant dire que le siège a vibré la moitié du film&#8239;! Au-delà de la bande originale, le son a vraiment été travaillé mais je crois que c’était un peu trop pour mes vieilles oreilles plus vraiment adaptées à de tels volumes. Il y a des moments où j’ai même trouvé que ça altérait la compréhension des dialogues… j’avais un peu l’impression de me noyer dans la volonté im·mer·sive alors que l’on est en plein désert. Je doute de retourner dans une salle de si&nbsp;tôt.</p>
  137. <p>Tout ce qui tourne autour des vers est bien fait, j’avais toujours eu du mal à me faire ma propre représentation des tailles et interactions à la lecture et là ça me semble être respecté / réaliste. Idem pour les <em>Sietchs</em>, c’est fidèle à la projection mentale que je pouvais m’en faire, même si l’on n’en voit pas grand chose au final. J’ai particulièrement apprécié le choix de faire une <em>Chani</em> forte qui est davantage consciente des enjeux et des répercutions. La jalousie aurait mérité d’être plus subtile, la différence entre la femme (politique) de Paul et sa compagne (amoureuse) est vraiment explicite dans le&nbsp;livre.</p>
  138. <p>Paul Muad’dib perd un peu trop d’eau à mon goût au cours de nombreuses scènes. Il était probablement plus difficile de transmettre des émotions&nbsp;sèches&nbsp;(?).</p>
  139. <p>Pour finir sur une note positive, l’image bien sûr. C’est à la limite du trop <em>et</em> c’est magnifique au niveau des différents tableaux qui s’enchaînent avec leurs propres couleurs, cinématiques et points de vues. On sent le travail de recherche sans qu’il ne devienne complètement distrayant. J’y serai d’autant plus attentif lors d’un second visionnage, chez moi, en choisissant le volume&nbsp;sonore.</p>
  140. <p>Je ne vois pas comment est-ce qu’il ne pourrait pas y avoir une troisième partie. À voir comment / si ça raccroche les wagons des livres. J’aurais presque envie que ça explore sa propre branche. <em>Dune&nbsp;multi·vers·e&#8239;!</em></p>
  141. <nav>
  142. <p>
  143. <a href="/david/2024/adaptation/"
  144. title="Liste de tous les articles 2024 associés à cette étiquette"
  145. rel="tag">#adaptation</a>
  146. <a href="/david/2024/cinema/"
  147. title="Liste de tous les articles 2024 associés à cette étiquette"
  148. rel="tag">#cinéma</a>
  149. <a href="/david/2024/lecture/"
  150. title="Liste de tous les articles 2024 associés à cette étiquette"
  151. rel="tag">#lecture</a>
  152. <a href="/david/2024/#tags" title="Liste de toutes les étiquettes 2024">tous ?</a>
  153. </p>
  154. </nav>
  155. <h2>
  156. <a href="/david/2024/02/17/" title="Lien permanent vers cet article">Quotidien</a> <time datetime="2024-02-17">17 février 2024</time>
  157. </h2>
  158. <p>S’il y a une chose qui a changé depuis que j’ai repris une écriture quotidienne c’est de ne presque plus regarder de films /&nbsp;séries.</p>
  159. <p>Vu la qualité des vidéos que <q lang="fr_ca">j’écoutais</q>, ça n’est vraiment pas une mauvaise&nbsp;chose.</p>
  160. <a href="#hr-74" title="Lien vers cette section de la page"><hr id="hr-74" /></a>
  161. <p>Outil du jour&nbsp;: <a data-link-domain="whocanuse.com" href="https://www.whocanuse.com">who can use</a>.</p>
  162. <p>Voir en direct la perception des personnes sous forme de boutons pour des couleurs données permet de lâcher prise et de se concentrer sur la lisibilité. Savoir que seules 68% des personnes ont la capacité à voir ce que je vois (peut-être) donne un autre sens à&nbsp;l’accessibilité.</p>
  163. <a href="#hr-75" title="Lien vers cette section de la page"><hr id="hr-75" /></a>
  164. <p>Découverte d’un nouveau <a data-link-domain="montreal.ca" href="https://montreal.ca/lieux/parc-nature-du-cap-saint-jacques">terrain de jeu en hiver</a>.</p>
  165. <p>Le nombre d’hivers où il sera encore possible de skier à Montréal sont comptés. Il fait probablement partie de la dernière génération à pouvoir le faire. Aujourd’hui, une dizaine de kilomètres à skis-de-fond-de-location-qui-ne-glissent-pas&nbsp;(sic).</p>
  166. <a href="#hr-76" title="Lien vers cette section de la page"><hr id="hr-76" /></a>
  167. <blockquote lang="en">
  168. <p>Most “news” is designed to trick us into giving our fucks to things that don’t deserve them or where they have no&nbsp;value.</p>
  169. <p><cite><em><a data-link-domain="patrickrhone.net" href="https://www.patrickrhone.net/the-fucks-and-how-we-give-them-a-manifesto/" hreflang="en"
  170. title="Consultation de l’article (anglais)">The Fucks and How We Give Them (A Manifesto)</a>
  171. <a href="/david/cache/2024/d890da6c22300e52daec05e9c5888784/" hreflang="en"
  172. data-tippy data-description="The older I get, the fewer fucks I’m willing to give."
  173. data-source="https://www.patrickrhone.net/the-fucks-and-how-we-give-them-a-manifesto/"
  174. data-date="2024-02-18"
  175. data-favicon="https://www.patrickrhone.net/favicon.ico"
  176. data-domain="patrickrhone.net"
  177. ><svg xmlns="http://www.w3.org/2000/svg"
  178. width="24" height="24" viewBox="0 0 24 24" fill="none"
  179. stroke="currentColor" stroke-width="2" stroke-linecap="square"
  180. stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle>
  181. <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path>
  182. <line x1="12" y1="17" x2="12.01" y2="17"></line>
  183. </svg>
  184. <span class="sr-only">[archive]</span></a></em></cite></p>
  185. </blockquote>
  186. <nav>
  187. <p>
  188. <a href="/david/2024/ecriture/"
  189. title="Liste de tous les articles 2024 associés à cette étiquette"
  190. rel="tag">#écriture</a>
  191. <a href="/david/2024/lecture/"
  192. title="Liste de tous les articles 2024 associés à cette étiquette"
  193. rel="tag">#lecture</a>
  194. <a href="/david/2024/solastalgia/"
  195. title="Liste de tous les articles 2024 associés à cette étiquette"
  196. rel="tag">#solastalgia</a>
  197. <a href="/david/2024/#tags" title="Liste de toutes les étiquettes 2024">tous ?</a>
  198. </p>
  199. </nav>
  200. <h2>
  201. <a href="/david/2024/02/06/" title="Lien permanent vers cet article">Anneau</a> <time datetime="2024-02-06">6 février 2024</time>
  202. </h2>
  203. <blockquote>
  204. <p>«&nbsp;J’aurais voulu que cela n’ait pas à arriver de mon temps&nbsp;», dit Frodo.<br />
  205. «&nbsp;Moi aussi, dit Gandalf, et il en va de même pour tout ceux qui vivent en de pareils temps. Mais il ne leur appartient pas de décider. Tout ce qu’il nous appartient de décider, c’est <mark>ce que nous comptons faire du temps qui nous est imparti.</mark>&nbsp;»</p>
  206. <p><cite><em>Le seigneur des anneaux</em>, J.R.R. Tolkien</cite></p>
  207. </blockquote>
  208. <p>Me voilà reparti pour un tour au départ <strong>du</strong> Comté, cette fois avec la nouvelle traduction de Daniel Lauzon. Ça pique un peu au niveau des noms, forcément.</p>
  209. <p>Je vais moins publier ces prochains&nbsp;jours&nbsp;😇.</p>
  210. <blockquote>
  211. <p><em>Tout ce qui est or ne brille pas,</em><br />
  212. <em>Ne sont pas perdus tout ceux qui vagabondent&#8239;;</em><br />
  213. <em>Ce qui est vieux mais fort ne se flétrit pas,</em><br />
  214. <em>Le gel n’atteint pas les racines&nbsp;profondes.</em></p>
  215. <p><cite><em>Ibid.</em></cite></p>
  216. </blockquote>
  217. <a href="#hr-68" title="Lien vers cette section de la page"><hr id="hr-68" /></a>
  218. <blockquote lang="en">
  219. <p>The webring is a directory of neighbor websites and&nbsp;portfolios.</p>
  220. <p>This is an attempt to <strong>inspire artists and developers to create and maintain their own personal website,</strong> and share traffic organically among each other. The ring’s aim is to promote the creation of hand crafted diaries, wikis, bookmarks and&nbsp;portfolios.</p>
  221. <p><cite><em><a data-link-domain="wiki.xxiivv.com" href="https://wiki.xxiivv.com/site/webring.html" hreflang="en"
  222. title="Consultation de l’article (anglais)">XXIIVV - webring</a>
  223. <a href="/david/cache/2024/842e88c947068b81c9b9d6218c600dd2/" hreflang="en"
  224. data-tippy data-description="The Webring, like we are in the 2000s."
  225. data-source="https://wiki.xxiivv.com/site/webring.html"
  226. data-date="2024-02-06"
  227. data-favicon="https://wiki.xxiivv.com/media/services/icon.png"
  228. data-domain="wiki.xxiivv.com"
  229. ><svg xmlns="http://www.w3.org/2000/svg"
  230. width="24" height="24" viewBox="0 0 24 24" fill="none"
  231. stroke="currentColor" stroke-width="2" stroke-linecap="square"
  232. stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle>
  233. <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path>
  234. <line x1="12" y1="17" x2="12.01" y2="17"></line>
  235. </svg>
  236. <span class="sr-only">[archive]</span></a></em></cite></p>
  237. </blockquote>
  238. <p>C’est marrant de voir ressurgir d’anciennes pratiques. Il y a un côté vintage, ou reprise d’une ancienne chanson populaire. Avec ce questionnement récurrent&nbsp;: <q>N’a-t-on vraiment rien inventé de mieux depuis&#8239;?</q> (Ah si, maintenant il faut avoir un compte Microsauron Github pour accéder à&nbsp;l’anneau.)</p>
  239. <p><em>Écrit-il en relisant pour la x-ième fois le même&nbsp;livre.</em></p>
  240. <blockquote lang="en">
  241. <p>With roots in the world of fashion, there exists a cyclical principle suggesting that every two decades, previously popular trends “every 20&nbsp;years or so the trends that were once popular will begin to be on the forefront again.” What’s old is new again. However, <mark>these recurring trends aren’t just rip-offs.</mark> They are remixed and reinterpreted through the lens of a new&nbsp;generation.</p>
  242. <p>We are, perhaps, in a 20&nbsp;year resurgence for the indie web and&nbsp;blogging.</p>
  243. <p><cite><em><a data-link-domain="thehistoryoftheweb.com" href="https://thehistoryoftheweb.com/weve-been-waiting-20-years-for-this/" hreflang="en"
  244. title="Consultation de l’article (anglais)">We’ve been waiting 20&nbsp;years for this</a>
  245. <a href="/david/cache/2024/155c5458fcbfb1450f19bc0d268c871e/" hreflang="en"
  246. data-tippy data-description="The indie web may be back. But if is, it is likely in a way we least expect."
  247. data-source="https://thehistoryoftheweb.com/weve-been-waiting-20-years-for-this/"
  248. data-date="2024-02-06"
  249. data-favicon="https://ik.imagekit.io/aoi3fgebjgr/wp-content/uploads/2017/09/cropped-thotw-logo-square-1-32x32.jpg"
  250. data-domain="thehistoryoftheweb.com"
  251. ><svg xmlns="http://www.w3.org/2000/svg"
  252. width="24" height="24" viewBox="0 0 24 24" fill="none"
  253. stroke="currentColor" stroke-width="2" stroke-linecap="square"
  254. stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle>
  255. <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path>
  256. <line x1="12" y1="17" x2="12.01" y2="17"></line>
  257. </svg>
  258. <span class="sr-only">[archive]</span></a></em></cite></p>
  259. </blockquote>
  260. <nav>
  261. <p>
  262. <a href="/david/2024/communaute/"
  263. title="Liste de tous les articles 2024 associés à cette étiquette"
  264. rel="tag">#communauté</a>
  265. <a href="/david/2024/equipe/"
  266. title="Liste de tous les articles 2024 associés à cette étiquette"
  267. rel="tag">#équipe</a>
  268. <a href="/david/2024/lecture/"
  269. title="Liste de tous les articles 2024 associés à cette étiquette"
  270. rel="tag">#lecture</a>
  271. <a href="/david/2024/#tags" title="Liste de toutes les étiquettes 2024">tous ?</a>
  272. </p>
  273. </nav>
  274. <form action="/david/recherche/" method="get">
  275. <fieldset>
  276. <legend>Recherche</legend>
  277. <label for="input-search">Termes de votre recherche :</label>
  278. <input id="input-search" type="search" name="s" aria-describedby="indexation-infos" required>
  279. <input type="submit" value="Chercher">
  280. <p id="indexation-infos">
  281. <small>
  282. Seuls les contenus de ces 8 dernières années sont indexés.
  283. </small>
  284. </p>
  285. </fieldset>
  286. </form>
  287. <aside>
  288. <theme-toggle></theme-toggle>
  289. </aside>
  290. </article>
  291. <hr>
  292. <footer>
  293. <p>
  294. <a href="/david/" title="Aller à l’accueil">Accueil</a>
  295. <a href="/david/log/" title="Accès au flux RSS">Suivre</a>
  296. <a href="http://larlet.com"
  297. title="Go to my English profile"
  298. data-instant>Pro</a>
  299. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">Email</a>
  300. <abbr title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340">Légal</abbr>
  301. </p>
  302. <template id="theme-selector">
  303. <form>
  304. <style type="text/css">
  305. fieldset div {
  306. text-align: center;
  307. }
  308. </style>
  309. <fieldset>
  310. <legend>Thème</legend>
  311. <div>
  312. <label>
  313. <input type="radio" value="auto" name="chosen-color-scheme" checked>
  314. Auto
  315. </label>
  316. <label>
  317. <input type="radio" value="dark" name="chosen-color-scheme">
  318. Foncé
  319. </label>
  320. <label>
  321. <input type="radio" value="light" name="chosen-color-scheme">
  322. Clair
  323. </label>
  324. </div>
  325. </fieldset>
  326. </form>
  327. </template>
  328. </footer>
  329. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  330. <script>
  331. class ThemeToggle extends HTMLElement {
  332. constructor() {
  333. super()
  334. const themeSelectorTemplate = document.querySelector('#theme-selector')
  335. const form = themeSelectorTemplate.content.firstElementChild
  336. this.attachShadow({ mode: 'open' })
  337. this.shadowRoot.appendChild(form.cloneNode(true))
  338. }
  339. connectedCallback() {
  340. const form = this.shadowRoot.querySelector('form')
  341. form.addEventListener('change', (e) => {
  342. const chosenColorScheme = e.target.value
  343. localStorage.setItem('theme', chosenColorScheme)
  344. toggleTheme(chosenColorScheme)
  345. })
  346. const selectedTheme = localStorage.getItem('theme')
  347. if (selectedTheme && selectedTheme !== 'undefined') {
  348. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  349. }
  350. }
  351. }
  352. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  353. window.addEventListener('load', () => {
  354. let colorsLayer = undefined
  355. let hasDarkRules = false
  356. for (const styleSheet of Array.from(document.styleSheets)) {
  357. let mediaRules = []
  358. for (const layerRule of styleSheet.cssRules) {
  359. if (!(layerRule instanceof CSSLayerBlockRule)) {
  360. continue
  361. }
  362. if (layerRule.name === 'colors') {
  363. colorsLayer = layerRule
  364. }
  365. for (const cssRule of layerRule.cssRules) {
  366. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  367. continue
  368. }
  369. // WARNING: Safari does not have/supports `conditionText`.
  370. if (cssRule.conditionText) {
  371. if (cssRule.conditionText !== prefersColorSchemeDark) {
  372. continue
  373. }
  374. } else {
  375. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  376. continue
  377. }
  378. }
  379. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  380. }
  381. }
  382. // WARNING: do not try to insert a Rule to a styleSheet you are
  383. // currently iterating on, otherwise the browser will be stuck
  384. // in a infinite loop…
  385. for (const mediaRule of mediaRules) {
  386. // Safari requires the `0` second parameter (even if default).
  387. colorsLayer.insertRule(mediaRule.cssText, 0)
  388. hasDarkRules = true
  389. }
  390. }
  391. if (hasDarkRules) {
  392. if ('customElements' in window && !customElements.get('theme-toggle')) {
  393. customElements.define('theme-toggle', ThemeToggle)
  394. }
  395. }
  396. })
  397. </script>
  398. </body>
  399. </html>