vue-devui
Version:
DevUI components based on Vite and Vue3
1,475 lines • 346 kB
JavaScript
var __defProp = Object.defineProperty;
var __defProps = Object.defineProperties;
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a, b) => {
for (var prop in b || (b = {}))
if (__hasOwnProp.call(b, prop))
__defNormalProp(a, prop, b[prop]);
if (__getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(b)) {
if (__propIsEnum.call(b, prop))
__defNormalProp(a, prop, b[prop]);
}
return a;
};
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
var __objRest = (source, exclude) => {
var target = {};
for (var prop in source)
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
target[prop] = source[prop];
if (source != null && __getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(source)) {
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
target[prop] = source[prop];
}
return target;
};
var __publicField = (obj, key, value) => {
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
return value;
};
import { defineComponent, toRefs, computed, createVNode, resolveDynamicComponent, mergeProps, ref, reactive, onMounted, onBeforeUnmount, onUnmounted, Fragment, h, render, inject, withDirectives, resolveComponent, vShow, provide, toRef, getCurrentInstance, watch, withModifiers, isVNode, Transition, unref, nextTick, Comment, Text, cloneVNode, Teleport, createTextVNode, shallowRef, resolveDirective } from "vue";
import { onClickOutside } from "@vueuse/core";
import "clipboard";
import { offset, autoPlacement, arrow, shift, computePosition } from "@floating-ui/dom";
const timePickerProps = {
modelValue: {
type: String,
default: ""
},
placeholder: {
type: String,
default: "00:00:00"
},
disabled: {
type: Boolean,
default: false
},
timePickerWidth: {
type: Number,
default: 212
},
minTime: {
type: String,
default: "00:00:00"
},
maxTime: {
type: String,
default: "23:59:59"
},
format: {
type: String,
default: "hh:mm:ss"
},
autoOpen: {
type: Boolean,
default: false
},
showAnimation: {
type: Boolean,
default: true
},
size: {
type: String
},
readonly: {
type: Boolean,
default: false
}
};
const DEFAULT_PREFIX = "icon";
const iconProps = {
name: {
type: String,
default: "",
required: true
},
size: {
type: [Number, String],
default: "inherit"
},
color: {
type: String,
default: "inherit"
},
component: {
type: Object,
default: null
},
classPrefix: {
type: String,
default: DEFAULT_PREFIX
},
operable: {
type: Boolean,
default: false
},
disabled: {
type: Boolean,
default: false
},
rotate: {
type: [Number, String]
}
};
const svgIconProps = {
name: {
type: String,
default: "",
required: true
},
color: {
type: String,
default: "inherit"
},
size: {
type: [Number, String],
default: "inherit"
}
};
function createBem$1(namespace, element, modifier) {
let cls = namespace;
if (element) {
cls += `__${element}`;
}
if (modifier) {
cls += `--${modifier}`;
}
return cls;
}
function useNamespace$1(block, needDot = false) {
const namespace = needDot ? `.devui-${block}` : `devui-${block}`;
const b = () => createBem$1(namespace);
const e = (element) => element ? createBem$1(namespace, element) : "";
const m = (modifier) => modifier ? createBem$1(namespace, "", modifier) : "";
const em = (element, modifier) => element && modifier ? createBem$1(namespace, element, modifier) : "";
return {
b,
e,
m,
em
};
}
var icon = "";
var svgIcon = defineComponent({
name: "DSvgIcon",
props: svgIconProps,
setup(props) {
const {
name,
color,
size
} = toRefs(props);
const ns2 = useNamespace$1("svg-icon");
const iconName = computed(() => `#icon-${name.value}`);
const iconSize = computed(() => {
return typeof size.value === "number" ? `${size.value}px` : size.value;
});
const styles = {
width: iconSize.value,
height: iconSize.value
};
return () => {
return createVNode("svg", {
"class": ns2.b(),
"style": styles
}, [createVNode("use", {
"xlink:href": iconName.value,
"fill": color.value
}, null)]);
};
}
});
function isUrl(value) {
return /^((http|https):)?\/\//.test(value);
}
function useIconDom(props, ctx) {
const {
component,
name,
size,
color,
classPrefix,
rotate
} = toRefs(props);
const ns2 = useNamespace$1("icon");
const iconSize = computed(() => {
return typeof size.value === "number" ? `${size.value}px` : size.value;
});
const IconComponent = component.value ? resolveDynamicComponent(component.value) : resolveDynamicComponent(svgIcon);
const imgIconDom = () => {
return createVNode("img", mergeProps({
"src": name.value,
"alt": name.value.split("/")[name.value.split("/").length - 1],
"class": [(rotate == null ? void 0 : rotate.value) === "infinite" && ns2.m("spin")],
"style": {
width: iconSize.value || "",
transform: `rotate(${rotate == null ? void 0 : rotate.value}deg)`,
verticalAlign: "middle"
}
}, ctx.attrs), null);
};
const svgIconDom = () => {
return createVNode(IconComponent, mergeProps({
"name": name.value,
"color": color.value,
"size": iconSize.value,
"class": [(rotate == null ? void 0 : rotate.value) === "infinite" && ns2.m("spin")],
"style": {
transform: `rotate(${rotate == null ? void 0 : rotate.value}deg)`
}
}, ctx.attrs), null);
};
const fontIconDom = () => {
const fontIconClass = /^icon-/.test(name.value) ? name.value : `${classPrefix.value}-${name.value}`;
return createVNode("i", mergeProps({
"class": [classPrefix.value, fontIconClass, (rotate == null ? void 0 : rotate.value) === "infinite" && ns2.m("spin")],
"style": {
fontSize: iconSize.value,
color: color.value,
transform: `rotate(${rotate == null ? void 0 : rotate.value}deg)`
}
}, ctx.attrs), null);
};
const iconDom = () => {
return component.value ? svgIconDom() : isUrl(name.value) ? imgIconDom() : fontIconDom();
};
return {
iconDom
};
}
var Icon = defineComponent({
name: "DIcon",
props: iconProps,
emits: ["click"],
setup(props, ctx) {
const {
disabled,
operable
} = toRefs(props);
const {
iconDom
} = useIconDom(props, ctx);
const ns2 = useNamespace$1("icon");
const wrapClassed = computed(() => ({
[ns2.e("container")]: true,
[ns2.m("disabled")]: disabled.value,
[ns2.m("operable")]: operable.value,
[ns2.m("no-slots")]: !Object.keys(ctx.slots).length
}));
const onClick = (e) => {
if (disabled.value) {
return;
}
ctx.emit("click", e);
};
return () => {
var _a, _b, _c, _d;
return createVNode("div", {
"class": wrapClassed.value,
"onClick": onClick
}, [(_b = (_a = ctx.slots).prefix) == null ? void 0 : _b.call(_a), iconDom(), (_d = (_c = ctx.slots).suffix) == null ? void 0 : _d.call(_c)]);
};
}
});
var iconGroup = "";
defineComponent({
name: "DIconGroup",
setup(_, ctx) {
const ns2 = useNamespace$1("icon-group");
return () => {
var _a, _b;
return createVNode("div", {
"class": ns2.b()
}, [(_b = (_a = ctx.slots).default) == null ? void 0 : _b.call(_a)]);
};
}
});
function useTimePicker(hh, mm, ss, format2, props) {
const showPopup = ref(false);
const inputDom = ref();
const overlayRef = ref();
const timePopupDom = ref();
const timePickerValue = ref("");
const showClearIcon = ref(false);
const firsthandActiveTime = ref(`${hh.value}:${mm.value}:${ss.value}`);
const vModeValue = ref(props.modelValue);
const formatTime = () => {
let modelValue = vModeValue.value || "00:00:00";
if (["hh:mm", "mm:ss"].includes(format2)) {
modelValue = vModeValue.value || "00:00";
}
const timeArr = modelValue.split(":");
let trueValue = "00:00:00";
if (format2 === "hh:mm:ss") {
trueValue = modelValue;
} else if (format2 === "mm:hh:ss") {
trueValue = `${timeArr[1]}:${timeArr[0]}:${timeArr[2]}`;
} else if (format2 === "hh:mm") {
trueValue = `${timeArr[0]}:${timeArr[1]}`;
} else if (format2 === "mm:ss") {
trueValue = `${timeArr[0]}:${timeArr[1]}`;
}
return trueValue;
};
const trueTimeValue = computed(() => {
return formatTime();
});
const setInputValue = (h2, m, s) => {
if (format2 === "hh:mm:ss") {
vModeValue.value = `${h2}:${m}:${s}`;
} else if (format2 === "mm:hh:ss") {
vModeValue.value = `${m}:${h2}:${s}`;
} else if (format2 === "hh:mm") {
vModeValue.value = `${h2}:${m}`;
} else if (format2 === "mm:ss") {
vModeValue.value = `${m}:${s}`;
}
};
const initData = () => {
if (vModeValue.value) {
firsthandActiveTime.value = props.modelValue;
const time = vModeValue.value.split(":");
setInputValue(time[0], time[1], time[2]);
}
};
initData();
const changeTimeData = ({ activeHour, activeMinute, activeSecond }) => {
hh.value = activeHour.value || "00";
mm.value = activeMinute.value || "00";
ss.value = activeSecond.value || "00";
firsthandActiveTime.value = `${hh.value}:${mm.value}:${ss.value}`;
setInputValue(hh.value, mm.value, ss.value);
};
const mouseInputFun = () => {
if (!vModeValue.value) {
vModeValue.value = "00:00:00";
}
const minTimeValueArr = props.minTime.split(":");
const maxTimeValueArr = props.maxTime.split(":");
if (vModeValue.value > props.maxTime) {
firsthandActiveTime.value = props.maxTime;
setInputValue(maxTimeValueArr[0], maxTimeValueArr[1], maxTimeValueArr[2]);
} else if (vModeValue.value < props.minTime) {
firsthandActiveTime.value = props.minTime;
setInputValue(minTimeValueArr[0], minTimeValueArr[1], minTimeValueArr[2]);
}
showPopup.value = true;
};
const clickVerifyFun = () => {
if (props.disabled) {
return;
}
mouseInputFun();
};
onClickOutside(overlayRef, () => {
showPopup.value = false;
}, { ignore: [inputDom] });
const clearAll = (e) => {
e.stopPropagation();
if (props.minTime !== "00:00:00") {
const minTimeArr = props.minTime.split(":");
hh.value = minTimeArr[0];
mm.value = minTimeArr[1];
ss.value = minTimeArr[2];
} else {
hh.value = "00";
mm.value = "00";
ss.value = "00";
}
firsthandActiveTime.value = `${hh.value}:${mm.value}:${ss.value}`;
setInputValue(hh.value, mm.value, ss.value);
};
const isOutOpen = () => {
if (props.autoOpen) {
mouseInputFun();
showPopup.value = props.autoOpen;
}
};
const chooseTime = (slotTime) => {
if (slotTime.type) {
if (slotTime.type.toLowerCase() === "hh") {
hh.value = slotTime.time;
} else if (slotTime.type.toLowerCase() === "mm") {
mm.value = slotTime.time;
} else if (slotTime.type.toLowerCase() === "ss") {
ss.value = slotTime.time;
}
firsthandActiveTime.value = `${hh.value}:${mm.value}:${ss.value}`;
setInputValue(hh.value, mm.value, ss.value);
} else {
const timeArr = slotTime.time.split(":");
hh.value = timeArr[0];
mm.value = timeArr[1];
ss.value = timeArr[2];
firsthandActiveTime.value = `${hh.value}:${mm.value}:${ss.value}`;
setInputValue(hh.value, mm.value, ss.value);
}
};
return {
showPopup,
trueTimeValue,
timePickerValue,
inputDom,
timePopupDom,
showClearIcon,
firsthandActiveTime,
vModeValue,
clickVerifyFun,
isOutOpen,
clearAll,
chooseTime,
overlayRef,
changeTimeData
};
}
function initializeTimeData(type4) {
const timeArr = reactive([]);
let arrLength = 0;
if (type4 === "hour") {
arrLength = 24;
} else {
arrLength = 60;
}
for (let i = 0; i < arrLength; i++) {
timeArr.push({
time: i < 10 ? "0" + i : i + "",
isActive: false,
flag: type4,
isDisabled: false,
type: type4
});
}
return timeArr;
}
const setTimeAstrict = (hourList, minuteList, secondList, minTime, maxTime, format2) => {
const maxTimeHour = maxTime.split(":")[0];
const maxTimeMinute = maxTime.split(":")[1];
const minTimeHour = minTime.split(":")[0];
const minTimeMinute = minTime.split(":")[1];
const minTimeSecond = minTime.split(":")[2];
hourList.map((item) => {
if (item.time < minTimeHour || item.time > maxTimeHour) {
item.isDisabled = true;
}
});
if (format2 === "mm:ss") {
minuteList.map((item) => {
if (item.time < minTimeMinute || item.time > maxTimeMinute) {
item.isDisabled = true;
}
});
} else {
minuteList.map((item) => {
if (item.time < minTimeMinute) {
item.isDisabled = true;
}
});
}
secondList.map((item) => {
if (item.time < minTimeSecond) {
item.isDisabled = true;
}
});
};
const usePopupLine = (hourListRef, minuteListRef, secondListRef, minTime, maxTime, format2, itemHeight, timeListDom, ctx) => {
const activeTime = ref("00:00:00");
const activeHour = ref("00");
const activeMinute = ref("00");
const activeSecond = ref("00");
const setItemAstrict = (timeArr, min, max) => {
timeArr.map((item) => {
if (min !== "00" && item.time < min) {
item.isDisabled = true;
} else if (max !== "00" && item.time > max) {
item.isDisabled = true;
} else {
item.isDisabled = false;
}
});
};
const getItemAstrict = (item) => {
let min = "00";
let max = "00";
const minTimeHour = minTime.split(":")[0];
const minTimeMinute = minTime.split(":")[1];
const minTimeSecond = minTime.split(":")[2];
const maxTimeHour = maxTime.split(":")[0];
const maxTimeMinute = maxTime.split(":")[1];
const maxTimeSecond = maxTime.split(":")[2];
if (item.flag === "hour") {
if (item.time === minTimeHour) {
min = minTimeMinute;
setItemAstrict(minuteListRef, min, max);
activeMinute.value < minTimeMinute && setItemAstrict(secondListRef, minTimeSecond, max);
} else if (item.time === maxTimeHour) {
max = maxTimeMinute;
setItemAstrict(minuteListRef, min, max);
setItemAstrict(secondListRef, min, maxTimeSecond);
} else {
setItemAstrict(minuteListRef, min, max);
setItemAstrict(secondListRef, min, max);
}
}
if (item.flag === "minute" && format2 === "mm:ss") {
if (item.time === minTimeMinute) {
min = minTimeSecond;
setItemAstrict(secondListRef, min, max);
} else if (item.time === maxTimeMinute) {
max = maxTimeSecond;
setItemAstrict(secondListRef, min, max);
} else {
setItemAstrict(secondListRef, min, max);
}
} else if (item.flag === "minute") {
if (activeHour.value === minTimeHour && item.time === minTimeMinute) {
min = minTimeSecond;
setItemAstrict(secondListRef, min, max);
} else if (activeHour.value === maxTimeHour && item.time === maxTimeMinute) {
max = maxTimeSecond;
setItemAstrict(secondListRef, min, max);
} else {
setItemAstrict(secondListRef, min, max);
}
}
};
const resetTimeActive = (timeArr, itemValue) => {
timeArr.map((item) => {
item.isActive = item.time === itemValue;
});
};
const resetTimeAstrict = (timeArr, time) => {
timeArr.map((item) => {
if (item.time === time) {
getItemAstrict(item);
}
});
};
const resetTimeValue = (time) => {
const timeValueArr = time.split(":");
let hh = 0;
let mm = 0;
let ss = 0;
if (format2 === "hh:mm:ss") {
hh = parseInt(timeValueArr[0]);
mm = parseInt(timeValueArr[1]);
ss = parseInt(timeValueArr[2]);
timeListDom.value.children[0].lastElementChild.children[0].scrollTop = hh * itemHeight;
timeListDom.value.children[1].lastElementChild.children[0].scrollTop = mm * itemHeight;
timeListDom.value.children[2].lastElementChild.children[0].scrollTop = ss * itemHeight;
activeHour.value = timeValueArr[0];
activeMinute.value = timeValueArr[1];
activeSecond.value = timeValueArr[2];
resetTimeActive(hourListRef, timeValueArr[0]);
resetTimeActive(minuteListRef, timeValueArr[1]);
resetTimeActive(secondListRef, timeValueArr[2]);
resetTimeAstrict(hourListRef, activeHour.value);
resetTimeAstrict(minuteListRef, activeMinute.value);
} else if (format2 === "mm:hh:ss") {
hh = parseInt(timeValueArr[0]);
mm = parseInt(timeValueArr[1]);
ss = parseInt(timeValueArr[2]);
timeListDom.value.children[0].lastElementChild.children[0].scrollTop = mm * itemHeight;
timeListDom.value.children[1].lastElementChild.children[0].scrollTop = hh * itemHeight;
timeListDom.value.children[2].lastElementChild.children[0].scrollTop = ss * itemHeight;
activeHour.value = timeValueArr[0];
activeMinute.value = timeValueArr[1];
activeSecond.value = timeValueArr[2];
resetTimeActive(hourListRef, timeValueArr[0]);
resetTimeActive(minuteListRef, timeValueArr[1]);
resetTimeActive(secondListRef, timeValueArr[2]);
resetTimeAstrict(hourListRef, activeHour.value);
resetTimeAstrict(minuteListRef, activeMinute.value);
} else if (format2 === "hh:mm") {
hh = parseInt(timeValueArr[0]);
mm = parseInt(timeValueArr[1]);
timeListDom.value.children[0].lastElementChild.children[0].scrollTop = hh * itemHeight;
timeListDom.value.children[1].lastElementChild.children[0].scrollTop = mm * itemHeight;
activeHour.value = timeValueArr[0];
activeMinute.value = timeValueArr[1];
activeSecond.value = timeValueArr[2];
resetTimeActive(hourListRef, timeValueArr[0]);
resetTimeActive(minuteListRef, timeValueArr[1]);
resetTimeAstrict(hourListRef, activeHour.value);
} else if (format2 === "mm:ss") {
mm = parseInt(timeValueArr[1]);
ss = parseInt(timeValueArr[2]);
timeListDom.value.children[0].lastElementChild.children[0].scrollTop = mm * itemHeight;
timeListDom.value.children[1].lastElementChild.children[0].scrollTop = ss * itemHeight;
activeHour.value = timeValueArr[0];
activeMinute.value = timeValueArr[1];
activeSecond.value = timeValueArr[2];
resetTimeActive(minuteListRef, timeValueArr[1]);
resetTimeActive(secondListRef, timeValueArr[2]);
resetTimeAstrict(minuteListRef, activeMinute.value);
}
};
const setTimeActive = (item, index2) => {
let activeTimeList = [];
let activeTimeValue = ref("");
if (item.flag === "hour") {
activeTimeList = hourListRef;
activeTimeValue = activeHour;
getItemAstrict(item);
} else if (item.flag === "minute") {
activeTimeList = minuteListRef;
activeTimeValue = activeMinute;
getItemAstrict(item);
} else if (item.flag === "second") {
activeTimeList = secondListRef;
activeTimeValue = activeSecond;
}
activeTimeList.map((timeItem, timeIndex) => {
timeItem.isActive = index2 === timeIndex;
});
activeTimeValue.value = activeTimeList[index2].time;
activeTime.value = `${activeHour.value}:${activeMinute.value}:${activeSecond.value}`;
if (activeTime.value < minTime) {
activeTime.value = minTime;
resetTimeValue(minTime);
} else if (format2 === "mm:ss" && `${activeMinute.value}:${activeSecond.value}` > maxTime.slice(3)) {
const newMinTime = minTime.slice(0, 3) + maxTime.slice(3);
resetTimeValue(newMinTime);
} else if (activeTime.value > maxTime) {
activeTime.value = maxTime;
resetTimeValue(maxTime);
}
};
const activeTimeFun = (e, item, index2) => {
var _a, _b;
if (item.isDisabled) {
return false;
} else {
setTimeActive(item, index2);
if ((_a = e == null ? void 0 : e.target) == null ? void 0 : _a.parentElement) {
const pdom = (_b = e == null ? void 0 : e.target) == null ? void 0 : _b.parentElement;
pdom && pdom.parentElement && (pdom.parentElement.scrollTop = index2 * itemHeight);
}
}
ctx.emit("change", { activeHour, activeMinute, activeSecond });
};
const getNewTime = () => {
return { activeTime, activeHour, activeMinute, activeSecond };
};
const resetScrollTop = () => {
for (let i = 0; i < timeListDom.value.children.length; i++) {
timeListDom.value.children[i].lastElementChild.children[0].scrollTop = 0;
}
};
return {
activeTime,
activeHour,
activeMinute,
activeSecond,
activeTimeFun,
resetTimeValue,
getNewTime,
resetScrollTop
};
};
const popupLineProps = {
hourList: {
type: Array,
default: () => []
},
minuteList: {
type: Array,
default: () => []
},
secondList: {
type: Array,
default: () => []
},
format: {
type: String,
default: "hh:mm:ss"
},
minTime: {
type: String,
default: "00:00:00"
},
maxTime: {
type: String,
default: "23:59:59"
},
itemHeight: {
type: Number,
default: 32
}
};
function useTimeScroll() {
const scrollBoxDom = ref(null);
const scrollContentDom = ref(null);
const scrollThumbDom = ref(null);
const scrollTrackDom = ref(null);
const isDown = ref(false);
const getScrollHeight = () => {
var _a, _b;
const thumbHeight = (((_a = scrollContentDom.value) == null ? void 0 : _a.clientHeight) || 0) / (((_b = scrollContentDom.value) == null ? void 0 : _b.scrollHeight) || 0) * 100;
scrollThumbDom.value && (scrollThumbDom.value.style.height = thumbHeight + "%");
};
const setVirtualScroll = () => {
var _a, _b;
const thumbMoveY = (((_a = scrollContentDom.value) == null ? void 0 : _a.scrollTop) || 0) * 100 / (((_b = scrollContentDom.value) == null ? void 0 : _b.clientHeight) || 0);
scrollThumbDom.value && (scrollThumbDom.value.style.transform = `translateY(${thumbMoveY}%)`);
};
const clickTrackFun = (e) => {
var _a, _b, _c, _d, _e;
const offsetNum = (((_c = (_b = (_a = scrollTrackDom.value) == null ? void 0 : _a.getBoundingClientRect) == null ? void 0 : _b.call(_a)) == null ? void 0 : _c.top) || 0) - e.clientY;
const offset2 = Math.abs(offsetNum > 0 ? 0 : offsetNum);
const thumbCenter = (((_d = scrollThumbDom.value) == null ? void 0 : _d.offsetHeight) || 0) / 2;
const thumbPosition = (offset2 - thumbCenter) * 100 / (((_e = scrollContentDom.value) == null ? void 0 : _e.offsetHeight) || 0);
if (scrollContentDom.value) {
scrollContentDom.value.scrollTop = thumbPosition * scrollContentDom.value.scrollHeight / 100;
scrollContentDom.value.style.top = scrollContentDom.value.scrollTop + "px";
}
};
const thumbMouseMove = (e) => {
const path = e.composedPath && e.composedPath() || e.path;
if (scrollBoxDom.value && path.includes(scrollBoxDom.value) || isDown.value) {
scrollTrackDom.value && (scrollTrackDom.value.style.opacity = "1");
} else {
scrollTrackDom.value && (scrollTrackDom.value.style.opacity = "0");
}
if (!isDown.value) {
return;
}
clickTrackFun(e);
};
const mouseDownThum = () => {
isDown.value = true;
scrollTrackDom.value && (scrollTrackDom.value.style.opacity = "1");
};
const mouseOutThum = (e) => {
isDown.value = false;
thumbMouseMove(e);
};
const getScrollWidth = () => {
var _a;
const ua = navigator.userAgent;
let marginRight = -20;
if (ua.indexOf("Chrome") > -1) {
marginRight = -8;
} else {
const outer = document.createElement("div");
outer.className = "devui-scrollbar-wrap";
outer.style.width = "100px";
outer.style.visibility = "hidden";
outer.style.position = "absolute";
outer.style.top = "-9999px";
document.body.appendChild(outer);
const widthNoScroll = outer.offsetWidth;
outer.style.overflow = "scroll";
const inner = document.createElement("div");
inner.style.width = "100%";
outer.appendChild(inner);
const widthWithScroll = inner.offsetWidth;
(_a = outer.parentNode) == null ? void 0 : _a.removeChild(outer);
marginRight = (widthNoScroll - widthWithScroll + 3) * -1;
}
return marginRight;
};
return {
scrollThumbDom,
scrollTrackDom,
scrollContentDom,
scrollBoxDom,
isDown,
getScrollHeight,
setVirtualScroll,
clickTrackFun,
mouseDownThum,
mouseOutThum,
thumbMouseMove,
getScrollWidth
};
}
function lockScroll() {
if (document.documentElement.scrollHeight > document.documentElement.clientHeight) {
const scrollTop = document.documentElement.scrollTop;
const style = document.documentElement.getAttribute("style");
document.documentElement.style.position = "fixed";
document.documentElement.style.top = `-${scrollTop}px`;
document.documentElement.style.width = document.documentElement.style.width || "100%";
document.documentElement.style.overflowY = "scroll";
return () => {
if (style) {
document.documentElement.setAttribute("style", style);
} else {
document.documentElement.removeAttribute("style");
}
document.documentElement.scrollTop = scrollTop;
};
}
return;
}
function createBem(namespace, element, modifier) {
let cls = namespace;
if (element) {
cls += `__${element}`;
}
if (modifier) {
cls += `--${modifier}`;
}
return cls;
}
function useNamespace(block, needDot = false) {
const namespace = needDot ? `.devui-${block}` : `devui-${block}`;
const b = () => createBem(namespace);
const e = (element) => element ? createBem(namespace, element) : "";
const m = (modifier) => modifier ? createBem(namespace, "", modifier) : "";
const em = (element, modifier) => element && modifier ? createBem(namespace, element, modifier) : "";
return {
b,
e,
m,
em
};
}
var index$3 = "";
var TimeScroll = defineComponent({
name: "DTimeScroll",
props: timePickerProps,
setup(props, ctx) {
const ns2 = useNamespace("scroll-box");
const {
scrollBoxDom,
scrollThumbDom,
scrollTrackDom,
scrollContentDom,
isDown,
getScrollHeight,
setVirtualScroll,
clickTrackFun,
mouseDownThum,
mouseOutThum,
thumbMouseMove,
getScrollWidth
} = useTimeScroll();
const marginRight = getScrollWidth();
onMounted(() => {
var _a, _b, _c;
getScrollWidth();
getScrollHeight();
(_a = scrollBoxDom.value) == null ? void 0 : _a.addEventListener("click", setVirtualScroll);
(_b = scrollContentDom.value) == null ? void 0 : _b.addEventListener("scroll", setVirtualScroll);
(_c = scrollThumbDom.value) == null ? void 0 : _c.addEventListener("mousedown", mouseDownThum);
document.addEventListener("mouseup", mouseOutThum);
document.addEventListener("mousemove", thumbMouseMove);
});
onBeforeUnmount(() => {
var _a, _b, _c;
(_a = scrollBoxDom.value) == null ? void 0 : _a.removeEventListener("click", setVirtualScroll);
(_b = scrollContentDom.value) == null ? void 0 : _b.removeEventListener("scroll", setVirtualScroll);
(_c = scrollThumbDom.value) == null ? void 0 : _c.removeEventListener("mousedown", mouseDownThum);
});
onUnmounted(() => {
document.removeEventListener("mouseup", mouseOutThum);
document.removeEventListener("mousemove", thumbMouseMove);
});
return () => {
var _a, _b;
return createVNode(Fragment, null, [createVNode("div", {
"ref": scrollBoxDom,
"class": ns2.b()
}, [createVNode("div", {
"ref": scrollContentDom,
"class": `box-content ${isDown.value || !props.showAnimation ? "box-content-behavior-auto" : ""}`,
"style": {
"margin-right": marginRight + "px"
}
}, [(_b = (_a = ctx.slots).default) == null ? void 0 : _b.call(_a)]), createVNode("div", {
"ref": scrollTrackDom,
"class": "box-sroll",
"onClick": clickTrackFun
}, [createVNode("div", {
"ref": scrollThumbDom,
"class": "scroll-child"
}, null)])])]);
};
}
});
var index$2 = "";
var PopupLine = defineComponent({
name: "DPopupLine",
props: popupLineProps,
emits: ["change"],
setup(props, ctx) {
const ns2 = useNamespace("popup-line");
const timeListDom = ref();
const {
getNewTime,
activeTimeFun,
resetTimeValue,
resetScrollTop
} = usePopupLine(props.hourList, props.minuteList, props.secondList, props.minTime, props.maxTime, props.format, props.itemHeight, timeListDom, ctx);
const setOuterTime = (time) => {
resetTimeValue(time);
};
const TimeLi = (timeArr) => {
return timeArr.map((item, index2) => createVNode("li", {
"class": `time-li ${item.flag}Id-${index2} ${item.isActive ? "active-li" : ""} ${item.isDisabled ? "disabled-li" : ""}`,
"onClick": (e) => {
activeTimeFun(e, item, index2);
}
}, [createVNode("span", null, [item.time])]));
};
const TimeUl = (timeList) => {
return createVNode("div", {
"class": "time-item",
"style": {
flex: 1
}
}, [createVNode(TimeScroll, null, {
default: () => [createVNode("ul", {
"class": "time-ul"
}, [TimeLi(timeList)])]
})]);
};
const formatTimeUl = () => {
const timeList = {
hh: props.hourList,
mm: props.minuteList,
ss: props.secondList
};
const timeFormatArr = props.format.split(":");
return timeFormatArr.map((timeItem) => {
return TimeUl(timeList[timeItem]);
});
};
ctx.expose({
resetScrollTop,
setOuterTime,
getNewTime
});
return () => createVNode("div", {
"class": ns2.b(),
"ref": timeListDom
}, [formatTimeUl()]);
}
});
class View {
constructor() {
__publicField(this, "top", "50%");
__publicField(this, "left", "50%");
}
}
const loadingProps = {
message: String,
backdrop: Boolean,
view: {
type: Object,
default: () => new View()
},
zIndex: Number,
isFull: {
type: Boolean,
default: false
}
};
class LoadingOptions {
constructor() {
__publicField(this, "target");
__publicField(this, "message");
__publicField(this, "loadingTemplateRef");
__publicField(this, "backdrop", true);
__publicField(this, "positionType", "relative");
__publicField(this, "view", new View());
__publicField(this, "zIndex");
}
}
var loading = "";
var Loading = defineComponent({
name: "Loading",
inheritAttrs: false,
props: loadingProps,
setup(props) {
const style = {
top: props.view.top,
left: props.view.left,
zIndex: props.zIndex
};
if (!props.message) {
style.background = "none";
}
const isShow = ref(false);
const open = () => {
isShow.value = true;
};
const close = () => {
isShow.value = false;
};
return {
style,
isShow,
open,
close
};
},
render() {
var _a;
const {
isShow,
isFull,
backdrop,
style,
message,
$slots
} = this;
const ns2 = useNamespace$1("loading");
return isShow && createVNode("div", {
"class": [ns2.b(), isFull ? ns2.m("full") : ""]
}, [((_a = $slots.default) == null ? void 0 : _a.call($slots)) || createVNode("div", {
"class": ns2.e("wrapper")
}, [backdrop ? createVNode("div", {
"class": ns2.e("mask")
}, null) : null, createVNode("div", {
"style": style,
"class": ns2.e("area")
}, [createVNode("div", {
"class": ns2.e("busy-default-spinner")
}, [createVNode("div", {
"class": ns2.e("bar1")
}, null), createVNode("div", {
"class": ns2.e("bar2")
}, null), createVNode("div", {
"class": ns2.e("bar3")
}, null), createVNode("div", {
"class": ns2.e("bar4")
}, null)]), message ? createVNode("span", {
"class": ns2.e("text")
}, [message]) : null])])]);
}
});
const COMPONENT_CONTAINER_SYMBOL = Symbol("dev_component_container");
function createComponent(component, props, children = null) {
const vnode = h(component, __spreadValues({}, props), children);
const container = document.createElement("div");
vnode[COMPONENT_CONTAINER_SYMBOL] = container;
render(vnode, container);
return vnode.component;
}
function unmountComponent(ComponnetInstance) {
render(null, ComponnetInstance == null ? void 0 : ComponnetInstance.vnode[COMPONENT_CONTAINER_SYMBOL]);
}
const loadingConstructor = defineComponent(Loading);
const cacheInstance = /* @__PURE__ */ new WeakSet();
const isEmpty = (val) => {
if (!val) {
return true;
}
if (Array.isArray(val)) {
return val.length === 0;
}
if (val instanceof Set || val instanceof Map) {
return val.size === 0;
}
if (val instanceof Promise) {
return false;
}
if (typeof val === "object") {
try {
return Object.keys(val).length === 0;
} catch (e) {
return false;
}
}
return false;
};
const getType = (vari) => {
return Object.prototype.toString.call(vari).slice(8, -1).toLowerCase();
};
const isPromise = (value) => {
const type4 = getType(value);
switch (type4) {
case "promise":
return [value];
case "array":
if (value.some((val) => getType(val) !== "promise")) {
console.error(new TypeError("Binding values should all be of type Promise"));
return "error";
}
return value;
default:
return false;
}
};
const unmount = (el) => {
cacheInstance.delete(el);
el.instance.proxy.close();
unmountComponent(el.instance);
};
const toggleLoading = (el, binding) => {
var _a, _b, _c;
if (binding.value) {
const vals = isPromise(binding.value);
if (vals === "error") {
return;
}
(_c = (_b = (_a = el == null ? void 0 : el.instance) == null ? void 0 : _a.proxy) == null ? void 0 : _b.open) == null ? void 0 : _c.call(_b);
el.appendChild(el.mask);
cacheInstance.add(el);
if (vals) {
Promise.all(vals).catch((err) => {
console.error(new Error("Promise handling errors"), err);
}).finally(() => {
unmount(el);
});
}
} else {
unmount(el);
}
};
const removeAttribute = (el) => {
el.removeAttribute("zindex");
el.removeAttribute("positiontype");
el.removeAttribute("backdrop");
el.removeAttribute("message");
el.removeAttribute("view");
el.removeAttribute("loadingtemplateref");
};
const handleProps = (el, vprops) => {
var _a;
const props = __spreadValues(__spreadValues({}, new LoadingOptions()), vprops);
const loadingTemplateRef = props.loadingTemplateRef;
const loadingInstance = createComponent(loadingConstructor, __spreadValues({}, props), loadingTemplateRef ? () => loadingTemplateRef : null);
el.style.position = props.positionType || "relative";
el.options = props;
el.instance = loadingInstance;
el.mask = (_a = loadingInstance == null ? void 0 : loadingInstance.proxy) == null ? void 0 : _a.$el;
};
const LoadingDirective = {
mounted: function(el, binding, vnode) {
handleProps(el, vnode.props);
removeAttribute(el);
!isEmpty(binding.value) && toggleLoading(el, binding);
},
updated: function(el, binding, vnode) {
if (!isEmpty(binding.value) && cacheInstance.has(el) || isEmpty(binding.value) && !cacheInstance.has(el)) {
return;
}
!cacheInstance.has(el) && handleProps(el, vnode.props);
removeAttribute(el);
toggleLoading(el, binding);
}
};
const buttonProps = {
variant: {
type: String,
default: "outline"
},
size: {
type: String,
default: "md"
},
color: {
type: String
},
icon: {
type: String,
default: ""
},
loading: {
type: Boolean,
default: false
},
disabled: {
type: Boolean,
default: false
},
shape: {
type: String
},
nativeType: {
type: String,
default: "button"
}
};
const buttonGroupProps = {
size: {
type: String,
default: "md"
}
};
const buttonGroupInjectionKey = Symbol("d-button-group");
var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
var lodash = { exports: {} };
/**
* @license
* Lodash <https://lodash.com/>
* Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
* Released under MIT license <https://lodash.com/license>
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
*/
(function(module, exports) {
(function() {
var undefined$1;
var VERSION = "4.17.21";
var LARGE_ARRAY_SIZE = 200;
var CORE_ERROR_TEXT = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.", FUNC_ERROR_TEXT = "Expected a function", INVALID_TEMPL_VAR_ERROR_TEXT = "Invalid `variable` option passed into `_.template`";
var HASH_UNDEFINED = "__lodash_hash_undefined__";
var MAX_MEMOIZE_SIZE = 500;
var PLACEHOLDER = "__lodash_placeholder__";
var CLONE_DEEP_FLAG = 1, CLONE_FLAT_FLAG = 2, CLONE_SYMBOLS_FLAG = 4;
var COMPARE_PARTIAL_FLAG = 1, COMPARE_UNORDERED_FLAG = 2;
var WRAP_BIND_FLAG = 1, WRAP_BIND_KEY_FLAG = 2, WRAP_CURRY_BOUND_FLAG = 4, WRAP_CURRY_FLAG = 8, WRAP_CURRY_RIGHT_FLAG = 16, WRAP_PARTIAL_FLAG = 32, WRAP_PARTIAL_RIGHT_FLAG = 64, WRAP_ARY_FLAG = 128, WRAP_REARG_FLAG = 256, WRAP_FLIP_FLAG = 512;
var DEFAULT_TRUNC_LENGTH = 30, DEFAULT_TRUNC_OMISSION = "...";
var HOT_COUNT = 800, HOT_SPAN = 16;
var LAZY_FILTER_FLAG = 1, LAZY_MAP_FLAG = 2, LAZY_WHILE_FLAG = 3;
var INFINITY = 1 / 0, MAX_SAFE_INTEGER = 9007199254740991, MAX_INTEGER = 17976931348623157e292, NAN = 0 / 0;
var MAX_ARRAY_LENGTH = 4294967295, MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;
var wrapFlags = [
["ary", WRAP_ARY_FLAG],
["bind", WRAP_BIND_FLAG],
["bindKey", WRAP_BIND_KEY_FLAG],
["curry", WRAP_CURRY_FLAG],
["curryRight", WRAP_CURRY_RIGHT_FLAG],
["flip", WRAP_FLIP_FLAG],
["partial", WRAP_PARTIAL_FLAG],
["partialRight", WRAP_PARTIAL_RIGHT_FLAG],
["rearg", WRAP_REARG_FLAG]
];
var argsTag = "[object Arguments]", arrayTag = "[object Array]", asyncTag = "[object AsyncFunction]", boolTag = "[object Boolean]", dateTag = "[object Date]", domExcTag = "[object DOMException]", errorTag = "[object Error]", funcTag = "[object Function]", genTag = "[object GeneratorFunction]", mapTag = "[object Map]", numberTag = "[object Number]", nullTag = "[object Null]", objectTag = "[object Object]", promiseTag = "[object Promise]", proxyTag = "[object Proxy]", regexpTag = "[object RegExp]", setTag = "[object Set]", stringTag = "[object String]", symbolTag = "[object Symbol]", undefinedTag = "[object Undefined]", weakMapTag = "[object WeakMap]", weakSetTag = "[object WeakSet]";
var arrayBufferTag = "[object ArrayBuffer]", dataViewTag = "[object DataView]", float32Tag = "[object Float32Array]", float64Tag = "[object Float64Array]", int8Tag = "[object Int8Array]", int16Tag = "[object Int16Array]", int32Tag = "[object Int32Array]", uint8Tag = "[object Uint8Array]", uint8ClampedTag = "[object Uint8ClampedArray]", uint16Tag = "[object Uint16Array]", uint32Tag = "[object Uint32Array]";
var reEmptyStringLeading = /\b__p \+= '';/g, reEmptyStringMiddle = /\b(__p \+=) '' \+/g, reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g;
var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, reUnescapedHtml = /[&<>"']/g, reHasEscapedHtml = RegExp(reEscapedHtml.source), reHasUnescapedHtml = RegExp(reUnescapedHtml.source);
var reEscape = /<%-([\s\S]+?)%>/g, reEvaluate = /<%([\s\S]+?)%>/g, reInterpolate = /<%=([\s\S]+?)%>/g;
var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/, rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, reHasRegExpChar = RegExp(reRegExpChar.source);
var reTrimStart = /^\s+/;
var reWhitespace = /\s/;
var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, reSplitDetails = /,? & /;
var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;
var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/;
var reEscapeChar = /\\(\\)?/g;
var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;
var reFlags = /\w*$/;
var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
var reIsBinary = /^0b[01]+$/i;
var reIsHostCtor = /^\[object .+?Constructor\]$/;
var reIsOctal = /^0o[0-7]+$/i;
var reIsUint = /^(?:0|[1-9]\d*)$/;
var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;
var reNoMatch = /($^)/;
var reUnescapedString = /['\n\r\u2028\u2029\\]/g;
var rsAstralRange = "\\ud800-\\udfff", rsComboMarksRange = "\\u0300-\\u036f", reComboHalfMarksRange = "\\ufe20-\\ufe2f", rsComboSymbolsRange = "\\u20d0-\\u20ff", rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, rsDingbatRange = "\\u2700-\\u27bf", rsLowerRange = "a-z\\xdf-\\xf6\\xf8-\\xff", rsMathOpRange = "\\xac\\xb1\\xd7\\xf7", rsNonCharRange = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf", rsPunctuationRange = "\\u2000-\\u206f", rsSpaceRange = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000", rsUpperRange = "A-Z\\xc0-\\xd6\\xd8-\\xde", rsVarRange = "\\ufe0e\\ufe0f", rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;
var rsApos = "['\u2019]", rsAstral = "[" + rsAstralRange + "]", rsBreak = "[" + rsBreakRange + "]", rsCombo = "[" + rsComboRange + "]", rsDigits = "\\d+", rsDingbat = "[" + rsDingbatRange + "]", rsLower = "[" + rsLowerRange + "]", rsMisc = "[^" + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + "]", rsFitz = "\\ud83c[\\udffb-\\udfff]", rsModifier = "(?:" + rsCombo + "|" + rsFitz + ")", rsNonAstral = "[^" + rsAstralRange + "]", rsRegional = "(?:\\ud83c[\\udde6-\\uddff]){2}", rsSurrPair = "[\\ud800-\\udbff][\\udc00-\\udfff]", rsUpper = "[" + rsUpperRange + "]", rsZWJ = "\\u200d";
var rsMiscLower = "(?:" + rsLower + "|" + rsMisc + ")", rsMiscUpper = "(?:" + rsUpper + "|" + rsMisc + ")", rsOptContrLower = "(?:" + rsApos + "(?:d|ll|m|re|s|t|ve))?", rsOptContrUpper = "(?:" + rsApos + "(?:D|LL|M|RE|S|T|VE))?", reOptMod = rsModifier + "?", rsOptVar = "[" + rsVarRange + "]?", rsOptJoin = "(?:" + rsZWJ + "(?:" + [rsNonAstral, rsRegional, rsSurrPair].join("|") + ")" + rsOptVar + reOptMod + ")*", rsOrdLower = "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", rsOrdUpper = "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", rsSeq = rsOptVar + reOptMod + rsOptJoin, rsEmoji = "(?:" + [rsDingbat, rsRegional, rsSurrPair].join("|") + ")" + rsSeq, rsSymbol = "(?:" + [rsNonAstral + rsCombo + "?", rsCombo, rsRegional, rsSurrPair, rsAstral].join("|") + ")";
var reApos = RegExp(rsApos, "g");
var reComboMark = RegExp(rsCombo, "g");
var reUnicode = RegExp(rsFitz + "(?=" + rsFitz + ")|" + rsSymbol + rsSeq, "g");
var reUnicodeWord = RegExp([
rsUpper + "?" + rsLower + "+" + rsOptContrLower + "(?=" + [rsBreak, rsUpper, "$"].join("|") + ")",
rsMiscUpper + "+" + rsOptContrUpper + "(?=" + [rsBreak, rsUpper + rsMiscLower, "$"].join("|") + ")",
rsUpper + "?" + rsMiscLower + "+" + rsOptContrLower,
rsUpper + "+" + rsOptContrUpper,
rsOrdUpper,
rsOrdLower,
rsDigits,
rsEmoji
].join("|"), "g");
var reHasUnicode = RegExp("[" + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + "]");
var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;
var contextProps = [
"Array",
"Buffer",
"DataView",
"Date",
"Error",
"Float32Array",
"Float64Array",
"Function",
"Int8Array",
"Int16Array",
"Int32Array",
"Map",
"Math",
"Object",
"Promise",
"RegExp",
"Set",
"String",
"Symbol",
"TypeError",
"Uint8Array",
"Uint8ClampedArray",
"Uint16Array",
"Uint32Array",
"WeakMap",
"_",
"clearTimeout",
"isFinite",
"parseInt",
"setTimeout"
];
var templateCounter = -1;
var typedArrayTags = {};
typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;
typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
var cloneableTags = {};
cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag] = cloneableTags[numberTag] = cloneableTags[objectTag] = cloneableTags[regexpTag] = cloneableTags[setTag] = cloneableTags[stringTag] = cloneableTags[symbolTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
cloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false;
var deburredLetters = {
"\xC0": "A",
"\xC1": "A",
"\xC2": "A",
"\xC3": "A",
"\xC4": "A",
"\xC5": "A",
"\xE0": "a",
"\xE1": "a",
"\xE2": "a",
"\xE3": "a",
"\xE4": "a",
"\xE5": "a",
"\xC7": "C",
"\xE7": "c",
"\xD0": "D",
"\xF0": "d",
"\xC8": "E",
"\xC9": "E",
"\xCA": "E",
"\xCB": "E",
"\xE8": "e",
"\xE9": "e",
"\xEA": "e",
"\xEB": "e",
"\xCC": "I",
"\xCD": "I",
"\xCE": "I",
"\xCF": "I",
"\xEC": "i",
"\xED": "i",
"\xEE": "i",
"\xEF": "i",
"\xD1": "N",
"\xF1": "n",
"\xD2": "O",
"\xD3": "O",
"\xD4": "O",
"\xD5": "O",
"\xD6": "O",
"\xD8": "O",
"\xF2": "o",
"\xF3": "o",
"\xF4": "o",
"\xF5": "o",
"\xF6": "o",
"\xF8": "o",
"\xD9": "U",
"\xDA": "U",
"\xDB": "U",
"\xDC": "U",
"\xF9": "u",
"\xFA": "u",
"\xFB": "u",
"\xFC": "u",
"\xDD": "Y",
"\xFD": "y",
"\xFF": "y",
"\xC6": "Ae",
"\xE6": "ae",
"\xDE": "Th",
"\xFE": "th",
"\xDF": "ss",
"\u0100": "A",
"\u0102": "A",
"\u0104": "A",
"\u0101": "a",
"\u0103": "a",
"\u0105": "a",
"\u0106": "C",
"\u0108": "C",
"\u010A": "C",
"\u010C": "C",
"\u0107": "c",
"\u0109": "c",
"\u010B": "c",
"\u010D": "c",
"\u010E": "D",
"\u0110": "D",
"\u010F": "d",
"\u0111": "d",
"\u0112": "E",
"\u0114": "E",
"\u0116": "E",
"\u0118": "E",
"\u011A": "E",
"\u0113": "e",
"\u0115": "e",
"\u0117": "e",
"\u0119": "e",
"\u011B": "e",
"\u011C": "G",
"\u011E": "G",
"\u0120": "G",
"\u0122": "G",
"\u011D": "g",
"\u011F": "g",
"\u0121": "g",
"\u0123": "g",
"\u0124": "H",
"\u0126": "H",
"\u0125": "h",
"\u0127": "h",
"\u0128": "I",
"\u012A": "I",
"\u012C": "I",
"\u012E": "I",
"\u0130": "I",
"\u0129": "i",
"\u012B": "i",
"\u012D": "i",
"\u012F": "i",
"\u0131": "i",
"\u0134": "J",
"\u0135": "j",
"\u0136": "K",
"\u0137": "k",
"\u0138": "k",
"\u0139": "L",
"\u013B": "L",
"\u013D": "L",
"\u013F": "L",
"\u0141": "L",
"\u013A": "l",
"\u013C": "l",
"\u013E": "l",
"\u0140": "l",
"\u0142": "l",
"\u0143": "N",
"\u0145": "N",
"\u0147": "N",
"\u014A": "N",
"\u0144": "n",
"\u0146": "n",
"\u0148": "n",
"\u014B": "n",
"\u014C": "O",
"\u014E": "O",
"\u0150": "O",
"\u014D": "o",
"\u014F": "o",
"\u0151": "o",
"\u0154": "R",
"\u0156": "R",
"\u0158": "R",
"\u0155": "r",
"\u0157": "r",
"\u0159": "r",
"\u015A": "S",
"\u015C": "S",
"\u015E": "S",
"\u0160": "S",
"\u015B": "s",
"\u015D": "s",
"\u015F": "s",
"\u0161": "s",
"\u0162": "T",
"\