UNPKG

vue-devui

Version:

DevUI components based on Vite and Vue3

1,475 lines 346 kB
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", "\