preline
Version:
Preline UI is an open-source set of prebuilt UI components based on the utility-first Tailwind CSS framework.
17 lines • 5.34 kB
JavaScript
!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var s=t();for(var i in s)("object"==typeof exports?exports:e)[i]=s[i]}}(self,()=>(()=>{"use strict";var e={2961(e,t){
/*
* HSBasePlugin
* @version: 4.2.0
* @author: Preline Labs Ltd.
* @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)
* Copyright 2024 Preline Labs Ltd.
*/
Object.defineProperty(t,"__esModule",{value:!0});t.default=class{constructor(e,t,s){this.el=e,this.options=t,this.events=s,this.el=e,this.options=t,this.events={}}createCollection(e,t){var s,i;let n=e;if(!Array.isArray(n)&&"undefined"!=typeof window){const e=null===(s=this.constructor)||void 0===s?void 0:s.name,t="string"==typeof e&&e.startsWith("HS")?`$hs${e.slice(2)}Collection`:null;t&&(Array.isArray(window[t])||(window[t]=[]),n=window[t])}Array.isArray(n)&&n.push({id:(null===(i=null==t?void 0:t.el)||void 0===i?void 0:i.id)||n.length+1,element:t})}fireEvent(e,t=null){if(this.events.hasOwnProperty(e))return this.events[e](t)}on(e,t){this.events[e]=t}}},9419(e,t,s){
/*
* HSThemeSwitch
* @version: 4.2.0
* @author: Preline Labs Ltd.
* @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)
* Copyright 2024 Preline Labs Ltd.
*/
var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=i(s(2961));class o extends n.default{constructor(e,t){super(e,t);const s=e.getAttribute("data-hs-theme-switch"),i=s?JSON.parse(s):{},n=Object.assign(Object.assign({},i),t);this.theme=(null==n?void 0:n.theme)||localStorage.getItem("hs_theme")||"default",this.type=(null==n?void 0:n.type)||"change",this.init()}elementChange(e){const t=e.target.checked?"dark":"default";this.setAppearance(t),this.toggleObserveSystemTheme()}elementClick(e){this.setAppearance(e),this.toggleObserveSystemTheme()}init(){this.createCollection(window.$hsThemeSwitchCollection,this),"default"!==this.theme&&this.setAppearance(),"click"===this.type?this.buildSwitchTypeOfClick():this.buildSwitchTypeOfChange()}buildSwitchTypeOfChange(){this.el.checked="dark"===this.theme,this.toggleObserveSystemTheme(),this.onElementChangeListener=e=>this.elementChange(e),this.el.addEventListener("change",this.onElementChangeListener)}buildSwitchTypeOfClick(){const e=this.el.getAttribute("data-hs-theme-click-value");this.toggleObserveSystemTheme(),this.onElementClickListener=()=>this.elementClick(e),this.el.addEventListener("click",this.onElementClickListener)}setResetStyles(){const e=document.createElement("style");return e.innerText="*{transition: unset !important;}",e.setAttribute("data-hs-appearance-onload-styles",""),document.head.appendChild(e),e}addSystemThemeObserver(){o.systemThemeObserver||(o.systemThemeObserver=e=>{var t;null===(t=window.$hsThemeSwitchCollection)||void 0===t||t.forEach(e=>{"auto"===localStorage.getItem("hs_theme")&&e.element.setAppearance("auto",!1)})},window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",o.systemThemeObserver))}removeSystemThemeObserver(){o.systemThemeObserver&&(window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change",o.systemThemeObserver),o.systemThemeObserver=null)}toggleObserveSystemTheme(){"auto"===localStorage.getItem("hs_theme")?this.addSystemThemeObserver():this.removeSystemThemeObserver()}setAppearance(e=this.theme,t=!0,s=!0){const i=document.querySelector("html"),n=this.setResetStyles();t&&localStorage.setItem("hs_theme",e);let o=e;"default"===o&&(o="light"),"auto"===o&&(o=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),i.classList.remove("light","dark","default","auto"),"auto"===e?i.classList.add("auto",o):i.classList.add(o),setTimeout(()=>n.remove()),s&&window.dispatchEvent(new CustomEvent("on-hs-appearance-change",{detail:e}))}destroy(){"change"===this.type&&this.el.removeEventListener("change",this.onElementChangeListener),"click"===this.type&&this.el.removeEventListener("click",this.onElementClickListener),window.$hsThemeSwitchCollection=window.$hsThemeSwitchCollection.filter(({element:e})=>e.el!==this.el)}static getInstance(e,t){const s=window.$hsThemeSwitchCollection.find(t=>t.element.el===("string"==typeof e?document.querySelector(e):e));return s?t?s:s.element.el:null}static autoInit(){window.$hsThemeSwitchCollection||(window.$hsThemeSwitchCollection=[]),window.$hsThemeSwitchCollection&&(window.$hsThemeSwitchCollection=window.$hsThemeSwitchCollection.filter(({element:e})=>document.contains(e.el))),document.querySelectorAll("[data-hs-theme-switch]:not(.--prevent-on-load-init)").forEach(e=>{window.$hsThemeSwitchCollection.find(t=>{var s;return(null===(s=null==t?void 0:t.element)||void 0===s?void 0:s.el)===e})||new o(e,{type:"change"})}),document.querySelectorAll("[data-hs-theme-click-value]:not(.--prevent-on-load-init)").forEach(e=>{window.$hsThemeSwitchCollection.find(t=>{var s;return(null===(s=null==t?void 0:t.element)||void 0===s?void 0:s.el)===e})||new o(e,{type:"click"})})}}o.systemThemeObserver=null,t.default=o}},t={};var s=function s(i){var n=t[i];if(void 0!==n)return n.exports;var o=t[i]={exports:{}};return e[i].call(o.exports,o,o.exports,s),o.exports}(9419);return s})());