ranui
Version:
UI Component library based on `Web Component`
79 lines (78 loc) • 2.37 kB
JavaScript
var __defProp = Object.defineProperty;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
import "./plus-BQnIzzvi.js";
const falseList = [false, "false", null, void 0];
const isDisabled = (element) => {
const status = element.hasAttribute("disabled");
const value = element.getAttribute("disabled");
if (status && !falseList.includes(value)) return true;
return false;
};
const removeClassToElementChild = (parent, deleteClass) => {
const pre = parent.querySelectorAll(`.${deleteClass}`);
if (pre.length > 0) {
pre.forEach((item) => item.classList.remove(deleteClass));
}
};
function createCustomError(msg = "") {
return class CustomError {
constructor(message = msg) {
__publicField(this, "message");
this.message = message;
}
};
}
const HTMLElementSSR = () => {
if (typeof document !== "undefined") {
return HTMLElement;
}
return null;
};
const createSignal = (value, options) => {
const signal = {
value,
// 订阅者
subscribers: /* @__PURE__ */ new Set(),
comparator: options == null ? void 0 : options.equals
};
const { subscriber } = options || {};
if (subscriber && Array.isArray(subscriber)) {
subscriber.forEach((item) => {
if (typeof item === "function" && !signal.subscribers.has(item)) {
signal.subscribers.add(item);
}
});
}
const getter = () => {
return signal.value;
};
const updateSignal = (newValue) => {
if (signal.value !== newValue) {
signal.value = newValue;
signal.subscribers.forEach((subscriber2) => subscriber2(newValue));
}
};
const setter = (newValue) => {
const { comparator } = signal;
if (comparator instanceof Function) {
return !comparator(signal.value, newValue) && updateSignal(newValue);
}
if (comparator === void 0) {
if (signal.value !== newValue) {
updateSignal(newValue);
}
} else {
!comparator && updateSignal(newValue);
}
};
return [getter, setter];
};
export {
HTMLElementSSR as H,
createSignal as a,
createCustomError as c,
falseList as f,
isDisabled as i,
removeClassToElementChild as r
};