(function(factory) { typeof define === "function" && define.amd ? define(factory) : factory(); })(function() { "use strict"; var base = "* {\n margin: 0;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n -webkit-tap-highlight-color: transparent;\n}\n\nhtml,\nbody {\n -webkit-user-select: none;\n user-select: none;\n width: 100%;\n}\n\nhtml {\n height: 100%;\n height: 100vh;\n width: 100%;\n width: 100vw;\n}\n\nbody {\n overflow-x: hidden;\n background-color: white;\n}\n\ninput[type='search']::-webkit-search-cancel-button {\n display: none;\n}\n\n.uni-loading,\nuni-button[loading]:before {\n background: transparent\n url('data:image/svg+xml;base64, PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjAiIGhlaWdodD0iMTIwIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTTAgMGgxMDB2MTAwSDB6Ii8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTlFOUU5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTMwKSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iIzk4OTY5NyIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgzMCAxMDUuOTggNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjOUI5OTlBIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDYwIDc1Ljk4IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0EzQTFBMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSg5MCA2NSA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNBQkE5QUEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoMTIwIDU4LjY2IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0IyQjJCMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgxNTAgNTQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjQkFCOEI5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDE4MCA1MCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDMkMwQzEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTE1MCA0NS45OCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDQkNCQ0IiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTEyMCA0MS4zNCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNEMkQyRDIiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwIDM1IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0RBREFEQSIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgtNjAgMjQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTJFMkUyIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKC0zMCAtNS45OCA2NSkiLz48L3N2Zz4=')\n no-repeat;\n}\n\n.uni-loading {\n width: 20px;\n height: 20px;\n display: inline-block;\n vertical-align: middle;\n animation: uni-loading 1s steps(12, end) infinite;\n background-size: 100%;\n}\n\n@keyframes uni-loading {\n 0% {\n transform: rotate3d(0, 0, 1, 0deg);\n }\n\n 100% {\n transform: rotate3d(0, 0, 1, 360deg);\n }\n}\n"; var nvue = "[nvue] uni-view,\n[nvue] uni-label,\n[nvue] uni-swiper-item,\n[nvue] uni-scroll-view {\n display: flex;\n flex-shrink: 0;\n flex-grow: 0;\n flex-basis: auto;\n align-items: stretch;\n align-content: flex-start;\n}\n\n[nvue] uni-button {\n margin: 0;\n}\n\n[nvue-dir-row] uni-view,\n[nvue-dir-row] uni-label,\n[nvue-dir-row] uni-swiper-item {\n flex-direction: row;\n}\n\n[nvue-dir-column] uni-view,\n[nvue-dir-column] uni-label,\n[nvue-dir-column] uni-swiper-item {\n flex-direction: column;\n}\n\n[nvue-dir-row-reverse] uni-view,\n[nvue-dir-row-reverse] uni-label,\n[nvue-dir-row-reverse] uni-swiper-item {\n flex-direction: row-reverse;\n}\n\n[nvue-dir-column-reverse] uni-view,\n[nvue-dir-column-reverse] uni-label,\n[nvue-dir-column-reverse] uni-swiper-item {\n flex-direction: column-reverse;\n}\n\n[nvue] uni-view,\n[nvue] uni-image,\n[nvue] uni-input,\n[nvue] uni-scroll-view,\n[nvue] uni-swiper,\n[nvue] uni-swiper-item,\n[nvue] uni-text,\n[nvue] uni-textarea,\n[nvue] uni-video {\n position: relative;\n border: 0px solid #000000;\n box-sizing: border-box;\n}\n\n[nvue] uni-swiper-item {\n position: absolute;\n}\n"; var resizeSensor = "@keyframes once-show {\n from {\n top: 0;\n }\n}\nuni-resize-sensor,\nuni-resize-sensor > div {\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n bottom: 0;\n overflow: hidden;\n}\nuni-resize-sensor {\n display: block;\n z-index: -1;\n visibility: hidden;\n animation: once-show 1ms;\n}\nuni-resize-sensor > div > div {\n position: absolute;\n left: 0;\n top: 0;\n}\nuni-resize-sensor > div:first-child > div {\n width: 100000px;\n height: 100000px;\n}\nuni-resize-sensor > div:last-child > div {\n width: 200%;\n height: 200%;\n}\n"; function makeMap$1(str, expectsLowerCase) { const map2 = Object.create(null); const list2 = str.split(","); for (let i = 0; i < list2.length; i++) { map2[list2[i]] = true; } return expectsLowerCase ? (val) => !!map2[val.toLowerCase()] : (val) => !!map2[val]; } const GLOBALS_WHITE_LISTED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt"; const isGloballyWhitelisted = /* @__PURE__ */ makeMap$1(GLOBALS_WHITE_LISTED); const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`; const isSpecialBooleanAttr = /* @__PURE__ */ makeMap$1(specialBooleanAttrs); function normalizeStyle(value) { if (isArray(value)) { const res = {}; for (let i = 0; i < value.length; i++) { const item = value[i]; const normalized = normalizeStyle(isString(item) ? parseStringStyle(item) : item); if (normalized) { for (const key in normalized) { res[key] = normalized[key]; } } } return res; } else if (isObject$1(value)) { return value; } } const listDelimiterRE = /;(?![^(]*\))/g; const propertyDelimiterRE = /:(.+)/; function parseStringStyle(cssText) { const ret = {}; cssText.split(listDelimiterRE).forEach((item) => { if (item) { const tmp = item.split(propertyDelimiterRE); tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim()); } }); return ret; } function normalizeClass(value) { let res = ""; if (isString(value)) { res = value; } else if (isArray(value)) { for (let i = 0; i < value.length; i++) { const normalized = normalizeClass(value[i]); if (normalized) { res += normalized + " "; } } } else if (isObject$1(value)) { for (const name in value) { if (value[name]) { res += name + " "; } } } return res.trim(); } const toDisplayString = (val) => { return val == null ? "" : isObject$1(val) ? JSON.stringify(val, replacer, 2) : String(val); }; const replacer = (_key, val) => { if (isMap(val)) { return { [`Map(${val.size})`]: [...val.entries()].reduce((entries2, [key, val2]) => { entries2[`${key} =>`] = val2; return entries2; }, {}) }; } else if (isSet(val)) { return { [`Set(${val.size})`]: [...val.values()] }; } else if (isObject$1(val) && !isArray(val) && !isPlainObject(val)) { return String(val); } return val; }; const EMPTY_OBJ = {}; const EMPTY_ARR = []; const NOOP = () => { }; const NO = () => false; const onRE = /^on[^a-z]/; const isOn = (key) => onRE.test(key); const isModelListener = (key) => key.startsWith("onUpdate:"); const extend = Object.assign; const remove = (arr, el) => { const i = arr.indexOf(el); if (i > -1) { arr.splice(i, 1); } }; const hasOwnProperty$1 = Object.prototype.hasOwnProperty; const hasOwn$1 = (val, key) => hasOwnProperty$1.call(val, key); const isArray = Array.isArray; const isMap = (val) => toTypeString(val) === "[object Map]"; const isSet = (val) => toTypeString(val) === "[object Set]"; const isFunction = (val) => typeof val === "function"; const isString = (val) => typeof val === "string"; const isSymbol = (val) => typeof val === "symbol"; const isObject$1 = (val) => val !== null && typeof val === "object"; const isPromise = (val) => { return isObject$1(val) && isFunction(val.then) && isFunction(val.catch); }; const objectToString = Object.prototype.toString; const toTypeString = (value) => objectToString.call(value); const toRawType = (value) => { return toTypeString(value).slice(8, -1); }; const isPlainObject = (val) => toTypeString(val) === "[object Object]"; const isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key; const isReservedProp = /* @__PURE__ */ makeMap$1(",key,ref,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"); const cacheStringFunction$1 = (fn) => { const cache2 = Object.create(null); return (str) => { const hit = cache2[str]; return hit || (cache2[str] = fn(str)); }; }; const camelizeRE = /-(\w)/g; const camelize = cacheStringFunction$1((str) => { return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ""); }); const hyphenateRE = /\B([A-Z])/g; const hyphenate = cacheStringFunction$1((str) => str.replace(hyphenateRE, "-$1").toLowerCase()); const capitalize = cacheStringFunction$1((str) => str.charAt(0).toUpperCase() + str.slice(1)); const toHandlerKey = cacheStringFunction$1((str) => str ? `on${capitalize(str)}` : ``); const hasChanged = (value, oldValue) => value !== oldValue && (value === value || oldValue === oldValue); const invokeArrayFns = (fns, arg) => { for (let i = 0; i < fns.length; i++) { fns[i](arg); } }; const def = (obj, key, value) => { Object.defineProperty(obj, key, { configurable: true, enumerable: false, value }); }; const toNumber = (val) => { const n = parseFloat(val); return isNaN(n) ? val : n; }; let lastLogTime = 0; function formatLog(module, ...args) { const now = Date.now(); const diff = lastLogTime ? now - lastLogTime : 0; lastLogTime = now; return `[${now}][${diff}ms][${module}]\uFF1A${args.map((arg) => JSON.stringify(arg)).join(" ")}`; } function getCustomDataset(el) { return extend({}, el.dataset, el.__uniDataset); } function passive(passive2) { return { passive: passive2 }; } function normalizeTarget(el) { const { id: id2, offsetTop, offsetLeft } = el; return { id: id2, dataset: getCustomDataset(el), offsetTop, offsetLeft }; } function addFont(family, source, desc) { const fonts = document.fonts; if (fonts) { const fontFace = new FontFace(family, source, desc); return fontFace.load().then(() => { fonts.add(fontFace); }); } return new Promise((resolve2) => { const style = document.createElement("style"); const values = []; if (desc) { const { style: style2, weight, stretch, unicodeRange, variant, featureSettings } = desc; style2 && values.push(`font-style:${style2}`); weight && values.push(`font-weight:${weight}`); stretch && values.push(`font-stretch:${stretch}`); unicodeRange && values.push(`unicode-range:${unicodeRange}`); variant && values.push(`font-variant:${variant}`); featureSettings && values.push(`font-feature-settings:${featureSettings}`); } style.innerText = `@font-face{font-family:"${family}";src:${source};${values.join(";")}}`; document.head.appendChild(style); resolve2(); }); } function scrollTo(scrollTop, duration) { if (isString(scrollTop)) { const el = document.querySelector(scrollTop); if (el) { scrollTop = el.getBoundingClientRect().top + window.pageYOffset; } } if (scrollTop < 0) { scrollTop = 0; } const documentElement = document.documentElement; const { clientHeight, scrollHeight } = documentElement; scrollTop = Math.min(scrollTop, scrollHeight - clientHeight); if (duration === 0) { documentElement.scrollTop = document.body.scrollTop = scrollTop; return; } if (window.scrollY === scrollTop) { return; } const scrollTo2 = (duration2) => { if (duration2 <= 0) { window.scrollTo(0, scrollTop); return; } const distaince = scrollTop - window.scrollY; requestAnimationFrame(function() { window.scrollTo(0, window.scrollY + distaince / duration2 * 10); scrollTo2(duration2 - 10); }); }; scrollTo2(duration); } function plusReady(callback) { if (typeof callback !== "function") { return; } if (window.plus) { return callback(); } document.addEventListener("plusready", callback); } function normalizeEventType(type, options) { if (options) { if (options.capture) { type += "Capture"; } if (options.once) { type += "Once"; } if (options.passive) { type += "Passive"; } } return `on${capitalize(camelize(type))}`; } const optionsModifierRE$1 = /(?:Once|Passive|Capture)$/; function parseEventName(name) { let options; if (optionsModifierRE$1.test(name)) { options = {}; let m; while (m = name.match(optionsModifierRE$1)) { name = name.slice(0, name.length - m[0].length); options[m[0].toLowerCase()] = true; } } return [hyphenate(name.slice(2)), options]; } const EventModifierFlags = { stop: 1, prevent: 1 << 1, self: 1 << 2 }; const ATTR_CLASS = "class"; const ATTR_STYLE = "style"; const ACTION_TYPE_PAGE_CREATE = 1; const ACTION_TYPE_PAGE_CREATED = 2; const ACTION_TYPE_CREATE = 3; const ACTION_TYPE_REMOVE = 5; const ACTION_TYPE_SET_ATTRIBUTE = 6; const ACTION_TYPE_REMOVE_ATTRIBUTE = 7; const ACTION_TYPE_ADD_EVENT = 8; const ACTION_TYPE_REMOVE_EVENT = 9; const ACTION_TYPE_SET_TEXT = 10; const ACTION_TYPE_EVENT = 20; function cache(fn) { const cache2 = Object.create(null); return (str) => { const hit = cache2[str]; return hit || (cache2[str] = fn(str)); }; } function cacheStringFunction(fn) { return cache(fn); } function once(fn, ctx = null) { let res; return (...args) => { if (fn) { res = fn.apply(ctx, args); fn = null; } return res; }; } function debounce(fn, delay) { let timeout; const newFn = function() { clearTimeout(timeout); const timerFn = () => fn.apply(this, arguments); timeout = setTimeout(timerFn, delay); }; newFn.cancel = function() { clearTimeout(timeout); }; return newFn; } const NAVBAR_HEIGHT = 44; const PRIMARY_COLOR = "#007aff"; const SCHEME_RE = /^([a-z-]+:)?\/\//i; const DATA_RE = /^data:.*,.*/; const ON_PAGE_SCROLL = "onPageScroll"; const ON_REACH_BOTTOM = "onReachBottom"; const isObject = (val) => val !== null && typeof val === "object"; class BaseFormatter { constructor() { this._caches = Object.create(null); } interpolate(message, values) { if (!values) { return [message]; } let tokens = this._caches[message]; if (!tokens) { tokens = parse(message); this._caches[message] = tokens; } return compile(tokens, values); } } const RE_TOKEN_LIST_VALUE = /^(?:\d)+/; const RE_TOKEN_NAMED_VALUE = /^(?:\w)+/; function parse(format) { const tokens = []; let position = 0; let text2 = ""; while (position < format.length) { let char = format[position++]; if (char === "{") { if (text2) { tokens.push({ type: "text", value: text2 }); } text2 = ""; let sub = ""; char = format[position++]; while (char !== void 0 && char !== "}") { sub += char; char = format[position++]; } const isClosed = char === "}"; const type = RE_TOKEN_LIST_VALUE.test(sub) ? "list" : isClosed && RE_TOKEN_NAMED_VALUE.test(sub) ? "named" : "unknown"; tokens.push({ value: sub, type }); } else if (char === "%") { if (format[position] !== "{") { text2 += char; } } else { text2 += char; } } text2 && tokens.push({ type: "text", value: text2 }); return tokens; } function compile(tokens, values) { const compiled = []; let index2 = 0; const mode = Array.isArray(values) ? "list" : isObject(values) ? "named" : "unknown"; if (mode === "unknown") { return compiled; } while (index2 < tokens.length) { const token = tokens[index2]; switch (token.type) { case "text": compiled.push(token.value); break; case "list": compiled.push(values[parseInt(token.value, 10)]); break; case "named": if (mode === "named") { compiled.push(values[token.value]); } break; } index2++; } return compiled; } const LOCALE_ZH_HANS = "zh-Hans"; const LOCALE_ZH_HANT = "zh-Hant"; const LOCALE_EN = "en"; const LOCALE_FR = "fr"; const LOCALE_ES = "es"; const hasOwnProperty = Object.prototype.hasOwnProperty; const hasOwn = (val, key) => hasOwnProperty.call(val, key); const defaultFormatter = new BaseFormatter(); function include(str, parts) { return !!parts.find((part) => str.indexOf(part) !== -1); } function startsWith(str, parts) { return parts.find((part) => str.indexOf(part) === 0); } function normalizeLocale(locale, messages) { if (!locale) { return; } locale = locale.trim().replace(/_/g, "-"); if (messages[locale]) { return locale; } locale = locale.toLowerCase(); if (locale.indexOf("zh") === 0) { if (locale.indexOf("-hans") !== -1) { return LOCALE_ZH_HANS; } if (locale.indexOf("-hant") !== -1) { return LOCALE_ZH_HANT; } if (include(locale, ["-tw", "-hk", "-mo", "-cht"])) { return LOCALE_ZH_HANT; } return LOCALE_ZH_HANS; } const lang = startsWith(locale, [LOCALE_EN, LOCALE_FR, LOCALE_ES]); if (lang) { return lang; } } class I18n { constructor({ locale, fallbackLocale, messages, watcher, formater }) { this.locale = LOCALE_EN; this.fallbackLocale = LOCALE_EN; this.message = {}; this.messages = {}; this.watchers = []; if (fallbackLocale) { this.fallbackLocale = fallbackLocale; } this.formater = formater || defaultFormatter; this.messages = messages || {}; this.setLocale(locale); if (watcher) { this.watchLocale(watcher); } } setLocale(locale) { const oldLocale = this.locale; this.locale = normalizeLocale(locale, this.messages) || this.fallbackLocale; if (!this.messages[this.locale]) { this.messages[this.locale] = {}; } this.message = this.messages[this.locale]; this.watchers.forEach((watcher) => { watcher(this.locale, oldLocale); }); } getLocale() { return this.locale; } watchLocale(fn) { const index2 = this.watchers.push(fn) - 1; return () => { this.watchers.splice(index2, 1); }; } add(locale, message) { if (this.messages[locale]) { Object.assign(this.messages[locale], message); } else { this.messages[locale] = message; } } t(key, locale, values) { let message = this.message; if (typeof locale === "string") { locale = normalizeLocale(locale, this.messages); locale && (message = this.messages[locale]); } else { values = locale; } if (!hasOwn(message, key)) { console.warn(`Cannot translate the value of keypath ${key}. Use the value of keypath as default.`); return key; } return this.formater.interpolate(message[key], values).join(""); } } function initLocaleWatcher(appVm, i18n2) { appVm.$i18n && appVm.$i18n.vm.$watch("locale", (newLocale) => { i18n2.setLocale(newLocale); }, { immediate: true }); } function initVueI18n(locale = LOCALE_EN, messages = {}, fallbackLocale = LOCALE_EN) { if (typeof locale !== "string") { [locale, messages] = [messages, locale]; } if (typeof locale !== "string") { locale = fallbackLocale; } const i18n2 = new I18n({ locale: locale || fallbackLocale, fallbackLocale, messages }); let t2 = (key, values) => { if (typeof getApp !== "function") { t2 = function(key2, values2) { return i18n2.t(key2, values2); }; } else { const appVm = getApp().$vm; if (!appVm.$t || !appVm.$i18n) { t2 = function(key2, values2) { return i18n2.t(key2, values2); }; } else { initLocaleWatcher(appVm, i18n2); t2 = function(key2, values2) { const $i18n = appVm.$i18n; const silentTranslationWarn = $i18n.silentTranslationWarn; $i18n.silentTranslationWarn = true; const msg = appVm.$t(key2, values2); $i18n.silentTranslationWarn = silentTranslationWarn; if (msg !== key2) { return msg; } return i18n2.t(key2, $i18n.locale, values2); }; } } return t2(key, values); }; return { i18n: i18n2, t(key, values) { return t2(key, values); }, add(locale2, message) { return i18n2.add(locale2, message); }, getLocale() { return i18n2.getLocale(); }, setLocale(newLocale) { return i18n2.setLocale(newLocale); } }; } let i18n; function useI18n() { if (!i18n) { let language; { language = plus.os.language; } i18n = initVueI18n(language); } return i18n; } function normalizeMessages(namespace, messages) { return Object.keys(messages).reduce((res, name) => { res[namespace + name] = messages[name]; return res; }, {}); } const initI18nShowModalMsgsOnce = /* @__PURE__ */ once(() => { const name = "uni.showModal."; { useI18n().add(LOCALE_EN, normalizeMessages(name, { cancel: "Cancel", confirm: "OK" })); } { useI18n().add(LOCALE_ES, normalizeMessages(name, { cancel: "Cancelar", confirm: "OK" })); } { useI18n().add(LOCALE_FR, normalizeMessages(name, { cancel: "Annuler", confirm: "OK" })); } { useI18n().add(LOCALE_ZH_HANS, normalizeMessages(name, { cancel: "\u53D6\u6D88", confirm: "\u786E\u5B9A" })); } { useI18n().add(LOCALE_ZH_HANT, normalizeMessages(name, { cancel: "\u53D6\u6D88", confirm: "\u78BA\u5B9A" })); } }); const initI18nButtonMsgsOnce = /* @__PURE__ */ once(() => { const name = "uni.button."; { useI18n().add(LOCALE_EN, normalizeMessages(name, { "feedback.title": "feedback", "feedback.send": "send" })); } { useI18n().add(LOCALE_ES, normalizeMessages(name, { "feedback.title": "realimentaci\xF3n", "feedback.send": "enviar" })); } { useI18n().add(LOCALE_FR, normalizeMessages(name, { "feedback.title": "retour d'information", "feedback.send": "envoyer" })); } { useI18n().add(LOCALE_ZH_HANS, normalizeMessages(name, { "feedback.title": "\u95EE\u9898\u53CD\u9988", "feedback.send": "\u53D1\u9001" })); } { useI18n().add(LOCALE_ZH_HANT, normalizeMessages(name, { "feedback.title": "\u554F\u984C\u53CD\u994B", "feedback.send": "\u767C\u9001" })); } }); const E = function() { }; E.prototype = { on: function(name, callback, ctx) { var e2 = this.e || (this.e = {}); (e2[name] || (e2[name] = [])).push({ fn: callback, ctx }); return this; }, once: function(name, callback, ctx) { var self = this; function listener() { self.off(name, listener); callback.apply(ctx, arguments); } listener._ = callback; return this.on(name, listener, ctx); }, emit: function(name) { var data = [].slice.call(arguments, 1); var evtArr = ((this.e || (this.e = {}))[name] || []).slice(); var i = 0; var len = evtArr.length; for (i; i < len; i++) { evtArr[i].fn.apply(evtArr[i].ctx, data); } return this; }, off: function(name, callback) { var e2 = this.e || (this.e = {}); var evts = e2[name]; var liveEvents = []; if (evts && callback) { for (var i = 0, len = evts.length; i < len; i++) { if (evts[i].fn !== callback && evts[i].fn._ !== callback) liveEvents.push(evts[i]); } } liveEvents.length ? e2[name] = liveEvents : delete e2[name]; return this; } }; function initBridge(subscribeNamespace) { const emitter = new E(); return { on(event, callback) { return emitter.on(event, callback); }, once(event, callback) { return emitter.once(event, callback); }, off(event, callback) { return emitter.off(event, callback); }, emit(event, ...args) { return emitter.emit(event, ...args); }, subscribe(event, callback, once2 = false) { emitter[once2 ? "once" : "on"](`${subscribeNamespace}.${event}`, callback); }, unsubscribe(event, callback) { emitter.off(`${subscribeNamespace}.${event}`, callback); }, subscribeHandler(event, args, pageId) { { console.log(formatLog(subscribeNamespace, "subscribeHandler", pageId, event, args)); } emitter.emit(`${subscribeNamespace}.${event}`, args, pageId); } }; } const INVOKE_VIEW_API = "invokeViewApi"; const INVOKE_SERVICE_API = "invokeServiceApi"; let invokeServiceMethodId = 1; const invokeServiceMethod = (name, args, callback) => { const { subscribe, publishHandler: publishHandler2 } = UniViewJSBridge; const id2 = callback ? invokeServiceMethodId++ : 0; callback && subscribe(INVOKE_SERVICE_API + "." + id2, callback, true); publishHandler2(INVOKE_SERVICE_API, { id: id2, name, args }); }; const viewMethods = Object.create(null); function normalizeViewMethodName(pageId, name) { return pageId + "." + name; } function subscribeViewMethod(pageId) { UniViewJSBridge.subscribe(normalizeViewMethodName(pageId, INVOKE_VIEW_API), onInvokeViewMethod); } function registerViewMethod(pageId, name, fn) { name = normalizeViewMethodName(pageId, name); if (!viewMethods[name]) { viewMethods[name] = fn; } } function unregisterViewMethod(pageId, name) { name = normalizeViewMethodName(pageId, name); delete viewMethods[name]; } function onInvokeViewMethod({ id: id2, name, args }, pageId) { name = normalizeViewMethodName(pageId, name); const publish = (res) => { id2 && UniViewJSBridge.publishHandler(INVOKE_VIEW_API + "." + id2, res); }; const handler = viewMethods[name]; if (handler) { handler(args, publish); } else { publish({}); { console.error(formatLog("invokeViewMethod", name, "not register")); } } } const ViewJSBridge = /* @__PURE__ */ extend(initBridge("service"), { invokeServiceMethod }); const LONGPRESS_TIMEOUT = 350; const LONGPRESS_THRESHOLD = 10; const passiveOptions$2 = passive(true); let longPressTimer; function clearLongPressTimer() { if (longPressTimer) { clearTimeout(longPressTimer); longPressTimer = null; } } let startPageX = 0; let startPageY = 0; function touchstart(evt) { clearLongPressTimer(); if (evt.touches.length !== 1) { return; } const { pageX, pageY } = evt.touches[0]; startPageX = pageX; startPageY = pageY; longPressTimer = setTimeout(function() { const customEvent = new CustomEvent("longpress", { bubbles: true, cancelable: true, target: evt.target, currentTarget: evt.currentTarget }); customEvent.touches = evt.touches; customEvent.changedTouches = evt.changedTouches; evt.target.dispatchEvent(customEvent); }, LONGPRESS_TIMEOUT); } function touchmove(evt) { if (!longPressTimer) { return; } if (evt.touches.length !== 1) { return clearLongPressTimer(); } const { pageX, pageY } = evt.touches[0]; if (Math.abs(pageX - startPageX) > LONGPRESS_THRESHOLD || Math.abs(pageY - startPageY) > LONGPRESS_THRESHOLD) { return clearLongPressTimer(); } } function initLongPress() { window.addEventListener("touchstart", touchstart, passiveOptions$2); window.addEventListener("touchmove", touchmove, passiveOptions$2); window.addEventListener("touchend", clearLongPressTimer, passiveOptions$2); window.addEventListener("touchcancel", clearLongPressTimer, passiveOptions$2); } function checkValue$1(value, defaultValue) { const newValue = Number(value); return isNaN(newValue) ? defaultValue : newValue; } function getWindowWidth() { const screenFix = /^Apple/.test(navigator.vendor) && typeof window.orientation === "number"; const landscape = screenFix && Math.abs(window.orientation) === 90; var screenWidth = screenFix ? Math[landscape ? "max" : "min"](screen.width, screen.height) : screen.width; var windowWidth = Math.min(window.innerWidth, document.documentElement.clientWidth, screenWidth) || screenWidth; return windowWidth; } function useRem() { function updateRem() { const config = __uniConfig.globalStyle || {}; const maxWidth = checkValue$1(config.rpxCalcMaxDeviceWidth, 960); const baseWidth = checkValue$1(config.rpxCalcBaseDeviceWidth, 375); let width = getWindowWidth(); width = width <= maxWidth ? width : baseWidth; document.documentElement.style.fontSize = width / 23.4375 + "px"; } updateRem(); document.addEventListener("DOMContentLoaded", updateRem); window.addEventListener("load", updateRem); window.addEventListener("resize", updateRem); } function initView() { useRem(); { initLongPress(); } } const targetMap = new WeakMap(); const effectStack = []; let activeEffect; const ITERATE_KEY = Symbol(""); const MAP_KEY_ITERATE_KEY = Symbol(""); function isEffect(fn) { return fn && fn._isEffect === true; } function effect(fn, options = EMPTY_OBJ) { if (isEffect(fn)) { fn = fn.raw; } const effect2 = createReactiveEffect(fn, options); if (!options.lazy) { effect2(); } return effect2; } function stop(effect2) { if (effect2.active) { cleanup(effect2); if (effect2.options.onStop) { effect2.options.onStop(); } effect2.active = false; } } let uid = 0; function createReactiveEffect(fn, options) { const effect2 = function reactiveEffect() { if (!effect2.active) { return fn(); } if (!effectStack.includes(effect2)) { cleanup(effect2); try { enableTracking(); effectStack.push(effect2); activeEffect = effect2; return fn(); } finally { effectStack.pop(); resetTracking(); activeEffect = effectStack[effectStack.length - 1]; } } }; effect2.id = uid++; effect2.allowRecurse = !!options.allowRecurse; effect2._isEffect = true; effect2.active = true; effect2.raw = fn; effect2.deps = []; effect2.options = options; return effect2; } function cleanup(effect2) { const { deps } = effect2; if (deps.length) { for (let i = 0; i < deps.length; i++) { deps[i].delete(effect2); } deps.length = 0; } } let shouldTrack = true; const trackStack = []; function pauseTracking() { trackStack.push(shouldTrack); shouldTrack = false; } function enableTracking() { trackStack.push(shouldTrack); shouldTrack = true; } function resetTracking() { const last = trackStack.pop(); shouldTrack = last === void 0 ? true : last; } function track(target, type, key) { if (!shouldTrack || activeEffect === void 0) { return; } let depsMap = targetMap.get(target); if (!depsMap) { targetMap.set(target, depsMap = new Map()); } let dep = depsMap.get(key); if (!dep) { depsMap.set(key, dep = new Set()); } if (!dep.has(activeEffect)) { dep.add(activeEffect); activeEffect.deps.push(dep); } } function trigger(target, type, key, newValue, oldValue, oldTarget) { const depsMap = targetMap.get(target); if (!depsMap) { return; } const effects = new Set(); const add2 = (effectsToAdd) => { if (effectsToAdd) { effectsToAdd.forEach((effect2) => { if (effect2 !== activeEffect || effect2.allowRecurse) { effects.add(effect2); } }); } }; if (type === "clear") { depsMap.forEach(add2); } else if (key === "length" && isArray(target)) { depsMap.forEach((dep, key2) => { if (key2 === "length" || key2 >= newValue) { add2(dep); } }); } else { if (key !== void 0) { add2(depsMap.get(key)); } switch (type) { case "add": if (!isArray(target)) { add2(depsMap.get(ITERATE_KEY)); if (isMap(target)) { add2(depsMap.get(MAP_KEY_ITERATE_KEY)); } } else if (isIntegerKey(key)) { add2(depsMap.get("length")); } break; case "delete": if (!isArray(target)) { add2(depsMap.get(ITERATE_KEY)); if (isMap(target)) { add2(depsMap.get(MAP_KEY_ITERATE_KEY)); } } break; case "set": if (isMap(target)) { add2(depsMap.get(ITERATE_KEY)); } break; } } const run = (effect2) => { if (effect2.options.scheduler) { effect2.options.scheduler(effect2); } else { effect2(); } }; effects.forEach(run); } const isNonTrackableKeys = /* @__PURE__ */ makeMap$1(`__proto__,__v_isRef,__isVue`); const builtInSymbols = new Set(Object.getOwnPropertyNames(Symbol).map((key) => Symbol[key]).filter(isSymbol)); const get = /* @__PURE__ */ createGetter(); const shallowGet = /* @__PURE__ */ createGetter(false, true); const readonlyGet = /* @__PURE__ */ createGetter(true); const arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations(); function createArrayInstrumentations() { const instrumentations = {}; ["includes", "indexOf", "lastIndexOf"].forEach((key) => { const method = Array.prototype[key]; instrumentations[key] = function(...args) { const arr = toRaw(this); for (let i = 0, l = this.length; i < l; i++) { track(arr, "get", i + ""); } const res = method.apply(arr, args); if (res === -1 || res === false) { return method.apply(arr, args.map(toRaw)); } else { return res; } }; }); ["push", "pop", "shift", "unshift", "splice"].forEach((key) => { const method = Array.prototype[key]; instrumentations[key] = function(...args) { pauseTracking(); const res = method.apply(this, args); resetTracking(); return res; }; }); return instrumentations; } function createGetter(isReadonly2 = false, shallow = false) { return function get2(target, key, receiver) { if (key === "__v_isReactive") { return !isReadonly2; } else if (key === "__v_isReadonly") { return isReadonly2; } else if (key === "__v_raw" && receiver === (isReadonly2 ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target)) { return target; } const targetIsArray = isArray(target); if (!isReadonly2 && targetIsArray && hasOwn$1(arrayInstrumentations, key)) { return Reflect.get(arrayInstrumentations, key, receiver); } const res = Reflect.get(target, key, receiver); if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) { return res; } if (!isReadonly2) { track(target, "get", key); } if (shallow) { return res; } if (isRef(res)) { const shouldUnwrap = !targetIsArray || !isIntegerKey(key); return shouldUnwrap ? res.value : res; } if (isObject$1(res)) { return isReadonly2 ? readonly(res) : reactive(res); } return res; }; } const set = /* @__PURE__ */ createSetter(); const shallowSet = /* @__PURE__ */ createSetter(true); function createSetter(shallow = false) { return function set2(target, key, value, receiver) { let oldValue = target[key]; if (!shallow) { value = toRaw(value); oldValue = toRaw(oldValue); if (!isArray(target) && isRef(oldValue) && !isRef(value)) { oldValue.value = value; return true; } } const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn$1(target, key); const result = Reflect.set(target, key, value, receiver); if (target === toRaw(receiver)) { if (!hadKey) { trigger(target, "add", key, value); } else if (hasChanged(value, oldValue)) { trigger(target, "set", key, value); } } return result; }; } function deleteProperty(target, key) { const hadKey = hasOwn$1(target, key); target[key]; const result = Reflect.deleteProperty(target, key); if (result && hadKey) { trigger(target, "delete", key, void 0); } return result; } function has(target, key) { const result = Reflect.has(target, key); if (!isSymbol(key) || !builtInSymbols.has(key)) { track(target, "has", key); } return result; } function ownKeys(target) { track(target, "iterate", isArray(target) ? "length" : ITERATE_KEY); return Reflect.ownKeys(target); } const mutableHandlers = { get, set, deleteProperty, has, ownKeys }; const readonlyHandlers = { get: readonlyGet, set(target, key) { return true; }, deleteProperty(target, key) { return true; } }; const shallowReactiveHandlers = /* @__PURE__ */ extend({}, mutableHandlers, { get: shallowGet, set: shallowSet }); const toReactive = (value) => isObject$1(value) ? reactive(value) : value; const toReadonly = (value) => isObject$1(value) ? readonly(value) : value; const toShallow = (value) => value; const getProto = (v2) => Reflect.getPrototypeOf(v2); function get$1(target, key, isReadonly2 = false, isShallow = false) { target = target["__v_raw"]; const rawTarget = toRaw(target); const rawKey = toRaw(key); if (key !== rawKey) { !isReadonly2 && track(rawTarget, "get", key); } !isReadonly2 && track(rawTarget, "get", rawKey); const { has: has2 } = getProto(rawTarget); const wrap = isShallow ? toShallow : isReadonly2 ? toReadonly : toReactive; if (has2.call(rawTarget, key)) { return wrap(target.get(key)); } else if (has2.call(rawTarget, rawKey)) { return wrap(target.get(rawKey)); } else if (target !== rawTarget) { target.get(key); } } function has$1(key, isReadonly2 = false) { const target = this["__v_raw"]; const rawTarget = toRaw(target); const rawKey = toRaw(key); if (key !== rawKey) { !isReadonly2 && track(rawTarget, "has", key); } !isReadonly2 && track(rawTarget, "has", rawKey); return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey); } function size(target, isReadonly2 = false) { target = target["__v_raw"]; !isReadonly2 && track(toRaw(target), "iterate", ITERATE_KEY); return Reflect.get(target, "size", target); } function add(value) { value = toRaw(value); const target = toRaw(this); const proto = getProto(target); const hadKey = proto.has.call(target, value); if (!hadKey) { target.add(value); trigger(target, "add", value, value); } return this; } function set$1(key, value) { value = toRaw(value); const target = toRaw(this); const { has: has2, get: get2 } = getProto(target); let hadKey = has2.call(target, key); if (!hadKey) { key = toRaw(key); hadKey = has2.call(target, key); } const oldValue = get2.call(target, key); target.set(key, value); if (!hadKey) { trigger(target, "add", key, value); } else if (hasChanged(value, oldValue)) { trigger(target, "set", key, value); } return this; } function deleteEntry(key) { const target = toRaw(this); const { has: has2, get: get2 } = getProto(target); let hadKey = has2.call(target, key); if (!hadKey) { key = toRaw(key); hadKey = has2.call(target, key); } get2 ? get2.call(target, key) : void 0; const result = target.delete(key); if (hadKey) { trigger(target, "delete", key, void 0); } return result; } function clear() { const target = toRaw(this); const hadItems = target.size !== 0; const result = target.clear(); if (hadItems) { trigger(target, "clear", void 0, void 0); } return result; } function createForEach(isReadonly2, isShallow) { return function forEach(callback, thisArg) { const observed = this; const target = observed["__v_raw"]; const rawTarget = toRaw(target); const wrap = isShallow ? toShallow : isReadonly2 ? toReadonly : toReactive; !isReadonly2 && track(rawTarget, "iterate", ITERATE_KEY); return target.forEach((value, key) => { return callback.call(thisArg, wrap(value), wrap(key), observed); }); }; } function createIterableMethod(method, isReadonly2, isShallow) { return function(...args) { const target = this["__v_raw"]; const rawTarget = toRaw(target); const targetIsMap = isMap(rawTarget); const isPair = method === "entries" || method === Symbol.iterator && targetIsMap; const isKeyOnly = method === "keys" && targetIsMap; const innerIterator = target[method](...args); const wrap = isShallow ? toShallow : isReadonly2 ? toReadonly : toReactive; !isReadonly2 && track(rawTarget, "iterate", isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY); return { next() { const { value, done } = innerIterator.next(); return done ? { value, done } : { value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value), done }; }, [Symbol.iterator]() { return this; } }; }; } function createReadonlyMethod(type) { return function(...args) { return type === "delete" ? false : this; }; } function createInstrumentations() { const mutableInstrumentations2 = { get(key) { return get$1(this, key); }, get size() { return size(this); }, has: has$1, add, set: set$1, delete: deleteEntry, clear, forEach: createForEach(false, false) }; const shallowInstrumentations2 = { get(key) { return get$1(this, key, false, true); }, get size() { return size(this); }, has: has$1, add, set: set$1, delete: deleteEntry, clear, forEach: createForEach(false, true) }; const readonlyInstrumentations2 = { get(key) { return get$1(this, key, true); }, get size() { return size(this, true); }, has(key) { return has$1.call(this, key, true); }, add: createReadonlyMethod("add"), set: createReadonlyMethod("set"), delete: createReadonlyMethod("delete"), clear: createReadonlyMethod("clear"), forEach: createForEach(true, false) }; const shallowReadonlyInstrumentations2 = { get(key) { return get$1(this, key, true, true); }, get size() { return size(this, true); }, has(key) { return has$1.call(this, key, true); }, add: createReadonlyMethod("add"), set: createReadonlyMethod("set"), delete: createReadonlyMethod("delete"), clear: createReadonlyMethod("clear"), forEach: createForEach(true, true) }; const iteratorMethods = ["keys", "values", "entries", Symbol.iterator]; iteratorMethods.forEach((method) => { mutableInstrumentations2[method] = createIterableMethod(method, false, false); readonlyInstrumentations2[method] = createIterableMethod(method, true, false); shallowInstrumentations2[method] = createIterableMethod(method, false, true); shallowReadonlyInstrumentations2[method] = createIterableMethod(method, true, true); }); return [ mutableInstrumentations2, readonlyInstrumentations2, shallowInstrumentations2, shallowReadonlyInstrumentations2 ]; } const [mutableInstrumentations, readonlyInstrumentations, shallowInstrumentations, shallowReadonlyInstrumentations] = /* @__PURE__ */ createInstrumentations(); function createInstrumentationGetter(isReadonly2, shallow) { const instrumentations = shallow ? isReadonly2 ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly2 ? readonlyInstrumentations : mutableInstrumentations; return (target, key, receiver) => { if (key === "__v_isReactive") { return !isReadonly2; } else if (key === "__v_isReadonly") { return isReadonly2; } else if (key === "__v_raw") { return target; } return Reflect.get(hasOwn$1(instrumentations, key) && key in target ? instrumentations : target, key, receiver); }; } const mutableCollectionHandlers = { get: /* @__PURE__ */ createInstrumentationGetter(false, false) }; const shallowCollectionHandlers = { get: /* @__PURE__ */ createInstrumentationGetter(false, true) }; const readonlyCollectionHandlers = { get: /* @__PURE__ */ createInstrumentationGetter(true, false) }; const reactiveMap = new WeakMap(); const shallowReactiveMap = new WeakMap(); const readonlyMap = new WeakMap(); const shallowReadonlyMap = new WeakMap(); function targetTypeMap(rawType) { switch (rawType) { case "Object": case "Array": return 1; case "Map": case "Set": case "WeakMap": case "WeakSet": return 2; default: return 0; } } function getTargetType(value) { return value["__v_skip"] || !Object.isExtensible(value) ? 0 : targetTypeMap(toRawType(value)); } function reactive(target) { if (target && target["__v_isReadonly"]) { return target; } return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap); } function shallowReactive(target) { return createReactiveObject(target, false, shallowReactiveHandlers, shallowCollectionHandlers, shallowReactiveMap); } function readonly(target) { return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap); } function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) { if (!isObject$1(target)) { return target; } if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) { return target; } const existingProxy = proxyMap.get(target); if (existingProxy) { return existingProxy; } const targetType = getTargetType(target); if (targetType === 0) { return target; } const proxy = new Proxy(target, targetType === 2 ? collectionHandlers : baseHandlers); proxyMap.set(target, proxy); return proxy; } function isReactive(value) { if (isReadonly(value)) { return isReactive(value["__v_raw"]); } return !!(value && value["__v_isReactive"]); } function isReadonly(value) { return !!(value && value["__v_isReadonly"]); } function isProxy(value) { return isReactive(value) || isReadonly(value); } function toRaw(observed) { return observed && toRaw(observed["__v_raw"]) || observed; } function markRaw(value) { def(value, "__v_skip", true); return value; } const convert = (val) => isObject$1(val) ? reactive(val) : val; function isRef(r) { return Boolean(r && r.__v_isRef === true); } function ref(value) { return createRef(value); } function shallowRef(value) { return createRef(value, true); } class RefImpl { constructor(_rawValue, _shallow) { this._rawValue = _rawValue; this._shallow = _shallow; this.__v_isRef = true; this._value = _shallow ? _rawValue : convert(_rawValue); } get value() { track(toRaw(this), "get", "value"); return this._value; } set value(newVal) { if (hasChanged(toRaw(newVal), this._rawValue)) { this._rawValue = newVal; this._value = this._shallow ? newVal : convert(newVal); trigger(toRaw(this), "set", "value", newVal); } } } function createRef(rawValue, shallow = false) { if (isRef(rawValue)) { return rawValue; } return new RefImpl(rawValue, shallow); } function unref(ref2) { return isRef(ref2) ? ref2.value : ref2; } const shallowUnwrapHandlers = { get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)), set: (target, key, value, receiver) => { const oldValue = target[key]; if (isRef(oldValue) && !isRef(value)) { oldValue.value = value; return true; } else { return Reflect.set(target, key, value, receiver); } } }; function proxyRefs(objectWithRefs) { return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers); } class ComputedRefImpl { constructor(getter, _setter, isReadonly2) { this._setter = _setter; this._dirty = true; this.__v_isRef = true; this.effect = effect(getter, { lazy: true, scheduler: () => { if (!this._dirty) { this._dirty = true; trigger(toRaw(this), "set", "value"); } } }); this["__v_isReadonly"] = isReadonly2; } get value() { const self = toRaw(this); if (self._dirty) { self._value = this.effect(); self._dirty = false; } track(self, "get", "value"); return self._value; } set value(newValue) { this._setter(newValue); } } function computed(getterOrOptions) { let getter; let setter; if (isFunction(getterOrOptions)) { getter = getterOrOptions; setter = NOOP; } else { getter = getterOrOptions.get; setter = getterOrOptions.set; } return new ComputedRefImpl(getter, setter, isFunction(getterOrOptions) || !getterOrOptions.set); } const stack = []; function warn(msg, ...args) { pauseTracking(); const instance = stack.length ? stack[stack.length - 1].component : null; const appWarnHandler = instance && instance.appContext.config.warnHandler; const trace = getComponentTrace(); if (appWarnHandler) { callWithErrorHandling(appWarnHandler, instance, 11, [ msg + args.join(""), instance && instance.proxy, trace.map(({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`).join("\n"), trace ]); } else { const warnArgs = [`[Vue warn]: ${msg}`, ...args]; if (trace.length && true) { warnArgs.push(` `, ...formatTrace(trace)); } console.warn(...warnArgs); } resetTracking(); } function getComponentTrace() { let currentVNode = stack[stack.length - 1]; if (!currentVNode) { return []; } const normalizedStack = []; while (currentVNode) { const last = normalizedStack[0]; if (last && last.vnode === currentVNode) { last.recurseCount++; } else { normalizedStack.push({ vnode: currentVNode, recurseCount: 0 }); } const parentInstance = currentVNode.component && currentVNode.component.parent; currentVNode = parentInstance && parentInstance.vnode; } return normalizedStack; } function formatTrace(trace) { const logs = []; trace.forEach((entry, i) => { logs.push(...i === 0 ? [] : [` `], ...formatTraceEntry(entry)); }); return logs; } function formatTraceEntry({ vnode, recurseCount }) { const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``; const isRoot = vnode.component ? vnode.component.parent == null : false; const open = ` at <${formatComponentName(vnode.component, vnode.type, isRoot)}`; const close = `>` + postfix; return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close]; } function formatProps(props2) { const res = []; const keys = Object.keys(props2); keys.slice(0, 3).forEach((key) => { res.push(...formatProp(key, props2[key])); }); if (keys.length > 3) { res.push(` ...`); } return res; } function formatProp(key, value, raw) { if (isString(value)) { value = JSON.stringify(value); return raw ? value : [`${key}=${value}`]; } else if (typeof value === "number" || typeof value === "boolean" || value == null) { return raw ? value : [`${key}=${value}`]; } else if (isRef(value)) { value = formatProp(key, toRaw(value.value), true); return raw ? value : [`${key}=Ref<`, value, `>`]; } else if (isFunction(value)) { return [`${key}=fn${value.name ? `<${value.name}>` : ``}`]; } else { value = toRaw(value); return raw ? value : [`${key}=`, value]; } } function callWithErrorHandling(fn, instance, type, args) { let res; try { res = args ? fn(...args) : fn(); } catch (err) { handleError(err, instance, type); } return res; } function callWithAsyncErrorHandling(fn, instance, type, args) { if (isFunction(fn)) { const res = callWithErrorHandling(fn, instance, type, args); if (res && isPromise(res)) { res.catch((err) => { handleError(err, instance, type); }); } return res; } const values = []; for (let i = 0; i < fn.length; i++) { values.push(callWithAsyncErrorHandling(fn[i], instance, type, args)); } return values; } function handleError(err, instance, type, throwInDev = true) { const contextVNode = instance ? instance.vnode : null; if (instance) { let cur = instance.parent; const exposedInstance = instance.proxy; const errorInfo = type; while (cur) { const errorCapturedHooks = cur.ec; if (errorCapturedHooks) { for (let i = 0; i < errorCapturedHooks.length; i++) { if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) { return; } } } cur = cur.parent; } const appErrorHandler = instance.appContext.config.errorHandler; if (appErrorHandler) { callWithErrorHandling(appErrorHandler, null, 10, [err, exposedInstance, errorInfo]); return; } } logError(err, type, contextVNode, throwInDev); } function logError(err, type, contextVNode, throwInDev = true) { { if (err instanceof Error) { console.error(err.message + "\n" + err.stack); } else { console.error(err); } } } let isFlushing = false; let isFlushPending = false; const queue = []; let flushIndex = 0; const pendingPreFlushCbs = []; let activePreFlushCbs = null; let preFlushIndex = 0; const pendingPostFlushCbs = []; let activePostFlushCbs = null; let postFlushIndex = 0; const resolvedPromise = Promise.resolve(); let currentFlushPromise = null; let currentPreFlushParentJob = null; const RECURSION_LIMIT = 100; function nextTick(fn) { const p2 = currentFlushPromise || resolvedPromise; return fn ? p2.then(this ? fn.bind(this) : fn) : p2; } function findInsertionIndex(job) { let start = flushIndex + 1; let end = queue.length; const jobId = getId(job); while (start < end) { const middle = start + end >>> 1; const middleJobId = getId(queue[middle]); middleJobId < jobId ? start = middle + 1 : end = middle; } return start; } function queueJob(job) { if ((!queue.length || !queue.includes(job, isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex)) && job !== currentPreFlushParentJob) { const pos = findInsertionIndex(job); if (pos > -1) { queue.splice(pos, 0, job); } else { queue.push(job); } queueFlush(); } } function queueFlush() { if (!isFlushing && !isFlushPending) { isFlushPending = true; currentFlushPromise = resolvedPromise.then(flushJobs); } } function invalidateJob(job) { const i = queue.indexOf(job); if (i > flushIndex) { queue.splice(i, 1); } } function queueCb(cb, activeQueue, pendingQueue, index2) { if (!isArray(cb)) { if (!activeQueue || !activeQueue.includes(cb, cb.allowRecurse ? index2 + 1 : index2)) { pendingQueue.push(cb); } } else { pendingQueue.push(...cb); } queueFlush(); } function queuePreFlushCb(cb) { queueCb(cb, activePreFlushCbs, pendingPreFlushCbs, preFlushIndex); } function queuePostFlushCb(cb) { queueCb(cb, activePostFlushCbs, pendingPostFlushCbs, postFlushIndex); } function flushPreFlushCbs(seen, parentJob = null) { if (pendingPreFlushCbs.length) { currentPreFlushParentJob = parentJob; activePreFlushCbs = [...new Set(pendingPreFlushCbs)]; pendingPreFlushCbs.length = 0; for (preFlushIndex = 0; preFlushIndex < activePreFlushCbs.length; preFlushIndex++) { activePreFlushCbs[preFlushIndex](); } activePreFlushCbs = null; preFlushIndex = 0; currentPreFlushParentJob = null; flushPreFlushCbs(seen, parentJob); } } function flushPostFlushCbs(seen) { if (pendingPostFlushCbs.length) { const deduped = [...new Set(pendingPostFlushCbs)]; pendingPostFlushCbs.length = 0; if (activePostFlushCbs) { activePostFlushCbs.push(...deduped); return; } activePostFlushCbs = deduped; activePostFlushCbs.sort((a2, b) => getId(a2) - getId(b)); for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) { activePostFlushCbs[postFlushIndex](); } activePostFlushCbs = null; postFlushIndex = 0; } } const getId = (job) => job.id == null ? Infinity : job.id; function flushJobs(seen) { isFlushPending = false; isFlushing = true; flushPreFlushCbs(seen); queue.sort((a2, b) => getId(a2) - getId(b)); try { for (flushIndex = 0; flushIndex < queue.length; flushIndex++) { const job = queue[flushIndex]; if (job && job.active !== false) { if (false) ; callWithErrorHandling(job, null, 14); } } } finally { flushIndex = 0; queue.length = 0; flushPostFlushCbs(); isFlushing = false; currentFlushPromise = null; if (queue.length || pendingPreFlushCbs.length || pendingPostFlushCbs.length) { flushJobs(seen); } } } function checkRecursiveUpdates(seen, fn) { if (!seen.has(fn)) { seen.set(fn, 1); } else { const count = seen.get(fn); if (count > RECURSION_LIMIT) { const instance = fn.ownerInstance; const componentName = instance && getComponentName(instance.type); warn(`Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`); return true; } else { seen.set(fn, count + 1); } } } const globalCompatConfig = { MODE: 2 }; function getCompatConfigForKey(key, instance) { const instanceConfig = instance && instance.type.compatConfig; if (instanceConfig && key in instanceConfig) { return instanceConfig[key]; } return globalCompatConfig[key]; } function isCompatEnabled(key, instance, enableForBuiltIn = false) { if (!enableForBuiltIn && instance && instance.type.__isBuiltIn) { return false; } const rawMode = getCompatConfigForKey("MODE", instance) || 2; const val = getCompatConfigForKey(key, instance); const mode = isFunction(rawMode) ? rawMode(instance && instance.type) : rawMode; if (mode === 2) { return val !== false; } else { return val === true || val === "suppress-warning"; } } function emit$2(instance, event, ...rawArgs) { const props2 = instance.vnode.props || EMPTY_OBJ; let args = rawArgs; const isModelListener2 = event.startsWith("update:"); const modelArg = isModelListener2 && event.slice(7); if (modelArg && modelArg in props2) { const modifiersKey = `${modelArg === "modelValue" ? "model" : modelArg}Modifiers`; const { number, trim } = props2[modifiersKey] || EMPTY_OBJ; if (trim) { args = rawArgs.map((a2) => a2.trim()); } else if (number) { args = rawArgs.map(toNumber); } } let handlerName; let handler = props2[handlerName = toHandlerKey(event)] || props2[handlerName = toHandlerKey(camelize(event))]; if (!handler && isModelListener2) { handler = props2[handlerName = toHandlerKey(hyphenate(event))]; } if (handler) { callWithAsyncErrorHandling(handler, instance, 6, args); } const onceHandler = props2[handlerName + `Once`]; if (onceHandler) { if (!instance.emitted) { instance.emitted = {}; } else if (instance.emitted[handlerName]) { return; } instance.emitted[handlerName] = true; callWithAsyncErrorHandling(onceHandler, instance, 6, args); } } function normalizeEmitsOptions(comp, appContext, asMixin = false) { const cache2 = appContext.emitsCache; const cached = cache2.get(comp); if (cached !== void 0) { return cached; } const raw = comp.emits; let normalized = {}; let hasExtends = false; if (!isFunction(comp)) { const extendEmits = (raw2) => { const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true); if (normalizedFromExtend) { hasExtends = true; extend(normalized, normalizedFromExtend); } }; if (!asMixin && appContext.mixins.length) { appContext.mixins.forEach(extendEmits); } if (comp.extends) { extendEmits(comp.extends); } if (comp.mixins) { comp.mixins.forEach(extendEmits); } } if (!raw && !hasExtends) { cache2.set(comp, null); return null; } if (isArray(raw)) { raw.forEach((key) => normalized[key] = null); } else { extend(normalized, raw); } cache2.set(comp, normalized); return normalized; } function isEmitListener(options, key) { if (!options || !isOn(key)) { return false; } key = key.slice(2).replace(/Once$/, ""); return hasOwn$1(options, key[0].toLowerCase() + key.slice(1)) || hasOwn$1(options, hyphenate(key)) || hasOwn$1(options, key); } let currentRenderingInstance = null; let currentScopeId = null; function setCurrentRenderingInstance(instance) { const prev = currentRenderingInstance; currentRenderingInstance = instance; currentScopeId = instance && instance.type.__scopeId || null; return prev; } function withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) { if (!ctx) return fn; if (fn._n) { return fn; } const renderFnWithContext = (...args) => { if (renderFnWithContext._d) { setBlockTracking(-1); } const prevInstance = setCurrentRenderingInstance(ctx); const res = fn(...args); setCurrentRenderingInstance(prevInstance); if (renderFnWithContext._d) { setBlockTracking(1); } return res; }; renderFnWithContext._n = true; renderFnWithContext._c = true; renderFnWithContext._d = true; return renderFnWithContext; } let accessedAttrs = false; function markAttrsAccessed() { accessedAttrs = true; } function renderComponentRoot(instance) { const { type: Component, vnode, proxy, withProxy, props: props2, propsOptions: [propsOptions], slots, attrs: attrs2, emit: emit2, render, renderCache, data, setupState, ctx, inheritAttrs } = instance; let result; const prev = setCurrentRenderingInstance(instance); try { let fallthroughAttrs; if (vnode.shapeFlag & 4) { const proxyToUse = withProxy || proxy; result = normalizeVNode(render.call(proxyToUse, proxyToUse, renderCache, props2, setupState, data, ctx)); fallthroughAttrs = attrs2; } else { const render2 = Component; if (false) ; result = normalizeVNode(render2.length > 1 ? render2(props2, false ? { get attrs() { markAttrsAccessed(); return attrs2; }, slots, emit: emit2 } : { attrs: attrs2, slots, emit: emit2 }) : render2(props2, null)); fallthroughAttrs = Component.props ? attrs2 : getFunctionalFallthrough(attrs2); } let root = result; let setRoot = void 0; if (false) ; if (fallthroughAttrs && inheritAttrs !== false) { const keys = Object.keys(fallthroughAttrs); const { shapeFlag } = root; if (keys.length) { if (shapeFlag & 1 || shapeFlag & 6) { if (propsOptions && keys.some(isModelListener)) { fallthroughAttrs = filterModelListeners(fallthroughAttrs, propsOptions); } root = cloneVNode(root, fallthroughAttrs); } else if (false) ; } } if (false) ; if (vnode.dirs) { if (false) ; root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs; } if (vnode.transition) { if (false) ; root.transition = vnode.transition; } if (false) ; else { result = root; } } catch (err) { blockStack.length = 0; handleError(err, instance, 1); result = createVNode(Comment$1); } setCurrentRenderingInstance(prev); return result; } const getChildRoot = (vnode) => { const rawChildren = vnode.children; const dynamicChildren = vnode.dynamicChildren; const childRoot = filterSingleRoot(rawChildren); if (!childRoot) { return [vnode, void 0]; } const index2 = rawChildren.indexOf(childRoot); const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1; const setRoot = (updatedRoot) => { rawChildren[index2] = updatedRoot; if (dynamicChildren) { if (dynamicIndex > -1) { dynamicChildren[dynamicIndex] = updatedRoot; } else if (updatedRoot.patchFlag > 0) { vnode.dynamicChildren = [...dynamicChildren, updatedRoot]; } } }; return [normalizeVNode(childRoot), setRoot]; }; function filterSingleRoot(children) { let singleRoot; for (let i = 0; i < children.length; i++) { const child = children[i]; if (isVNode(child)) { if (child.type !== Comment$1 || child.children === "v-if") { if (singleRoot) { return; } else { singleRoot = child; } } } else { return; } } return singleRoot; } const getFunctionalFallthrough = (attrs2) => { let res; for (const key in attrs2) { if (key === "class" || key === "style" || isOn(key)) { (res || (res = {}))[key] = attrs2[key]; } } return res; }; const filterModelListeners = (attrs2, props2) => { const res = {}; for (const key in attrs2) { if (!isModelListener(key) || !(key.slice(9) in props2)) { res[key] = attrs2[key]; } } return res; }; const isElementRoot = (vnode) => { return vnode.shapeFlag & 6 || vnode.shapeFlag & 1 || vnode.type === Comment$1; }; function shouldUpdateComponent(prevVNode, nextVNode, optimized) { const { props: prevProps, children: prevChildren, component } = prevVNode; const { props: nextProps, children: nextChildren, patchFlag } = nextVNode; const emits2 = component.emitsOptions; if (nextVNode.dirs || nextVNode.transition) { return true; } if (optimized && patchFlag >= 0) { if (patchFlag & 1024) { return true; } if (patchFlag & 16) { if (!prevProps) { return !!nextProps; } return hasPropsChanged(prevProps, nextProps, emits2); } else if (patchFlag & 8) { const dynamicProps = nextVNode.dynamicProps; for (let i = 0; i < dynamicProps.length; i++) { const key = dynamicProps[i]; if (nextProps[key] !== prevProps[key] && !isEmitListener(emits2, key)) { return true; } } } } else { if (prevChildren || nextChildren) { if (!nextChildren || !nextChildren.$stable) { return true; } } if (prevProps === nextProps) { return false; } if (!prevProps) { return !!nextProps; } if (!nextProps) { return true; } return hasPropsChanged(prevProps, nextProps, emits2); } return false; } function hasPropsChanged(prevProps, nextProps, emitsOptions) { const nextKeys = Object.keys(nextProps); if (nextKeys.length !== Object.keys(prevProps).length) { return true; } for (let i = 0; i < nextKeys.length; i++) { const key = nextKeys[i]; if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) { return true; } } return false; } function updateHOCHostEl({ vnode, parent }, el) { while (parent && parent.subTree === vnode) { (vnode = parent.vnode).el = el; parent = parent.parent; } } const isSuspense = (type) => type.__isSuspense; function queueEffectWithSuspense(fn, suspense) { if (suspense && suspense.pendingBranch) { if (isArray(fn)) { suspense.effects.push(...fn); } else { suspense.effects.push(fn); } } else { queuePostFlushCb(fn); } } function provide(key, value) { if (!currentInstance) ; else { let provides = currentInstance.provides; const parentProvides = currentInstance.parent && currentInstance.parent.provides; if (parentProvides === provides) { provides = currentInstance.provides = Object.create(parentProvides); } provides[key] = value; } } function inject(key, defaultValue, treatDefaultAsFactory = false) { const instance = currentInstance || currentRenderingInstance; if (instance) { const provides = instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides; if (provides && key in provides) { return provides[key]; } else if (arguments.length > 1) { return treatDefaultAsFactory && isFunction(defaultValue) ? defaultValue.call(instance.proxy) : defaultValue; } else ; } } function watchEffect(effect2, options) { return doWatch(effect2, null, options); } const INITIAL_WATCHER_VALUE = {}; function watch(source, cb, options) { return doWatch(source, cb, options); } function doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EMPTY_OBJ, instance = currentInstance) { let getter; let forceTrigger = false; let isMultiSource = false; if (isRef(source)) { getter = () => source.value; forceTrigger = !!source._shallow; } else if (isReactive(source)) { getter = () => source; deep = true; } else if (isArray(source)) { isMultiSource = true; forceTrigger = source.some(isReactive); getter = () => source.map((s) => { if (isRef(s)) { return s.value; } else if (isReactive(s)) { return traverse(s); } else if (isFunction(s)) { return callWithErrorHandling(s, instance, 2); } else ; }); } else if (isFunction(source)) { if (cb) { getter = () => callWithErrorHandling(source, instance, 2); } else { getter = () => { if (instance && instance.isUnmounted) { return; } if (cleanup2) { cleanup2(); } return callWithAsyncErrorHandling(source, instance, 3, [onInvalidate]); }; } } else { getter = NOOP; } if (cb && deep) { const baseGetter = getter; getter = () => traverse(baseGetter()); } let cleanup2; let onInvalidate = (fn) => { cleanup2 = runner.options.onStop = () => { callWithErrorHandling(fn, instance, 4); }; }; let oldValue = isMultiSource ? [] : INITIAL_WATCHER_VALUE; const job = () => { if (!runner.active) { return; } if (cb) { const newValue = runner(); if (deep || forceTrigger || (isMultiSource ? newValue.some((v2, i) => hasChanged(v2, oldValue[i])) : hasChanged(newValue, oldValue)) || false) { if (cleanup2) { cleanup2(); } callWithAsyncErrorHandling(cb, instance, 3, [ newValue, oldValue === INITIAL_WATCHER_VALUE ? void 0 : oldValue, onInvalidate ]); oldValue = newValue; } } else { runner(); } }; job.allowRecurse = !!cb; let scheduler; if (flush === "sync") { scheduler = job; } else if (flush === "post") { scheduler = () => queuePostRenderEffect(job, instance && instance.suspense); } else { scheduler = () => { if (!instance || instance.isMounted) { queuePreFlushCb(job); } else { job(); } }; } const runner = effect(getter, { lazy: true, onTrack, onTrigger, scheduler }); recordInstanceBoundEffect(runner, instance); if (cb) { if (immediate) { job(); } else { oldValue = runner(); } } else if (flush === "post") { queuePostRenderEffect(runner, instance && instance.suspense); } else { runner(); } return () => { stop(runner); if (instance) { remove(instance.effects, runner); } }; } function instanceWatch(source, value, options) { const publicThis = this.proxy; const getter = isString(source) ? source.includes(".") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis); let cb; if (isFunction(value)) { cb = value; } else { cb = value.handler; options = value; } return doWatch(getter, cb.bind(publicThis), options, this); } function createPathGetter(ctx, path) { const segments = path.split("."); return () => { let cur = ctx; for (let i = 0; i < segments.length && cur; i++) { cur = cur[segments[i]]; } return cur; }; } function traverse(value, seen = new Set()) { if (!isObject$1(value) || seen.has(value) || value["__v_skip"]) { return value; } seen.add(value); if (isRef(value)) { traverse(value.value, seen); } else if (isArray(value)) { for (let i = 0; i < value.length; i++) { traverse(value[i], seen); } } else if (isSet(value) || isMap(value)) { value.forEach((v2) => { traverse(v2, seen); }); } else if (isPlainObject(value)) { for (const key in value) { traverse(value[key], seen); } } return value; } function defineComponent(options) { return isFunction(options) ? { setup: options, name: options.name } : options; } const isAsyncWrapper = (i) => !!i.type.__asyncLoader; const isKeepAlive = (vnode) => vnode.type.__isKeepAlive; function onActivated(hook, target) { registerKeepAliveHook(hook, "a", target); } function onDeactivated(hook, target) { registerKeepAliveHook(hook, "da", target); } function registerKeepAliveHook(hook, type, target = currentInstance) { const wrappedHook = hook.__wdc || (hook.__wdc = () => { let current = target; while (current) { if (current.isDeactivated) { return; } current = current.parent; } hook(); }); injectHook(type, wrappedHook, target); if (target) { let current = target.parent; while (current && current.parent) { if (isKeepAlive(current.parent.vnode)) { injectToKeepAliveRoot(wrappedHook, type, target, current); } current = current.parent; } } } function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) { const injected = injectHook(type, hook, keepAliveRoot, true); onUnmounted(() => { remove(keepAliveRoot[type], injected); }, target); } function injectHook(type, hook, target = currentInstance, prepend = false) { if (target) { const hooks = target[type] || (target[type] = []); const wrappedHook = hook.__weh || (hook.__weh = (...args) => { if (target.isUnmounted) { return; } pauseTracking(); setCurrentInstance(target); const res = callWithAsyncErrorHandling(hook, target, type, args); setCurrentInstance(null); resetTracking(); return res; }); if (prepend) { hooks.unshift(wrappedHook); } else { hooks.push(wrappedHook); } return wrappedHook; } } const createHook = (lifecycle) => (hook, target = currentInstance) => (!isInSSRComponentSetup || lifecycle === "sp") && injectHook(lifecycle, hook, target); const onBeforeMount = createHook("bm"); const onMounted = createHook("m"); const onBeforeUpdate = createHook("bu"); const onUpdated = createHook("u"); const onBeforeUnmount = createHook("bum"); const onUnmounted = createHook("um"); const onServerPrefetch = createHook("sp"); const onRenderTriggered = createHook("rtg"); const onRenderTracked = createHook("rtc"); function onErrorCaptured(hook, target = currentInstance) { injectHook("ec", hook, target); } let shouldCacheAccess = true; function applyOptions(instance) { const options = resolveMergedOptions(instance); const publicThis = instance.proxy; const ctx = instance.ctx; shouldCacheAccess = false; if (options.beforeCreate) { callHook(options.beforeCreate, instance, "bc"); } const { data: dataOptions, computed: computedOptions, methods: methods2, watch: watchOptions, provide: provideOptions, inject: injectOptions, created, beforeMount, mounted, beforeUpdate, updated, activated, deactivated, beforeDestroy, beforeUnmount, destroyed, unmounted, render, renderTracked, renderTriggered, errorCaptured, serverPrefetch, expose, inheritAttrs, components, directives, filters } = options; const checkDuplicateProperties = null; if (injectOptions) { resolveInjections(injectOptions, ctx, checkDuplicateProperties); } if (methods2) { for (const key in methods2) { const methodHandler = methods2[key]; if (isFunction(methodHandler)) { { ctx[key] = methodHandler.bind(publicThis); } } } } if (dataOptions) { const data = dataOptions.call(publicThis, publicThis); if (!isObject$1(data)) ; else { instance.data = reactive(data); } } shouldCacheAccess = true; if (computedOptions) { for (const key in computedOptions) { const opt = computedOptions[key]; const get2 = isFunction(opt) ? opt.bind(publicThis, publicThis) : isFunction(opt.get) ? opt.get.bind(publicThis, publicThis) : NOOP; const set2 = !isFunction(opt) && isFunction(opt.set) ? opt.set.bind(publicThis) : NOOP; const c = computed$1({ get: get2, set: set2 }); Object.defineProperty(ctx, key, { enumerable: true, configurable: true, get: () => c.value, set: (v2) => c.value = v2 }); } } if (watchOptions) { for (const key in watchOptions) { createWatcher(watchOptions[key], ctx, publicThis, key); } } if (provideOptions) { const provides = isFunction(provideOptions) ? provideOptions.call(publicThis) : provideOptions; Reflect.ownKeys(provides).forEach((key) => { provide(key, provides[key]); }); } if (created) { callHook(created, instance, "c"); } function registerLifecycleHook(register2, hook) { if (isArray(hook)) { hook.forEach((_hook) => register2(_hook.bind(publicThis))); } else if (hook) { register2(hook.bind(publicThis)); } } registerLifecycleHook(onBeforeMount, beforeMount); registerLifecycleHook(onMounted, mounted); registerLifecycleHook(onBeforeUpdate, beforeUpdate); registerLifecycleHook(onUpdated, updated); registerLifecycleHook(onActivated, activated); registerLifecycleHook(onDeactivated, deactivated); registerLifecycleHook(onErrorCaptured, errorCaptured); registerLifecycleHook(onRenderTracked, renderTracked); registerLifecycleHook(onRenderTriggered, renderTriggered); registerLifecycleHook(onBeforeUnmount, beforeUnmount); registerLifecycleHook(onUnmounted, unmounted); registerLifecycleHook(onServerPrefetch, serverPrefetch); if (isArray(expose)) { if (expose.length) { const exposed = instance.exposed || (instance.exposed = {}); expose.forEach((key) => { Object.defineProperty(exposed, key, { get: () => publicThis[key], set: (val) => publicThis[key] = val }); }); } else if (!instance.exposed) { instance.exposed = {}; } } if (render && instance.render === NOOP) { instance.render = render; } if (inheritAttrs != null) { instance.inheritAttrs = inheritAttrs; } if (components) instance.components = components; if (directives) instance.directives = directives; } function resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP) { if (isArray(injectOptions)) { injectOptions = normalizeInject(injectOptions); } for (const key in injectOptions) { const opt = injectOptions[key]; if (isObject$1(opt)) { if ("default" in opt) { ctx[key] = inject(opt.from || key, opt.default, true); } else { ctx[key] = inject(opt.from || key); } } else { ctx[key] = inject(opt); } } } function callHook(hook, instance, type) { callWithAsyncErrorHandling(isArray(hook) ? hook.map((h2) => h2.bind(instance.proxy)) : hook.bind(instance.proxy), instance, type); } function createWatcher(raw, ctx, publicThis, key) { const getter = key.includes(".") ? createPathGetter(publicThis, key) : () => publicThis[key]; if (isString(raw)) { const handler = ctx[raw]; if (isFunction(handler)) { watch(getter, handler); } } else if (isFunction(raw)) { watch(getter, raw.bind(publicThis)); } else if (isObject$1(raw)) { if (isArray(raw)) { raw.forEach((r) => createWatcher(r, ctx, publicThis, key)); } else { const handler = isFunction(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler]; if (isFunction(handler)) { watch(getter, handler, raw); } } } else ; } function resolveMergedOptions(instance) { const base2 = instance.type; const { mixins, extends: extendsOptions } = base2; const { mixins: globalMixins, optionsCache: cache2, config: { optionMergeStrategies } } = instance.appContext; const cached = cache2.get(base2); let resolved; if (cached) { resolved = cached; } else if (!globalMixins.length && !mixins && !extendsOptions) { { resolved = base2; } } else { resolved = {}; if (globalMixins.length) { globalMixins.forEach((m) => mergeOptions(resolved, m, optionMergeStrategies, true)); } mergeOptions(resolved, base2, optionMergeStrategies); } cache2.set(base2, resolved); return resolved; } function mergeOptions(to, from, strats, asMixin = false) { const { mixins, extends: extendsOptions } = from; if (extendsOptions) { mergeOptions(to, extendsOptions, strats, true); } if (mixins) { mixins.forEach((m) => mergeOptions(to, m, strats, true)); } for (const key in from) { if (asMixin && key === "expose") ; else { const strat = internalOptionMergeStrats[key] || strats && strats[key]; to[key] = strat ? strat(to[key], from[key]) : from[key]; } } return to; } const internalOptionMergeStrats = { data: mergeDataFn, props: mergeObjectOptions, emits: mergeObjectOptions, methods: mergeObjectOptions, computed: mergeObjectOptions, beforeCreate: mergeAsArray, created: mergeAsArray, beforeMount: mergeAsArray, mounted: mergeAsArray, beforeUpdate: mergeAsArray, updated: mergeAsArray, beforeDestroy: mergeAsArray, destroyed: mergeAsArray, activated: mergeAsArray, deactivated: mergeAsArray, errorCaptured: mergeAsArray, serverPrefetch: mergeAsArray, components: mergeObjectOptions, directives: mergeObjectOptions, watch: mergeWatchOptions, provide: mergeDataFn, inject: mergeInject }; function mergeDataFn(to, from) { if (!from) { return to; } if (!to) { return from; } return function mergedDataFn() { return extend(isFunction(to) ? to.call(this, this) : to, isFunction(from) ? from.call(this, this) : from); }; } function mergeInject(to, from) { return mergeObjectOptions(normalizeInject(to), normalizeInject(from)); } function normalizeInject(raw) { if (isArray(raw)) { const res = {}; for (let i = 0; i < raw.length; i++) { res[raw[i]] = raw[i]; } return res; } return raw; } function mergeAsArray(to, from) { return to ? [...new Set([].concat(to, from))] : from; } function mergeObjectOptions(to, from) { return to ? extend(extend(Object.create(null), to), from) : from; } function mergeWatchOptions(to, from) { if (!to) return from; if (!from) return to; const merged = extend(Object.create(null), to); for (const key in from) { merged[key] = mergeAsArray(to[key], from[key]); } return merged; } function initProps(instance, rawProps, isStateful, isSSR = false) { const props2 = {}; const attrs2 = {}; def(attrs2, InternalObjectKey, 1); instance.propsDefaults = Object.create(null); setFullProps(instance, rawProps, props2, attrs2); for (const key in instance.propsOptions[0]) { if (!(key in props2)) { props2[key] = void 0; } } if (isStateful) { instance.props = isSSR ? props2 : shallowReactive(props2); } else { if (!instance.type.props) { instance.props = attrs2; } else { instance.props = props2; } } instance.attrs = attrs2; } function updateProps(instance, rawProps, rawPrevProps, optimized) { const { props: props2, attrs: attrs2, vnode: { patchFlag } } = instance; const rawCurrentProps = toRaw(props2); const [options] = instance.propsOptions; let hasAttrsChanged = false; if ((optimized || patchFlag > 0) && !(patchFlag & 16)) { if (patchFlag & 8) { const propsToUpdate = instance.vnode.dynamicProps; for (let i = 0; i < propsToUpdate.length; i++) { let key = propsToUpdate[i]; const value = rawProps[key]; if (options) { if (hasOwn$1(attrs2, key)) { if (value !== attrs2[key]) { attrs2[key] = value; hasAttrsChanged = true; } } else { const camelizedKey = camelize(key); props2[camelizedKey] = resolvePropValue(options, rawCurrentProps, camelizedKey, value, instance, false); } } else { if (value !== attrs2[key]) { attrs2[key] = value; hasAttrsChanged = true; } } } } } else { if (setFullProps(instance, rawProps, props2, attrs2)) { hasAttrsChanged = true; } let kebabKey; for (const key in rawCurrentProps) { if (!rawProps || !hasOwn$1(rawProps, key) && ((kebabKey = hyphenate(key)) === key || !hasOwn$1(rawProps, kebabKey))) { if (options) { if (rawPrevProps && (rawPrevProps[key] !== void 0 || rawPrevProps[kebabKey] !== void 0)) { props2[key] = resolvePropValue(options, rawCurrentProps, key, void 0, instance, true); } } else { delete props2[key]; } } } if (attrs2 !== rawCurrentProps) { for (const key in attrs2) { if (!rawProps || !hasOwn$1(rawProps, key)) { delete attrs2[key]; hasAttrsChanged = true; } } } } if (hasAttrsChanged) { trigger(instance, "set", "$attrs"); } } function setFullProps(instance, rawProps, props2, attrs2) { const [options, needCastKeys] = instance.propsOptions; let hasAttrsChanged = false; let rawCastValues; if (rawProps) { for (let key in rawProps) { if (isReservedProp(key)) { continue; } const value = rawProps[key]; let camelKey; if (options && hasOwn$1(options, camelKey = camelize(key))) { if (!needCastKeys || !needCastKeys.includes(camelKey)) { props2[camelKey] = value; } else { (rawCastValues || (rawCastValues = {}))[camelKey] = value; } } else if (!isEmitListener(instance.emitsOptions, key)) { if (value !== attrs2[key]) { attrs2[key] = value; hasAttrsChanged = true; } } } } if (needCastKeys) { const rawCurrentProps = toRaw(props2); const castValues = rawCastValues || EMPTY_OBJ; for (let i = 0; i < needCastKeys.length; i++) { const key = needCastKeys[i]; props2[key] = resolvePropValue(options, rawCurrentProps, key, castValues[key], instance, !hasOwn$1(castValues, key)); } } return hasAttrsChanged; } function resolvePropValue(options, props2, key, value, instance, isAbsent) { const opt = options[key]; if (opt != null) { const hasDefault = hasOwn$1(opt, "default"); if (hasDefault && value === void 0) { const defaultValue = opt.default; if (opt.type !== Function && isFunction(defaultValue)) { const { propsDefaults } = instance; if (key in propsDefaults) { value = propsDefaults[key]; } else { setCurrentInstance(instance); value = propsDefaults[key] = defaultValue.call(null, props2); setCurrentInstance(null); } } else { value = defaultValue; } } if (opt[0]) { if (isAbsent && !hasDefault) { value = false; } else if (opt[1] && (value === "" || value === hyphenate(key))) { value = true; } } } return value; } function normalizePropsOptions(comp, appContext, asMixin = false) { const cache2 = appContext.propsCache; const cached = cache2.get(comp); if (cached) { return cached; } const raw = comp.props; const normalized = {}; const needCastKeys = []; let hasExtends = false; if (!isFunction(comp)) { const extendProps = (raw2) => { hasExtends = true; const [props2, keys] = normalizePropsOptions(raw2, appContext, true); extend(normalized, props2); if (keys) needCastKeys.push(...keys); }; if (!asMixin && appContext.mixins.length) { appContext.mixins.forEach(extendProps); } if (comp.extends) { extendProps(comp.extends); } if (comp.mixins) { comp.mixins.forEach(extendProps); } } if (!raw && !hasExtends) { cache2.set(comp, EMPTY_ARR); return EMPTY_ARR; } if (isArray(raw)) { for (let i = 0; i < raw.length; i++) { const normalizedKey = camelize(raw[i]); if (validatePropName(normalizedKey)) { normalized[normalizedKey] = EMPTY_OBJ; } } } else if (raw) { for (const key in raw) { const normalizedKey = camelize(key); if (validatePropName(normalizedKey)) { const opt = raw[key]; const prop = normalized[normalizedKey] = isArray(opt) || isFunction(opt) ? { type: opt } : opt; if (prop) { const booleanIndex = getTypeIndex(Boolean, prop.type); const stringIndex = getTypeIndex(String, prop.type); prop[0] = booleanIndex > -1; prop[1] = stringIndex < 0 || booleanIndex < stringIndex; if (booleanIndex > -1 || hasOwn$1(prop, "default")) { needCastKeys.push(normalizedKey); } } } } } const res = [normalized, needCastKeys]; cache2.set(comp, res); return res; } function validatePropName(key) { if (key[0] !== "$") { return true; } return false; } function getType$1(ctor) { const match = ctor && ctor.toString().match(/^\s*function (\w+)/); return match ? match[1] : ""; } function isSameType(a2, b) { return getType$1(a2) === getType$1(b); } function getTypeIndex(type, expectedTypes) { if (isArray(expectedTypes)) { return expectedTypes.findIndex((t2) => isSameType(t2, type)); } else if (isFunction(expectedTypes)) { return isSameType(expectedTypes, type) ? 0 : -1; } return -1; } const isInternalKey = (key) => key[0] === "_" || key === "$stable"; const normalizeSlotValue = (value) => isArray(value) ? value.map(normalizeVNode) : [normalizeVNode(value)]; const normalizeSlot = (key, rawSlot, ctx) => { const normalized = withCtx((props2) => { return normalizeSlotValue(rawSlot(props2)); }, ctx); normalized._c = false; return normalized; }; const normalizeObjectSlots = (rawSlots, slots, instance) => { const ctx = rawSlots._ctx; for (const key in rawSlots) { if (isInternalKey(key)) continue; const value = rawSlots[key]; if (isFunction(value)) { slots[key] = normalizeSlot(key, value, ctx); } else if (value != null) { const normalized = normalizeSlotValue(value); slots[key] = () => normalized; } } }; const normalizeVNodeSlots = (instance, children) => { const normalized = normalizeSlotValue(children); instance.slots.default = () => normalized; }; const initSlots = (instance, children) => { if (instance.vnode.shapeFlag & 32) { const type = children._; if (type) { instance.slots = toRaw(children); def(children, "_", type); } else { normalizeObjectSlots(children, instance.slots = {}); } } else { instance.slots = {}; if (children) { normalizeVNodeSlots(instance, children); } } def(instance.slots, InternalObjectKey, 1); }; const updateSlots = (instance, children, optimized) => { const { vnode, slots } = instance; let needDeletionCheck = true; let deletionComparisonTarget = EMPTY_OBJ; if (vnode.shapeFlag & 32) { const type = children._; if (type) { if (optimized && type === 1) { needDeletionCheck = false; } else { extend(slots, children); if (!optimized && type === 1) { delete slots._; } } } else { needDeletionCheck = !children.$stable; normalizeObjectSlots(children, slots); } deletionComparisonTarget = children; } else if (children) { normalizeVNodeSlots(instance, children); deletionComparisonTarget = { default: 1 }; } if (needDeletionCheck) { for (const key in slots) { if (!isInternalKey(key) && !(key in deletionComparisonTarget)) { delete slots[key]; } } } }; function withDirectives(vnode, directives) { const internalInstance = currentRenderingInstance; if (internalInstance === null) { return vnode; } const instance = internalInstance.proxy; const bindings = vnode.dirs || (vnode.dirs = []); for (let i = 0; i < directives.length; i++) { let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i]; if (isFunction(dir)) { dir = { mounted: dir, updated: dir }; } bindings.push({ dir, instance, value, oldValue: void 0, arg, modifiers }); } return vnode; } function invokeDirectiveHook(vnode, prevVNode, instance, name) { const bindings = vnode.dirs; const oldBindings = prevVNode && prevVNode.dirs; for (let i = 0; i < bindings.length; i++) { const binding = bindings[i]; if (oldBindings) { binding.oldValue = oldBindings[i].value; } let hook = binding.dir[name]; if (hook) { pauseTracking(); callWithAsyncErrorHandling(hook, instance, 8, [ vnode.el, binding, vnode, prevVNode ]); resetTracking(); } } } function createAppContext() { return { app: null, config: { isNativeTag: NO, performance: false, globalProperties: {}, optionMergeStrategies: {}, errorHandler: void 0, warnHandler: void 0, compilerOptions: {} }, mixins: [], components: {}, directives: {}, provides: Object.create(null), optionsCache: new WeakMap(), propsCache: new WeakMap(), emitsCache: new WeakMap() }; } let uid$1 = 0; function createAppAPI(render, hydrate) { return function createApp2(rootComponent, rootProps = null) { if (rootProps != null && !isObject$1(rootProps)) { rootProps = null; } const context = createAppContext(); const installedPlugins = new Set(); let isMounted = false; const app = context.app = { _uid: uid$1++, _component: rootComponent, _props: rootProps, _container: null, _context: context, _instance: null, version, get config() { return context.config; }, set config(v2) { }, use(plugin, ...options) { if (installedPlugins.has(plugin)) ; else if (plugin && isFunction(plugin.install)) { installedPlugins.add(plugin); plugin.install(app, ...options); } else if (isFunction(plugin)) { installedPlugins.add(plugin); plugin(app, ...options); } else ; return app; }, mixin(mixin) { { if (!context.mixins.includes(mixin)) { context.mixins.push(mixin); } } return app; }, component(name, component) { if (!component) { return context.components[name]; } context.components[name] = component; return app; }, directive(name, directive) { if (!directive) { return context.directives[name]; } context.directives[name] = directive; return app; }, mount(rootContainer, isHydrate, isSVG) { if (!isMounted) { const vnode = createVNode(rootComponent, rootProps); vnode.appContext = context; if (isHydrate && hydrate) { hydrate(vnode, rootContainer); } else { render(vnode, rootContainer, isSVG); } isMounted = true; app._container = rootContainer; rootContainer.__vue_app__ = app; return vnode.component.proxy; } }, unmount() { if (isMounted) { render(null, app._container); delete app._container.__vue_app__; } }, provide(key, value) { context.provides[key] = value; return app; } }; return app; }; } const prodEffectOptions = { scheduler: queueJob, allowRecurse: true }; const queuePostRenderEffect = queueEffectWithSuspense; const setRef = (rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) => { if (isArray(rawRef)) { rawRef.forEach((r, i) => setRef(r, oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef), parentSuspense, vnode, isUnmount)); return; } if (isAsyncWrapper(vnode) && !isUnmount) { return; } const refValue = vnode.shapeFlag & 4 ? getExposeProxy(vnode.component) || vnode.component.proxy : vnode.el; const value = isUnmount ? null : refValue; const { i: owner, r: ref2 } = rawRef; const oldRef = oldRawRef && oldRawRef.r; const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs; const setupState = owner.setupState; if (oldRef != null && oldRef !== ref2) { if (isString(oldRef)) { refs[oldRef] = null; if (hasOwn$1(setupState, oldRef)) { setupState[oldRef] = null; } } else if (isRef(oldRef)) { oldRef.value = null; } } if (isString(ref2)) { const doSet = () => { { refs[ref2] = value; } if (hasOwn$1(setupState, ref2)) { setupState[ref2] = value; } }; if (value) { doSet.id = -1; queuePostRenderEffect(doSet, parentSuspense); } else { doSet(); } } else if (isRef(ref2)) { const doSet = () => { ref2.value = value; }; if (value) { doSet.id = -1; queuePostRenderEffect(doSet, parentSuspense); } else { doSet(); } } else if (isFunction(ref2)) { callWithErrorHandling(ref2, owner, 12, [value, refs]); } else ; }; function createRenderer(options) { return baseCreateRenderer(options); } function baseCreateRenderer(options, createHydrationFns) { const { insert: hostInsert, remove: hostRemove, patchProp: hostPatchProp, forcePatchProp: hostForcePatchProp, createElement: hostCreateElement, createText: hostCreateText, createComment: hostCreateComment, setText: hostSetText, setElementText: hostSetElementText, parentNode: hostParentNode, nextSibling: hostNextSibling, setScopeId: hostSetScopeId = NOOP, cloneNode: hostCloneNode, insertStaticContent: hostInsertStaticContent } = options; const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, isSVG = false, slotScopeIds = null, optimized = false) => { if (n1 && !isSameVNodeType(n1, n2)) { anchor = getNextHostNode(n1); unmount(n1, parentComponent, parentSuspense, true); n1 = null; } if (n2.patchFlag === -2) { optimized = false; n2.dynamicChildren = null; } const { type, ref: ref2, shapeFlag } = n2; switch (type) { case Text$1: processText(n1, n2, container, anchor); break; case Comment$1: processCommentNode(n1, n2, container, anchor); break; case Static: if (n1 == null) { mountStaticNode(n2, container, anchor, isSVG); } break; case Fragment: processFragment(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); break; default: if (shapeFlag & 1) { processElement(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); } else if (shapeFlag & 6) { processComponent(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); } else if (shapeFlag & 64) { type.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals); } else if (shapeFlag & 128) { type.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals); } else ; } if (ref2 != null && parentComponent) { setRef(ref2, n1 && n1.ref, parentSuspense, n2 || n1, !n2); } }; const processText = (n1, n2, container, anchor) => { if (n1 == null) { hostInsert(n2.el = hostCreateText(n2.children), container, anchor); } else { const el = n2.el = n1.el; if (n2.children !== n1.children) { hostSetText(el, n2.children); } } }; const processCommentNode = (n1, n2, container, anchor) => { if (n1 == null) { hostInsert(n2.el = hostCreateComment(n2.children || ""), container, anchor); } else { n2.el = n1.el; } }; const mountStaticNode = (n2, container, anchor, isSVG) => { const nodes = hostInsertStaticContent(n2.children, container, anchor, isSVG, n2.staticCache); if (!n2.el) { n2.staticCache = nodes; } n2.el = nodes[0]; n2.anchor = nodes[nodes.length - 1]; }; const moveStaticNode = ({ el, anchor }, container, nextSibling) => { let next; while (el && el !== anchor) { next = hostNextSibling(el); hostInsert(el, container, nextSibling); el = next; } hostInsert(anchor, container, nextSibling); }; const removeStaticNode = ({ el, anchor }) => { let next; while (el && el !== anchor) { next = hostNextSibling(el); hostRemove(el); el = next; } hostRemove(anchor); }; const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { isSVG = isSVG || n2.type === "svg"; if (n1 == null) { mountElement(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); } else { patchElement(n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); } }; const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { let el; let vnodeHook; const { type, props: props2, shapeFlag, transition, patchFlag, dirs } = vnode; if (vnode.el && hostCloneNode !== void 0 && patchFlag === -1) { el = vnode.el = hostCloneNode(vnode.el); } else { el = vnode.el = hostCreateElement(vnode.type, isSVG, props2 && props2.is, props2); if (shapeFlag & 8) { hostSetElementText(el, vnode.children); } else if (shapeFlag & 16) { mountChildren(vnode.children, el, null, parentComponent, parentSuspense, isSVG && type !== "foreignObject", slotScopeIds, optimized || !!vnode.dynamicChildren); } if (dirs) { invokeDirectiveHook(vnode, null, parentComponent, "created"); } if (props2) { for (const key in props2) { if (!isReservedProp(key)) { hostPatchProp(el, key, null, props2[key], isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren); } } if (vnodeHook = props2.onVnodeBeforeMount) { invokeVNodeHook(vnodeHook, parentComponent, vnode); } } setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent); } Object.defineProperty(el, "__vueParentComponent", { value: parentComponent, enumerable: false }); if (dirs) { invokeDirectiveHook(vnode, null, parentComponent, "beforeMount"); } const needCallTransitionHooks = (!parentSuspense || parentSuspense && !parentSuspense.pendingBranch) && transition && !transition.persisted; if (needCallTransitionHooks) { transition.beforeEnter(el); } hostInsert(el, container, anchor); if ((vnodeHook = props2 && props2.onVnodeMounted) || needCallTransitionHooks || dirs) { queuePostRenderEffect(() => { vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode); needCallTransitionHooks && transition.enter(el); dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted"); }, parentSuspense); } }; const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => { if (scopeId) { hostSetScopeId(el, scopeId); } if (slotScopeIds) { for (let i = 0; i < slotScopeIds.length; i++) { hostSetScopeId(el, slotScopeIds[i]); } } if (parentComponent) { let subTree = parentComponent.subTree; if (vnode === subTree) { const parentVNode = parentComponent.vnode; setScopeId(el, parentVNode, parentVNode.scopeId, parentVNode.slotScopeIds, parentComponent.parent); } } }; const mountChildren = (children, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, start = 0) => { for (let i = start; i < children.length; i++) { const child = children[i] = optimized ? cloneIfMounted(children[i]) : normalizeVNode(children[i]); patch(null, child, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); } }; const patchElement = (n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { const el = n2.el = n1.el; let { patchFlag, dynamicChildren, dirs } = n2; patchFlag |= n1.patchFlag & 16; const oldProps = n1.props || EMPTY_OBJ; const newProps = n2.props || EMPTY_OBJ; let vnodeHook; if (vnodeHook = newProps.onVnodeBeforeUpdate) { invokeVNodeHook(vnodeHook, parentComponent, n2, n1); } if (dirs) { invokeDirectiveHook(n2, n1, parentComponent, "beforeUpdate"); } if (patchFlag > 0) { if (patchFlag & 16) { patchProps(el, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG); } else { if (patchFlag & 2) { if (oldProps.class !== newProps.class) { hostPatchProp(el, "class", null, newProps.class, isSVG); } } if (patchFlag & 4) { hostPatchProp(el, "style", oldProps.style, newProps.style, isSVG); } if (patchFlag & 8) { const propsToUpdate = n2.dynamicProps; for (let i = 0; i < propsToUpdate.length; i++) { const key = propsToUpdate[i]; const prev = oldProps[key]; const next = newProps[key]; if (next !== prev || hostForcePatchProp && hostForcePatchProp(el, key)) { hostPatchProp(el, key, prev, next, isSVG, n1.children, parentComponent, parentSuspense, unmountChildren); } } } } if (patchFlag & 1) { if (n1.children !== n2.children) { hostSetElementText(el, n2.children); } } } else if (!optimized && dynamicChildren == null) { patchProps(el, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG); } const areChildrenSVG = isSVG && n2.type !== "foreignObject"; if (dynamicChildren) { patchBlockChildren(n1.dynamicChildren, dynamicChildren, el, parentComponent, parentSuspense, areChildrenSVG, slotScopeIds); } else if (!optimized) { patchChildren(n1, n2, el, null, parentComponent, parentSuspense, areChildrenSVG, slotScopeIds, false); } if ((vnodeHook = newProps.onVnodeUpdated) || dirs) { queuePostRenderEffect(() => { vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1); dirs && invokeDirectiveHook(n2, n1, parentComponent, "updated"); }, parentSuspense); } }; const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, isSVG, slotScopeIds) => { for (let i = 0; i < newChildren.length; i++) { const oldVNode = oldChildren[i]; const newVNode = newChildren[i]; const container = oldVNode.el && (oldVNode.type === Fragment || !isSameVNodeType(oldVNode, newVNode) || oldVNode.shapeFlag & 6 || oldVNode.shapeFlag & 64) ? hostParentNode(oldVNode.el) : fallbackContainer; patch(oldVNode, newVNode, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, true); } }; const patchProps = (el, vnode, oldProps, newProps, parentComponent, parentSuspense, isSVG) => { if (oldProps !== newProps) { for (const key in newProps) { if (isReservedProp(key)) continue; const next = newProps[key]; const prev = oldProps[key]; if (next !== prev || hostForcePatchProp && hostForcePatchProp(el, key)) { hostPatchProp(el, key, prev, next, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren); } } if (oldProps !== EMPTY_OBJ) { for (const key in oldProps) { if (!isReservedProp(key) && !(key in newProps)) { hostPatchProp(el, key, oldProps[key], null, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren); } } } } }; const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { const fragmentStartAnchor = n2.el = n1 ? n1.el : hostCreateText(""); const fragmentEndAnchor = n2.anchor = n1 ? n1.anchor : hostCreateText(""); let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2; if (dynamicChildren) { optimized = true; } if (fragmentSlotScopeIds) { slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds; } if (n1 == null) { hostInsert(fragmentStartAnchor, container, anchor); hostInsert(fragmentEndAnchor, container, anchor); mountChildren(n2.children, container, fragmentEndAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); } else { if (patchFlag > 0 && patchFlag & 64 && dynamicChildren && n1.dynamicChildren) { patchBlockChildren(n1.dynamicChildren, dynamicChildren, container, parentComponent, parentSuspense, isSVG, slotScopeIds); if (n2.key != null || parentComponent && n2 === parentComponent.subTree) { traverseStaticChildren(n1, n2, true); } } else { patchChildren(n1, n2, container, fragmentEndAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); } } }; const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { n2.slotScopeIds = slotScopeIds; if (n1 == null) { if (n2.shapeFlag & 512) { parentComponent.ctx.activate(n2, container, anchor, isSVG, optimized); } else { mountComponent(n2, container, anchor, parentComponent, parentSuspense, isSVG, optimized); } } else { updateComponent(n1, n2, optimized); } }; const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, isSVG, optimized) => { const instance = initialVNode.component = createComponentInstance(initialVNode, parentComponent, parentSuspense); if (isKeepAlive(initialVNode)) { instance.ctx.renderer = internals; } { setupComponent(instance); } if (instance.asyncDep) { parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect); if (!initialVNode.el) { const placeholder = instance.subTree = createVNode(Comment$1); processCommentNode(null, placeholder, container, anchor); } return; } setupRenderEffect(instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized); }; const updateComponent = (n1, n2, optimized) => { const instance = n2.component = n1.component; if (shouldUpdateComponent(n1, n2, optimized)) { if (instance.asyncDep && !instance.asyncResolved) { updateComponentPreRender(instance, n2, optimized); return; } else { instance.next = n2; invalidateJob(instance.update); instance.update(); } } else { n2.component = n1.component; n2.el = n1.el; instance.vnode = n2; } }; const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized) => { instance.update = effect(function componentEffect() { if (!instance.isMounted) { let vnodeHook; const { el, props: props2 } = initialVNode; const { bm, m, parent } = instance; if (bm) { invokeArrayFns(bm); } if (vnodeHook = props2 && props2.onVnodeBeforeMount) { invokeVNodeHook(vnodeHook, parent, initialVNode); } if (el && hydrateNode) { const hydrateSubTree = () => { instance.subTree = renderComponentRoot(instance); hydrateNode(el, instance.subTree, instance, parentSuspense, null); }; if (isAsyncWrapper(initialVNode)) { initialVNode.type.__asyncLoader().then(() => !instance.isUnmounted && hydrateSubTree()); } else { hydrateSubTree(); } } else { const subTree = instance.subTree = renderComponentRoot(instance); patch(null, subTree, container, anchor, instance, parentSuspense, isSVG); initialVNode.el = subTree.el; } if (m) { queuePostRenderEffect(m, parentSuspense); } if (vnodeHook = props2 && props2.onVnodeMounted) { const scopedInitialVNode = initialVNode; queuePostRenderEffect(() => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode), parentSuspense); } if (initialVNode.shapeFlag & 256) { instance.a && queuePostRenderEffect(instance.a, parentSuspense); } instance.isMounted = true; initialVNode = container = anchor = null; } else { let { next, bu, u, parent, vnode } = instance; let originNext = next; let vnodeHook; if (next) { next.el = vnode.el; updateComponentPreRender(instance, next, optimized); } else { next = vnode; } if (bu) { invokeArrayFns(bu); } if (vnodeHook = next.props && next.props.onVnodeBeforeUpdate) { invokeVNodeHook(vnodeHook, parent, next, vnode); } const nextTree = renderComponentRoot(instance); const prevTree = instance.subTree; instance.subTree = nextTree; patch(prevTree, nextTree, hostParentNode(prevTree.el), getNextHostNode(prevTree), instance, parentSuspense, isSVG); next.el = nextTree.el; if (originNext === null) { updateHOCHostEl(instance, nextTree.el); } if (u) { queuePostRenderEffect(u, parentSuspense); } if (vnodeHook = next.props && next.props.onVnodeUpdated) { queuePostRenderEffect(() => invokeVNodeHook(vnodeHook, parent, next, vnode), parentSuspense); } } }, prodEffectOptions); }; const updateComponentPreRender = (instance, nextVNode, optimized) => { nextVNode.component = instance; const prevProps = instance.vnode.props; instance.vnode = nextVNode; instance.next = null; updateProps(instance, nextVNode.props, prevProps, optimized); updateSlots(instance, nextVNode.children, optimized); pauseTracking(); flushPreFlushCbs(void 0, instance.update); resetTracking(); }; const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized = false) => { const c1 = n1 && n1.children; const prevShapeFlag = n1 ? n1.shapeFlag : 0; const c2 = n2.children; const { patchFlag, shapeFlag } = n2; if (patchFlag > 0) { if (patchFlag & 128) { patchKeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); return; } else if (patchFlag & 256) { patchUnkeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); return; } } if (shapeFlag & 8) { if (prevShapeFlag & 16) { unmountChildren(c1, parentComponent, parentSuspense); } if (c2 !== c1) { hostSetElementText(container, c2); } } else { if (prevShapeFlag & 16) { if (shapeFlag & 16) { patchKeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); } else { unmountChildren(c1, parentComponent, parentSuspense, true); } } else { if (prevShapeFlag & 8) { hostSetElementText(container, ""); } if (shapeFlag & 16) { mountChildren(c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); } } } }; const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { c1 = c1 || EMPTY_ARR; c2 = c2 || EMPTY_ARR; const oldLength = c1.length; const newLength = c2.length; const commonLength = Math.min(oldLength, newLength); let i; for (i = 0; i < commonLength; i++) { const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]); patch(c1[i], nextChild, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); } if (oldLength > newLength) { unmountChildren(c1, parentComponent, parentSuspense, true, false, commonLength); } else { mountChildren(c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, commonLength); } }; const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { let i = 0; const l2 = c2.length; let e1 = c1.length - 1; let e2 = l2 - 1; while (i <= e1 && i <= e2) { const n1 = c1[i]; const n2 = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]); if (isSameVNodeType(n1, n2)) { patch(n1, n2, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); } else { break; } i++; } while (i <= e1 && i <= e2) { const n1 = c1[e1]; const n2 = c2[e2] = optimized ? cloneIfMounted(c2[e2]) : normalizeVNode(c2[e2]); if (isSameVNodeType(n1, n2)) { patch(n1, n2, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); } else { break; } e1--; e2--; } if (i > e1) { if (i <= e2) { const nextPos = e2 + 1; const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor; while (i <= e2) { patch(null, c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]), container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); i++; } } } else if (i > e2) { while (i <= e1) { unmount(c1[i], parentComponent, parentSuspense, true); i++; } } else { const s1 = i; const s2 = i; const keyToNewIndexMap = new Map(); for (i = s2; i <= e2; i++) { const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]); if (nextChild.key != null) { keyToNewIndexMap.set(nextChild.key, i); } } let j; let patched = 0; const toBePatched = e2 - s2 + 1; let moved = false; let maxNewIndexSoFar = 0; const newIndexToOldIndexMap = new Array(toBePatched); for (i = 0; i < toBePatched; i++) newIndexToOldIndexMap[i] = 0; for (i = s1; i <= e1; i++) { const prevChild = c1[i]; if (patched >= toBePatched) { unmount(prevChild, parentComponent, parentSuspense, true); continue; } let newIndex; if (prevChild.key != null) { newIndex = keyToNewIndexMap.get(prevChild.key); } else { for (j = s2; j <= e2; j++) { if (newIndexToOldIndexMap[j - s2] === 0 && isSameVNodeType(prevChild, c2[j])) { newIndex = j; break; } } } if (newIndex === void 0) { unmount(prevChild, parentComponent, parentSuspense, true); } else { newIndexToOldIndexMap[newIndex - s2] = i + 1; if (newIndex >= maxNewIndexSoFar) { maxNewIndexSoFar = newIndex; } else { moved = true; } patch(prevChild, c2[newIndex], container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); patched++; } } const increasingNewIndexSequence = moved ? getSequence(newIndexToOldIndexMap) : EMPTY_ARR; j = increasingNewIndexSequence.length - 1; for (i = toBePatched - 1; i >= 0; i--) { const nextIndex = s2 + i; const nextChild = c2[nextIndex]; const anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor; if (newIndexToOldIndexMap[i] === 0) { patch(null, nextChild, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); } else if (moved) { if (j < 0 || i !== increasingNewIndexSequence[j]) { move(nextChild, container, anchor, 2); } else { j--; } } } } }; const move = (vnode, container, anchor, moveType, parentSuspense = null) => { const { el, type, transition, children, shapeFlag } = vnode; if (shapeFlag & 6) { move(vnode.component.subTree, container, anchor, moveType); return; } if (shapeFlag & 128) { vnode.suspense.move(container, anchor, moveType); return; } if (shapeFlag & 64) { type.move(vnode, container, anchor, internals); return; } if (type === Fragment) { hostInsert(el, container, anchor); for (let i = 0; i < children.length; i++) { move(children[i], container, anchor, moveType); } hostInsert(vnode.anchor, container, anchor); return; } if (type === Static) { moveStaticNode(vnode, container, anchor); return; } const needTransition = moveType !== 2 && shapeFlag & 1 && transition; if (needTransition) { if (moveType === 0) { transition.beforeEnter(el); hostInsert(el, container, anchor); queuePostRenderEffect(() => transition.enter(el), parentSuspense); } else { const { leave, delayLeave, afterLeave } = transition; const remove3 = () => hostInsert(el, container, anchor); const performLeave = () => { leave(el, () => { remove3(); afterLeave && afterLeave(); }); }; if (delayLeave) { delayLeave(el, remove3, performLeave); } else { performLeave(); } } } else { hostInsert(el, container, anchor); } }; const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => { const { type, props: props2, ref: ref2, children, dynamicChildren, shapeFlag, patchFlag, dirs } = vnode; if (ref2 != null) { setRef(ref2, null, parentSuspense, vnode, true); } if (shapeFlag & 256) { parentComponent.ctx.deactivate(vnode); return; } const shouldInvokeDirs = shapeFlag & 1 && dirs; let vnodeHook; if (vnodeHook = props2 && props2.onVnodeBeforeUnmount) { invokeVNodeHook(vnodeHook, parentComponent, vnode); } if (shapeFlag & 6) { unmountComponent(vnode.component, parentSuspense, doRemove); } else { if (shapeFlag & 128) { vnode.suspense.unmount(parentSuspense, doRemove); return; } if (shouldInvokeDirs) { invokeDirectiveHook(vnode, null, parentComponent, "beforeUnmount"); } if (shapeFlag & 64) { vnode.type.remove(vnode, parentComponent, parentSuspense, optimized, internals, doRemove); } else if (dynamicChildren && (type !== Fragment || patchFlag > 0 && patchFlag & 64)) { unmountChildren(dynamicChildren, parentComponent, parentSuspense, false, true); } else if (type === Fragment && (patchFlag & 128 || patchFlag & 256) || !optimized && shapeFlag & 16) { unmountChildren(children, parentComponent, parentSuspense); } if (doRemove) { remove2(vnode); } } if ((vnodeHook = props2 && props2.onVnodeUnmounted) || shouldInvokeDirs) { queuePostRenderEffect(() => { vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode); shouldInvokeDirs && invokeDirectiveHook(vnode, null, parentComponent, "unmounted"); }, parentSuspense); } }; const remove2 = (vnode) => { const { type, el, anchor, transition } = vnode; if (type === Fragment) { removeFragment(el, anchor); return; } if (type === Static) { removeStaticNode(vnode); return; } const performRemove = () => { hostRemove(el); if (transition && !transition.persisted && transition.afterLeave) { transition.afterLeave(); } }; if (vnode.shapeFlag & 1 && transition && !transition.persisted) { const { leave, delayLeave } = transition; const performLeave = () => leave(el, performRemove); if (delayLeave) { delayLeave(vnode.el, performRemove, performLeave); } else { performLeave(); } } else { performRemove(); } }; const removeFragment = (cur, end) => { let next; while (cur !== end) { next = hostNextSibling(cur); hostRemove(cur); cur = next; } hostRemove(end); }; const unmountComponent = (instance, parentSuspense, doRemove) => { const { bum, effects, update, subTree, um } = instance; if (bum) { invokeArrayFns(bum); } if (effects) { for (let i = 0; i < effects.length; i++) { stop(effects[i]); } } if (update) { stop(update); unmount(subTree, instance, parentSuspense, doRemove); } if (um) { queuePostRenderEffect(um, parentSuspense); } queuePostRenderEffect(() => { instance.isUnmounted = true; }, parentSuspense); if (parentSuspense && parentSuspense.pendingBranch && !parentSuspense.isUnmounted && instance.asyncDep && !instance.asyncResolved && instance.suspenseId === parentSuspense.pendingId) { parentSuspense.deps--; if (parentSuspense.deps === 0) { parentSuspense.resolve(); } } }; const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => { for (let i = start; i < children.length; i++) { unmount(children[i], parentComponent, parentSuspense, doRemove, optimized); } }; const getNextHostNode = (vnode) => { if (vnode.shapeFlag & 6) { return getNextHostNode(vnode.component.subTree); } if (vnode.shapeFlag & 128) { return vnode.suspense.next(); } return hostNextSibling(vnode.anchor || vnode.el); }; const render = (vnode, container, isSVG) => { if (vnode == null) { if (container._vnode) { unmount(container._vnode, null, null, true); } } else { patch(container._vnode || null, vnode, container, null, null, null, isSVG); } container._vnode = vnode; }; const internals = { p: patch, um: unmount, m: move, r: remove2, mt: mountComponent, mc: mountChildren, pc: patchChildren, pbc: patchBlockChildren, n: getNextHostNode, o: options }; let hydrate; let hydrateNode; if (createHydrationFns) { [hydrate, hydrateNode] = createHydrationFns(internals); } return { render, hydrate, createApp: createAppAPI(render, hydrate) }; } function invokeVNodeHook(hook, instance, vnode, prevVNode = null) { callWithAsyncErrorHandling(hook, instance, 7, [ vnode, prevVNode ]); } function traverseStaticChildren(n1, n2, shallow = false) { const ch1 = n1.children; const ch2 = n2.children; if (isArray(ch1) && isArray(ch2)) { for (let i = 0; i < ch1.length; i++) { const c1 = ch1[i]; let c2 = ch2[i]; if (c2.shapeFlag & 1 && !c2.dynamicChildren) { if (c2.patchFlag <= 0 || c2.patchFlag === 32) { c2 = ch2[i] = cloneIfMounted(ch2[i]); c2.el = c1.el; } if (!shallow) traverseStaticChildren(c1, c2); } } } } function getSequence(arr) { const p2 = arr.slice(); const result = [0]; let i, j, u, v2, c; const len = arr.length; for (i = 0; i < len; i++) { const arrI = arr[i]; if (arrI !== 0) { j = result[result.length - 1]; if (arr[j] < arrI) { p2[i] = j; result.push(i); continue; } u = 0; v2 = result.length - 1; while (u < v2) { c = (u + v2) / 2 | 0; if (arr[result[c]] < arrI) { u = c + 1; } else { v2 = c; } } if (arrI < arr[result[u]]) { if (u > 0) { p2[i] = result[u - 1]; } result[u] = i; } } } u = result.length; v2 = result[u - 1]; while (u-- > 0) { result[u] = v2; v2 = p2[v2]; } return result; } const isTeleport = (type) => type.__isTeleport; const COMPONENTS = "components"; function resolveComponent(name, maybeSelfReference) { return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name; } const NULL_DYNAMIC_COMPONENT = Symbol(); function resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) { const instance = currentRenderingInstance || currentInstance; if (instance) { const Component = instance.type; if (type === COMPONENTS) { const selfName = getComponentName(Component); if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) { return Component; } } const res = resolve(instance[type] || Component[type], name) || resolve(instance.appContext[type], name); if (!res && maybeSelfReference) { return Component; } return res; } } function resolve(registry, name) { return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]); } const Fragment = Symbol(void 0); const Text$1 = Symbol(void 0); const Comment$1 = Symbol(void 0); const Static = Symbol(void 0); const blockStack = []; let currentBlock = null; function openBlock(disableTracking = false) { blockStack.push(currentBlock = disableTracking ? null : []); } function closeBlock() { blockStack.pop(); currentBlock = blockStack[blockStack.length - 1] || null; } let isBlockTreeEnabled = 1; function setBlockTracking(value) { isBlockTreeEnabled += value; } function createBlock(type, props2, children, patchFlag, dynamicProps) { const vnode = createVNode(type, props2, children, patchFlag, dynamicProps, true); vnode.dynamicChildren = isBlockTreeEnabled > 0 ? currentBlock || EMPTY_ARR : null; closeBlock(); if (isBlockTreeEnabled > 0 && currentBlock) { currentBlock.push(vnode); } return vnode; } function isVNode(value) { return value ? value.__v_isVNode === true : false; } function isSameVNodeType(n1, n2) { return n1.type === n2.type && n1.key === n2.key; } const InternalObjectKey = `__vInternal`; const normalizeKey = ({ key }) => key != null ? key : null; const normalizeRef = ({ ref: ref2 }) => { return ref2 != null ? isString(ref2) || isRef(ref2) || isFunction(ref2) ? { i: currentRenderingInstance, r: ref2 } : ref2 : null; }; const createVNode = _createVNode; function _createVNode(type, props2 = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) { if (!type || type === NULL_DYNAMIC_COMPONENT) { type = Comment$1; } if (isVNode(type)) { const cloned = cloneVNode(type, props2, true); if (children) { normalizeChildren(cloned, children); } return cloned; } if (isClassComponent(type)) { type = type.__vccOpts; } if (props2) { if (isProxy(props2) || InternalObjectKey in props2) { props2 = extend({}, props2); } let { class: klass, style } = props2; if (klass && !isString(klass)) { props2.class = normalizeClass(klass); } if (isObject$1(style)) { if (isProxy(style) && !isArray(style)) { style = extend({}, style); } props2.style = normalizeStyle(style); } } const shapeFlag = isString(type) ? 1 : isSuspense(type) ? 128 : isTeleport(type) ? 64 : isObject$1(type) ? 4 : isFunction(type) ? 2 : 0; const vnode = { __v_isVNode: true, __v_skip: true, type, props: props2, key: props2 && normalizeKey(props2), ref: props2 && normalizeRef(props2), scopeId: currentScopeId, slotScopeIds: null, children: null, component: null, suspense: null, ssContent: null, ssFallback: null, dirs: null, transition: null, el: null, anchor: null, target: null, targetAnchor: null, shapeFlag, patchFlag, dynamicProps, dynamicChildren: null, appContext: null }; normalizeChildren(vnode, children); if (shapeFlag & 128) { type.normalize(vnode); } if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock && (patchFlag > 0 || shapeFlag & 6) && patchFlag !== 32) { currentBlock.push(vnode); } return vnode; } function cloneVNode(vnode, extraProps, mergeRef = false) { const { props: props2, ref: ref2, patchFlag, children } = vnode; const mergedProps = extraProps ? mergeProps(props2 || {}, extraProps) : props2; const cloned = { __v_isVNode: true, __v_skip: true, type: vnode.type, props: mergedProps, key: mergedProps && normalizeKey(mergedProps), ref: extraProps && extraProps.ref ? mergeRef && ref2 ? isArray(ref2) ? ref2.concat(normalizeRef(extraProps)) : [ref2, normalizeRef(extraProps)] : normalizeRef(extraProps) : ref2, scopeId: vnode.scopeId, slotScopeIds: vnode.slotScopeIds, children, target: vnode.target, targetAnchor: vnode.targetAnchor, staticCount: vnode.staticCount, staticCache: vnode.staticCache, shapeFlag: vnode.shapeFlag, patchFlag: extraProps && vnode.type !== Fragment ? patchFlag === -1 ? 16 : patchFlag | 16 : patchFlag, dynamicProps: vnode.dynamicProps, dynamicChildren: vnode.dynamicChildren, appContext: vnode.appContext, dirs: vnode.dirs, transition: vnode.transition, component: vnode.component, suspense: vnode.suspense, ssContent: vnode.ssContent && cloneVNode(vnode.ssContent), ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback), el: vnode.el, anchor: vnode.anchor }; return cloned; } function createTextVNode(text2 = " ", flag = 0) { return createVNode(Text$1, null, text2, flag); } function normalizeVNode(child) { if (child == null || typeof child === "boolean") { return createVNode(Comment$1); } else if (isArray(child)) { return createVNode(Fragment, null, child.slice()); } else if (typeof child === "object") { return cloneIfMounted(child); } else { return createVNode(Text$1, null, String(child)); } } function cloneIfMounted(child) { return child.el === null ? child : cloneVNode(child); } function normalizeChildren(vnode, children) { let type = 0; const { shapeFlag } = vnode; if (children == null) { children = null; } else if (isArray(children)) { type = 16; } else if (typeof children === "object") { if (shapeFlag & 1 || shapeFlag & 64) { const slot = children.default; if (slot) { slot._c && (slot._d = false); normalizeChildren(vnode, slot()); slot._c && (slot._d = true); } return; } else { type = 32; const slotFlag = children._; if (!slotFlag && !(InternalObjectKey in children)) { children._ctx = currentRenderingInstance; } else if (slotFlag === 3 && currentRenderingInstance) { if (currentRenderingInstance.slots._ === 1) { children._ = 1; } else { children._ = 2; vnode.patchFlag |= 1024; } } } } else if (isFunction(children)) { children = { default: children, _ctx: currentRenderingInstance }; type = 32; } else { children = String(children); if (shapeFlag & 64) { type = 16; children = [createTextVNode(children)]; } else { type = 8; } } vnode.children = children; vnode.shapeFlag |= type; } function mergeProps(...args) { const ret = extend({}, args[0]); for (let i = 1; i < args.length; i++) { const toMerge = args[i]; for (const key in toMerge) { if (key === "class") { if (ret.class !== toMerge.class) { ret.class = normalizeClass([ret.class, toMerge.class]); } } else if (key === "style") { ret.style = normalizeStyle([ret.style, toMerge.style]); } else if (isOn(key)) { const existing = ret[key]; const incoming = toMerge[key]; if (existing !== incoming) { ret[key] = existing ? [].concat(existing, incoming) : incoming; } } else if (key !== "") { ret[key] = toMerge[key]; } } } return ret; } const getPublicInstance = (i) => { if (!i) return null; if (isStatefulComponent(i)) return getExposeProxy(i) || i.proxy; return getPublicInstance(i.parent); }; const publicPropertiesMap = extend(Object.create(null), { $: (i) => i, $el: (i) => i.vnode.el, $data: (i) => i.data, $props: (i) => i.props, $attrs: (i) => i.attrs, $slots: (i) => i.slots, $refs: (i) => i.refs, $parent: (i) => getPublicInstance(i.parent), $root: (i) => getPublicInstance(i.root), $emit: (i) => i.emit, $options: (i) => resolveMergedOptions(i), $forceUpdate: (i) => () => queueJob(i.update), $nextTick: (i) => nextTick.bind(i.proxy), $watch: (i) => instanceWatch.bind(i) }); const PublicInstanceProxyHandlers = { get({ _: instance }, key) { const { ctx, setupState, data, props: props2, accessCache, type, appContext } = instance; let normalizedProps; if (key[0] !== "$") { const n = accessCache[key]; if (n !== void 0) { switch (n) { case 0: return setupState[key]; case 1: return data[key]; case 3: return ctx[key]; case 2: return props2[key]; } } else if (setupState !== EMPTY_OBJ && hasOwn$1(setupState, key)) { accessCache[key] = 0; return setupState[key]; } else if (data !== EMPTY_OBJ && hasOwn$1(data, key)) { accessCache[key] = 1; return data[key]; } else if ((normalizedProps = instance.propsOptions[0]) && hasOwn$1(normalizedProps, key)) { accessCache[key] = 2; return props2[key]; } else if (ctx !== EMPTY_OBJ && hasOwn$1(ctx, key)) { accessCache[key] = 3; return ctx[key]; } else if (shouldCacheAccess) { accessCache[key] = 4; } } const publicGetter = publicPropertiesMap[key]; let cssModule, globalProperties; if (publicGetter) { if (key === "$attrs") { track(instance, "get", key); } return publicGetter(instance); } else if ((cssModule = type.__cssModules) && (cssModule = cssModule[key])) { return cssModule; } else if (ctx !== EMPTY_OBJ && hasOwn$1(ctx, key)) { accessCache[key] = 3; return ctx[key]; } else if (globalProperties = appContext.config.globalProperties, hasOwn$1(globalProperties, key)) { { return globalProperties[key]; } } else ; }, set({ _: instance }, key, value) { const { data, setupState, ctx } = instance; if (setupState !== EMPTY_OBJ && hasOwn$1(setupState, key)) { setupState[key] = value; } else if (data !== EMPTY_OBJ && hasOwn$1(data, key)) { data[key] = value; } else if (hasOwn$1(instance.props, key)) { return false; } if (key[0] === "$" && key.slice(1) in instance) { return false; } else { { ctx[key] = value; } } return true; }, has({ _: { data, setupState, accessCache, ctx, appContext, propsOptions } }, key) { let normalizedProps; return accessCache[key] !== void 0 || data !== EMPTY_OBJ && hasOwn$1(data, key) || setupState !== EMPTY_OBJ && hasOwn$1(setupState, key) || (normalizedProps = propsOptions[0]) && hasOwn$1(normalizedProps, key) || hasOwn$1(ctx, key) || hasOwn$1(publicPropertiesMap, key) || hasOwn$1(appContext.config.globalProperties, key); } }; const RuntimeCompiledPublicInstanceProxyHandlers = extend({}, PublicInstanceProxyHandlers, { get(target, key) { if (key === Symbol.unscopables) { return; } return PublicInstanceProxyHandlers.get(target, key, target); }, has(_, key) { const has2 = key[0] !== "_" && !isGloballyWhitelisted(key); return has2; } }); const emptyAppContext = createAppContext(); let uid$2 = 0; function createComponentInstance(vnode, parent, suspense) { const type = vnode.type; const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext; const instance = { uid: uid$2++, vnode, type, parent, appContext, root: null, next: null, subTree: null, update: null, render: null, proxy: null, exposed: null, exposeProxy: null, withProxy: null, effects: null, provides: parent ? parent.provides : Object.create(appContext.provides), accessCache: null, renderCache: [], components: null, directives: null, propsOptions: normalizePropsOptions(type, appContext), emitsOptions: normalizeEmitsOptions(type, appContext), emit: null, emitted: null, propsDefaults: EMPTY_OBJ, inheritAttrs: type.inheritAttrs, ctx: EMPTY_OBJ, data: EMPTY_OBJ, props: EMPTY_OBJ, attrs: EMPTY_OBJ, slots: EMPTY_OBJ, refs: EMPTY_OBJ, setupState: EMPTY_OBJ, setupContext: null, suspense, suspenseId: suspense ? suspense.pendingId : 0, asyncDep: null, asyncResolved: false, isMounted: false, isUnmounted: false, isDeactivated: false, bc: null, c: null, bm: null, m: null, bu: null, u: null, um: null, bum: null, da: null, a: null, rtg: null, rtc: null, ec: null, sp: null }; { instance.ctx = { _: instance }; } instance.root = parent ? parent.root : instance; instance.emit = emit$2.bind(null, instance); return instance; } let currentInstance = null; const getCurrentInstance = () => currentInstance || currentRenderingInstance; const setCurrentInstance = (instance) => { currentInstance = instance; }; function isStatefulComponent(instance) { return instance.vnode.shapeFlag & 4; } let isInSSRComponentSetup = false; function setupComponent(instance, isSSR = false) { isInSSRComponentSetup = isSSR; const { props: props2, children } = instance.vnode; const isStateful = isStatefulComponent(instance); initProps(instance, props2, isStateful, isSSR); initSlots(instance, children); const setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : void 0; isInSSRComponentSetup = false; return setupResult; } function setupStatefulComponent(instance, isSSR) { const Component = instance.type; instance.accessCache = Object.create(null); instance.proxy = markRaw(new Proxy(instance.ctx, PublicInstanceProxyHandlers)); const { setup } = Component; if (setup) { const setupContext = instance.setupContext = setup.length > 1 ? createSetupContext(instance) : null; currentInstance = instance; pauseTracking(); const setupResult = callWithErrorHandling(setup, instance, 0, [instance.props, setupContext]); resetTracking(); currentInstance = null; if (isPromise(setupResult)) { const unsetInstance = () => { currentInstance = null; }; setupResult.then(unsetInstance, unsetInstance); if (isSSR) { return setupResult.then((resolvedResult) => { handleSetupResult(instance, resolvedResult); }).catch((e2) => { handleError(e2, instance, 0); }); } else { instance.asyncDep = setupResult; } } else { handleSetupResult(instance, setupResult); } } else { finishComponentSetup(instance); } } function handleSetupResult(instance, setupResult, isSSR) { if (isFunction(setupResult)) { { instance.render = setupResult; } } else if (isObject$1(setupResult)) { instance.setupState = proxyRefs(setupResult); } else ; finishComponentSetup(instance); } function finishComponentSetup(instance, isSSR, skipOptions) { const Component = instance.type; if (!instance.render) { instance.render = Component.render || NOOP; if (instance.render._rc) { instance.withProxy = new Proxy(instance.ctx, RuntimeCompiledPublicInstanceProxyHandlers); } } { currentInstance = instance; pauseTracking(); applyOptions(instance); resetTracking(); currentInstance = null; } } function createSetupContext(instance) { const expose = (exposed) => { instance.exposed = exposed || {}; }; { return { attrs: instance.attrs, slots: instance.slots, emit: instance.emit, expose }; } } function getExposeProxy(instance) { if (instance.exposed) { return instance.exposeProxy || (instance.exposeProxy = new Proxy(proxyRefs(markRaw(instance.exposed)), { get(target, key) { if (key in target) { return target[key]; } else if (key in publicPropertiesMap) { return publicPropertiesMap[key](instance); } } })); } } function recordInstanceBoundEffect(effect2, instance = currentInstance) { if (instance) { (instance.effects || (instance.effects = [])).push(effect2); } } const classifyRE = /(?:^|[-_])(\w)/g; const classify = (str) => str.replace(classifyRE, (c) => c.toUpperCase()).replace(/[-_]/g, ""); function getComponentName(Component) { return isFunction(Component) ? Component.displayName || Component.name : Component.name; } function formatComponentName(instance, Component, isRoot = false) { let name = getComponentName(Component); if (!name && Component.__file) { const match = Component.__file.match(/([^/\\]+)\.\w+$/); if (match) { name = match[1]; } } if (!name && instance && instance.parent) { const inferFromRegistry = (registry) => { for (const key in registry) { if (registry[key] === Component) { return key; } } }; name = inferFromRegistry(instance.components || instance.parent.type.components) || inferFromRegistry(instance.appContext.components); } return name ? classify(name) : isRoot ? `App` : `Anonymous`; } function isClassComponent(value) { return isFunction(value) && "__vccOpts" in value; } function computed$1(getterOrOptions) { const c = computed(getterOrOptions); recordInstanceBoundEffect(c.effect); return c; } function h(type, propsOrChildren, children) { const l = arguments.length; if (l === 2) { if (isObject$1(propsOrChildren) && !isArray(propsOrChildren)) { if (isVNode(propsOrChildren)) { return createVNode(type, null, [propsOrChildren]); } return createVNode(type, propsOrChildren); } else { return createVNode(type, null, propsOrChildren); } } else { if (l > 3) { children = Array.prototype.slice.call(arguments, 2); } else if (l === 3 && isVNode(children)) { children = [children]; } return createVNode(type, propsOrChildren, children); } } const version = "3.1.4"; const svgNS = "http://www.w3.org/2000/svg"; const doc = typeof document !== "undefined" ? document : null; const nodeOps = { insert: (child, parent, anchor) => { parent.insertBefore(child, anchor || null); }, remove: (child) => { const parent = child.parentNode; if (parent) { parent.removeChild(child); } }, createElement: (tag, isSVG, is, props2) => { const el = isSVG ? doc.createElementNS(svgNS, tag) : doc.createElement(tag, is ? { is } : void 0); if (tag === "select" && props2 && props2.multiple != null) { el.setAttribute("multiple", props2.multiple); } return el; }, createText: (text2) => doc.createTextNode(text2), createComment: (text2) => doc.createComment(text2), setText: (node, text2) => { node.nodeValue = text2; }, setElementText: (el, text2) => { el.textContent = text2; }, parentNode: (node) => node.parentNode, nextSibling: (node) => node.nextSibling, querySelector: (selector) => doc.querySelector(selector), setScopeId(el, id2) { el.setAttribute(id2, ""); }, cloneNode(el) { const cloned = el.cloneNode(true); if (`_value` in el) { cloned._value = el._value; } return cloned; }, insertStaticContent(content, parent, anchor, isSVG, cached) { if (cached) { let first2; let last2; let i = 0; let l = cached.length; for (; i < l; i++) { const node = cached[i].cloneNode(true); if (i === 0) first2 = node; if (i === l - 1) last2 = node; parent.insertBefore(node, anchor); } return [first2, last2]; } const before = anchor ? anchor.previousSibling : parent.lastChild; if (anchor) { let insertionPoint; let usingTempInsertionPoint = false; if (anchor instanceof Element) { insertionPoint = anchor; } else { usingTempInsertionPoint = true; insertionPoint = isSVG ? doc.createElementNS(svgNS, "g") : doc.createElement("div"); parent.insertBefore(insertionPoint, anchor); } insertionPoint.insertAdjacentHTML("beforebegin", content); if (usingTempInsertionPoint) { parent.removeChild(insertionPoint); } } else { parent.insertAdjacentHTML("beforeend", content); } let first = before ? before.nextSibling : parent.firstChild; const last = anchor ? anchor.previousSibling : parent.lastChild; const ret = []; while (first) { ret.push(first); if (first === last) break; first = first.nextSibling; } return ret; } }; function patchClass$1(el, value, isSVG) { if (value == null) { value = ""; } if (isSVG) { el.setAttribute("class", value); } else { const transitionClasses = el._vtc; if (transitionClasses) { value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(" "); } el.className = value; } } function patchStyle$1(el, prev, next) { const style = el.style; if (!next) { el.removeAttribute("style"); } else if (isString(next)) { if (prev !== next) { const current = style.display; style.cssText = normalizeRpx(next); if ("_vod" in el) { style.display = current; } } } else { for (const key in next) { setStyle$1(style, key, next[key]); } if (prev && !isString(prev)) { for (const key in prev) { if (next[key] == null) { setStyle$1(style, key, ""); } } } } } const importantRE$1 = /\s*!important$/; function setStyle$1(style, name, val) { if (isArray(val)) { val.forEach((v2) => setStyle$1(style, name, v2)); } else { val = normalizeRpx(val); if (name.startsWith("--")) { style.setProperty(name, val); } else { const prefixed = autoPrefix$1(style, name); if (importantRE$1.test(val)) { style.setProperty(hyphenate(prefixed), val.replace(importantRE$1, ""), "important"); } else { style[prefixed] = val; } } } } const prefixes$1 = ["Webkit", "Moz", "ms"]; const prefixCache$1 = {}; function autoPrefix$1(style, rawName) { const cached = prefixCache$1[rawName]; if (cached) { return cached; } let name = camelize(rawName); if (name !== "filter" && name in style) { return prefixCache$1[rawName] = name; } name = capitalize(name); for (let i = 0; i < prefixes$1.length; i++) { const prefixed = prefixes$1[i] + name; if (prefixed in style) { return prefixCache$1[rawName] = prefixed; } } return rawName; } const rpxRE = /\b([+-]?\d+(\.\d+)?)[r|u]px\b/g; const normalizeRpx = (val) => { if (typeof rpx2px !== "function") { return val; } if (isString(val)) { return val.replace(rpxRE, (a2, b) => { return rpx2px(b) + "px"; }); } return val; }; const xlinkNS = "http://www.w3.org/1999/xlink"; function patchAttr(el, key, value, isSVG, instance) { if (isSVG && key.startsWith("xlink:")) { if (value == null) { el.removeAttributeNS(xlinkNS, key.slice(6, key.length)); } else { el.setAttributeNS(xlinkNS, key, value); } } else { const isBoolean2 = isSpecialBooleanAttr(key); if (value == null || isBoolean2 && value === false) { el.removeAttribute(key); } else { el.setAttribute(key, isBoolean2 ? "" : value); } } } function patchDOMProp(el, key, value, prevChildren, parentComponent, parentSuspense, unmountChildren) { if (key === "innerHTML" || key === "textContent") { if (prevChildren) { unmountChildren(prevChildren, parentComponent, parentSuspense); } el[key] = value == null ? "" : value; return; } if (key === "value" && el.tagName !== "PROGRESS") { el._value = value; const newValue = value == null ? "" : value; if (el.value !== newValue) { el.value = newValue; } if (value == null) { el.removeAttribute(key); } return; } if (value === "" || value == null) { const type = typeof el[key]; if (value === "" && type === "boolean") { el[key] = true; return; } else if (value == null && type === "string") { el[key] = ""; el.removeAttribute(key); return; } else if (type === "number") { el[key] = 0; el.removeAttribute(key); return; } } try { el[key] = value; } catch (e2) { } } let _getNow = Date.now; let skipTimestampCheck = false; if (typeof window !== "undefined") { if (_getNow() > document.createEvent("Event").timeStamp) { _getNow = () => performance.now(); } const ffMatch = navigator.userAgent.match(/firefox\/(\d+)/i); skipTimestampCheck = !!(ffMatch && Number(ffMatch[1]) <= 53); } let cachedNow = 0; const p$1 = Promise.resolve(); const reset = () => { cachedNow = 0; }; const getNow = () => cachedNow || (p$1.then(reset), cachedNow = _getNow()); function addEventListener(el, event, handler, options) { el.addEventListener(event, handler, options); } function removeEventListener(el, event, handler, options) { el.removeEventListener(event, handler, options); } function patchEvent$1(el, rawName, prevValue, nextValue, instance = null) { const invokers = el._vei || (el._vei = {}); const existingInvoker = invokers[rawName]; if (nextValue && existingInvoker) { existingInvoker.value = nextValue; } else { const [name, options] = parseName(rawName); if (nextValue) { const invoker = invokers[rawName] = createInvoker$1(nextValue, instance); addEventListener(el, name, invoker, options); } else if (existingInvoker) { removeEventListener(el, name, existingInvoker, options); invokers[rawName] = void 0; } } } const optionsModifierRE = /(?:Once|Passive|Capture)$/; function parseName(name) { let options; if (optionsModifierRE.test(name)) { options = {}; let m; while (m = name.match(optionsModifierRE)) { name = name.slice(0, name.length - m[0].length); options[m[0].toLowerCase()] = true; } } return [hyphenate(name.slice(2)), options]; } function createInvoker$1(initialValue, instance) { const invoker = (e2) => { const timeStamp = e2.timeStamp || _getNow(); if (skipTimestampCheck || timeStamp >= invoker.attached - 1) { callWithAsyncErrorHandling(patchStopImmediatePropagation(e2, invoker.value), instance, 5, [e2]); } }; invoker.value = initialValue; invoker.attached = getNow(); return invoker; } function patchStopImmediatePropagation(e2, value) { if (isArray(value)) { const originalStop = e2.stopImmediatePropagation; e2.stopImmediatePropagation = () => { originalStop.call(e2); e2._stopped = true; }; return value.map((fn) => (e3) => !e3._stopped && fn(e3)); } else { return value; } } const nativeOnRE = /^on[a-z]/; const forcePatchProp = (_, key) => key === "value"; const patchProp = (el, key, prevValue, nextValue, isSVG = false, prevChildren, parentComponent, parentSuspense, unmountChildren) => { switch (key) { case "class": patchClass$1(el, nextValue, isSVG); break; case "style": patchStyle$1(el, prevValue, nextValue); break; default: if (isOn(key)) { if (!isModelListener(key)) { patchEvent$1(el, key, prevValue, nextValue, parentComponent); } } else if (shouldSetAsProp(el, key, nextValue, isSVG)) { patchDOMProp(el, key, nextValue, prevChildren, parentComponent, parentSuspense, unmountChildren); } else { if (key === "true-value") { el._trueValue = nextValue; } else if (key === "false-value") { el._falseValue = nextValue; } patchAttr(el, key, nextValue, isSVG); } break; } }; function shouldSetAsProp(el, key, value, isSVG) { if (isSVG) { if (key === "innerHTML") { return true; } if (key in el && nativeOnRE.test(key) && isFunction(value)) { return true; } return false; } if (key === "spellcheck" || key === "draggable") { return false; } if (key === "form") { return false; } if (key === "list" && el.tagName === "INPUT") { return false; } if (key === "type" && el.tagName === "TEXTAREA") { return false; } if (nativeOnRE.test(key) && isString(value)) { return false; } return key in el; } const systemModifiers = ["ctrl", "shift", "alt", "meta"]; const modifierGuards = { stop: (e2) => e2.stopPropagation(), prevent: (e2) => e2.preventDefault(), self: (e2) => e2.target !== e2.currentTarget, ctrl: (e2) => !e2.ctrlKey, shift: (e2) => !e2.shiftKey, alt: (e2) => !e2.altKey, meta: (e2) => !e2.metaKey, left: (e2) => "button" in e2 && e2.button !== 0, middle: (e2) => "button" in e2 && e2.button !== 1, right: (e2) => "button" in e2 && e2.button !== 2, exact: (e2, modifiers) => systemModifiers.some((m) => e2[`${m}Key`] && !modifiers.includes(m)) }; const withModifiers = (fn, modifiers) => { return (event, ...args) => { for (let i = 0; i < modifiers.length; i++) { const guard = modifierGuards[modifiers[i]]; if (guard && guard(event, modifiers)) return; } return fn(event, ...args); }; }; const vShow = { beforeMount(el, { value }, { transition }) { el._vod = el.style.display === "none" ? "" : el.style.display; if (transition && value) { transition.beforeEnter(el); } else { setDisplay(el, value); } }, mounted(el, { value }, { transition }) { if (transition && value) { transition.enter(el); } }, updated(el, { value, oldValue }, { transition }) { if (!value === !oldValue) return; if (transition) { if (value) { transition.beforeEnter(el); setDisplay(el, true); transition.enter(el); } else { transition.leave(el, () => { setDisplay(el, false); }); } } else { setDisplay(el, value); } }, beforeUnmount(el, { value }) { setDisplay(el, value); } }; function setDisplay(el, value) { el.style.display = value ? el._vod : "none"; } const rendererOptions = extend({ patchProp, forcePatchProp }, nodeOps); let renderer; function ensureRenderer() { return renderer || (renderer = createRenderer(rendererOptions)); } const createApp = (...args) => { const app = ensureRenderer().createApp(...args); const { mount } = app; app.mount = (containerOrSelector) => { const container = normalizeContainer(containerOrSelector); if (!container) return; const component = app._component; if (!isFunction(component) && !component.render && !component.template) { component.template = container.innerHTML; } container.innerHTML = ""; const proxy = mount(container, false, container instanceof SVGElement); if (container instanceof Element) { container.removeAttribute("v-cloak"); container.setAttribute("data-v-app", ""); } return proxy; }; return app; }; function normalizeContainer(container) { if (isString(container)) { const res = document.querySelector(container); return res; } return container; } var attrs = ["top", "left", "right", "bottom"]; var inited$1; var elementComputedStyle = {}; var support; function getSupport() { if (!("CSS" in window) || typeof CSS.supports != "function") { support = ""; } else if (CSS.supports("top: env(safe-area-inset-top)")) { support = "env"; } else if (CSS.supports("top: constant(safe-area-inset-top)")) { support = "constant"; } else { support = ""; } return support; } function init() { support = typeof support === "string" ? support : getSupport(); if (!support) { attrs.forEach(function(attr2) { elementComputedStyle[attr2] = 0; }); return; } function setStyle2(el, style) { var elStyle = el.style; Object.keys(style).forEach(function(key) { var val = style[key]; elStyle[key] = val; }); } var cbs = []; function parentReady(callback) { if (callback) { cbs.push(callback); } else { cbs.forEach(function(cb) { cb(); }); } } var passiveEvents = false; try { var opts = Object.defineProperty({}, "passive", { get: function() { passiveEvents = { passive: true }; } }); window.addEventListener("test", null, opts); } catch (e2) { } function addChild(parent, attr2) { var a1 = document.createElement("div"); var a2 = document.createElement("div"); var a1Children = document.createElement("div"); var a2Children = document.createElement("div"); var W = 100; var MAX = 1e4; var aStyle = { position: "absolute", width: W + "px", height: "200px", boxSizing: "border-box", overflow: "hidden", paddingBottom: support + "(safe-area-inset-" + attr2 + ")" }; setStyle2(a1, aStyle); setStyle2(a2, aStyle); setStyle2(a1Children, { transition: "0s", animation: "none", width: "400px", height: "400px" }); setStyle2(a2Children, { transition: "0s", animation: "none", width: "250%", height: "250%" }); a1.appendChild(a1Children); a2.appendChild(a2Children); parent.appendChild(a1); parent.appendChild(a2); parentReady(function() { a1.scrollTop = a2.scrollTop = MAX; var a1LastScrollTop = a1.scrollTop; var a2LastScrollTop = a2.scrollTop; function onScroll() { if (this.scrollTop === (this === a1 ? a1LastScrollTop : a2LastScrollTop)) { return; } a1.scrollTop = a2.scrollTop = MAX; a1LastScrollTop = a1.scrollTop; a2LastScrollTop = a2.scrollTop; attrChange(attr2); } a1.addEventListener("scroll", onScroll, passiveEvents); a2.addEventListener("scroll", onScroll, passiveEvents); }); var computedStyle = getComputedStyle(a1); Object.defineProperty(elementComputedStyle, attr2, { configurable: true, get: function() { return parseFloat(computedStyle.paddingBottom); } }); } var parentDiv = document.createElement("div"); setStyle2(parentDiv, { position: "absolute", left: "0", top: "0", width: "0", height: "0", zIndex: "-1", overflow: "hidden", visibility: "hidden" }); attrs.forEach(function(key) { addChild(parentDiv, key); }); document.body.appendChild(parentDiv); parentReady(); inited$1 = true; } function getAttr(attr2) { if (!inited$1) { init(); } return elementComputedStyle[attr2]; } var changeAttrs = []; function attrChange(attr2) { if (!changeAttrs.length) { setTimeout(function() { var style = {}; changeAttrs.forEach(function(attr3) { style[attr3] = elementComputedStyle[attr3]; }); changeAttrs.length = 0; callbacks.forEach(function(callback) { callback(style); }); }, 0); } changeAttrs.push(attr2); } var callbacks = []; function onChange(callback) { if (!getSupport()) { return; } if (!inited$1) { init(); } if (typeof callback === "function") { callbacks.push(callback); } } function offChange(callback) { var index2 = callbacks.indexOf(callback); if (index2 >= 0) { callbacks.splice(index2, 1); } } var safeAreaInsets = { get support() { return (typeof support === "string" ? support : getSupport()).length != 0; }, get top() { return getAttr("top"); }, get left() { return getAttr("left"); }, get right() { return getAttr("right"); }, get bottom() { return getAttr("bottom"); }, onChange, offChange }; var out = safeAreaInsets; const onEventPrevent = /* @__PURE__ */ withModifiers(() => { }, ["prevent"]); function getWindowOffset() { const style = document.documentElement.style; const top = parseInt(style.getPropertyValue("--window-top")); const bottom = parseInt(style.getPropertyValue("--window-bottom")); const left = parseInt(style.getPropertyValue("--window-left")); const right = parseInt(style.getPropertyValue("--window-right")); return { top: top ? top + out.top : 0, bottom: bottom ? bottom + out.bottom : 0, left: left ? left + out.left : 0, right: right ? right + out.right : 0 }; } function updateCssVar(cssVars) { const style = document.documentElement.style; Object.keys(cssVars).forEach((name) => { style.setProperty(name, cssVars[name]); }); } function PolySymbol(name) { return Symbol("[uni-app]: " + name); } function hasRpx(str) { str = str + ""; return str.indexOf("rpx") !== -1 || str.indexOf("upx") !== -1; } function rpx2px$1(str, replace = false) { if (replace) { return rpx2pxWithReplace(str); } if (typeof str === "string") { const res = parseInt(str) || 0; if (hasRpx(str)) { return uni.upx2px(res); } return res; } return str; } function rpx2pxWithReplace(str) { if (!hasRpx(str)) { return str; } return str.replace(/(\d+(\.\d+)?)[ru]px/g, (_a, b) => { return uni.upx2px(parseFloat(b)) + "px"; }); } const ICON_PATH_CANCEL = "M20.928 10.176l-4.928 4.928-4.928-4.928-0.896 0.896 4.928 4.928-4.928 4.928 0.896 0.896 4.928-4.928 4.928 4.928 0.896-0.896-4.928-4.928 4.928-4.928-0.896-0.896zM16 2.080q-3.776 0-7.040 1.888-3.136 1.856-4.992 4.992-1.888 3.264-1.888 7.040t1.888 7.040q1.856 3.136 4.992 4.992 3.264 1.888 7.040 1.888t7.040-1.888q3.136-1.856 4.992-4.992 1.888-3.264 1.888-7.040t-1.888-7.040q-1.856-3.136-4.992-4.992-3.264-1.888-7.040-1.888zM16 28.64q-3.424 0-6.4-1.728-2.848-1.664-4.512-4.512-1.728-2.976-1.728-6.4t1.728-6.4q1.664-2.848 4.512-4.512 2.976-1.728 6.4-1.728t6.4 1.728q2.848 1.664 4.512 4.512 1.728 2.976 1.728 6.4t-1.728 6.4q-1.664 2.848-4.512 4.512-2.976 1.728-6.4 1.728z"; const ICON_PATH_CLEAR = "M16 0q-4.352 0-8.064 2.176-3.616 2.144-5.76 5.76-2.176 3.712-2.176 8.064t2.176 8.064q2.144 3.616 5.76 5.76 3.712 2.176 8.064 2.176t8.064-2.176q3.616-2.144 5.76-5.76 2.176-3.712 2.176-8.064t-2.176-8.064q-2.144-3.616-5.76-5.76-3.712-2.176-8.064-2.176zM22.688 21.408q0.32 0.32 0.304 0.752t-0.336 0.736-0.752 0.304-0.752-0.32l-5.184-5.376-5.376 5.184q-0.32 0.32-0.752 0.304t-0.736-0.336-0.304-0.752 0.32-0.752l5.376-5.184-5.184-5.376q-0.32-0.32-0.304-0.752t0.336-0.752 0.752-0.304 0.752 0.336l5.184 5.376 5.376-5.184q0.32-0.32 0.752-0.304t0.752 0.336 0.304 0.752-0.336 0.752l-5.376 5.184 5.184 5.376z"; const ICON_PATH_DOWNLOAD = "M15.808 1.696q-3.776 0-7.072 1.984-3.2 1.888-5.088 5.152-1.952 3.392-1.952 7.36 0 3.776 1.952 7.072 1.888 3.2 5.088 5.088 3.296 1.952 7.072 1.952 3.968 0 7.36-1.952 3.264-1.888 5.152-5.088 1.984-3.296 1.984-7.072 0-4-1.984-7.36-1.888-3.264-5.152-5.152-3.36-1.984-7.36-1.984zM20.864 18.592l-3.776 4.928q-0.448 0.576-1.088 0.576t-1.088-0.576l-3.776-4.928q-0.448-0.576-0.24-0.992t0.944-0.416h2.976v-8.928q0-0.256 0.176-0.432t0.4-0.176h1.216q0.224 0 0.4 0.176t0.176 0.432v8.928h2.976q0.736 0 0.944 0.416t-0.24 0.992z"; const ICON_PATH_INFO = "M15.808 0.128q-4.224 0-7.872 2.176-3.552 2.112-5.632 5.728-2.176 3.776-2.176 8.16 0 4.224 2.176 7.872 2.080 3.552 5.632 5.632 3.648 2.176 7.872 2.176 4.384 0 8.16-2.176 3.616-2.080 5.728-5.632 2.176-3.648 2.176-7.872 0-4.416-2.176-8.16-2.112-3.616-5.728-5.728-3.744-2.176-8.16-2.176zM16.864 23.776q0 0.064-0.064 0.064h-1.568q-0.096 0-0.096-0.064l-0.256-11.328q0-0.064 0.064-0.064h2.112q0.096 0 0.064 0.064l-0.256 11.328zM16 10.88q-0.576 0-0.976-0.4t-0.4-0.96 0.4-0.96 0.976-0.4 0.976 0.4 0.4 0.96-0.4 0.96-0.976 0.4z"; const ICON_PATH_SEARCH = "M20.928 22.688q-1.696 1.376-3.744 2.112-2.112 0.768-4.384 0.768-3.488 0-6.464-1.728-2.88-1.696-4.576-4.608-1.76-2.976-1.76-6.464t1.76-6.464q1.696-2.88 4.576-4.576 2.976-1.76 6.464-1.76t6.464 1.76q2.912 1.696 4.608 4.576 1.728 2.976 1.728 6.464 0 2.272-0.768 4.384-0.736 2.048-2.112 3.744l9.312 9.28-1.824 1.824-9.28-9.312zM12.8 23.008q2.784 0 5.184-1.376 2.304-1.376 3.68-3.68 1.376-2.4 1.376-5.184t-1.376-5.152q-1.376-2.336-3.68-3.68-2.4-1.408-5.184-1.408t-5.152 1.408q-2.336 1.344-3.68 3.68-1.408 2.368-1.408 5.152t1.408 5.184q1.344 2.304 3.68 3.68 2.368 1.376 5.152 1.376zM12.8 23.008v0z"; const ICON_PATH_SUCCESS_NO_CIRCLE = "M1.952 18.080q-0.32-0.352-0.416-0.88t0.128-0.976l0.16-0.352q0.224-0.416 0.64-0.528t0.8 0.176l6.496 4.704q0.384 0.288 0.912 0.272t0.88-0.336l17.312-14.272q0.352-0.288 0.848-0.256t0.848 0.352l-0.416-0.416q0.32 0.352 0.32 0.816t-0.32 0.816l-18.656 18.912q-0.32 0.352-0.8 0.352t-0.8-0.32l-7.936-8.064z"; const ICON_PATH_SUCCESS = "M15.808 0.16q-4.224 0-7.872 2.176-3.552 2.112-5.632 5.728-2.144 3.744-2.144 8.128 0 4.192 2.144 7.872 2.112 3.52 5.632 5.632 3.68 2.144 7.872 2.144 4.384 0 8.128-2.144 3.616-2.080 5.728-5.632 2.176-3.648 2.176-7.872 0-4.384-2.176-8.128-2.112-3.616-5.728-5.728-3.744-2.176-8.128-2.176zM24.832 11.328l-11.264 11.104q-0.032 0.032-0.112 0.032t-0.112-0.032l-5.216-5.376q-0.096-0.128 0-0.288l0.704-0.96q0.032-0.064 0.112-0.064t0.112 0.032l4.256 3.264q0.064 0.032 0.144 0.032t0.112-0.032l10.336-8.608q0.064-0.064 0.144-0.064t0.112 0.064l0.672 0.672q0.128 0.128 0 0.224z"; const ICON_PATH_WAITING = "M15.84 0.096q-4.224 0-7.872 2.176-3.552 2.112-5.632 5.728-2.144 3.744-2.144 8.128 0 4.192 2.144 7.872 2.112 3.52 5.632 5.632 3.68 2.144 7.872 2.144 4.384 0 8.128-2.144 3.616-2.080 5.728-5.632 2.176-3.648 2.176-7.872 0-4.384-2.176-8.128-2.112-3.616-5.728-5.728-3.744-2.176-8.128-2.176zM23.008 21.92l-0.512 0.896q-0.096 0.128-0.224 0.064l-8-3.808q-0.096-0.064-0.16-0.128-0.128-0.096-0.128-0.288l0.512-12.096q0-0.064 0.048-0.112t0.112-0.048h1.376q0.064 0 0.112 0.048t0.048 0.112l0.448 10.848 6.304 4.256q0.064 0.064 0.080 0.128t-0.016 0.128z"; const ICON_PATH_WARN = "M15.808 0.16q-4.224 0-7.872 2.176-3.552 2.112-5.632 5.728-2.144 3.744-2.144 8.128 0 4.192 2.144 7.872 2.112 3.52 5.632 5.632 3.68 2.144 7.872 2.144 4.384 0 8.128-2.144 3.616-2.080 5.728-5.632 2.176-3.648 2.176-7.872 0-4.384-2.176-8.128-2.112-3.616-5.728-5.728-3.744-2.176-8.128-2.176zM15.136 8.672h1.728q0.128 0 0.224 0.096t0.096 0.256l-0.384 10.24q0 0.064-0.048 0.112t-0.112 0.048h-1.248q-0.096 0-0.144-0.048t-0.048-0.112l-0.384-10.24q0-0.16 0.096-0.256t0.224-0.096zM16 23.328q-0.48 0-0.832-0.352t-0.352-0.848 0.352-0.848 0.832-0.352 0.832 0.352 0.352 0.848-0.352 0.848-0.832 0.352z"; function createSvgIconVNode(path, color = "#000", size2 = 27) { return createVNode("svg", { width: size2, height: size2, viewBox: "0 0 32 32" }, [ createVNode("path", { d: path, fill: color }, null, 8, ["d", "fill"]) ], 8, ["width", "height"]); } function useCurrentPageId() { { return getCurrentPageId(); } } function getCurrentPage() { { return window.__PAGE_INFO__; } } function getCurrentPageId() { { if (!window.__id__) { window.__id__ = plus.webview.currentWebview().id; } return parseInt(window.__id__); } } function disableScrollListener(evt) { evt.preventDefault(); } let testReachBottomTimer; let lastScrollHeight = 0; function createScrollListener({ onPageScroll, onReachBottom, onReachBottomDistance }) { let ticking = false; let hasReachBottom = false; let reachBottomLocking = true; const isReachBottom = () => { const { scrollHeight } = document.documentElement; const windowHeight = window.innerHeight; const scrollY = window.scrollY; const isBottom = scrollY > 0 && scrollHeight > windowHeight && scrollY + windowHeight + onReachBottomDistance >= scrollHeight; const heightChanged = Math.abs(scrollHeight - lastScrollHeight) > onReachBottomDistance; if (isBottom && (!hasReachBottom || heightChanged)) { lastScrollHeight = scrollHeight; hasReachBottom = true; return true; } if (!isBottom && hasReachBottom) { hasReachBottom = false; } return false; }; const trigger2 = () => { onPageScroll && onPageScroll(window.pageYOffset); function testReachBottom() { if (isReachBottom()) { onReachBottom && onReachBottom(); reachBottomLocking = false; setTimeout(function() { reachBottomLocking = true; }, 350); return true; } } if (onReachBottom && reachBottomLocking) { if (testReachBottom()) ; else { testReachBottomTimer = setTimeout(testReachBottom, 300); } } ticking = false; }; return function onScroll() { clearTimeout(testReachBottomTimer); if (!ticking) { requestAnimationFrame(trigger2); } ticking = true; }; } function getRealRoute(fromRoute, toRoute) { if (toRoute.indexOf("/") === 0) { return toRoute; } if (toRoute.indexOf("./") === 0) { return getRealRoute(fromRoute, toRoute.substr(2)); } const toRouteArray = toRoute.split("/"); const toRouteLength = toRouteArray.length; let i = 0; for (; i < toRouteLength && toRouteArray[i] === ".."; i++) { } toRouteArray.splice(0, i); toRoute = toRouteArray.join("/"); const fromRouteArray = fromRoute.length > 0 ? fromRoute.split("/") : []; fromRouteArray.splice(fromRouteArray.length - i - 1, i + 1); return "/" + fromRouteArray.concat(toRouteArray).join("/"); } const isClickEvent = (val) => val.type === "click"; function $nne(evt) { const { currentTarget } = evt; if (!(evt instanceof Event) || !(currentTarget instanceof HTMLElement)) { return evt; } if (currentTarget.tagName.indexOf("UNI-") !== 0) { return evt; } const res = createNativeEvent(evt); if (isClickEvent(evt)) { normalizeClickEvent(res, evt); } else if (evt instanceof TouchEvent) { const { top } = getWindowOffset(); res.touches = normalizeTouchEvent(evt.touches, top); res.changedTouches = normalizeTouchEvent(evt.changedTouches, top); } return res; } function findUniTarget(target) { while (target && target.tagName.indexOf("UNI-") !== 0) { target = target.parentElement; } return target; } function createNativeEvent(evt) { const { type, timeStamp, target, currentTarget } = evt; const event = { type, timeStamp, target: normalizeTarget(findUniTarget(target)), detail: {}, currentTarget: normalizeTarget(currentTarget) }; if (evt._stopped) { event._stopped = true; } if (evt.type.startsWith("touch")) { event.touches = evt.touches; event.changedTouches = evt.changedTouches; } return event; } function normalizeClickEvent(evt, mouseEvt) { const { x, y } = mouseEvt; const { top } = getWindowOffset(); evt.detail = { x, y: y - top }; evt.touches = evt.changedTouches = [createTouchEvent(mouseEvt)]; } function createTouchEvent(evt) { return { force: 1, identifier: 0, clientX: evt.clientX, clientY: evt.clientY, pageX: evt.pageX, pageY: evt.pageY }; } function normalizeTouchEvent(touches, top) { const res = []; for (let i = 0; i < touches.length; i++) { const { identifier, pageX, pageY, clientX, clientY, force } = touches[i]; res.push({ identifier, pageX, pageY: pageY - top, clientX, clientY: clientY - top, force: force || 0 }); } return res; } [ON_PAGE_SCROLL, ON_REACH_BOTTOM]; const VD_SYNC = "vdSync"; const ON_WEBVIEW_READY = "onWebviewReady"; const PAGE_SCROLL_TO = "pageScrollTo"; const LOAD_FONT_FACE = "loadFontFace"; const ACTION_TYPE_DICT = 0; const WEBVIEW_INSERTED = "webviewInserted"; const WEBVIEW_REMOVED = "webviewRemoved"; const WEBVIEW_ID_PREFIX = "webviewId"; const APP_SERVICE_ID = "__uniapp__service"; const UniViewJSBridge$1 = /* @__PURE__ */ extend(ViewJSBridge, { publishHandler }); function publishHandler(event, args = {}) { const pageId = getCurrentPageId() + ""; { console.log(`[${Date.now()}][View]: ` + pageId + " " + event + " " + JSON.stringify(args)); } plus.webview.postMessageToUniNView({ type: "subscribeHandler", args: { type: event, data: args, pageId } }, APP_SERVICE_ID); } function validateProtocolFail(name, msg) { console.warn(`${name}: ${msg}`); } function validateProtocol(name, data, protocol, onFail) { if (!onFail) { onFail = validateProtocolFail; } for (const key in protocol) { const errMsg = validateProp(key, data[key], protocol[key], !hasOwn$1(data, key)); if (isString(errMsg)) { onFail(name, errMsg); } } } function validateProtocols(name, args, protocol, onFail) { if (!protocol) { return; } if (!isArray(protocol)) { return validateProtocol(name, args[0] || Object.create(null), protocol, onFail); } const len = protocol.length; const argsLen = args.length; for (let i = 0; i < len; i++) { const opts = protocol[i]; const data = Object.create(null); if (argsLen > i) { data[opts.name] = args[i]; } validateProtocol(name, data, { [opts.name]: opts }, onFail); } } function validateProp(name, value, prop, isAbsent) { if (!isPlainObject(prop)) { prop = { type: prop }; } const { type, required, validator } = prop; if (required && isAbsent) { return 'Missing required args: "' + name + '"'; } if (value == null && !required) { return; } if (type != null) { let isValid = false; const types = isArray(type) ? type : [type]; const expectedTypes = []; for (let i = 0; i < types.length && !isValid; i++) { const { valid, expectedType } = assertType(value, types[i]); expectedTypes.push(expectedType || ""); isValid = valid; } if (!isValid) { return getInvalidTypeMessage(name, value, expectedTypes); } } if (validator) { return validator(value); } } const isSimpleType = /* @__PURE__ */ makeMap$1("String,Number,Boolean,Function,Symbol"); function assertType(value, type) { let valid; const expectedType = getType(type); if (isSimpleType(expectedType)) { const t2 = typeof value; valid = t2 === expectedType.toLowerCase(); if (!valid && t2 === "object") { valid = value instanceof type; } } else if (expectedType === "Object") { valid = isObject$1(value); } else if (expectedType === "Array") { valid = isArray(value); } else { { valid = value instanceof type || toRawType(value) === getType(type); } } return { valid, expectedType }; } function getInvalidTypeMessage(name, value, expectedTypes) { let message = `Invalid args: type check failed for args "${name}". Expected ${expectedTypes.map(capitalize).join(", ")}`; const expectedType = expectedTypes[0]; const receivedType = toRawType(value); const expectedValue = styleValue(value, expectedType); const receivedValue = styleValue(value, receivedType); if (expectedTypes.length === 1 && isExplicable(expectedType) && !isBoolean(expectedType, receivedType)) { message += ` with value ${expectedValue}`; } message += `, got ${receivedType} `; if (isExplicable(receivedType)) { message += `with value ${receivedValue}.`; } return message; } function getType(ctor) { const match = ctor && ctor.toString().match(/^\s*function (\w+)/); return match ? match[1] : ""; } function styleValue(value, type) { if (type === "String") { return `"${value}"`; } else if (type === "Number") { return `${Number(value)}`; } else { return `${value}`; } } function isExplicable(type) { const explicitTypes = ["string", "number", "boolean"]; return explicitTypes.some((elem) => type.toLowerCase() === elem); } function isBoolean(...args) { return args.some((elem) => elem.toLowerCase() === "boolean"); } function formatApiArgs(args, options) { const params = args[0]; if (!options || !isPlainObject(options.formatArgs) && isPlainObject(params)) { return; } const formatArgs = options.formatArgs; const keys = Object.keys(formatArgs); for (let i = 0; i < keys.length; i++) { const name = keys[i]; const formatterOrDefaultValue = formatArgs[name]; if (isFunction(formatterOrDefaultValue)) { const errMsg = formatterOrDefaultValue(args[0][name], params); if (isString(errMsg)) { return errMsg; } } else { if (!hasOwn$1(params, name)) { params[name] = formatterOrDefaultValue; } } } } function beforeInvokeApi(name, args, protocol, options) { { validateProtocols(name, args, protocol); } if (options && options.beforeInvoke) { const errMsg2 = options.beforeInvoke(args); if (isString(errMsg2)) { return errMsg2; } } const errMsg = formatApiArgs(args, options); if (errMsg) { return errMsg; } } function wrapperSyncApi(name, fn, protocol, options) { return (...args) => { const errMsg = beforeInvokeApi(name, args, protocol, options); if (errMsg) { throw new Error(errMsg); } return fn.apply(null, args); }; } function defineSyncApi(name, fn, protocol, options) { return wrapperSyncApi(name, fn, protocol, options); } function getBaseSystemInfo() { if (typeof __SYSTEM_INFO__ !== "undefined") { return window.__SYSTEM_INFO__; } const { resolutionWidth } = plus.screen.getCurrentSize(); return { platform: (plus.os.name || "").toLowerCase(), pixelRatio: plus.screen.scale, windowWidth: Math.round(resolutionWidth) }; } function getRealPath(filepath) { if (filepath.indexOf("//") === 0) { return "https:" + filepath; } if (SCHEME_RE.test(filepath) || DATA_RE.test(filepath)) { return filepath; } if (isSystemURL(filepath)) { return "file://" + normalizeLocalPath(filepath); } const wwwPath = "file://" + normalizeLocalPath("_www"); if (filepath.indexOf("/") === 0) { if (filepath.startsWith("/storage/") || filepath.includes("/Containers/Data/Application/")) { return "file://" + filepath; } return wwwPath + filepath; } if (filepath.indexOf("../") === 0 || filepath.indexOf("./") === 0) { if (typeof __id__ === "string") { return wwwPath + getRealRoute("/" + __id__, filepath); } else { const page = getCurrentPage(); if (page) { return wwwPath + getRealRoute("/" + page.route, filepath); } } } return filepath; } const normalizeLocalPath = cacheStringFunction((filepath) => { return plus.io.convertLocalFileSystemURL(filepath).replace(/^\/?apps\//, "/android_asset/apps/").replace(/\/$/, ""); }); function isSystemURL(filepath) { if (filepath.indexOf("_www") === 0 || filepath.indexOf("_doc") === 0 || filepath.indexOf("_documents") === 0 || filepath.indexOf("_downloads") === 0) { return true; } return false; } function saveImage(base64, dirname, callback) { } function getSameOriginUrl(url) { return Promise.resolve(url); } const API_UPX2PX = "upx2px"; const Upx2pxProtocol = [ { name: "upx", type: [Number, String], required: true } ]; const EPS = 1e-4; const BASE_DEVICE_WIDTH = 750; let isIOS = false; let deviceWidth = 0; let deviceDPR = 0; function checkDeviceWidth() { const { platform, pixelRatio: pixelRatio2, windowWidth } = getBaseSystemInfo(); deviceWidth = windowWidth; deviceDPR = pixelRatio2; isIOS = platform === "ios"; } function checkValue(value, defaultValue) { const newValue = Number(value); return isNaN(newValue) ? defaultValue : newValue; } const upx2px = /* @__PURE__ */ defineSyncApi(API_UPX2PX, (number, newDeviceWidth) => { if (deviceWidth === 0) { checkDeviceWidth(); } number = Number(number); if (number === 0) { return 0; } let width = newDeviceWidth || deviceWidth; { const config = __uniConfig.globalStyle || {}; const maxWidth = checkValue(config.rpxCalcMaxDeviceWidth, 960); const baseWidth = checkValue(config.rpxCalcBaseDeviceWidth, 375); width = width <= maxWidth ? width : baseWidth; } let result = number / BASE_DEVICE_WIDTH * width; if (result < 0) { result = -result; } result = Math.floor(result + EPS); if (result === 0) { if (deviceDPR === 1 || !isIOS) { result = 1; } else { result = 0.5; } } return number < 0 ? -result : result; }, Upx2pxProtocol); ({ beforeInvoke() { initI18nShowModalMsgsOnce(); }, formatArgs: { title: "", content: "", showCancel: true, cancelText(_value, params) { if (!hasOwn$1(params, "cancelText")) { const { t: t2 } = useI18n(); params.cancelText = t2("uni.showModal.cancel"); } }, cancelColor: "#000", confirmText(_value, params) { if (!hasOwn$1(params, "confirmText")) { const { t: t2 } = useI18n(); params.confirmText = t2("uni.showModal.confirm"); } }, confirmColor: PRIMARY_COLOR } }); function navigateTo(args) { UniViewJSBridge.invokeServiceMethod("navigateTo", args); } function navigateBack(args) { UniViewJSBridge.invokeServiceMethod("navigateBack", args); } function reLaunch(args) { UniViewJSBridge.invokeServiceMethod("reLaunch", args); } function redirectTo(args) { UniViewJSBridge.invokeServiceMethod("redirectTo", args); } function switchTab(args) { UniViewJSBridge.invokeServiceMethod("switchTab", args); } var uni$1 = /* @__PURE__ */ Object.freeze({ __proto__: null, [Symbol.toStringTag]: "Module", upx2px, navigateTo, navigateBack, reLaunch, redirectTo, switchTab }); function preventDoubleTap() { if (String(navigator.vendor).indexOf("Apple") === 0) { let firstEvent = null; let timeout; document.documentElement.addEventListener("click", (event) => { const TIME_MAX = 450; const PAGE_MAX = 44; clearTimeout(timeout); if (firstEvent && Math.abs(event.pageX - firstEvent.pageX) <= PAGE_MAX && Math.abs(event.pageY - firstEvent.pageY) <= PAGE_MAX && event.timeStamp - firstEvent.timeStamp <= TIME_MAX) { event.preventDefault(); } firstEvent = event; timeout = setTimeout(() => { firstEvent = null; }, TIME_MAX); }); } } function createGetDict(dict) { if (!dict.length) { return (v2) => v2; } const getDict = (value, includeValue = true) => { if (typeof value === "number") { return dict[value]; } const res = {}; value.forEach(([n, v2]) => { if (includeValue) { res[getDict(n)] = getDict(v2); } else { res[getDict(n)] = v2; } }); return res; }; return getDict; } function decodeNodeJson(getDict, nodeJson) { if (!nodeJson) { return; } if (nodeJson.a) { nodeJson.a = getDict(nodeJson.a); } if (nodeJson.e) { nodeJson.e = getDict(nodeJson.e, false); } if (nodeJson.s) { nodeJson.s = getDict(nodeJson.s); } if (nodeJson.t) { nodeJson.t = getDict(nodeJson.t); } return nodeJson; } class UniNode { constructor(id2, tag, parentNodeId, element) { this.isMounted = false; this.isUnmounted = false; this.id = id2; this.tag = tag; this.pid = parentNodeId; if (element) { this.$ = element; } } init(nodeJson) { if (hasOwn$1(nodeJson, "t")) { this.$.textContent = nodeJson.t; } } setText(text2) { this.$.textContent = text2; } insert(parentNodeId, refNodeId) { const node = this.$; const parentNode = $(parentNodeId); if (refNodeId === -1) { parentNode.appendChild(node); } else { parentNode.insertBefore(node, $(refNodeId).$); } this.isMounted = true; } remove() { const { $: $2 } = this; $2.parentNode.removeChild($2); this.isUnmounted = true; removeElement(this.id); } appendChild(node) { return this.$.appendChild(node); } insertBefore(newChild, refChild) { return this.$.insertBefore(newChild, refChild); } } function patchClass(el, clazz) { el.className = clazz; } function patchStyle(el, value) { const style = el.style; if (isString(value)) { if (value === "") { el.removeAttribute("style"); } else { style.cssText = rpx2px$1(value, true); } } else { for (const key in value) { setStyle(style, key, value[key]); } } } const importantRE = /\s*!important$/; function setStyle(style, name, val) { if (isArray(val)) { val.forEach((v2) => setStyle(style, name, v2)); } else { val = rpx2px$1(val, true); if (name.startsWith("--")) { style.setProperty(name, val); } else { const prefixed = autoPrefix(style, name); if (importantRE.test(val)) { style.setProperty(hyphenate(prefixed), val.replace(importantRE, ""), "important"); } else { style[prefixed] = val; } } } } const prefixes = ["Webkit"]; const prefixCache = {}; function autoPrefix(style, rawName) { const cached = prefixCache[rawName]; if (cached) { return cached; } let name = camelize(rawName); if (name !== "filter" && name in style) { return prefixCache[rawName] = name; } name = capitalize(name); for (let i = 0; i < prefixes.length; i++) { const prefixed = prefixes[i] + name; if (prefixed in style) { return prefixCache[rawName] = prefixed; } } return rawName; } function patchEvent(el, name, flag) { const [type, options] = parseEventName(name); if (flag === -1) { const listener = el.__listeners[type]; if (listener) { el.removeEventListener(type, listener); } else { console.error(formatLog(`tag`, el.tagName, el.__id, "event[" + type + "] not found")); } } else { if (el.__listeners[type]) { { console.error(formatLog(`tag`, el.tagName, el.__id, "event[" + type + "] already registered")); } return; } el.__listeners[type] = createInvoker(el.__id, flag, options); el.addEventListener(type, el.__listeners[type], options); } } function createInvoker(id2, flag, options) { const invoker = (evt) => { const event = $nne(evt); event.type = normalizeEventType(evt.type, options); UniViewJSBridge.publishHandler(VD_SYNC, [[ACTION_TYPE_EVENT, id2, event]]); }; if (!flag) { return invoker; } return withModifiers(invoker, resolveModifier(flag)); } function resolveModifier(flag) { const modifiers = []; if (flag & EventModifierFlags.prevent) { modifiers.push("prevent"); } if (flag & EventModifierFlags.self) { modifiers.push("self"); } if (flag & EventModifierFlags.stop) { modifiers.push("stop"); } return modifiers; } const postActionJobs = new Set(); function queuePostActionJob(job) { postActionJobs.add(job); } function flushPostActionJobs() { { console.log(formatLog(`flushPostActionJobs`, postActionJobs.size)); } try { postActionJobs.forEach((fn) => fn()); } finally { postActionJobs.clear(); } } class UniElement extends UniNode { constructor(id2, element, parentNodeId, refNodeId, nodeJson, propNames = []) { super(id2, element.tagName, parentNodeId, element); this.$props = reactive({}); this.$.__id = id2; this.$.__listeners = Object.create(null); this.$propNames = propNames; this._update = this.update.bind(this); this.init(nodeJson); this.insert(parentNodeId, refNodeId); } init(nodeJson) { if (hasOwn$1(nodeJson, "a")) { this.setAttrs(nodeJson.a); } if (hasOwn$1(nodeJson, "s")) { this.setAttr("style", nodeJson.s); } if (hasOwn$1(nodeJson, "e")) { this.addEvents(nodeJson.e); } super.init(nodeJson); watch(this.$props, () => { queuePostActionJob(this._update); }, { flush: "sync" }); this.update(); } setAttrs(attrs2) { Object.keys(attrs2).forEach((name) => { this.setAttr(name, attrs2[name]); }); } addEvents(events) { Object.keys(events).forEach((name) => { this.addEvent(name, events[name]); }); } addEvent(name, value) { patchEvent(this.$, name, value); } removeEvent(name) { patchEvent(this.$, name, -1); } setAttr(name, value) { if (name === ATTR_CLASS) { patchClass(this.$, value); } else if (name === ATTR_STYLE) { patchStyle(this.$, value); } else { this.setAttribute(name, value); } } removeAttr(name) { if (name === ATTR_CLASS) { patchClass(this.$, ""); } else if (name === ATTR_STYLE) { patchStyle(this.$, ""); } else { this.removeAttribute(name); } } setAttribute(name, value) { if (this.$propNames.indexOf(name) !== -1) { this.$props[name] = value; } else { this.$.setAttribute(name, value); } } removeAttribute(name) { if (this.$propNames.indexOf(name) !== -1) { delete this.$props[name]; } else { this.$.removeAttribute(name); } } update() { } } class UniComment extends UniNode { constructor(id2, parentNodeId, refNodeId) { super(id2, "#comment", parentNodeId, document.createComment("")); this.insert(parentNodeId, refNodeId); } } var text$1 = "uni-text[selectable] {\n cursor: auto;\n -webkit-user-select: text;\n user-select: text;\n}\n"; var subscriber = { mounted() { this._toggleListeners("subscribe", this.id); this.$watch("id", (newId, oldId) => { this._toggleListeners("unsubscribe", oldId, true); this._toggleListeners("subscribe", newId, true); }); }, beforeDestroy() { this._toggleListeners("unsubscribe", this.id); if (this._contextId) { this._toggleListeners("unsubscribe", this._contextId); } }, methods: { _toggleListeners(type, id2, watch2) { if (watch2 && !id2) { return; } if (!isFunction(this._handleSubscribe)) { return; } UniViewJSBridge[type](this.$page.id + "-" + this.$options.name.replace(/VUni([A-Z])/, "$1").toLowerCase() + "-" + id2, this._handleSubscribe); }, _getContextInfo() { const id2 = `context-${this._uid}`; if (!this._contextId) { this._toggleListeners("subscribe", id2); this._contextId = id2; } return { name: this.$options.name.replace(/VUni([A-Z])/, "$1").toLowerCase(), id: id2, page: this.$page.id }; } } }; function throttle(fn, wait) { let last = 0; let timeout; let waitCallback; const newFn = function(...arg) { const now = Date.now(); clearTimeout(timeout); waitCallback = () => { waitCallback = null; last = now; fn.apply(this, arg); }; if (now - last < wait) { timeout = setTimeout(waitCallback, wait - (now - last)); return; } waitCallback(); }; newFn.cancel = function() { clearTimeout(timeout); waitCallback = null; }; newFn.flush = function() { clearTimeout(timeout); waitCallback && waitCallback(); }; return newFn; } const _sfc_main = { name: "Audio", mixins: [subscriber], props: { id: { type: String, default: "" }, src: { type: String, default: "" }, loop: { type: [Boolean, String], default: false }, controls: { type: [Boolean, String], default: false }, poster: { type: String, default: "" }, name: { type: String, default: "" }, author: { type: String, default: "" } }, data() { return { playing: false, currentTime: this.getTime(0) }; }, watch: { src(val) { if (this.$refs.audio) { this.$refs.audio.src = this.$getRealPath(val); } } }, mounted() { const audio2 = this.$refs.audio; audio2.addEventListener("error", ($event) => { this.playing = false; this.$trigger("error", $event, {}); }); audio2.addEventListener("play", ($event) => { this.playing = true; this.$trigger("play", $event, {}); }); audio2.addEventListener("pause", ($event) => { this.playing = false; this.$trigger("pause", $event, {}); }); audio2.addEventListener("ended", ($event) => { this.playing = false; this.$trigger("ended", $event, {}); }); audio2.addEventListener("timeupdate", ($event) => { var currentTime = audio2.currentTime; this.currentTime = this.getTime(currentTime); var duration = audio2.duration; this.$trigger("timeupdate", $event, { currentTime, duration }); }); audio2.src = this.$getRealPath(this.src); }, methods: { _handleSubscribe({ type, data = {} }) { var audio2 = this.$refs.audio; switch (type) { case "setSrc": audio2.src = this.$getRealPath(data.src); this.$emit("update:src", data.src); break; case "play": audio2.play(); break; case "pause": audio2.pause(); break; case "seek": audio2.currentTime = data.position; break; } }, trigger() { if (this.playing) { this.$refs.audio.pause(); } else { this.$refs.audio.play(); } }, getTime(time) { var h2 = Math.floor(time / 3600); var m = Math.floor(time % 3600 / 60); var s = Math.floor(time % 3600 % 60); h2 = (h2 < 10 ? "0" : "") + h2; m = (m < 10 ? "0" : "") + m; s = (s < 10 ? "0" : "") + s; var str = m + ":" + s; if (h2 !== "00") { str = h2 + ":" + str; } return str; } } }; const _hoisted_1 = { class: "uni-audio-default" }; const _hoisted_2 = { class: "uni-audio-right" }; const _hoisted_3 = { class: "uni-audio-time" }; const _hoisted_4 = { class: "uni-audio-info" }; const _hoisted_5 = { class: "uni-audio-name" }; const _hoisted_6 = { class: "uni-audio-author" }; function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { return openBlock(), createBlock("uni-audio", mergeProps({ id: $props.id, controls: !!$props.controls }, _ctx.$attrs), [ createVNode("audio", { ref: "audio", loop: $props.loop, style: { "display": "none" } }, null, 8, ["loop"]), createVNode("div", _hoisted_1, [ createVNode("div", { style: "background-image: url(" + _ctx.$getRealPath($props.poster) + ");", class: "uni-audio-left" }, [ createVNode("div", { class: [{ play: !$data.playing, pause: $data.playing }, "uni-audio-button"], onClick: _cache[1] || (_cache[1] = (...args) => $options.trigger && $options.trigger(...args)) }, null, 2) ], 4), createVNode("div", _hoisted_2, [ createVNode("div", _hoisted_3, toDisplayString($data.currentTime), 1), createVNode("div", _hoisted_4, [ createVNode("div", _hoisted_5, toDisplayString($props.name), 1), createVNode("div", _hoisted_6, toDisplayString($props.author), 1) ]) ]) ]) ], 16, ["id", "controls"]); } _sfc_main.render = _sfc_render; function converPx(value) { if (/^-?\d+[ur]px$/i.test(value)) { return value.replace(/(^-?\d+)[ur]px$/i, (text2, num) => { return `${uni.upx2px(parseFloat(num))}px`; }); } else if (/^-?[\d\.]+$/.test(value)) { return `${value}px`; } return value || ""; } function converType(type) { return type.replace(/[A-Z]/g, (text2) => { return `-${text2.toLowerCase()}`; }).replace("webkit", "-webkit"); } function getStyle(action) { const animateTypes1 = [ "matrix", "matrix3d", "scale", "scale3d", "rotate3d", "skew", "translate", "translate3d" ]; const animateTypes2 = [ "scaleX", "scaleY", "scaleZ", "rotate", "rotateX", "rotateY", "rotateZ", "skewX", "skewY", "translateX", "translateY", "translateZ" ]; const animateTypes3 = ["opacity", "background-color"]; const animateTypes4 = ["width", "height", "left", "right", "top", "bottom"]; const animates = action.animates; const option = action.option; const transition = option.transition; const style = {}; const transform = []; animates.forEach((animate) => { let type = animate.type; let args = [...animate.args]; if (animateTypes1.concat(animateTypes2).includes(type)) { if (type.startsWith("rotate") || type.startsWith("skew")) { args = args.map((value) => parseFloat(value) + "deg"); } else if (type.startsWith("translate")) { args = args.map(converPx); } if (animateTypes2.indexOf(type) >= 0) { args.length = 1; } transform.push(`${type}(${args.join(",")})`); } else if (animateTypes3.concat(animateTypes4).includes(args[0])) { type = args[0]; const value = args[1]; style[type] = animateTypes4.includes(type) ? converPx(value) : value; } }); style.transform = style.webkitTransform = transform.join(" "); style.transition = style.webkitTransition = Object.keys(style).map((type) => `${converType(type)} ${transition.duration}ms ${transition.timingFunction} ${transition.delay}ms`).join(","); style.transformOrigin = style.webkitTransformOrigin = option.transformOrigin; return style; } function startAnimation(context) { const animation2 = context.animation; if (!animation2 || !animation2.actions || !animation2.actions.length) { return; } let index2 = 0; const actions = animation2.actions; const length = animation2.actions.length; function animate() { const action = actions[index2]; const transition = action.option.transition; const style = getStyle(action); Object.keys(style).forEach((key) => { context.$el.style[key] = style[key]; }); index2 += 1; if (index2 < length) { setTimeout(animate, transition.duration + transition.delay); } } setTimeout(() => { animate(); }, 0); } var animation = { props: ["animation"], watch: { animation: { deep: true, handler() { startAnimation(this); } } }, mounted() { startAnimation(this); } }; const defineBuiltInComponent = (options) => { const { props: props2, mixins } = options; if (!props2 || !props2.animation) { (mixins || (options.mixins = [])).push(animation); } return defineSystemComponent(options); }; const defineSystemComponent = (options) => { options.compatConfig = { MODE: 3 }; return defineComponent(options); }; const hoverProps = { hoverClass: { type: String, default: "none" }, hoverStopPropagation: { type: Boolean, default: false }, hoverStartTime: { type: [Number, String], default: 50 }, hoverStayTime: { type: [Number, String], default: 400 } }; function useHover(props2) { const hovering = ref(false); let hoverTouch = false; let hoverStartTimer; let hoverStayTimer; function hoverReset() { requestAnimationFrame(() => { clearTimeout(hoverStayTimer); hoverStayTimer = setTimeout(() => { hovering.value = false; }, parseInt(props2.hoverStayTime)); }); } function onTouchstartPassive(evt) { if (evt._hoverPropagationStopped) { return; } if (!props2.hoverClass || props2.hoverClass === "none" || props2.disabled) { return; } if (evt.touches.length > 1) { return; } if (props2.hoverStopPropagation) { evt._hoverPropagationStopped = true; } hoverTouch = true; hoverStartTimer = setTimeout(() => { hovering.value = true; if (!hoverTouch) { hoverReset(); } }, parseInt(props2.hoverStartTime)); } function onTouchend() { hoverTouch = false; if (hovering.value) { hoverReset(); } } function onTouchcancel() { hoverTouch = false; hovering.value = false; clearTimeout(hoverStartTimer); } return { hovering, binding: { onTouchstartPassive, onTouchend, onTouchcancel } }; } function useBooleanAttr(props2, keys) { if (isString(keys)) { keys = [keys]; } return keys.reduce((res, key) => { if (props2[key]) { res[key] = true; } return res; }, Object.create(null)); } function withWebEvent(fn) { return fn.__wwe = true, fn; } function useCustomEvent(ref2, emit2) { return (name, evt, detail) => { if (ref2.value) { emit2(name, normalizeCustomEvent(name, evt, ref2.value, detail || {})); } }; } function useNativeEvent(emit2) { return (name, evt) => { emit2(name, createNativeEvent(evt)); }; } function normalizeCustomEvent(name, domEvt, el, detail) { const target = normalizeTarget(el); return { type: detail.type || name, timeStamp: domEvt.timeStamp || 0, target, currentTarget: target, detail }; } const uniFormKey = PolySymbol("uniForm"); var Form = /* @__PURE__ */ defineBuiltInComponent({ name: "Form", emits: ["submit", "reset"], setup(_props, { slots, emit: emit2 }) { const rootRef = ref(null); provideForm(useCustomEvent(rootRef, emit2)); return () => createVNode("uni-form", { "ref": rootRef }, { default: () => [createVNode("span", null, [slots.default && slots.default()])] }, 512); } }); function provideForm(trigger2) { const fields = []; provide(uniFormKey, { addField(field) { fields.push(field); }, removeField(field) { fields.splice(fields.indexOf(field), 1); }, submit(evt) { trigger2("submit", evt, { value: fields.reduce((res, field) => { if (field.submit) { const [name, value] = field.submit(); name && (res[name] = value); } return res; }, Object.create(null)) }); }, reset(evt) { fields.forEach((field) => field.reset && field.reset()); trigger2("reset", evt); } }); return fields; } const uniLabelKey = PolySymbol("uniLabel"); const props$q = { for: { type: String, default: "" } }; var Label = /* @__PURE__ */ defineBuiltInComponent({ name: "Label", props: props$q, setup(props2, { slots }) { const pageId = useCurrentPageId(); const handlers = useProvideLabel(); const pointer = computed$1(() => props2.for || slots.default && slots.default.length); const _onClick = withWebEvent(($event) => { const EventTarget = $event.target; let stopPropagation = /^uni-(checkbox|radio|switch)-/.test(EventTarget.className); if (!stopPropagation) { stopPropagation = /^uni-(checkbox|radio|switch|button)$|^(svg|path)$/i.test(EventTarget.tagName); } if (stopPropagation) { return; } if (props2.for) { UniViewJSBridge.emit("uni-label-click-" + pageId + "-" + props2.for, $event, true); } else { handlers.length && handlers[0]($event, true); } }); return () => createVNode("uni-label", { "class": { "uni-label-pointer": pointer }, "onClick": _onClick }, { default: () => [slots.default && slots.default()] }, 8, ["class", "onClick"]); } }); function useProvideLabel() { const handlers = []; provide(uniLabelKey, { addHandler(handler) { handlers.push(handler); }, removeHandler(handler) { handlers.splice(handlers.indexOf(handler), 1); } }); return handlers; } function useListeners$1(props2, listeners) { _addListeners(props2.id, listeners); watch(() => props2.id, (newId, oldId) => { _removeListeners(oldId, listeners, true); _addListeners(newId, listeners, true); }); onUnmounted(() => { _removeListeners(props2.id, listeners); }); } function _addListeners(id2, listeners, watch2) { const pageId = useCurrentPageId(); if (watch2 && !id2) { return; } if (!isPlainObject(listeners)) { return; } Object.keys(listeners).forEach((name) => { if (watch2) { if (name.indexOf("@") !== 0 && name.indexOf("uni-") !== 0) { UniViewJSBridge.on(`uni-${name}-${pageId}-${id2}`, listeners[name]); } } else { if (name.indexOf("uni-") === 0) { UniViewJSBridge.on(name, listeners[name]); } else if (id2) { UniViewJSBridge.on(`uni-${name}-${pageId}-${id2}`, listeners[name]); } } }); } function _removeListeners(id2, listeners, watch2) { const pageId = useCurrentPageId(); if (watch2 && !id2) { return; } if (!isPlainObject(listeners)) { return; } Object.keys(listeners).forEach((name) => { if (watch2) { if (name.indexOf("@") !== 0 && name.indexOf("uni-") !== 0) { UniViewJSBridge.off(`uni-${name}-${pageId}-${id2}`, listeners[name]); } } else { if (name.indexOf("uni-") === 0) { UniViewJSBridge.off(name, listeners[name]); } else if (id2) { UniViewJSBridge.off(`uni-${name}-${pageId}-${id2}`, listeners[name]); } } }); } var Button = /* @__PURE__ */ defineBuiltInComponent({ name: "Button", props: { id: { type: String, default: "" }, hoverClass: { type: String, default: "button-hover" }, hoverStartTime: { type: [Number, String], default: 20 }, hoverStayTime: { type: [Number, String], default: 70 }, hoverStopPropagation: { type: Boolean, default: false }, disabled: { type: [Boolean, String], default: false }, formType: { type: String, default: "" }, openType: { type: String, default: "" }, loading: { type: [Boolean, String], default: false } }, setup(props2, { slots }) { const rootRef = ref(null); { initI18nButtonMsgsOnce(); } const uniForm = inject(uniFormKey, false); const { hovering, binding } = useHover(props2); const { t: t2 } = useI18n(); const onClick = withWebEvent((e2, isLabelClick) => { if (props2.disabled) { return e2.stopImmediatePropagation(); } if (isLabelClick) { rootRef.value.click(); } const formType = props2.formType; if (formType) { if (!uniForm) { return; } if (formType === "submit") { uniForm.submit(e2); } else if (formType === "reset") { uniForm.reset(e2); } return; } if (props2.openType === "feedback") { openFeedback(t2("uni.button.feedback.title"), t2("uni.button.feedback.send")); } }); const uniLabel = inject(uniLabelKey, false); if (uniLabel) { uniLabel.addHandler(onClick); onBeforeUnmount(() => { uniLabel.removeHandler(onClick); }); } useListeners$1(props2, { "label-click": onClick }); return () => { const hoverClass = props2.hoverClass; const booleanAttrs = useBooleanAttr(props2, "disabled"); const loadingAttrs = useBooleanAttr(props2, "loading"); const hasHoverClass = hoverClass && hoverClass !== "none"; return createVNode("uni-button", mergeProps({ "ref": rootRef, "onClick": onClick, "class": hasHoverClass && hovering.value ? hoverClass : "" }, hasHoverClass && binding, booleanAttrs, loadingAttrs), { default: () => [slots.default && slots.default()] }, 16, ["onClick", "class"]); }; } }); function openFeedback(titleText, sendText) { const feedback = plus.webview.create("https://service.dcloud.net.cn/uniapp/feedback.html", "feedback", { titleNView: { titleText, autoBackButton: true, backgroundColor: "#F7F7F7", titleColor: "#007aff", buttons: [{ text: sendText, color: "#007aff", fontSize: "16px", fontWeight: "bold", onclick: function() { feedback.evalJS('typeof mui !== "undefined" && mui.trigger(document.getElementById("submit"),"tap")'); } }] } }); feedback.show("slide-in-right"); } var ResizeSensor = /* @__PURE__ */ defineBuiltInComponent({ name: "ResizeSensor", props: { initial: { type: Boolean, default: false } }, emits: ["resize"], setup(props2, { emit: emit2 }) { const rootRef = ref(null); const reset2 = useResizeSensorReset(rootRef); const update = useResizeSensorUpdate(rootRef, emit2, reset2); useResizeSensorLifecycle(rootRef, props2, update, reset2); return () => createVNode("uni-resize-sensor", { "ref": rootRef, "onAnimationstartOnce": update }, { default: () => [createVNode("div", { "onScroll": update }, [createVNode("div", null, null)], 40, ["onScroll"]), createVNode("div", { "onScroll": update }, [createVNode("div", null, null)], 40, ["onScroll"])], _: 1 }, 8, ["onAnimationstartOnce"]); } }); function useResizeSensorUpdate(rootRef, emit2, reset2) { const size2 = reactive({ width: -1, height: -1 }); watch(() => extend({}, size2), (value) => emit2("resize", value)); return () => { const rootEl = rootRef.value; size2.width = rootEl.offsetWidth; size2.height = rootEl.offsetHeight; reset2(); }; } function useResizeSensorReset(rootRef) { return () => { const { firstElementChild, lastElementChild } = rootRef.value; firstElementChild.scrollLeft = 1e5; firstElementChild.scrollTop = 1e5; lastElementChild.scrollLeft = 1e5; lastElementChild.scrollTop = 1e5; }; } function useResizeSensorLifecycle(rootRef, props2, update, reset2) { onActivated(reset2); onMounted(() => { if (props2.initial) { nextTick(update); } const rootEl = rootRef.value; if (rootEl.offsetParent !== rootEl.parentElement) { rootEl.parentElement.style.position = "relative"; } if (!("AnimationEvent" in window)) { reset2(); } }); } const pixelRatio = /* @__PURE__ */ function() { const canvas2 = document.createElement("canvas"); canvas2.height = canvas2.width = 0; const context = canvas2.getContext("2d"); const backingStore = context.backingStorePixelRatio || context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio || context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || context.backingStorePixelRatio || 1; return (window.devicePixelRatio || 1) / backingStore; }(); function wrapper(canvas2) { canvas2.width = canvas2.offsetWidth * pixelRatio; canvas2.height = canvas2.offsetHeight * pixelRatio; canvas2.getContext("2d").__hidpi__ = true; } let isHidpi = false; function initHidpi() { if (isHidpi) { return; } isHidpi = true; const forEach = function(obj, func) { for (const key in obj) { if (hasOwn$1(obj, key)) { func(obj[key], key); } } }; const ratioArgs = { fillRect: "all", clearRect: "all", strokeRect: "all", moveTo: "all", lineTo: "all", arc: [0, 1, 2], arcTo: "all", bezierCurveTo: "all", isPointinPath: "all", isPointinStroke: "all", quadraticCurveTo: "all", rect: "all", translate: "all", createRadialGradient: "all", createLinearGradient: "all", setTransform: [4, 5] }; const proto = CanvasRenderingContext2D.prototype; proto.drawImageByCanvas = function(_super) { return function(canvas2, srcx, srcy, srcw, srch, desx, desy, desw, desh, isScale) { if (!this.__hidpi__) { return _super.apply(this, arguments); } srcx *= pixelRatio; srcy *= pixelRatio; srcw *= pixelRatio; srch *= pixelRatio; desx *= pixelRatio; desy *= pixelRatio; desw = isScale ? desw * pixelRatio : desw; desh = isScale ? desh * pixelRatio : desh; _super.call(this, canvas2, srcx, srcy, srcw, srch, desx, desy, desw, desh); }; }(proto.drawImage); if (pixelRatio !== 1) { forEach(ratioArgs, function(value, key) { proto[key] = function(_super) { return function() { if (!this.__hidpi__) { return _super.apply(this, arguments); } let args = Array.prototype.slice.call(arguments); if (value === "all") { args = args.map(function(a2) { return a2 * pixelRatio; }); } else if (Array.isArray(value)) { for (let i = 0; i < value.length; i++) { args[value[i]] *= pixelRatio; } } return _super.apply(this, args); }; }(proto[key]); }); proto.stroke = function(_super) { return function() { if (!this.__hidpi__) { return _super.apply(this, arguments); } this.lineWidth *= pixelRatio; _super.apply(this, arguments); this.lineWidth /= pixelRatio; }; }(proto.stroke); proto.fillText = function(_super) { return function() { if (!this.__hidpi__) { return _super.apply(this, arguments); } const args = Array.prototype.slice.call(arguments); args[1] *= pixelRatio; args[2] *= pixelRatio; var font2 = this.font; this.font = font2.replace(/(\d+\.?\d*)(px|em|rem|pt)/g, function(w, m, u) { return m * pixelRatio + u; }); _super.apply(this, args); this.font = font2; }; }(proto.fillText); proto.strokeText = function(_super) { return function() { if (!this.__hidpi__) { return _super.apply(this, arguments); } var args = Array.prototype.slice.call(arguments); args[1] *= pixelRatio; args[2] *= pixelRatio; var font2 = this.font; this.font = font2.replace(/(\d+\.?\d*)(px|em|rem|pt)/g, function(w, m, u) { return m * pixelRatio + u; }); _super.apply(this, args); this.font = font2; }; }(proto.strokeText); proto.drawImage = function(_super) { return function() { if (!this.__hidpi__) { return _super.apply(this, arguments); } this.scale(pixelRatio, pixelRatio); _super.apply(this, arguments); this.scale(1 / pixelRatio, 1 / pixelRatio); }; }(proto.drawImage); } } const initHidpiOnce = /* @__PURE__ */ once(() => { return initHidpi(); }); function $getRealPath(src) { return src ? getRealPath(src) : src; } function resolveColor(color) { color = color.slice(0); color[3] = color[3] / 255; return "rgba(" + color.join(",") + ")"; } function processTouches(target, touches) { const eventTarget = target; return Array.from(touches).map((touch) => { let boundingClientRect = eventTarget.getBoundingClientRect(); return { identifier: touch.identifier, x: touch.clientX - boundingClientRect.left, y: touch.clientY - boundingClientRect.top }; }); } let tempCanvas; function getTempCanvas(width = 0, height = 0) { if (!tempCanvas) { tempCanvas = document.createElement("canvas"); } tempCanvas.width = width; tempCanvas.height = height; return tempCanvas; } const props$p = { canvasId: { type: String, default: "" }, disableScroll: { type: [Boolean, String], default: false } }; var Canvas = /* @__PURE__ */ defineBuiltInComponent({ inheritAttrs: false, name: "Canvas", compatConfig: { MODE: 3 }, props: props$p, computed: { id() { return this.canvasId; } }, setup(props2, { emit: emit2, slots }) { initHidpiOnce(); const canvas2 = ref(null); const sensor = ref(null); const actionsWaiting = ref(false); const trigger2 = useNativeEvent(emit2); const { $attrs, $excludeAttrs, $listeners } = useAttrs({ excludeListeners: true }); const { _listeners } = useListeners(props2, $listeners, trigger2); const { _handleSubscribe, _resize } = useMethods(canvas2, actionsWaiting); useSubscribe(_handleSubscribe, useContextInfo(props2.canvasId), true); onMounted(() => { _resize(); }); return () => { const { canvasId, disableScroll } = props2; return createVNode("uni-canvas", mergeProps({ "canvas-id": canvasId, "disable-scroll": disableScroll }, $attrs.value, $excludeAttrs.value, _listeners.value), { default: () => [createVNode("canvas", { "ref": canvas2, "class": "uni-canvas-canvas", "width": "300", "height": "150" }, null, 512), createVNode("div", { "style": "position: absolute;top: 0;left: 0;width: 100%;height: 100%;overflow: hidden;" }, [slots.default && slots.default()]), createVNode(ResizeSensor, { "ref": sensor, "onResize": _resize }, null, 8, ["onResize"])], _: 1 }, 16, ["canvas-id", "disable-scroll"]); }; } }); function useListeners(props2, Listeners, trigger2) { const _listeners = computed$1(() => { let events = ["onTouchstart", "onTouchmove", "onTouchend"]; let _$listeners = Listeners.value; let $listeners = extend({}, (() => { let obj = {}; for (const key in _$listeners) { if (Object.prototype.hasOwnProperty.call(_$listeners, key)) { const event = _$listeners[key]; obj[key] = event; } } return obj; })()); events.forEach((event) => { let existing = $listeners[event]; let eventHandler = []; if (existing) { eventHandler.push(withWebEvent(($event) => { trigger2(event.replace("on", "").toLocaleLowerCase(), extend({}, (() => { let obj = {}; for (const key in $event) { obj[key] = $event[key]; } return obj; })(), { touches: processTouches($event.currentTarget, $event.touches), changedTouches: processTouches($event.currentTarget, $event.changedTouches) })); })); } if (props2.disableScroll && event === "onTouchmove") { eventHandler.push(onEventPrevent); } $listeners[event] = eventHandler; }); return $listeners; }); return { _listeners }; } function useMethods(canvasRef, actionsWaiting) { let _actionsDefer = []; let _images = {}; function _resize() { var canvas2 = canvasRef.value; if (canvas2.width > 0 && canvas2.height > 0) { var context = canvas2.getContext("2d"); var imageData = context.getImageData(0, 0, canvas2.width, canvas2.height); wrapper(canvas2); context.putImageData(imageData, 0, 0); } else { wrapper(canvas2); } } function actionsChanged({ actions, reserve }, resolve2) { if (!actions) { return; } if (actionsWaiting.value) { _actionsDefer.push([actions, reserve]); return; } var canvas2 = canvasRef.value; var c2d = canvas2.getContext("2d"); if (!reserve) { c2d.fillStyle = "#000000"; c2d.strokeStyle = "#000000"; c2d.shadowColor = "#000000"; c2d.shadowBlur = 0; c2d.shadowOffsetX = 0; c2d.shadowOffsetY = 0; c2d.setTransform(1, 0, 0, 1, 0, 0); c2d.clearRect(0, 0, canvas2.width, canvas2.height); } preloadImage(actions); for (let index2 = 0; index2 < actions.length; index2++) { const action = actions[index2]; let method = action.method; const data = action.data; if (/^set/.test(method) && method !== "setTransform") { const method1 = method[3].toLowerCase() + method.slice(4); let color; if (method1 === "fillStyle" || method1 === "strokeStyle") { if (data[0] === "normal") { color = resolveColor(data[1]); } else if (data[0] === "linear") { const LinearGradient = c2d.createLinearGradient(...data[1]); data[2].forEach(function(data2) { const offset = data2[0]; const color2 = resolveColor(data2[1]); LinearGradient.addColorStop(offset, color2); }); color = LinearGradient; } else if (data[0] === "radial") { const x = data[1][0]; const y = data[1][1]; const r = data[1][2]; const LinearGradient = c2d.createRadialGradient(x, y, 0, x, y, r); data[2].forEach(function(data2) { const offset = data2[0]; const color2 = resolveColor(data2[1]); LinearGradient.addColorStop(offset, color2); }); color = LinearGradient; } else if (data[0] === "pattern") { const loaded = checkImageLoaded(data[1], actions.slice(index2 + 1), resolve2, function(image2) { if (image2) { c2d[method1] = c2d.createPattern(image2, data[2]); } }); if (!loaded) { break; } continue; } c2d[method1] = color; } else if (method1 === "globalAlpha") { c2d[method1] = Number(data[0]) / 255; } else if (method1 === "shadow") { var _ = ["shadowOffsetX", "shadowOffsetY", "shadowBlur", "shadowColor"]; data.forEach(function(color_, method_) { c2d[_[method_]] = _[method_] === "shadowColor" ? resolveColor(color_) : color_; }); } else if (method1 === "fontSize") { const font2 = c2d.__font__ || c2d.font; c2d.__font__ = c2d.font = font2.replace(/\d+\.?\d*px/, data[0] + "px"); } else if (method1 === "lineDash") { c2d.setLineDash(data[0]); c2d.lineDashOffset = data[1] || 0; } else if (method1 === "textBaseline") { if (data[0] === "normal") { data[0] = "alphabetic"; } c2d[method1] = data[0]; } else if (method1 === "font") { c2d.__font__ = c2d.font = data[0]; } else { c2d[method1] = data[0]; } } else if (method === "fillPath" || method === "strokePath") { method = method.replace(/Path/, ""); c2d.beginPath(); data.forEach(function(data_) { c2d[data_.method].apply(c2d, data_.data); }); c2d[method](); } else if (method === "fillText") { c2d.fillText.apply(c2d, data); } else if (method === "drawImage") { var A = function() { var dataArray = [...data]; var url = dataArray[0]; var otherData = dataArray.slice(1); _images = _images || {}; if (checkImageLoaded(url, actions.slice(index2 + 1), resolve2, function(image2) { if (image2) { c2d.drawImage.apply(c2d, [image2].concat([...otherData.slice(4, 8)], [...otherData.slice(0, 4)])); } })) return "break"; }(); if (A === "break") { break; } } else { if (method === "clip") { data.forEach(function(data_) { c2d[data_.method].apply(c2d, data_.data); }); c2d.clip(); } else { c2d[method].apply(c2d, data); } } } if (!actionsWaiting.value) { resolve2({ errMsg: "drawCanvas:ok" }); } } function preloadImage(actions) { actions.forEach(function(action) { var method = action.method; var data = action.data; var src = ""; if (method === "drawImage") { src = data[0]; src = $getRealPath(src); data[0] = src; } else if (method === "setFillStyle" && data[0] === "pattern") { src = data[1]; src = $getRealPath(src); data[1] = src; } if (src && !_images[src]) { loadImage(); } function loadImage() { const image2 = _images[src] = new Image(); image2.onload = function() { image2.ready = true; }; if (navigator.vendor === "Google Inc.") { if (src.indexOf("file://") === 0) { image2.crossOrigin = "anonymous"; } image2.src = src; return; } getSameOriginUrl(src).then((src2) => { image2.src = src2; }).catch(() => { image2.src = src; }); } }); } function checkImageLoaded(src, actions, resolve2, fn) { var image2 = _images[src]; if (image2.ready) { fn(image2); return true; } else { _actionsDefer.unshift([actions, true]); actionsWaiting.value = true; image2.onload = function() { image2.ready = true; fn(image2); actionsWaiting.value = false; var actions2 = _actionsDefer.slice(0); _actionsDefer = []; for (var action = actions2.shift(); action; ) { actionsChanged({ actions: action[0], reserve: action[1] }, resolve2); action = actions2.shift(); } }; return false; } } function getImageData({ x = 0, y = 0, width, height, destWidth, destHeight, hidpi = true, dataType, quality = 1, type = "png" }, resolve2) { const canvas2 = canvasRef.value; let data; const maxWidth = canvas2.offsetWidth - x; width = width ? Math.min(width, maxWidth) : maxWidth; const maxHeight = canvas2.offsetHeight - y; height = height ? Math.min(height, maxHeight) : maxHeight; if (!hidpi) { if (!destWidth && !destHeight) { destWidth = Math.round(width * pixelRatio); destHeight = Math.round(height * pixelRatio); } else if (!destWidth) { destWidth = Math.round(width / height * destHeight); } else if (!destHeight) { destHeight = Math.round(height / width * destWidth); } } else { destWidth = width; destHeight = height; } const newCanvas = getTempCanvas(destWidth, destHeight); const context = newCanvas.getContext("2d"); if (type === "jpeg" || type === "jpg") { type = "jpeg"; context.fillStyle = "#fff"; context.fillRect(0, 0, destWidth, destHeight); } context.__hidpi__ = true; context.drawImageByCanvas(canvas2, x, y, width, height, 0, 0, destWidth, destHeight, false); let result; try { let compressed; if (dataType === "base64") { data = newCanvas.toDataURL(`image/${type}`, quality); } else { const imgData = context.getImageData(0, 0, destWidth, destHeight); if (true) { const pako = require("pako"); data = pako.deflateRaw(imgData.data, { to: "string" }); compressed = true; } } result = { data, compressed, width: destWidth, height: destHeight }; } catch (error) { result = { errMsg: `canvasGetImageData:fail ${error}` }; } newCanvas.height = newCanvas.width = 0; context.__hidpi__ = false; if (!resolve2) { return result; } else { resolve2(result); } } function putImageData({ data, x, y, width, height, compressed }, resolve2) { try { if (!height) { height = Math.round(data.length / 4 / width); } const canvas2 = getTempCanvas(width, height); const context = canvas2.getContext("2d"); if (compressed) { const pako = require("pako"); data = pako.inflateRaw(data); } context.putImageData(new ImageData(new Uint8ClampedArray(data), width, height), 0, 0); canvasRef.value.getContext("2d").drawImage(canvas2, x, y, width, height); canvas2.height = canvas2.width = 0; } catch (error) { resolve2({ errMsg: "canvasPutImageData:fail" }); return; } resolve2({ errMsg: "canvasPutImageData:ok" }); } function toTempFilePath({ x = 0, y = 0, width, height, destWidth, destHeight, fileType, quality, dirname }, resolve2) { const res = getImageData({ x, y, width, height, destWidth, destHeight, hidpi: false, dataType: "base64", type: fileType, quality }); if (!res.data || !res.data.length) { resolve2({ errMsg: res.errMsg.replace("canvasPutImageData", "toTempFilePath") }); return; } saveImage(res.data); } const methods2 = { actionsChanged, getImageData, putImageData, toTempFilePath }; function _handleSubscribe(type, data, resolve2) { let method = methods2[type]; if (type.indexOf("_") !== 0 && typeof method === "function") { method(data, resolve2); } } return extend(methods2, { _resize, _handleSubscribe }); } const uniCheckGroupKey = PolySymbol("uniCheckGroup"); const props$o = { name: { type: String, default: "" } }; var CheckboxGroup = /* @__PURE__ */ defineBuiltInComponent({ name: "CheckboxGroup", props: props$o, emits: ["change"], setup(props2, { emit: emit2, slots }) { const rootRef = ref(null); const trigger2 = useCustomEvent(rootRef, emit2); useProvideCheckGroup(props2, trigger2); return () => { return createVNode("uni-checkbox-group", { "ref": rootRef }, { default: () => [slots.default && slots.default()] }, 512); }; } }); function useProvideCheckGroup(props2, trigger2) { const fields = []; const getFieldsValue = () => fields.reduce((res, field) => { if (field.value.checkboxChecked) { res.push(field.value.value); } return res; }, new Array()); provide(uniCheckGroupKey, { addField(field) { fields.push(field); }, removeField(field) { fields.splice(fields.indexOf(field), 1); }, checkboxChange($event) { trigger2("change", $event, { value: getFieldsValue() }); } }); const uniForm = inject(uniFormKey, false); if (uniForm) { uniForm.addField({ submit: () => { let data = ["", null]; if (props2.name !== "") { data[0] = props2.name; data[1] = getFieldsValue(); } return data; } }); } return getFieldsValue; } const props$n = { checked: { type: [Boolean, String], default: false }, id: { type: String, default: "" }, disabled: { type: [Boolean, String], default: false }, color: { type: String, default: "#007aff" }, value: { type: String, default: "" } }; var Checkbox = /* @__PURE__ */ defineBuiltInComponent({ name: "Checkbox", props: props$n, setup(props2, { slots }) { const checkboxChecked = ref(props2.checked); const checkboxValue = ref(props2.value); watch([() => props2.checked, () => props2.value], ([newChecked, newModelValue]) => { checkboxChecked.value = newChecked; checkboxValue.value = newModelValue; }); const reset2 = () => { checkboxChecked.value = false; }; const { uniCheckGroup, uniLabel } = useCheckboxInject(checkboxChecked, checkboxValue, reset2); const _onClick = ($event) => { if (props2.disabled) { return; } checkboxChecked.value = !checkboxChecked.value; uniCheckGroup && uniCheckGroup.checkboxChange($event); }; if (!!uniLabel) { uniLabel.addHandler(_onClick); onBeforeUnmount(() => { uniLabel.removeHandler(_onClick); }); } useListeners$1(props2, { "label-click": _onClick }); return () => { const { booleanAttrs } = useBooleanAttr(props2, "disabled"); return createVNode("uni-checkbox", mergeProps(booleanAttrs, { "onClick": _onClick }), { default: () => [createVNode("div", { "class": "uni-checkbox-wrapper" }, [createVNode("div", { "class": ["uni-checkbox-input", { "uni-checkbox-input-disabled": props2.disabled }] }, [checkboxChecked.value ? createSvgIconVNode(ICON_PATH_SUCCESS_NO_CIRCLE, props2.color, 22) : ""], 2), slots.default && slots.default()])] }, 16, ["onClick"]); }; } }); function useCheckboxInject(checkboxChecked, checkboxValue, reset2) { const field = computed$1(() => ({ checkboxChecked: Boolean(checkboxChecked.value), value: checkboxValue.value })); const formField = { reset: reset2 }; const uniCheckGroup = inject(uniCheckGroupKey, false); if (!!uniCheckGroup) { uniCheckGroup.addField(field); } const uniForm = inject(uniFormKey, false); if (!!uniForm) { uniForm.addField(formField); } const uniLabel = inject(uniLabelKey, false); onBeforeUnmount(() => { uniCheckGroup && uniCheckGroup.removeField(field); uniForm && uniForm.removeField(formField); }); return { uniCheckGroup, uniForm, uniLabel }; } let resetTimer; let isAndroid; let osVersion; let keyboardHeight; let keyboardChangeCallback; let webviewStyle; { plusReady(() => { isAndroid = plus.os.name === "Android"; osVersion = plus.os.version || ""; }); document.addEventListener("keyboardchange", function(event) { keyboardHeight = event.height; keyboardChangeCallback && keyboardChangeCallback(); }, false); } function iosHideKeyboard() { } function setSoftinputTemporary(props2, el, reset2) { plusReady(() => { const MODE_ADJUSTRESIZE = "adjustResize"; const MODE_ADJUSTPAN = "adjustPan"; const MODE_NOTHING = "nothing"; const currentWebview = plus.webview.currentWebview(); const style = webviewStyle || currentWebview.getStyle() || {}; const options = { mode: reset2 || style.softinputMode === MODE_ADJUSTRESIZE ? MODE_ADJUSTRESIZE : props2.adjustPosition ? MODE_ADJUSTPAN : MODE_NOTHING, position: { top: 0, height: 0 } }; if (options.mode === MODE_ADJUSTPAN) { const rect = el.getBoundingClientRect(); options.position.top = rect.top; options.position.height = rect.height + (Number(props2.cursorSpacing) || 0); } currentWebview.setSoftinputTemporary(options); }); } function setSoftinputNavBar(props2, state) { if (props2.showConfirmBar === "auto") { delete state.softinputNavBar; return; } plusReady(() => { const currentWebview = plus.webview.currentWebview(); const { softinputNavBar } = currentWebview.getStyle() || {}; const showConfirmBar = softinputNavBar !== "none"; if (showConfirmBar !== props2.showConfirmBar) { state.softinputNavBar = softinputNavBar || "auto"; currentWebview.setStyle({ softinputNavBar: props2.showConfirmBar ? "auto" : "none" }); } else { delete state.softinputNavBar; } }); } function resetSoftinputNavBar(state) { const softinputNavBar = state.softinputNavBar; if (softinputNavBar) { plusReady(() => { const currentWebview = plus.webview.currentWebview(); currentWebview.setStyle({ softinputNavBar }); }); } } const props$m = { cursorSpacing: { type: [Number, String], default: 0 }, showConfirmBar: { type: [Boolean, String], default: "auto" }, adjustPosition: { type: [Boolean, String], default: true }, autoBlur: { type: [Boolean, String], default: false } }; const emit$1 = ["keyboardheightchange"]; function useKeyboard(props2, elRef, trigger2) { const state = {}; function initKeyboard(el) { let focus; const keyboardChange = () => { trigger2("keyboardheightchange", {}, { height: keyboardHeight, duration: 0.25 }); if (focus && keyboardHeight === 0) { setSoftinputTemporary(props2, el); } if (props2.autoBlur && focus && keyboardHeight === 0 && (isAndroid || parseInt(osVersion) >= 13)) { document.activeElement.blur(); } }; el.addEventListener("focus", () => { focus = true; clearTimeout(resetTimer); document.addEventListener("click", iosHideKeyboard, false); { keyboardChangeCallback = keyboardChange; if (keyboardHeight) { trigger2("keyboardheightchange", {}, { height: keyboardHeight, duration: 0 }); } setSoftinputNavBar(props2, state); setSoftinputTemporary(props2, el); } }); { if (isAndroid) { el.addEventListener("click", () => { if (!props2.disabled && !props2.readOnly && focus && keyboardHeight === 0) { setSoftinputTemporary(props2, el); } }); } if (!isAndroid) { if (parseInt(osVersion) < 12) { el.addEventListener("touchstart", () => { if (!props2.disabled && !props2.readOnly && !focus) { setSoftinputTemporary(props2, el); } }); } if (parseFloat(osVersion) >= 14.6 && !webviewStyle) { plusReady(() => { const currentWebview = plus.webview.currentWebview(); webviewStyle = currentWebview.getStyle() || {}; }); } } } const onKeyboardHide = () => { document.removeEventListener("click", iosHideKeyboard, false); { keyboardChangeCallback = null; if (keyboardHeight) { trigger2("keyboardheightchange", {}, { height: 0, duration: 0 }); } resetSoftinputNavBar(state); if (isAndroid) { resetTimer = setTimeout(() => { setSoftinputTemporary(props2, el, true); }, 300); } } if (String(navigator.vendor).indexOf("Apple") === 0) { document.documentElement.scrollTo(document.documentElement.scrollLeft, document.documentElement.scrollTop); } }; el.addEventListener("blur", () => { el.blur(); focus = false; onKeyboardHide(); }); } watch(() => elRef.value, (el) => initKeyboard(el)); } var startTag = /^<([-A-Za-z0-9_]+)((?:\s+[a-zA-Z_:][-a-zA-Z0-9_:.]*(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/; var endTag = /^<\/([-A-Za-z0-9_]+)[^>]*>/; var attr = /([a-zA-Z_:][-a-zA-Z0-9_:.]*)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/g; var empty = /* @__PURE__ */ makeMap("area,base,basefont,br,col,frame,hr,img,input,link,meta,param,embed,command,keygen,source,track,wbr"); var block = /* @__PURE__ */ makeMap("a,address,article,applet,aside,audio,blockquote,button,canvas,center,dd,del,dir,div,dl,dt,fieldset,figcaption,figure,footer,form,frameset,h1,h2,h3,h4,h5,h6,header,hgroup,hr,iframe,isindex,li,map,menu,noframes,noscript,object,ol,output,p,pre,section,script,table,tbody,td,tfoot,th,thead,tr,ul,video"); var inline = /* @__PURE__ */ makeMap("abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,textarea,tt,u,var"); var closeSelf = /* @__PURE__ */ makeMap("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr"); var fillAttrs = /* @__PURE__ */ makeMap("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected"); var special = /* @__PURE__ */ makeMap("script,style"); function HTMLParser(html, handler) { var index2; var chars; var match; var stack2 = []; var last = html; stack2.last = function() { return this[this.length - 1]; }; while (html) { chars = true; if (!stack2.last() || !special[stack2.last()]) { if (html.indexOf(""); if (index2 >= 0) { if (handler.comment) { handler.comment(html.substring(4, index2)); } html = html.substring(index2 + 3); chars = false; } } else if (html.indexOf("]*>"), function(all, text3) { text3 = text3.replace(/|/g, "$1$2"); if (handler.chars) { handler.chars(text3); } return ""; }); parseEndTag("", stack2.last()); } if (html == last) { throw "Parse Error: " + html; } last = html; } parseEndTag(); function parseStartTag(tag, tagName, rest, unary) { tagName = tagName.toLowerCase(); if (block[tagName]) { while (stack2.last() && inline[stack2.last()]) { parseEndTag("", stack2.last()); } } if (closeSelf[tagName] && stack2.last() == tagName) { parseEndTag("", tagName); } unary = empty[tagName] || !!unary; if (!unary) { stack2.push(tagName); } if (handler.start) { var attrs2 = []; rest.replace(attr, function(match2, name) { var value = arguments[2] ? arguments[2] : arguments[3] ? arguments[3] : arguments[4] ? arguments[4] : fillAttrs[name] ? name : ""; attrs2.push({ name, value, escaped: value.replace(/(^|[^\\])"/g, '$1\\"') }); }); if (handler.start) { handler.start(tagName, attrs2, unary); } } } function parseEndTag(tag, tagName) { if (!tagName) { var pos = 0; } else { for (var pos = stack2.length - 1; pos >= 0; pos--) { if (stack2[pos] == tagName) { break; } } } if (pos >= 0) { for (var i = stack2.length - 1; i >= pos; i--) { if (handler.end) { handler.end(stack2[i]); } } stack2.length = pos; } } } function makeMap(str) { var obj = {}; var items = str.split(","); for (var i = 0; i < items.length; i++) { obj[items[i]] = true; } return obj; } const scripts = {}; function loadScript(globalName, src, callback) { const globalObject = typeof globalName === "string" ? window[globalName] : globalName; if (globalObject) { callback(); return; } let callbacks2 = scripts[src]; if (!callbacks2) { callbacks2 = scripts[src] = []; const script = document.createElement("script"); script.src = src; document.body.appendChild(script); script.onload = function() { callbacks2.forEach((callback2) => callback2()); delete scripts[src]; }; } callbacks2.push(callback); } function divider(Quill) { const BlockEmbed = Quill.import("blots/block/embed"); class Divider extends BlockEmbed { } Divider.blotName = "divider"; Divider.tagName = "HR"; return { "formats/divider": Divider }; } function ins(Quill) { const Inline = Quill.import("blots/inline"); class Ins extends Inline { } Ins.blotName = "ins"; Ins.tagName = "INS"; return { "formats/ins": Ins }; } function align(Quill) { const { Scope, Attributor } = Quill.import("parchment"); const config = { scope: Scope.BLOCK, whitelist: ["left", "right", "center", "justify"] }; const AlignStyle = new Attributor.Style("align", "text-align", config); return { "formats/align": AlignStyle }; } function direction(Quill) { const { Scope, Attributor } = Quill.import("parchment"); const config = { scope: Scope.BLOCK, whitelist: ["rtl"] }; const DirectionStyle = new Attributor.Style("direction", "direction", config); return { "formats/direction": DirectionStyle }; } function list(Quill) { const Parchment = Quill.import("parchment"); const Container = Quill.import("blots/container"); const ListItem = Quill.import("formats/list/item"); class List extends Container { static create(value) { const tagName = value === "ordered" ? "OL" : "UL"; const node = super.create(tagName); if (value === "checked" || value === "unchecked") { node.setAttribute("data-checked", value === "checked"); } return node; } static formats(domNode) { if (domNode.tagName === "OL") return "ordered"; if (domNode.tagName === "UL") { if (domNode.hasAttribute("data-checked")) { return domNode.getAttribute("data-checked") === "true" ? "checked" : "unchecked"; } else { return "bullet"; } } return void 0; } constructor(domNode) { super(domNode); const listEventHandler = (e2) => { if (e2.target.parentNode !== domNode) return; const format = this.statics.formats(domNode); const blot = Parchment.find(e2.target); if (format === "checked") { blot.format("list", "unchecked"); } else if (format === "unchecked") { blot.format("list", "checked"); } }; domNode.addEventListener("click", listEventHandler); } format(name, value) { if (this.children.length > 0) { this.children.tail.format(name, value); } } formats() { return { [this.statics.blotName]: this.statics.formats(this.domNode) }; } insertBefore(blot, ref2) { if (blot instanceof ListItem) { super.insertBefore(blot, ref2); } else { const index2 = ref2 == null ? this.length() : ref2.offset(this); const after = this.split(index2); after.parent.insertBefore(blot, after); } } optimize(context) { super.optimize(context); const next = this.next; if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && next.domNode.tagName === this.domNode.tagName && next.domNode.getAttribute("data-checked") === this.domNode.getAttribute("data-checked")) { next.moveChildren(this); next.remove(); } } replace(target) { if (target.statics.blotName !== this.statics.blotName) { const item = Parchment.create(this.statics.defaultChild); target.moveChildren(item); this.appendChild(item); } super.replace(target); } } List.blotName = "list"; List.scope = Parchment.Scope.BLOCK_BLOT; List.tagName = ["OL", "UL"]; List.defaultChild = "list-item"; List.allowedChildren = [ListItem]; return { "formats/list": List }; } function background(Quill) { const { Scope } = Quill.import("parchment"); const BackgroundStyle = Quill.import("formats/background"); const BackgroundColorStyle = new BackgroundStyle.constructor("backgroundColor", "background-color", { scope: Scope.INLINE }); return { "formats/backgroundColor": BackgroundColorStyle }; } function box(Quill) { const { Scope, Attributor } = Quill.import("parchment"); const config = { scope: Scope.BLOCK }; const margin = [ "margin", "marginTop", "marginBottom", "marginLeft", "marginRight" ]; const padding = [ "padding", "paddingTop", "paddingBottom", "paddingLeft", "paddingRight" ]; const result = {}; margin.concat(padding).forEach((name) => { result[`formats/${name}`] = new Attributor.Style(name, hyphenate(name), config); }); return result; } function font(Quill) { const { Scope, Attributor } = Quill.import("parchment"); const config = { scope: Scope.INLINE }; const font2 = [ "font", "fontSize", "fontStyle", "fontVariant", "fontWeight", "fontFamily" ]; const result = {}; font2.forEach((name) => { result[`formats/${name}`] = new Attributor.Style(name, hyphenate(name), config); }); return result; } function text(Quill) { const { Scope, Attributor } = Quill.import("parchment"); const text2 = [ { name: "lineHeight", scope: Scope.BLOCK }, { name: "letterSpacing", scope: Scope.INLINE }, { name: "textDecoration", scope: Scope.INLINE }, { name: "textIndent", scope: Scope.BLOCK } ]; const result = {}; text2.forEach(({ name, scope }) => { result[`formats/${name}`] = new Attributor.Style(name, hyphenate(name), { scope }); }); return result; } function image$1(Quill) { const Image2 = Quill.import("formats/image"); const ATTRIBUTES = [ "alt", "height", "width", "data-custom", "class", "data-local" ]; Image2.sanitize = (url) => url; Image2.formats = function formats(domNode) { return ATTRIBUTES.reduce(function(formats2, attribute) { if (domNode.hasAttribute(attribute)) { formats2[attribute] = domNode.getAttribute(attribute); } return formats2; }, {}); }; const format = Image2.prototype.format; Image2.prototype.format = function(name, value) { if (ATTRIBUTES.indexOf(name) > -1) { if (value) { this.domNode.setAttribute(name, value); } else { this.domNode.removeAttribute(name); } } else { format.call(this, name, value); } }; } function register(Quill) { const formats = { divider, ins, align, direction, list, background, box, font, text, image: image$1 }; const options = {}; Object.values(formats).forEach((value) => extend(options, value(Quill))); Quill.register(options, true); } function useQuill(props2, rootRef, trigger2) { let quillReady; let skipMatcher; let quill; let textChanging = false; watch(() => props2.readOnly, (value) => { if (quillReady) { quill.enable(!value); if (!value) { quill.blur(); } } }); watch(() => props2.placeholder, (value) => { if (quillReady) { quill.root.setAttribute("data-placeholder", value); } }); function html2delta(html) { const tags = [ "span", "strong", "b", "ins", "em", "i", "u", "a", "del", "s", "sub", "sup", "img", "div", "p", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "ol", "ul", "li", "br" ]; let content = ""; let disable; HTMLParser(html, { start: function(tag, attrs2, unary) { if (!tags.includes(tag)) { disable = !unary; return; } disable = false; const arrts = attrs2.map(({ name, value }) => `${name}="${value}"`).join(" "); const start = `<${tag} ${arrts} ${unary ? "/" : ""}>`; content += start; }, end: function(tag) { if (!disable) { content += ``; } }, chars: function(text2) { if (!disable) { content += text2; } } }); skipMatcher = true; const delta = quill.clipboard.convert(content); skipMatcher = false; return delta; } function getContents() { const html = quill.root.innerHTML; const text2 = quill.getText(); const delta = quill.getContents(); return { html, text: text2, delta }; } let oldStatus = {}; function updateStatus(range) { const status = range ? quill.getFormat(range) : {}; const keys = Object.keys(status); if (keys.length !== Object.keys(oldStatus).length || keys.find((key) => status[key] !== oldStatus[key])) { oldStatus = status; trigger2("statuschange", {}, status); } } function initQuill(imageResizeModules) { const Quill = window.Quill; register(Quill); const options = { toolbar: false, readOnly: props2.readOnly, placeholder: props2.placeholder }; if (imageResizeModules.length) { Quill.register("modules/ImageResize", window.ImageResize.default); options.modules = { ImageResize: { modules: imageResizeModules } }; } const rootEl = rootRef.value; quill = new Quill(rootEl, options); const $el = quill.root; const events = ["focus", "blur", "input"]; events.forEach((name) => { $el.addEventListener(name, ($event) => { if (name === "input") { $event.stopPropagation(); } else { trigger2(name, $event, getContents()); } }); }); quill.on("text-change", () => { if (!textChanging) { trigger2("input", {}, getContents()); } }); quill.on("selection-change", updateStatus); quill.on("scroll-optimize", () => { const range = quill.selection.getRange()[0]; updateStatus(range); }); quill.clipboard.addMatcher(Node.ELEMENT_NODE, (node, delta) => { if (skipMatcher) { return delta; } if (delta.ops) { delta.ops = delta.ops.filter(({ insert }) => typeof insert === "string").map(({ insert }) => ({ insert })); } return delta; }); quillReady = true; trigger2("ready", {}, {}); } onMounted(() => { const imageResizeModules = []; if (props2.showImgSize) { imageResizeModules.push("DisplaySize"); } if (props2.showImgToolbar) { imageResizeModules.push("Toolbar"); } if (props2.showImgResize) { imageResizeModules.push("Resize"); } const quillSrc = "./__uniappquill.js"; loadScript(window.Quill, quillSrc, () => { if (imageResizeModules.length) { const imageResizeSrc = "./__uniappquillimageresize.js"; loadScript(window.ImageResize, imageResizeSrc, () => { initQuill(imageResizeModules); }); } else { initQuill(imageResizeModules); } }); }); const id2 = useContextInfo(); useSubscribe((type, data, resolve2) => { const { options, callbackId } = data; let res; let range; let errMsg; if (quillReady) { const Quill = window.Quill; switch (type) { case "format": { let { name = "", value = false } = options; range = quill.getSelection(true); let format = quill.getFormat(range)[name] || false; if (["bold", "italic", "underline", "strike", "ins"].includes(name)) { value = !format; } else if (name === "direction") { value = value === "rtl" && format ? false : value; const align2 = quill.getFormat(range).align; if (value === "rtl" && !align2) { quill.format("align", "right", "user"); } else if (!value && align2 === "right") { quill.format("align", false, "user"); } } else if (name === "indent") { const rtl = quill.getFormat(range).direction === "rtl"; value = value === "+1"; if (rtl) { value = !value; } value = value ? "+1" : "-1"; } else { if (name === "list") { value = value === "check" ? "unchecked" : value; format = format === "checked" ? "unchecked" : format; } value = format && format !== (value || false) || !format && value ? value : !format; } quill.format(name, value, "user"); } break; case "insertDivider": range = quill.getSelection(true); quill.insertText(range.index, "\n", "user"); quill.insertEmbed(range.index + 1, "divider", true, "user"); quill.setSelection(range.index + 2, 0, "silent"); break; case "insertImage": { range = quill.getSelection(true); const { src = "", alt = "", width = "", height = "", extClass = "", data: data2 = {} } = options; const path = getRealPath(src); quill.insertEmbed(range.index, "image", path, "user"); const local = /^(file|blob):/.test(path) ? path : false; textChanging = true; quill.formatText(range.index, 1, "data-local", local); quill.formatText(range.index, 1, "alt", alt); quill.formatText(range.index, 1, "width", width); quill.formatText(range.index, 1, "height", height); quill.formatText(range.index, 1, "class", extClass); textChanging = false; quill.formatText(range.index, 1, "data-custom", Object.keys(data2).map((key) => `${key}=${data2[key]}`).join("&")); quill.setSelection(range.index + 1, 0, "silent"); } break; case "insertText": { range = quill.getSelection(true); const { text: text2 = "" } = options; quill.insertText(range.index, text2, "user"); quill.setSelection(range.index + text2.length, 0, "silent"); } break; case "setContents": { const { delta, html } = options; if (typeof delta === "object") { quill.setContents(delta, "silent"); } else if (typeof html === "string") { quill.setContents(html2delta(html), "silent"); } else { errMsg = "contents is missing"; } } break; case "getContents": res = getContents(); break; case "clear": quill.setText(""); break; case "removeFormat": { range = quill.getSelection(true); const parchment = Quill.import("parchment"); if (range.length) { quill.removeFormat(range.index, range.length, "user"); } else { Object.keys(quill.getFormat(range)).forEach((key) => { if (parchment.query(key, parchment.Scope.INLINE)) { quill.format(key, false); } }); } } break; case "undo": quill.history.undo(); break; case "redo": quill.history.redo(); break; case "blur": quill.blur(); break; case "getSelectionText": range = quill.selection.savedRange; res = { text: "" }; if (range && range.length !== 0) { res.text = quill.getText(range.index, range.length); } break; case "scrollIntoView": quill.scrollIntoView(); break; } updateStatus(range); } else { errMsg = "not ready"; } if (callbackId) { resolve2({ callbackId, data: extend({}, res, { errMsg: `${type}:${errMsg ? "fail " + errMsg : "ok"}` }) }); } }, id2, true); } const props$l = /* @__PURE__ */ extend({}, props$m, { id: { type: String, default: "" }, readOnly: { type: [Boolean, String], default: false }, placeholder: { type: String, default: "" }, showImgSize: { type: [Boolean, String], default: false }, showImgToolbar: { type: [Boolean, String], default: false }, showImgResize: { type: [Boolean, String], default: false } }); var Editor = /* @__PURE__ */ defineBuiltInComponent({ name: "Editor", props: props$l, emit: ["ready", "focus", "blur", "input", "statuschange", ...emit$1], setup(props2, { emit: emit2 }) { const rootRef = ref(null); const trigger2 = useCustomEvent(rootRef, emit2); useQuill(props2, rootRef, trigger2); useKeyboard(props2, rootRef, trigger2); return () => { return createVNode("uni-editor", { "ref": rootRef, "id": props2.id, "class": "ql-container" }, null, 8, ["id"]); }; } }); const INFO_COLOR = "#10aeff"; const WARN_COLOR = "#f76260"; const GREY_COLOR = "#b2b2b2"; const CANCEL_COLOR = "#f43530"; const ICONS = { success: { d: ICON_PATH_SUCCESS, c: PRIMARY_COLOR }, success_no_circle: { d: ICON_PATH_SUCCESS_NO_CIRCLE, c: PRIMARY_COLOR }, info: { d: ICON_PATH_INFO, c: INFO_COLOR }, warn: { d: ICON_PATH_WARN, c: WARN_COLOR }, waiting: { d: ICON_PATH_WAITING, c: INFO_COLOR }, cancel: { d: ICON_PATH_CANCEL, c: CANCEL_COLOR }, download: { d: ICON_PATH_DOWNLOAD, c: PRIMARY_COLOR }, search: { d: ICON_PATH_SEARCH, c: GREY_COLOR }, clear: { d: ICON_PATH_CLEAR, c: GREY_COLOR } }; var Icon = /* @__PURE__ */ defineBuiltInComponent({ name: "Icon", props: { type: { type: String, required: true, default: "" }, size: { type: [String, Number], default: 23 }, color: { type: String, default: "" } }, setup(props2) { const path = computed$1(() => ICONS[props2.type]); return () => { const { value } = path; return createVNode("uni-icon", null, { default: () => [value && value.d && createSvgIconVNode(value.d, props2.color || value.c, rpx2px$1(props2.size))] }); }; } }); const props$k = { src: { type: String, default: "" }, mode: { type: String, default: "scaleToFill" }, lazyLoad: { type: [Boolean, String], default: false }, draggable: { type: Boolean, default: true } }; const FIX_MODES = { widthFix: ["offsetWidth", "height"], heightFix: ["offsetHeight", "width"] }; const IMAGE_MODES = { aspectFit: ["center center", "contain"], aspectFill: ["center center", "cover"], widthFix: [, "100% 100%"], heightFix: [, "100% 100%"], top: ["center top"], bottom: ["center bottom"], center: ["center center"], left: ["left center"], right: ["right center"], "top left": ["left top"], "top right": ["right top"], "bottom left": ["left bottom"], "bottom right": ["right bottom"] }; var Image$1 = /* @__PURE__ */ defineBuiltInComponent({ name: "Image", props: props$k, setup(props2, { emit: emit2 }) { const rootRef = ref(null); const state = useImageState(rootRef, props2); const trigger2 = useCustomEvent(rootRef, emit2); const { fixSize } = useImageSize(rootRef, props2, state); useImageLoader(state, { trigger: trigger2, fixSize }); return () => { const { mode } = props2; const { imgSrc, modeStyle } = state; return createVNode("uni-image", { "ref": rootRef }, { default: () => [createVNode("div", { "style": modeStyle }, null, 4), imgSrc ? createVNode("img", { "src": imgSrc, "draggable": props2.draggable }, null, 8, ["src", "draggable"]) : createVNode("img", null, null), FIX_MODES[mode] ? createVNode(ResizeSensor, { "onResize": fixSize }, null, 8, ["onResize"]) : createVNode("span", null, null)], _: 1 }, 512); }; } }); function useImageState(rootRef, props2) { const imgSrc = ref(""); const modeStyleRef = computed$1(() => { let size2 = "auto"; let position = ""; const opts = IMAGE_MODES[props2.mode]; if (!opts) { position = "0% 0%"; size2 = "100% 100%"; } else { opts[0] && (position = opts[0]); opts[1] && (size2 = opts[1]); } const srcVal = imgSrc.value; return `background-image:${srcVal ? 'url("' + srcVal + '")' : "none"};background-position:${position};background-size:${size2};background-repeat:no-repeat;`; }); const state = reactive({ rootEl: rootRef, src: computed$1(() => props2.src ? getRealPath(props2.src) : ""), origWidth: 0, origHeight: 0, origStyle: { width: "", height: "" }, modeStyle: modeStyleRef, imgSrc }); onMounted(() => { const rootEl = rootRef.value; const style = rootEl.style; state.origWidth = Number(style.width) || 0; state.origHeight = Number(style.height) || 0; }); return state; } function useImageLoader(state, { trigger: trigger2, fixSize }) { let img; const setState = (width = 0, height = 0, imgSrc = "") => { state.origWidth = width; state.origHeight = height; state.imgSrc = imgSrc; }; const loadImage = (src) => { if (!src) { resetImage(); setState(); return; } if (!img) { img = new Image(); } img.onload = (evt) => { const { width, height } = img; setState(width, height, src); fixSize(); resetImage(); trigger2("load", evt, { width, height }); }; img.onerror = (evt) => { setState(); resetImage(); trigger2("error", evt, { errMsg: `GET ${state.src} 404 (Not Found)` }); }; img.src = src; }; const resetImage = () => { if (img) { img.onload = null; img.onerror = null; img = null; } }; watch(() => state.src, (value) => loadImage(value)); onMounted(() => loadImage(state.src)); onBeforeUnmount(() => resetImage()); } const isChrome = navigator.vendor === "Google Inc."; function fixNumber(num) { if (isChrome && num > 10) { num = Math.round(num / 2) * 2; } return num; } function useImageSize(rootRef, props2, state) { const fixSize = () => { const { mode } = props2; const names = FIX_MODES[mode]; if (!names) { return; } const { origWidth, origHeight } = state; const ratio = origWidth && origHeight ? origWidth / origHeight : 0; if (!ratio) { return; } const rootEl = rootRef.value; const value = rootEl[names[0]]; if (value) { rootEl.style[names[1]] = fixNumber(value / ratio) + "px"; } { window.dispatchEvent(new CustomEvent("updateview")); } }; const resetSize = () => { const { style } = rootRef.value; const { origStyle: { width, height } } = state; style.width = width; style.height = height; }; watch(() => props2.mode, (value, oldValue) => { if (FIX_MODES[oldValue]) { resetSize(); } if (FIX_MODES[value]) { fixSize(); } }); return { fixSize, resetSize }; } const passiveOptions$1 = passive(true); const states = []; let userInteract = 0; let inited; function addInteractListener(vm) { if (!inited) { const eventNames = [ "touchstart", "touchmove", "touchend", "mousedown", "mouseup" ]; eventNames.forEach((eventName) => { document.addEventListener(eventName, function() { states.forEach((vm2) => { vm2.userAction = true; userInteract++; setTimeout(() => { userInteract--; if (!userInteract) { vm2.userAction = false; } }, 0); }); }, passiveOptions$1); }); inited = true; } states.push(vm); } function removeInteractListener(vm) { const index2 = states.indexOf(vm); if (index2 >= 0) { states.splice(index2, 1); } } function useUserAction() { const state = reactive({ userAction: false }); onMounted(() => { addInteractListener(state); }); onBeforeUnmount(() => { removeInteractListener(state); }); return { state }; } function useScopedAttrs() { const state = reactive({ attrs: {} }); onMounted(() => { let instance = getCurrentInstance(); while (instance) { const scopeId = instance.type.__scopeId; if (scopeId) { state.attrs[scopeId] = ""; } instance = instance.proxy && instance.proxy.$mpType === "page" ? null : instance.parent; } }); return { state }; } function useFormField(nameKey, value) { const uniForm = inject(uniFormKey, false); if (!uniForm) { return; } const instance = getCurrentInstance(); const ctx = { submit() { const proxy = instance.proxy; return [ proxy[nameKey], typeof value === "string" ? proxy[value] : value.value ]; }, reset() { if (typeof value === "string") { instance.proxy[value] = ""; } else { value.value = ""; } } }; uniForm.addField(ctx); onBeforeUnmount(() => { uniForm.removeField(ctx); }); } function getSelectedTextRange(_, resolve2) { const activeElement = document.activeElement; if (!activeElement) { return resolve2({}); } const data = {}; if (["input", "textarea"].includes(activeElement.tagName.toLowerCase())) { data.start = activeElement.selectionStart; data.end = activeElement.selectionEnd; } resolve2(data); } const UniViewJSBridgeSubscribe = function() { registerViewMethod(getCurrentPageId(), "getSelectedTextRange", getSelectedTextRange); }; const FOCUS_DELAY = 200; let startTime; function getValueString(value) { return value === null ? "" : String(value); } const props$j = /* @__PURE__ */ extend({}, { name: { type: String, default: "" }, modelValue: { type: [String, Number], default: "" }, value: { type: [String, Number], default: "" }, disabled: { type: [Boolean, String], default: false }, autoFocus: { type: [Boolean, String], default: false }, focus: { type: [Boolean, String], default: false }, cursor: { type: [Number, String], default: -1 }, selectionStart: { type: [Number, String], default: -1 }, selectionEnd: { type: [Number, String], default: -1 }, type: { type: String, default: "text" }, password: { type: [Boolean, String], default: false }, placeholder: { type: String, default: "" }, placeholderStyle: { type: String, default: "" }, placeholderClass: { type: String, default: "" }, maxlength: { type: [Number, String], default: 140 }, confirmType: { type: String, default: "done" } }, props$m); const emit = [ "input", "focus", "blur", "update:value", "update:modelValue", "update:focus", ...emit$1 ]; function useBase(props2, rootRef, emit2) { const fieldRef = ref(null); const trigger2 = useCustomEvent(rootRef, emit2); const selectionStart = computed$1(() => { const selectionStart2 = Number(props2.selectionStart); return isNaN(selectionStart2) ? -1 : selectionStart2; }); const selectionEnd = computed$1(() => { const selectionEnd2 = Number(props2.selectionEnd); return isNaN(selectionEnd2) ? -1 : selectionEnd2; }); const cursor = computed$1(() => { const cursor2 = Number(props2.cursor); return isNaN(cursor2) ? -1 : cursor2; }); const maxlength = computed$1(() => { var maxlength2 = Number(props2.maxlength); return isNaN(maxlength2) ? 140 : maxlength2; }); const value = getValueString(props2.modelValue) || getValueString(props2.value); const state = reactive({ value, valueOrigin: value, maxlength, focus: props2.focus, composing: false, selectionStart, selectionEnd, cursor }); watch(() => state.focus, (val) => emit2("update:focus", val)); watch(() => state.maxlength, (val) => state.value = state.value.slice(0, val)); return { fieldRef, state, trigger: trigger2 }; } function useValueSync(props2, state, emit2, trigger2) { const valueChangeFn = debounce((val) => { state.value = getValueString(val); }, 100); watch(() => props2.modelValue, valueChangeFn); watch(() => props2.value, valueChangeFn); const triggerInputFn = throttle((event, detail) => { valueChangeFn.cancel(); emit2("update:modelValue", detail.value); emit2("update:value", detail.value); trigger2("input", event, detail); }, 100); const triggerInput = (event, detail, force) => { valueChangeFn.cancel(); triggerInputFn(event, detail); if (force) { triggerInputFn.flush(); } }; onBeforeMount(() => { valueChangeFn.cancel(); triggerInputFn.cancel(); }); return { trigger: trigger2, triggerInput }; } function useAutoFocus(props2, fieldRef) { const { state: userActionState } = useUserAction(); const needFocus = computed$1(() => props2.autoFocus || props2.focus); function focus() { if (!needFocus.value) { return; } const field = fieldRef.value; if (!field || !("plus" in window)) { setTimeout(focus, 100); return; } { const timeout = FOCUS_DELAY - (Date.now() - startTime); if (timeout > 0) { setTimeout(focus, timeout); return; } field.focus(); if (!userActionState.userAction) { plus.key.showSoftKeybord(); } } } function blur() { const field = fieldRef.value; if (field) { field.blur(); } } watch(() => props2.focus, (value) => { if (value) { focus(); } else { blur(); } }); onMounted(() => { startTime = startTime || Date.now(); if (needFocus.value) { nextTick(focus); } }); } function useEvent(fieldRef, state, trigger2, triggerInput, beforeInput) { function checkSelection() { const field = fieldRef.value; if (field && state.focus && state.selectionStart > -1 && state.selectionEnd > -1) { field.selectionStart = state.selectionStart; field.selectionEnd = state.selectionEnd; } } function checkCursor() { const field = fieldRef.value; if (field && state.focus && state.selectionStart < 0 && state.selectionEnd < 0 && state.cursor > -1) { field.selectionEnd = field.selectionStart = state.cursor; } } function initField() { const field = fieldRef.value; const onFocus = function(event) { state.focus = true; trigger2("focus", event, { value: state.value }); checkSelection(); checkCursor(); }; const onInput = function(event, force) { event.stopPropagation(); if (typeof beforeInput === "function" && beforeInput(event, state) === false) { return; } state.value = field.value; if (!state.composing) { triggerInput(event, { value: field.value, cursor: field.selectionEnd }, force); } }; const onBlur = function(event) { if (state.composing) { state.composing = false; onInput(event, true); } state.focus = false; trigger2("blur", event, { value: state.value, cursor: event.target.selectionEnd }); }; field.addEventListener("change", (event) => event.stopPropagation()); field.addEventListener("focus", onFocus); field.addEventListener("blur", onBlur); field.addEventListener("input", onInput); field.addEventListener("compositionstart", (event) => { event.stopPropagation(); state.composing = true; }); field.addEventListener("compositionend", (event) => { event.stopPropagation(); if (state.composing) { state.composing = false; onInput(event); } }); } watch([() => state.selectionStart, () => state.selectionEnd], checkSelection); watch(() => state.cursor, checkCursor); watch(() => fieldRef.value, initField); } function useField(props2, rootRef, emit2, beforeInput) { UniViewJSBridgeSubscribe(); const { fieldRef, state, trigger: trigger2 } = useBase(props2, rootRef, emit2); const { triggerInput } = useValueSync(props2, state, emit2, trigger2); useAutoFocus(props2, fieldRef); useKeyboard(props2, fieldRef, trigger2); const { state: scopedAttrsState } = useScopedAttrs(); useFormField("name", state); useEvent(fieldRef, state, trigger2, triggerInput, beforeInput); const fixDisabledColor = String(navigator.vendor).indexOf("Apple") === 0 && CSS.supports("image-orientation:from-image"); return { fieldRef, state, scopedAttrsState, fixDisabledColor, trigger: trigger2 }; } const props$i = /* @__PURE__ */ extend({}, props$j, { placeholderClass: { type: String, default: "input-placeholder" }, textContentType: { type: String, default: "" } }); var Input = /* @__PURE__ */ defineBuiltInComponent({ name: "Input", props: props$i, emits: ["confirm", ...emit], setup(props2, { emit: emit2 }) { const INPUT_TYPES = ["text", "number", "idcard", "digit", "password", "tel"]; const AUTOCOMPLETES = ["off", "one-time-code"]; const type = computed$1(() => { let type2 = ""; switch (props2.type) { case "text": if (props2.confirmType === "search") { type2 = "search"; } break; case "idcard": type2 = "text"; break; case "digit": type2 = "number"; break; default: type2 = ~INPUT_TYPES.includes(props2.type) ? props2.type : "text"; break; } return props2.password ? "password" : type2; }); const autocomplete = computed$1(() => { const camelizeIndex = AUTOCOMPLETES.indexOf(props2.textContentType); const kebabCaseIndex = AUTOCOMPLETES.indexOf(hyphenate(props2.textContentType)); const index2 = camelizeIndex !== -1 ? camelizeIndex : kebabCaseIndex !== -1 ? kebabCaseIndex : 0; return AUTOCOMPLETES[index2]; }); let cache2 = ref(""); let resetCache; const rootRef = ref(null); const { fieldRef, state, scopedAttrsState, fixDisabledColor, trigger: trigger2 } = useField(props2, rootRef, emit2, (event, state2) => { const input2 = event.target; if (type.value === "number") { if (resetCache) { input2.removeEventListener("blur", resetCache); resetCache = null; } if (input2.validity && !input2.validity.valid) { if (!cache2.value && event.data === "-" || cache2.value[0] === "-" && event.inputType === "deleteContentBackward") { cache2.value = "-"; state2.value = ""; resetCache = () => { cache2.value = input2.value = ""; }; input2.addEventListener("blur", resetCache); return false; } cache2.value = state2.value = input2.value = cache2.value === "-" ? "" : cache2.value; return false; } else { cache2.value = input2.value; } const maxlength = state2.maxlength; if (maxlength > 0 && input2.value.length > maxlength) { input2.value = input2.value.slice(0, maxlength); state2.value = input2.value; return false; } } }); const NUMBER_TYPES = ["number", "digit"]; const step = computed$1(() => NUMBER_TYPES.includes(props2.type) ? "0.000000000000000001" : ""); function onKeyUpEnter(event) { if (event.key !== "Enter") { return; } event.stopPropagation(); trigger2("confirm", event, { value: event.target.value }); } return () => { let inputNode = props2.disabled && fixDisabledColor ? createVNode("input", { "ref": fieldRef, "value": state.value, "tabindex": "-1", "readonly": !!props2.disabled, "type": type.value, "maxlength": state.maxlength, "step": step.value, "class": "uni-input-input", "onFocus": (event) => event.target.blur() }, null, 40, ["value", "readonly", "type", "maxlength", "step", "onFocus"]) : createVNode("input", { "ref": fieldRef, "value": state.value, "disabled": !!props2.disabled, "type": type.value, "maxlength": state.maxlength, "step": step.value, "enterkeyhint": props2.confirmType, "pattern": props2.type === "number" ? "[0-9]*" : void 0, "class": "uni-input-input", "autocomplete": autocomplete.value, "onKeyup": onKeyUpEnter }, null, 40, ["value", "disabled", "type", "maxlength", "step", "enterkeyhint", "pattern", "autocomplete", "onKeyup"]); return createVNode("uni-input", { "ref": rootRef }, { default: () => [createVNode("div", { "class": "uni-input-wrapper" }, [withDirectives(createVNode("div", mergeProps(scopedAttrsState.attrs, { "style": props2.placeholderStyle, "class": ["uni-input-placeholder", props2.placeholderClass] }), [props2.placeholder], 16), [[vShow, !(state.value.length || cache2.value === "-")]]), props2.confirmType === "search" ? createVNode("form", { "action": "", "onSubmit": (event) => event.preventDefault(), "class": "uni-input-form" }, [inputNode], 40, ["onSubmit"]) : inputNode])] }, 512); }; } }); function entries(obj) { return Object.keys(obj).map((key) => [key, obj[key]]); } const DEFAULT_EXCLUDE_KEYS = ["class", "style"]; const LISTENER_PREFIX = /^on[A-Z]+/; const useAttrs = (params = {}) => { const { excludeListeners = false, excludeKeys = [] } = params; const instance = getCurrentInstance(); const attrs2 = shallowRef({}); const listeners = shallowRef({}); const excludeAttrs = shallowRef({}); const allExcludeKeys = excludeKeys.concat(DEFAULT_EXCLUDE_KEYS); instance.attrs = reactive(instance.attrs); watchEffect(() => { const res = entries(instance.attrs).reduce((acc, [key, val]) => { if (allExcludeKeys.includes(key)) { acc.exclude[key] = val; } else if (LISTENER_PREFIX.test(key)) { if (!excludeListeners) { acc.attrs[key] = val; } acc.listeners[key] = val; } else { acc.attrs[key] = val; } return acc; }, { exclude: {}, attrs: {}, listeners: {} }); attrs2.value = res.attrs; listeners.value = res.listeners; excludeAttrs.value = res.exclude; }); return { $attrs: attrs2, $listeners: listeners, $excludeAttrs: excludeAttrs }; }; let webview$2; let pullToRefreshStyle; function initScrollBounce() { { plusReady(() => { if (!webview$2) { webview$2 = plus.webview.currentWebview(); } if (!pullToRefreshStyle) { pullToRefreshStyle = (webview$2.getStyle() || {}).pullToRefresh || {}; } }); } } function disableScrollBounce({ disable }) { { if (pullToRefreshStyle && pullToRefreshStyle.support) { webview$2.setPullToRefresh(Object.assign({}, pullToRefreshStyle, { support: !disable })); } } } function flatVNode(nodes) { const array = []; if (Array.isArray(nodes)) { nodes.forEach((vnode) => { if (isVNode(vnode)) { if (vnode.type === Fragment) { array.push(...flatVNode(vnode.children)); } else { array.push(vnode); } } else if (Array.isArray(vnode)) { array.push(...flatVNode(vnode)); } }); } return array; } function useRebuild(callback) { const instance = getCurrentInstance(); instance.rebuild = callback; } const props$h = { scaleArea: { type: Boolean, default: false } }; var MovableArea = /* @__PURE__ */ defineBuiltInComponent({ inheritAttrs: false, name: "MovableArea", props: props$h, setup(props2, { slots }) { const rootRef = ref(null); const _isMounted = ref(false); let { setContexts, events: movableAreaEvents } = useMovableAreaState(props2, rootRef); const { $listeners, $attrs, $excludeAttrs } = useAttrs(); const _listeners = $listeners.value; let events = ["onTouchstart", "onTouchmove", "onTouchend"]; events.forEach((event) => { let existing = _listeners[event]; let ours = movableAreaEvents[`_${event}`]; _listeners[event] = existing ? [].concat(existing, ours) : ours; }); onMounted(() => { movableAreaEvents._resize(); initScrollBounce(); _isMounted.value = true; }); let movableViewItems = []; const originMovableViewContexts = []; function updateMovableViewContexts() { const contexts = []; for (let index2 = 0; index2 < movableViewItems.length; index2++) { let movableViewItem = movableViewItems[index2]; if (!(movableViewItem instanceof Element)) { movableViewItem = movableViewItem.el; } const movableViewContext = originMovableViewContexts.find((context) => movableViewItem === context.rootRef.value); if (movableViewContext) { contexts.push(markRaw(movableViewContext)); } } setContexts(contexts); } { useRebuild(() => { movableViewItems = rootRef.value.children; updateMovableViewContexts(); }); } const addMovableViewContext = (movableViewContext) => { originMovableViewContexts.push(movableViewContext); updateMovableViewContexts(); }; const removeMovableViewContext = (movableViewContext) => { const index2 = originMovableViewContexts.indexOf(movableViewContext); if (index2 >= 0) { originMovableViewContexts.splice(index2, 1); updateMovableViewContexts(); } }; provide("_isMounted", _isMounted); provide("movableAreaRootRef", rootRef); provide("addMovableViewContext", addMovableViewContext); provide("removeMovableViewContext", removeMovableViewContext); return () => { slots.default && slots.default(); return createVNode("uni-movable-area", mergeProps({ "ref": rootRef }, $attrs.value, $excludeAttrs.value, _listeners), { default: () => [createVNode(ResizeSensor, { "onReize": movableAreaEvents._resize }, null, 8, ["onReize"]), movableViewItems], _: 2 }, 16); }; } }); function calc(e2) { return Math.sqrt(e2.x * e2.x + e2.y * e2.y); } function useMovableAreaState(props2, rootRef) { const width = ref(0); const height = ref(0); const gapV = reactive({ x: null, y: null }); const pinchStartLen = ref(null); let _scaleMovableView = null; let movableViewContexts = []; function _updateScale(e2) { if (e2 && e2 !== 1) { if (props2.scaleArea) { movableViewContexts.forEach(function(item) { item._setScale(e2); }); } else { if (_scaleMovableView) { _scaleMovableView._setScale(e2); } } } } function _find(target, items = movableViewContexts) { let root = rootRef.value; function get2(node) { for (let i = 0; i < items.length; i++) { const item = items[i]; if (node === item.rootRef.value) { return item; } } if (node === root || node === document.body || node === document) { return null; } return get2(node.parentNode); } return get2(target); } const _onTouchstart = withWebEvent((t2) => { disableScrollBounce({ disable: true }); let i = t2.touches; if (i) { if (i.length > 1) { let r = { x: i[1].pageX - i[0].pageX, y: i[1].pageY - i[0].pageY }; pinchStartLen.value = calc(r); gapV.x = r.x; gapV.y = r.y; if (!props2.scaleArea) { let touch0 = _find(i[0].target); let touch1 = _find(i[1].target); _scaleMovableView = touch0 && touch0 === touch1 ? touch0 : null; } } } }); const _onTouchmove = withWebEvent((t2) => { let n = t2.touches; if (n) { if (n.length > 1) { t2.preventDefault(); let i = { x: n[1].pageX - n[0].pageX, y: n[1].pageY - n[0].pageY }; if (gapV.x !== null && pinchStartLen.value && pinchStartLen.value > 0) { let r = calc(i) / pinchStartLen.value; _updateScale(r); } gapV.x = i.x; gapV.y = i.y; } } }); const _onTouchend = withWebEvent((e2) => { disableScrollBounce({ disable: false }); let t2 = e2.touches; if (!(t2 && t2.length)) { if (e2.changedTouches) { gapV.x = 0; gapV.y = 0; pinchStartLen.value = null; if (props2.scaleArea) { movableViewContexts.forEach(function(item) { item._endScale(); }); } else { if (_scaleMovableView) { _scaleMovableView._endScale(); } } } } }); function _resize() { _getWH(); movableViewContexts.forEach(function(item, index2) { item.setParent(); }); } function _getWH() { let style = window.getComputedStyle(rootRef.value); let rect = rootRef.value.getBoundingClientRect(); width.value = rect.width - ["Left", "Right"].reduce(function(all, item) { const LEFT = "border" + item + "Width"; const RIGHT = "padding" + item; return all + parseFloat(style[LEFT]) + parseFloat(style[RIGHT]); }, 0); height.value = rect.height - ["Top", "Bottom"].reduce(function(all, item) { const TOP = "border" + item + "Width"; const BOTTOM = "padding" + item; return all + parseFloat(style[TOP]) + parseFloat(style[BOTTOM]); }, 0); } provide("movableAreaWidth", width); provide("movableAreaHeight", height); return { setContexts(contexts) { movableViewContexts = contexts; }, events: { _onTouchstart, _onTouchmove, _onTouchend, _resize } }; } const addListenerToElement = function(element, type, callback, capture) { element.addEventListener(type, ($event) => { if (typeof callback === "function") { if (callback($event) === false) { if (typeof $event.cancelable !== "undefined" ? $event.cancelable : true) { $event.preventDefault(); } $event.stopPropagation(); } } }, { passive: false }); }; let __mouseMoveEventListener; let __mouseUpEventListener; function useTouchtrack(element, method, useCancel) { onBeforeUnmount(() => { document.removeEventListener("mousemove", __mouseMoveEventListener); document.removeEventListener("mouseup", __mouseUpEventListener); }); let x0 = 0; let y0 = 0; let x1 = 0; let y1 = 0; const fn = function($event, state, x, y) { if (method({ target: $event.target, currentTarget: $event.currentTarget, preventDefault: $event.preventDefault.bind($event), stopPropagation: $event.stopPropagation.bind($event), touches: $event.touches, changedTouches: $event.changedTouches, detail: { state, x, y, dx: x - x0, dy: y - y0, ddx: x - x1, ddy: y - y1, timeStamp: $event.timeStamp } }) === false) { return false; } }; let $eventOld = null; let hasTouchStart; let hasMouseDown; addListenerToElement(element, "touchstart", function($event) { hasTouchStart = true; if ($event.touches.length === 1 && !$eventOld) { $eventOld = $event; x0 = x1 = $event.touches[0].pageX; y0 = y1 = $event.touches[0].pageY; return fn($event, "start", x0, y0); } }); addListenerToElement(element, "mousedown", function($event) { hasMouseDown = true; if (!hasTouchStart && !$eventOld) { $eventOld = $event; x0 = x1 = $event.pageX; y0 = y1 = $event.pageY; return fn($event, "start", x0, y0); } }); addListenerToElement(element, "touchmove", function($event) { if ($event.touches.length === 1 && $eventOld) { const res = fn($event, "move", $event.touches[0].pageX, $event.touches[0].pageY); x1 = $event.touches[0].pageX; y1 = $event.touches[0].pageY; return res; } }); const mouseMoveEventListener = __mouseMoveEventListener = function($event) { if (!hasTouchStart && hasMouseDown && $eventOld) { const res = fn($event, "move", $event.pageX, $event.pageY); x1 = $event.pageX; y1 = $event.pageY; return res; } }; document.addEventListener("mousemove", mouseMoveEventListener); addListenerToElement(element, "touchend", function($event) { if ($event.touches.length === 0 && $eventOld) { hasTouchStart = false; $eventOld = null; return fn($event, "end", $event.changedTouches[0].pageX, $event.changedTouches[0].pageY); } }); const mouseUpEventListener = __mouseUpEventListener = function($event) { hasMouseDown = false; if (!hasTouchStart && $eventOld) { $eventOld = null; return fn($event, "end", $event.pageX, $event.pageY); } }; document.addEventListener("mouseup", mouseUpEventListener); addListenerToElement(element, "touchcancel", function($event) { if ($eventOld) { hasTouchStart = false; const $eventTemp = $eventOld; $eventOld = null; return fn($event, useCancel ? "cancel" : "end", $eventTemp.touches[0].pageX, $eventTemp.touches[0].pageY); } }); } function e(e2, t2, n) { return e2 > t2 - n && e2 < t2 + n; } function t(t2, n) { return e(t2, 0, n); } function Decline() { } Decline.prototype.x = function(e2) { return Math.sqrt(e2); }; function Friction$1(e2, t2) { this._m = e2; this._f = 1e3 * t2; this._startTime = 0; this._v = 0; } Friction$1.prototype.setV = function(x, y) { var n = Math.pow(Math.pow(x, 2) + Math.pow(y, 2), 0.5); this._x_v = x; this._y_v = y; this._x_a = -this._f * this._x_v / n; this._y_a = -this._f * this._y_v / n; this._t = Math.abs(x / this._x_a) || Math.abs(y / this._y_a); this._lastDt = null; this._startTime = new Date().getTime(); }; Friction$1.prototype.setS = function(x, y) { this._x_s = x; this._y_s = y; }; Friction$1.prototype.s = function(t2) { if (t2 === void 0) { t2 = (new Date().getTime() - this._startTime) / 1e3; } if (t2 > this._t) { t2 = this._t; this._lastDt = t2; } var x = this._x_v * t2 + 0.5 * this._x_a * Math.pow(t2, 2) + this._x_s; var y = this._y_v * t2 + 0.5 * this._y_a * Math.pow(t2, 2) + this._y_s; if (this._x_a > 0 && x < this._endPositionX || this._x_a < 0 && x > this._endPositionX) { x = this._endPositionX; } if (this._y_a > 0 && y < this._endPositionY || this._y_a < 0 && y > this._endPositionY) { y = this._endPositionY; } return { x, y }; }; Friction$1.prototype.ds = function(t2) { if (t2 === void 0) { t2 = (new Date().getTime() - this._startTime) / 1e3; } if (t2 > this._t) { t2 = this._t; } return { dx: this._x_v + this._x_a * t2, dy: this._y_v + this._y_a * t2 }; }; Friction$1.prototype.delta = function() { return { x: -1.5 * Math.pow(this._x_v, 2) / this._x_a || 0, y: -1.5 * Math.pow(this._y_v, 2) / this._y_a || 0 }; }; Friction$1.prototype.dt = function() { return -this._x_v / this._x_a; }; Friction$1.prototype.done = function() { var t2 = e(this.s().x, this._endPositionX) || e(this.s().y, this._endPositionY) || this._lastDt === this._t; this._lastDt = null; return t2; }; Friction$1.prototype.setEnd = function(x, y) { this._endPositionX = x; this._endPositionY = y; }; Friction$1.prototype.reconfigure = function(m, f2) { this._m = m; this._f = 1e3 * f2; }; function Spring$1(m, k, c) { this._m = m; this._k = k; this._c = c; this._solution = null; this._endPosition = 0; this._startTime = 0; } Spring$1.prototype._solve = function(e2, t2) { var n = this._c; var i = this._m; var r = this._k; var o2 = n * n - 4 * i * r; if (o2 === 0) { const a2 = -n / (2 * i); const s = e2; const l = t2 / (a2 * e2); return { x: function(e3) { return (s + l * e3) * Math.pow(Math.E, a2 * e3); }, dx: function(e3) { var t3 = Math.pow(Math.E, a2 * e3); return a2 * (s + l * e3) * t3 + l * t3; } }; } if (o2 > 0) { const c = (-n - Math.sqrt(o2)) / (2 * i); const u = (-n + Math.sqrt(o2)) / (2 * i); const d = (t2 - c * e2) / (u - c); const h2 = e2 - d; return { x: function(e3) { var t3; var n2; if (e3 === this._t) { t3 = this._powER1T; n2 = this._powER2T; } this._t = e3; if (!t3) { t3 = this._powER1T = Math.pow(Math.E, c * e3); } if (!n2) { n2 = this._powER2T = Math.pow(Math.E, u * e3); } return h2 * t3 + d * n2; }, dx: function(e3) { var t3; var n2; if (e3 === this._t) { t3 = this._powER1T; n2 = this._powER2T; } this._t = e3; if (!t3) { t3 = this._powER1T = Math.pow(Math.E, c * e3); } if (!n2) { n2 = this._powER2T = Math.pow(Math.E, u * e3); } return h2 * c * t3 + d * u * n2; } }; } var p2 = Math.sqrt(4 * i * r - n * n) / (2 * i); var f2 = -n / 2 * i; var v2 = e2; var g2 = (t2 - f2 * e2) / p2; return { x: function(e3) { return Math.pow(Math.E, f2 * e3) * (v2 * Math.cos(p2 * e3) + g2 * Math.sin(p2 * e3)); }, dx: function(e3) { var t3 = Math.pow(Math.E, f2 * e3); var n2 = Math.cos(p2 * e3); var i2 = Math.sin(p2 * e3); return t3 * (g2 * p2 * n2 - v2 * p2 * i2) + f2 * t3 * (g2 * i2 + v2 * n2); } }; }; Spring$1.prototype.x = function(e2) { if (e2 === void 0) { e2 = (new Date().getTime() - this._startTime) / 1e3; } return this._solution ? this._endPosition + this._solution.x(e2) : 0; }; Spring$1.prototype.dx = function(e2) { if (e2 === void 0) { e2 = (new Date().getTime() - this._startTime) / 1e3; } return this._solution ? this._solution.dx(e2) : 0; }; Spring$1.prototype.setEnd = function(e2, n, i) { if (!i) { i = new Date().getTime(); } if (e2 !== this._endPosition || !t(n, 0.1)) { n = n || 0; var r = this._endPosition; if (this._solution) { if (t(n, 0.1)) { n = this._solution.dx((i - this._startTime) / 1e3); } r = this._solution.x((i - this._startTime) / 1e3); if (t(n, 0.1)) { n = 0; } if (t(r, 0.1)) { r = 0; } r += this._endPosition; } if (!(this._solution && t(r - e2, 0.1) && t(n, 0.1))) { this._endPosition = e2; this._solution = this._solve(r - this._endPosition, n); this._startTime = i; } } }; Spring$1.prototype.snap = function(e2) { this._startTime = new Date().getTime(); this._endPosition = e2; this._solution = { x: function() { return 0; }, dx: function() { return 0; } }; }; Spring$1.prototype.done = function(n) { if (!n) { n = new Date().getTime(); } return e(this.x(), this._endPosition, 0.1) && t(this.dx(), 0.1); }; Spring$1.prototype.reconfigure = function(m, t2, c) { this._m = m; this._k = t2; this._c = c; if (!this.done()) { this._solution = this._solve(this.x() - this._endPosition, this.dx()); this._startTime = new Date().getTime(); } }; Spring$1.prototype.springConstant = function() { return this._k; }; Spring$1.prototype.damping = function() { return this._c; }; Spring$1.prototype.configuration = function() { function e2(e3, t3) { e3.reconfigure(1, t3, e3.damping()); } function t2(e3, t3) { e3.reconfigure(1, e3.springConstant(), t3); } return [ { label: "Spring Constant", read: this.springConstant.bind(this), write: e2.bind(this, this), min: 100, max: 1e3 }, { label: "Damping", read: this.damping.bind(this), write: t2.bind(this, this), min: 1, max: 500 } ]; }; function STD(e2, t2, n) { this._springX = new Spring$1(e2, t2, n); this._springY = new Spring$1(e2, t2, n); this._springScale = new Spring$1(e2, t2, n); this._startTime = 0; } STD.prototype.setEnd = function(e2, t2, n, i) { var r = new Date().getTime(); this._springX.setEnd(e2, i, r); this._springY.setEnd(t2, i, r); this._springScale.setEnd(n, i, r); this._startTime = r; }; STD.prototype.x = function() { var e2 = (new Date().getTime() - this._startTime) / 1e3; return { x: this._springX.x(e2), y: this._springY.x(e2), scale: this._springScale.x(e2) }; }; STD.prototype.done = function() { var e2 = new Date().getTime(); return this._springX.done(e2) && this._springY.done(e2) && this._springScale.done(e2); }; STD.prototype.reconfigure = function(e2, t2, n) { this._springX.reconfigure(e2, t2, n); this._springY.reconfigure(e2, t2, n); this._springScale.reconfigure(e2, t2, n); }; const props$g = { direction: { type: String, default: "none" }, inertia: { type: [Boolean, String], default: false }, outOfBounds: { type: [Boolean, String], default: false }, x: { type: [Number, String], default: 0 }, y: { type: [Number, String], default: 0 }, damping: { type: [Number, String], default: 20 }, friction: { type: [Number, String], default: 2 }, disabled: { type: [Boolean, String], default: false }, scale: { type: [Boolean, String], default: false }, scaleMin: { type: [Number, String], default: 0.5 }, scaleMax: { type: [Number, String], default: 10 }, scaleValue: { type: [Number, String], default: 1 }, animation: { type: [Boolean, String], default: true } }; var MovableView = /* @__PURE__ */ defineBuiltInComponent({ name: "MovableView", props: props$g, emits: ["change", "scale"], setup(props2, { slots, emit: emit2 }) { const rootRef = ref(null); const trigger2 = useCustomEvent(rootRef, emit2); const { setParent } = useMovableViewState(props2, trigger2, rootRef); return () => { return createVNode("uni-movable-view", { "ref": rootRef }, { default: () => [createVNode(ResizeSensor, { "onResize": setParent }, null, 8, ["onResize"]), slots.default && slots.default()], _: 1 }, 512); }; } }); let requesting = false; function _requestAnimationFrame(e2) { if (!requesting) { requesting = true; requestAnimationFrame(function() { e2(); requesting = false; }); } } function p(t2, n) { if (t2 === n) { return 0; } let i = t2.offsetLeft; return t2.offsetParent ? i += p(t2.offsetParent, n) : 0; } function f(t2, n) { if (t2 === n) { return 0; } let i = t2.offsetTop; return t2.offsetParent ? i += f(t2.offsetParent, n) : 0; } function v(a2, b) { return +((1e3 * a2 - 1e3 * b) / 1e3).toFixed(1); } function g(friction, execute, endCallback) { let record = { id: 0, cancelled: false }; let cancel = function(record2) { if (record2 && record2.id) { cancelAnimationFrame(record2.id); } if (record2) { record2.cancelled = true; } }; function fn(record2, friction2, execute2, endCallback2) { if (!record2 || !record2.cancelled) { execute2(friction2); let isDone = friction2.done(); if (!isDone) { if (!record2.cancelled) { record2.id = requestAnimationFrame(fn.bind(null, record2, friction2, execute2, endCallback2)); } } if (isDone && endCallback2) { endCallback2(friction2); } } } fn(record, friction, execute, endCallback); return { cancel: cancel.bind(null, record), model: friction }; } function _getPx(val) { if (/\d+[ur]px$/i.test(val)) { return uni.upx2px(parseFloat(val)); } return Number(val) || 0; } function useMovableViewState(props2, trigger2, rootRef) { const movableAreaWidth = inject("movableAreaWidth", ref(0)); const movableAreaHeight = inject("movableAreaHeight", ref(0)); const _isMounted = inject("_isMounted", ref(false)); const movableAreaRootRef = inject("movableAreaRootRef"); const addMovableViewContext = inject("addMovableViewContext", () => { }); const removeMovableViewContext = inject("removeMovableViewContext", () => { }); const xSync = ref(_getPx(props2.x)); const ySync = ref(_getPx(props2.y)); const scaleValueSync = ref(Number(props2.scaleValue) || 1); const width = ref(0); const height = ref(0); const minX = ref(0); const minY = ref(0); const maxX = ref(0); const maxY = ref(0); let _SFA = null; let _FA = null; const _offset = { x: 0, y: 0 }; const _scaleOffset = { x: 0, y: 0 }; let _scale = 1; let _oldScale = 1; let _translateX = 0; let _translateY = 0; let _isScaling = false; let _isTouching = false; let __baseX; let __baseY; let _checkCanMove = null; let _firstMoveDirection = null; const _declineX = new Decline(); const _declineY = new Decline(); const __touchInfo = { historyX: [0, 0], historyY: [0, 0], historyT: [0, 0] }; const dampingNumber = computed$1(() => { let val = Number(props2.damping); return isNaN(val) ? 20 : val; }); const frictionNumber = computed$1(() => { let val = Number(props2.friction); return isNaN(val) || val <= 0 ? 2 : val; }); const scaleMinNumber = computed$1(() => { let val = Number(props2.scaleMin); return isNaN(val) ? 0.5 : val; }); const scaleMaxNumber = computed$1(() => { let val = Number(props2.scaleMax); return isNaN(val) ? 10 : val; }); const xMove = computed$1(() => props2.direction === "all" || props2.direction === "horizontal"); const yMove = computed$1(() => props2.direction === "all" || props2.direction === "vertical"); const _STD = new STD(1, 9 * Math.pow(dampingNumber.value, 2) / 40, dampingNumber.value); const _friction = new Friction$1(1, frictionNumber.value); watch(() => props2.x, (val) => { xSync.value = _getPx(val); }); watch(() => props2.y, (val) => { ySync.value = _getPx(val); }); watch(xSync, (val) => { _setX(val); }); watch(ySync, (val) => { _setY(val); }); watch(() => props2.scaleValue, (val) => { scaleValueSync.value = Number(val) || 0; }); watch(scaleValueSync, (val) => { _setScaleValue(val); }); watch(scaleMinNumber, () => { _setScaleMinOrMax(); }); watch(scaleMaxNumber, () => { _setScaleMinOrMax(); }); function FAandSFACancel() { if (_FA) { _FA.cancel(); } if (_SFA) { _SFA.cancel(); } } function _setX(val) { if (xMove.value) { if (val + _scaleOffset.x === _translateX) { return _translateX; } else { if (_SFA) { _SFA.cancel(); } _animationTo(val + _scaleOffset.x, ySync.value + _scaleOffset.y, _scale); } } return val; } function _setY(val) { if (yMove.value) { if (val + _scaleOffset.y === _translateY) { return _translateY; } else { if (_SFA) { _SFA.cancel(); } _animationTo(xSync.value + _scaleOffset.x, val + _scaleOffset.y, _scale); } } return val; } function _setScaleMinOrMax() { if (!props2.scale) { return false; } _updateScale(_scale, true); _updateOldScale(_scale); } function _setScaleValue(scale) { if (!props2.scale) { return false; } scale = _adjustScale(scale); _updateScale(scale, true); _updateOldScale(scale); return scale; } function __handleTouchStart() { if (!_isScaling) { if (!props2.disabled) { disableScrollBounce({ disable: true }); FAandSFACancel(); __touchInfo.historyX = [0, 0]; __touchInfo.historyY = [0, 0]; __touchInfo.historyT = [0, 0]; if (xMove.value) { __baseX = _translateX; } if (yMove.value) { __baseY = _translateY; } rootRef.value.style.willChange = "transform"; _checkCanMove = null; _firstMoveDirection = null; _isTouching = true; } } } function __handleTouchMove(event) { if (!_isScaling && !props2.disabled && _isTouching) { let x = _translateX; let y = _translateY; if (_firstMoveDirection === null) { _firstMoveDirection = Math.abs(event.detail.dx / event.detail.dy) > 1 ? "htouchmove" : "vtouchmove"; } if (xMove.value) { x = event.detail.dx + __baseX; __touchInfo.historyX.shift(); __touchInfo.historyX.push(x); if (!yMove.value && _checkCanMove === null) { _checkCanMove = Math.abs(event.detail.dx / event.detail.dy) < 1; } } if (yMove.value) { y = event.detail.dy + __baseY; __touchInfo.historyY.shift(); __touchInfo.historyY.push(y); if (!xMove.value && _checkCanMove === null) { _checkCanMove = Math.abs(event.detail.dy / event.detail.dx) < 1; } } __touchInfo.historyT.shift(); __touchInfo.historyT.push(event.detail.timeStamp); if (!_checkCanMove) { event.preventDefault(); let source = "touch"; if (x < minX.value) { if (props2.outOfBounds) { source = "touch-out-of-bounds"; x = minX.value - _declineX.x(minX.value - x); } else { x = minX.value; } } else if (x > maxX.value) { if (props2.outOfBounds) { source = "touch-out-of-bounds"; x = maxX.value + _declineX.x(x - maxX.value); } else { x = maxX.value; } } if (y < minY.value) { if (props2.outOfBounds) { source = "touch-out-of-bounds"; y = minY.value - _declineY.x(minY.value - y); } else { y = minY.value; } } else { if (y > maxY.value) { if (props2.outOfBounds) { source = "touch-out-of-bounds"; y = maxY.value + _declineY.x(y - maxY.value); } else { y = maxY.value; } } } _requestAnimationFrame(function() { _setTransform(x, y, _scale, source); }); } } } function __handleTouchEnd() { if (!_isScaling && !props2.disabled && _isTouching) { disableScrollBounce({ disable: false }); rootRef.value.style.willChange = "auto"; _isTouching = false; if (!_checkCanMove && !_revise("out-of-bounds") && props2.inertia) { const xv = 1e3 * (__touchInfo.historyX[1] - __touchInfo.historyX[0]) / (__touchInfo.historyT[1] - __touchInfo.historyT[0]); const yv = 1e3 * (__touchInfo.historyY[1] - __touchInfo.historyY[0]) / (__touchInfo.historyT[1] - __touchInfo.historyT[0]); _friction.setV(xv, yv); _friction.setS(_translateX, _translateY); const x0 = _friction.delta().x; const y0 = _friction.delta().y; let x = x0 + _translateX; let y = y0 + _translateY; if (x < minX.value) { x = minX.value; y = _translateY + (minX.value - _translateX) * y0 / x0; } else { if (x > maxX.value) { x = maxX.value; y = _translateY + (maxX.value - _translateX) * y0 / x0; } } if (y < minY.value) { y = minY.value; x = _translateX + (minY.value - _translateY) * x0 / y0; } else { if (y > maxY.value) { y = maxY.value; x = _translateX + (maxY.value - _translateY) * x0 / y0; } } _friction.setEnd(x, y); _FA = g(_friction, function() { let t2 = _friction.s(); let x2 = t2.x; let y2 = t2.y; _setTransform(x2, y2, _scale, "friction"); }, function() { _FA.cancel(); }); } } if (!props2.outOfBounds && !props2.inertia) { FAandSFACancel(); } } function _getLimitXY(x, y) { let outOfBounds = false; if (x > maxX.value) { x = maxX.value; outOfBounds = true; } else { if (x < minX.value) { x = minX.value; outOfBounds = true; } } if (y > maxY.value) { y = maxY.value; outOfBounds = true; } else { if (y < minY.value) { y = minY.value; outOfBounds = true; } } return { x, y, outOfBounds }; } function _updateOffset() { _offset.x = p(rootRef.value, movableAreaRootRef.value); _offset.y = f(rootRef.value, movableAreaRootRef.value); } function _updateWH(scale) { scale = scale || _scale; scale = _adjustScale(scale); let rect = rootRef.value.getBoundingClientRect(); height.value = rect.height / _scale; width.value = rect.width / _scale; let _height = height.value * scale; let _width = width.value * scale; _scaleOffset.x = (_width - width.value) / 2; _scaleOffset.y = (_height - height.value) / 2; } function _updateBoundary() { let x = 0 - _offset.x + _scaleOffset.x; let _width = movableAreaWidth.value - width.value - _offset.x - _scaleOffset.x; minX.value = Math.min(x, _width); maxX.value = Math.max(x, _width); let y = 0 - _offset.y + _scaleOffset.y; let _height = movableAreaHeight.value - height.value - _offset.y - _scaleOffset.y; minY.value = Math.min(y, _height); maxY.value = Math.max(y, _height); } function _beginScale() { _isScaling = true; } function _updateScale(scale, animat) { if (props2.scale) { scale = _adjustScale(scale); _updateWH(scale); _updateBoundary(); const limitXY = _getLimitXY(_translateX, _translateY); const x = limitXY.x; const y = limitXY.y; if (animat) { _animationTo(x, y, scale, "", true, true); } else { _requestAnimationFrame(function() { _setTransform(x, y, scale, "", true, true); }); } } } function _updateOldScale(scale) { _oldScale = scale; } function _adjustScale(scale) { scale = Math.max(0.5, scaleMinNumber.value, scale); scale = Math.min(10, scaleMaxNumber.value, scale); return scale; } function _animationTo(x, y, scale, source, r, o2) { FAandSFACancel(); if (!xMove.value) { x = _translateX; } if (!yMove.value) { y = _translateY; } if (!props2.scale) { scale = _scale; } let limitXY = _getLimitXY(x, y); x = limitXY.x; y = limitXY.y; if (!props2.animation) { _setTransform(x, y, scale, source, r, o2); return; } _STD._springX._solution = null; _STD._springY._solution = null; _STD._springScale._solution = null; _STD._springX._endPosition = _translateX; _STD._springY._endPosition = _translateY; _STD._springScale._endPosition = _scale; _STD.setEnd(x, y, scale, 1); _SFA = g(_STD, function() { let data = _STD.x(); let x2 = data.x; let y2 = data.y; let scale2 = data.scale; _setTransform(x2, y2, scale2, source, r, o2); }, function() { _SFA.cancel(); }); } function _revise(source) { let limitXY = _getLimitXY(_translateX, _translateY); let x = limitXY.x; let y = limitXY.y; let outOfBounds = limitXY.outOfBounds; if (outOfBounds) { _animationTo(x, y, _scale, source); } return outOfBounds; } function _setTransform(x, y, scale, source = "", r, o2) { if (!(x !== null && x.toString() !== "NaN" && typeof x === "number")) { x = _translateX || 0; } if (!(y !== null && y.toString() !== "NaN" && typeof y === "number")) { y = _translateY || 0; } x = Number(x.toFixed(1)); y = Number(y.toFixed(1)); scale = Number(scale.toFixed(1)); if (!(_translateX === x && _translateY === y)) { if (!r) { trigger2("change", {}, { x: v(x, _scaleOffset.x), y: v(y, _scaleOffset.y), source }); } } if (!props2.scale) { scale = _scale; } scale = _adjustScale(scale); scale = +scale.toFixed(3); if (o2 && scale !== _scale) { trigger2("scale", {}, { x, y, scale }); } let transform = "translateX(" + x + "px) translateY(" + y + "px) translateZ(0px) scale(" + scale + ")"; rootRef.value.style.transform = transform; rootRef.value.style.webkitTransform = transform; _translateX = x; _translateY = y; _scale = scale; } function setParent() { if (!_isMounted.value) { return; } FAandSFACancel(); let scale = props2.scale ? scaleValueSync.value : 1; _updateOffset(); _updateWH(scale); _updateBoundary(); _translateX = xSync.value + _scaleOffset.x; _translateY = ySync.value + _scaleOffset.y; let limitXY = _getLimitXY(_translateX, _translateY); let x = limitXY.x; let y = limitXY.y; _setTransform(x, y, scale, "", true); _updateOldScale(scale); } function _endScale() { _isScaling = false; _updateOldScale(_scale); } function _setScale(scale) { if (scale) { scale = _oldScale * scale; _beginScale(); _updateScale(scale); } } onMounted(() => { useTouchtrack(rootRef.value, (event) => { switch (event.detail.state) { case "start": __handleTouchStart(); break; case "move": __handleTouchMove(event); break; case "end": __handleTouchEnd(); } }); setParent(); _friction.reconfigure(1, frictionNumber.value); _STD.reconfigure(1, 9 * Math.pow(dampingNumber.value, 2) / 40, dampingNumber.value); rootRef.value.style.transformOrigin = "center"; initScrollBounce(); const context = { rootRef, setParent, _endScale, _setScale }; addMovableViewContext(context); onUnmounted(() => { removeMovableViewContext(context); }); }); onUnmounted(() => { FAandSFACancel(); }); return { setParent }; } const OPEN_TYPES = ["navigate", "redirect", "switchTab", "reLaunch", "navigateBack"]; const props$f = { hoverClass: { type: String, default: "navigator-hover" }, url: { type: String, default: "" }, openType: { type: String, default: "navigate", validator(value) { return Boolean(~OPEN_TYPES.indexOf(value)); } }, delta: { type: Number, default: 1 }, hoverStartTime: { type: [Number, String], default: 50 }, hoverStayTime: { type: [Number, String], default: 600 }, exists: { type: String, default: "" }, hoverStopPropagation: { type: Boolean, default: false } }; var Navigator = /* @__PURE__ */ defineBuiltInComponent({ name: "Navigator", compatConfig: { MODE: 3 }, props: props$f, setup(props2, { slots }) { const { hovering, binding } = useHover(props2); function onClick($event) { if (props2.openType !== "navigateBack" && !props2.url) { console.error(" should have url attribute when using navigateTo, redirectTo, reLaunch or switchTab"); return; } switch (props2.openType) { case "navigate": uni.navigateTo({ url: props2.url }); break; case "redirect": uni.redirectTo({ url: props2.url, exists: props2.exists }); break; case "switchTab": uni.switchTab({ url: props2.url }); break; case "reLaunch": uni.reLaunch({ url: props2.url }); break; case "navigateBack": uni.navigateBack({ delta: props2.delta }); break; } } return () => { const { hoverClass } = props2; const hasHoverClass = props2.hoverClass && props2.hoverClass !== "none"; return createVNode("uni-navigator", mergeProps({ "class": hasHoverClass && hovering.value ? hoverClass : "" }, hasHoverClass && binding, { "onClick": onClick }), { default: () => [slots.default && slots.default()] }, 16, ["class", "onClick"]); }; } }); const props$e = { value: { type: Array, default() { return []; }, validator: function(val) { return Array.isArray(val) && val.filter((val2) => typeof val2 === "number").length === val.length; } }, indicatorStyle: { type: String, default: "" }, indicatorClass: { type: String, default: "" }, maskStyle: { type: String, default: "" }, maskClass: { type: String, default: "" } }; function useState$1(props2) { const value = reactive([...props2.value]); const state = reactive({ value, height: 34 }); watch(() => props2.value, (val, oldVal) => { if (val === oldVal || val.length !== oldVal.length || val.findIndex((item, index2) => item !== oldVal[index2]) >= 0) { state.value.length = val.length; val.forEach((val2, index2) => { if (val2 !== state.value[index2]) { state.value.splice(index2, 1, val2); } }); } }); return state; } var PickerView = /* @__PURE__ */ defineBuiltInComponent({ name: "PickerView", props: props$e, emits: ["change", "pickstart", "pickend", "update:value"], setup(props2, { slots, emit: emit2 }) { const rootRef = ref(null); const wrapperRef = ref(null); const trigger2 = useCustomEvent(rootRef, emit2); const state = useState$1(props2); const resizeSensorRef = ref(null); const onMountedCallback = () => { const resizeSensor2 = resizeSensorRef.value; state.height = resizeSensor2.$el.offsetHeight; }; let columnsRef = ref([]); function getItemIndex(vnode) { const columnVNodes = columnsRef.value; if (columnVNodes instanceof HTMLCollection) { return Array.prototype.indexOf.call(columnVNodes, vnode.el); } return columnVNodes.indexOf(vnode); } const getPickerViewColumn = function(columnInstance) { const ref2 = computed$1({ get() { const index2 = getItemIndex(columnInstance.vnode); return state.value[index2] || 0; }, set(current) { const index2 = getItemIndex(columnInstance.vnode); if (index2 < 0) { return; } const oldCurrent = state.value[index2]; if (oldCurrent !== current) { state.value.splice(index2, 1, current); const value = state.value.map((val) => val); emit2("update:value", value); trigger2("change", {}, { value }); } } }); return ref2; }; provide("getPickerViewColumn", getPickerViewColumn); provide("pickerViewProps", props2); provide("pickerViewState", state); { useRebuild(() => { onMountedCallback(); columnsRef.value = wrapperRef.value.children; }); } return () => { const defaultSlots = slots.default && slots.default(); return createVNode("uni-picker-view", { "ref": rootRef }, { default: () => [createVNode(ResizeSensor, { "ref": resizeSensorRef, "onResize": ({ height }) => state.height = height }, null, 8, ["onResize"]), createVNode("div", { "ref": wrapperRef, "class": "uni-picker-view-wrapper" }, [defaultSlots], 512)], _: 2 }, 512); }; } }); class Friction { constructor(drag) { this._drag = drag; this._dragLog = Math.log(drag); this._x = 0; this._v = 0; this._startTime = 0; } set(x, v2) { this._x = x; this._v = v2; this._startTime = new Date().getTime(); } setVelocityByEnd(e2) { this._v = (e2 - this._x) * this._dragLog / (Math.pow(this._drag, 100) - 1); } x(e2) { if (e2 === void 0) { e2 = (new Date().getTime() - this._startTime) / 1e3; } const t2 = e2 === this._dt && this._powDragDt ? this._powDragDt : this._powDragDt = Math.pow(this._drag, e2); this._dt = e2; return this._x + this._v * t2 / this._dragLog - this._v / this._dragLog; } dx(e2) { if (e2 === void 0) { e2 = (new Date().getTime() - this._startTime) / 1e3; } const t2 = e2 === this._dt && this._powDragDt ? this._powDragDt : this._powDragDt = Math.pow(this._drag, e2); this._dt = e2; return this._v * t2; } done() { return Math.abs(this.dx()) < 3; } reconfigure(e2) { const t2 = this.x(); const n = this.dx(); this._drag = e2; this._dragLog = Math.log(e2); this.set(t2, n); } configuration() { const e2 = this; return [ { label: "Friction", read: function() { return e2._drag; }, write: function(t2) { e2.reconfigure(t2); }, min: 1e-3, max: 0.1, step: 1e-3 } ]; } } function o(e2, t2, n) { return e2 > t2 - n && e2 < t2 + n; } function a(e2, t2) { return o(e2, 0, t2); } class Spring { constructor(m, k, c) { this._m = m; this._k = k; this._c = c; this._solution = null; this._endPosition = 0; this._startTime = 0; } _solve(e2, t2) { const n = this._c; const i = this._m; const r = this._k; const o2 = n * n - 4 * i * r; if (o2 === 0) { const a3 = -n / (2 * i); const s2 = e2; const l2 = t2 / (a3 * e2); return { x: function(e22) { return (s2 + l2 * e22) * Math.pow(Math.E, a3 * e22); }, dx: function(e22) { const t22 = Math.pow(Math.E, a3 * e22); return a3 * (s2 + l2 * e22) * t22 + l2 * t22; } }; } if (o2 > 0) { const c = (-n - Math.sqrt(o2)) / (2 * i); const u = (-n + Math.sqrt(o2)) / (2 * i); const l2 = (t2 - c * e2) / (u - c); const s2 = e2 - l2; return { x: function(e22) { let t22; let n2; if (e22 === this._t) { t22 = this._powER1T; n2 = this._powER2T; } this._t = e22; if (!t22) { t22 = this._powER1T = Math.pow(Math.E, c * e22); } if (!n2) { n2 = this._powER2T = Math.pow(Math.E, u * e22); } return s2 * t22 + l2 * n2; }, dx: function(e22) { let t22; let n2; if (e22 === this._t) { t22 = this._powER1T; n2 = this._powER2T; } this._t = e22; if (!t22) { t22 = this._powER1T = Math.pow(Math.E, c * e22); } if (!n2) { n2 = this._powER2T = Math.pow(Math.E, u * e22); } return s2 * c * t22 + l2 * u * n2; } }; } const d = Math.sqrt(4 * i * r - n * n) / (2 * i); const a2 = -n / 2 * i; const s = e2; const l = (t2 - a2 * e2) / d; return { x: function(e22) { return Math.pow(Math.E, a2 * e22) * (s * Math.cos(d * e22) + l * Math.sin(d * e22)); }, dx: function(e22) { const t22 = Math.pow(Math.E, a2 * e22); const n2 = Math.cos(d * e22); const i2 = Math.sin(d * e22); return t22 * (l * d * n2 - s * d * i2) + a2 * t22 * (l * i2 + s * n2); } }; } x(e2) { if (e2 === void 0) { e2 = (new Date().getTime() - this._startTime) / 1e3; } return this._solution ? this._endPosition + this._solution.x(e2) : 0; } dx(e2) { if (e2 === void 0) { e2 = (new Date().getTime() - this._startTime) / 1e3; } return this._solution ? this._solution.dx(e2) : 0; } setEnd(e2, t2, n) { if (!n) { n = new Date().getTime(); } if (e2 !== this._endPosition || !a(t2, 0.4)) { t2 = t2 || 0; let i = this._endPosition; if (this._solution) { if (a(t2, 0.4)) { t2 = this._solution.dx((n - this._startTime) / 1e3); } i = this._solution.x((n - this._startTime) / 1e3); if (a(t2, 0.4)) { t2 = 0; } if (a(i, 0.4)) { i = 0; } i += this._endPosition; } if (!(this._solution && a(i - e2, 0.4) && a(t2, 0.4))) { this._endPosition = e2; this._solution = this._solve(i - this._endPosition, t2); this._startTime = n; } } } snap(e2) { this._startTime = new Date().getTime(); this._endPosition = e2; this._solution = { x: function() { return 0; }, dx: function() { return 0; } }; } done(e2) { if (!e2) { e2 = new Date().getTime(); } return o(this.x(), this._endPosition, 0.4) && a(this.dx(), 0.4); } reconfigure(e2, t2, n) { this._m = e2; this._k = t2; this._c = n; if (!this.done()) { this._solution = this._solve(this.x() - this._endPosition, this.dx()); this._startTime = new Date().getTime(); } } springConstant() { return this._k; } damping() { return this._c; } configuration() { function e2(e22, t22) { e22.reconfigure(1, t22, e22.damping()); } function t2(e22, t22) { e22.reconfigure(1, e22.springConstant(), t22); } return [ { label: "Spring Constant", read: this.springConstant.bind(this), write: e2.bind(this, this), min: 100, max: 1e3 }, { label: "Damping", read: this.damping.bind(this), write: t2.bind(this, this), min: 1, max: 500 } ]; } } class Scroll { constructor(extent, friction, spring) { this._extent = extent; this._friction = friction || new Friction(0.01); this._spring = spring || new Spring(1, 90, 20); this._startTime = 0; this._springing = false; this._springOffset = 0; } snap(e2, t2) { this._springOffset = 0; this._springing = true; this._spring.snap(e2); this._spring.setEnd(t2); } set(e2, t2) { this._friction.set(e2, t2); if (e2 > 0 && t2 >= 0) { this._springOffset = 0; this._springing = true; this._spring.snap(e2); this._spring.setEnd(0); } else { if (e2 < -this._extent && t2 <= 0) { this._springOffset = 0; this._springing = true; this._spring.snap(e2); this._spring.setEnd(-this._extent); } else { this._springing = false; } } this._startTime = new Date().getTime(); } x(e2) { if (!this._startTime) { return 0; } if (!e2) { e2 = (new Date().getTime() - this._startTime) / 1e3; } if (this._springing) { return this._spring.x() + this._springOffset; } let t2 = this._friction.x(e2); let n = this.dx(e2); if (t2 > 0 && n >= 0 || t2 < -this._extent && n <= 0) { this._springing = true; this._spring.setEnd(0, n); if (t2 < -this._extent) { this._springOffset = -this._extent; } else { this._springOffset = 0; } t2 = this._spring.x() + this._springOffset; } return t2; } dx(e2) { let t2; if (this._lastTime === e2) { t2 = this._lastDx; } else { t2 = this._springing ? this._spring.dx(e2) : this._friction.dx(e2); } this._lastTime = e2; this._lastDx = t2; return t2; } done() { return this._springing ? this._spring.done() : this._friction.done(); } setVelocityByEnd(e2) { this._friction.setVelocityByEnd(e2); } configuration() { const e2 = this._friction.configuration(); e2.push.apply(e2, this._spring.configuration()); return e2; } } function createAnimation(scroll, onScroll, onEnd) { const state = { id: 0, cancelled: false }; function startAnimation2(state2, scroll2, onScroll2, onEnd2) { if (!state2 || !state2.cancelled) { onScroll2(scroll2); const isDone = scroll2.done(); if (!isDone) { if (!state2.cancelled) { state2.id = requestAnimationFrame(startAnimation2.bind(null, state2, scroll2, onScroll2, onEnd2)); } } if (isDone && onEnd2) { onEnd2(scroll2); } } } function cancel(state2) { if (state2 && state2.id) { cancelAnimationFrame(state2.id); } if (state2) { state2.cancelled = true; } } startAnimation2(state, scroll, onScroll, onEnd); return { cancel: cancel.bind(null, state), model: scroll }; } class Scroller { constructor(element, options) { options = options || {}; this._element = element; this._options = options; this._enableSnap = options.enableSnap || false; this._itemSize = options.itemSize || 0; this._enableX = options.enableX || false; this._enableY = options.enableY || false; this._shouldDispatchScrollEvent = !!options.onScroll; if (this._enableX) { this._extent = (options.scrollWidth || this._element.offsetWidth) - this._element.parentElement.offsetWidth; this._scrollWidth = options.scrollWidth; } else { this._extent = (options.scrollHeight || this._element.offsetHeight) - this._element.parentElement.offsetHeight; this._scrollHeight = options.scrollHeight; } this._position = 0; this._scroll = new Scroll(this._extent, options.friction, options.spring); this._onTransitionEnd = this.onTransitionEnd.bind(this); this.updatePosition(); } onTouchStart() { this._startPosition = this._position; this._lastChangePos = this._startPosition; if (this._startPosition > 0) { this._startPosition /= 0.5; } else { if (this._startPosition < -this._extent) { this._startPosition = (this._startPosition + this._extent) / 0.5 - this._extent; } } if (this._animation) { this._animation.cancel(); this._scrolling = false; } this.updatePosition(); } onTouchMove(x, y) { let startPosition = this._startPosition; if (this._enableX) { startPosition += x; } else if (this._enableY) { startPosition += y; } if (startPosition > 0) { startPosition *= 0.5; } else if (startPosition < -this._extent) { startPosition = 0.5 * (startPosition + this._extent) - this._extent; } this._position = startPosition; this.updatePosition(); this.dispatchScroll(); } onTouchEnd(x, y, o2) { if (this._enableSnap && this._position > -this._extent && this._position < 0) { if (this._enableY && (Math.abs(y) < this._itemSize && Math.abs(o2.y) < 300 || Math.abs(o2.y) < 150)) { this.snap(); return; } if (this._enableX && (Math.abs(x) < this._itemSize && Math.abs(o2.x) < 300 || Math.abs(o2.x) < 150)) { this.snap(); return; } } if (this._enableX) { this._scroll.set(this._position, o2.x); } else if (this._enableY) { this._scroll.set(this._position, o2.y); } let c; if (this._enableSnap) { const s = this._scroll._friction.x(100); const l = s % this._itemSize; c = Math.abs(l) > this._itemSize / 2 ? s - (this._itemSize - Math.abs(l)) : s - l; if (c <= 0 && c >= -this._extent) { this._scroll.setVelocityByEnd(c); } } this._lastTime = Date.now(); this._lastDelay = 0; this._scrolling = true; this._lastChangePos = this._position; this._lastIdx = Math.floor(Math.abs(this._position / this._itemSize)); this._animation = createAnimation(this._scroll, () => { const e2 = Date.now(); const i = (e2 - this._scroll._startTime) / 1e3; const r = this._scroll.x(i); this._position = r; this.updatePosition(); const o22 = this._scroll.dx(i); if (this._shouldDispatchScrollEvent && e2 - this._lastTime > this._lastDelay) { this.dispatchScroll(); this._lastDelay = Math.abs(2e3 / o22); this._lastTime = e2; } }, () => { if (this._enableSnap) { if (c <= 0 && c >= -this._extent) { this._position = c; this.updatePosition(); } if (typeof this._options.onSnap === "function") { this._options.onSnap(Math.floor(Math.abs(this._position) / this._itemSize)); } } if (this._shouldDispatchScrollEvent) { this.dispatchScroll(); } this._scrolling = false; }); } onTransitionEnd() { this._element.style.webkitTransition = ""; this._element.style.transition = ""; this._element.removeEventListener("transitionend", this._onTransitionEnd); if (this._snapping) { this._snapping = false; } this.dispatchScroll(); } snap() { const itemSize = this._itemSize; const position = this._position % itemSize; const i = Math.abs(position) > this._itemSize / 2 ? this._position - (itemSize - Math.abs(position)) : this._position - position; if (this._position !== i) { this._snapping = true; this.scrollTo(-i); if (typeof this._options.onSnap === "function") { this._options.onSnap(Math.floor(Math.abs(this._position) / this._itemSize)); } } } scrollTo(position, time) { if (this._animation) { this._animation.cancel(); this._scrolling = false; } if (typeof position === "number") { this._position = -position; } if (this._position < -this._extent) { this._position = -this._extent; } else { if (this._position > 0) { this._position = 0; } } const transition = "transform " + (time || 0.2) + "s ease-out"; this._element.style.webkitTransition = "-webkit-" + transition; this._element.style.transition = transition; this.updatePosition(); this._element.addEventListener("transitionend", this._onTransitionEnd); } dispatchScroll() { if (typeof this._options.onScroll === "function" && Math.round(Number(this._lastPos)) !== Math.round(this._position)) { this._lastPos = this._position; const event = { target: { scrollLeft: this._enableX ? -this._position : 0, scrollTop: this._enableY ? -this._position : 0, scrollHeight: this._scrollHeight || this._element.offsetHeight, scrollWidth: this._scrollWidth || this._element.offsetWidth, offsetHeight: this._element.parentElement.offsetHeight, offsetWidth: this._element.parentElement.offsetWidth } }; this._options.onScroll(event); } } update(height, scrollHeight, itemSize) { let extent = 0; const position = this._position; if (this._enableX) { extent = this._element.childNodes.length ? (scrollHeight || this._element.offsetWidth) - this._element.parentElement.offsetWidth : 0; this._scrollWidth = scrollHeight; } else { extent = this._element.childNodes.length ? (scrollHeight || this._element.offsetHeight) - this._element.parentElement.offsetHeight : 0; this._scrollHeight = scrollHeight; } if (typeof height === "number") { this._position = -height; } if (this._position < -extent) { this._position = -extent; } else { if (this._position > 0) { this._position = 0; } } this._itemSize = itemSize || this._itemSize; this.updatePosition(); if (position !== this._position) { this.dispatchScroll(); if (typeof this._options.onSnap === "function") { this._options.onSnap(Math.floor(Math.abs(this._position) / this._itemSize)); } } this._extent = extent; this._scroll._extent = extent; } updatePosition() { let transform = ""; if (this._enableX) { transform = "translateX(" + this._position + "px) translateZ(0)"; } else { if (this._enableY) { transform = "translateY(" + this._position + "px) translateZ(0)"; } } this._element.style.webkitTransform = transform; this._element.style.transform = transform; } isScrolling() { return this._scrolling || this._snapping; } } function useScroller(element, options) { const touchInfo = { trackingID: -1, maxDy: 0, maxDx: 0 }; const scroller = new Scroller(element, options); function findDelta(event) { const touchtrackEvent = event; const mouseEvent = event; return touchtrackEvent.detail.state === "move" || touchtrackEvent.detail.state === "end" ? { x: touchtrackEvent.detail.dx, y: touchtrackEvent.detail.dy } : { x: mouseEvent.screenX - touchInfo.x, y: mouseEvent.screenY - touchInfo.y }; } function handleTouchStart(event) { const touchtrackEvent = event; const mouseEvent = event; if (touchtrackEvent.detail.state === "start") { touchInfo.trackingID = "touch"; touchInfo.x = touchtrackEvent.detail.x; touchInfo.y = touchtrackEvent.detail.y; } else { touchInfo.trackingID = "mouse"; touchInfo.x = mouseEvent.screenX; touchInfo.y = mouseEvent.screenY; } touchInfo.maxDx = 0; touchInfo.maxDy = 0; touchInfo.historyX = [0]; touchInfo.historyY = [0]; touchInfo.historyTime = [ touchtrackEvent.detail.timeStamp || mouseEvent.timeStamp ]; touchInfo.listener = scroller; if (scroller.onTouchStart) { scroller.onTouchStart(); } event.preventDefault(); } function handleTouchMove(event) { const touchtrackEvent = event; const mouseEvent = event; if (touchInfo.trackingID !== -1) { event.preventDefault(); const delta = findDelta(event); if (delta) { for (touchInfo.maxDy = Math.max(touchInfo.maxDy, Math.abs(delta.y)), touchInfo.maxDx = Math.max(touchInfo.maxDx, Math.abs(delta.x)), touchInfo.historyX.push(delta.x), touchInfo.historyY.push(delta.y), touchInfo.historyTime.push(touchtrackEvent.detail.timeStamp || mouseEvent.timeStamp); touchInfo.historyTime.length > 10; ) { touchInfo.historyTime.shift(); touchInfo.historyX.shift(); touchInfo.historyY.shift(); } if (touchInfo.listener && touchInfo.listener.onTouchMove) { touchInfo.listener.onTouchMove(delta.x, delta.y); } } } } function handleTouchEnd(event) { if (touchInfo.trackingID !== -1) { event.preventDefault(); const delta = findDelta(event); if (delta) { const listener = touchInfo.listener; touchInfo.trackingID = -1; touchInfo.listener = null; const length = touchInfo.historyTime.length; const o2 = { x: 0, y: 0 }; if (length > 2) { for (let i = touchInfo.historyTime.length - 1, time1 = touchInfo.historyTime[i], x = touchInfo.historyX[i], y = touchInfo.historyY[i]; i > 0; ) { i--; const time0 = touchInfo.historyTime[i]; const time = time1 - time0; if (time > 30 && time < 50) { o2.x = (x - touchInfo.historyX[i]) / (time / 1e3); o2.y = (y - touchInfo.historyY[i]) / (time / 1e3); break; } } } touchInfo.historyTime = []; touchInfo.historyX = []; touchInfo.historyY = []; if (listener && listener.onTouchEnd) { listener.onTouchEnd(delta.x, delta.y, o2); } } } } return { scroller, handleTouchStart, handleTouchMove, handleTouchEnd }; } let scopedIndex = 0; function useScopedClass(indicatorHeightRef) { const className = `uni-picker-view-content-${scopedIndex++}`; function updateStyle() { const style = document.createElement("style"); style.innerText = `.uni-picker-view-content.${className}>*{height: ${indicatorHeightRef.value}px;overflow: hidden;}`; document.head.appendChild(style); } watch(() => indicatorHeightRef.value, updateStyle); return className; } function useCustomClick(dom) { const MAX_MOVE = 20; let x = 0; let y = 0; dom.addEventListener("touchstart", (event) => { const info = event.changedTouches[0]; x = info.clientX; y = info.clientY; }); dom.addEventListener("touchend", (event) => { const info = event.changedTouches[0]; if (Math.abs(info.clientX - x) < MAX_MOVE && Math.abs(info.clientY - y) < MAX_MOVE) { const options = { bubbles: true, cancelable: true, target: event.target, currentTarget: event.currentTarget }; const customClick = new CustomEvent("click", options); const props2 = ["screenX", "screenY", "clientX", "clientY", "pageX", "pageY"]; props2.forEach((key) => { customClick[key] = info[key]; }); event.target.dispatchEvent(customClick); } }); } var PickerViewColumn = /* @__PURE__ */ defineBuiltInComponent({ name: "PickerViewColumn", setup(props2, { slots, emit: emit2 }) { const rootRef = ref(null); const contentRef = ref(null); const getPickerViewColumn = inject("getPickerViewColumn"); const instance = getCurrentInstance(); const currentRef = getPickerViewColumn ? getPickerViewColumn(instance) : ref(0); const pickerViewProps = inject("pickerViewProps"); const pickerViewState = inject("pickerViewState"); const indicatorHeight = ref(34); const resizeSensorRef = ref(null); const initIndicatorHeight = () => { const resizeSensor2 = resizeSensorRef.value; indicatorHeight.value = resizeSensor2.$el.offsetHeight; }; const maskSize = computed$1(() => (pickerViewState.height - indicatorHeight.value) / 2); const { state: scopedAttrsState } = useScopedAttrs(); const className = useScopedClass(indicatorHeight); let scroller; const state = reactive({ current: currentRef.value, length: 0 }); let updatesScrollerRequest; function updatesScroller() { if (scroller && !updatesScrollerRequest) { updatesScrollerRequest = true; nextTick(() => { updatesScrollerRequest = false; let current = Math.min(state.current, state.length - 1); current = Math.max(current, 0); scroller.update(current * indicatorHeight.value, void 0, indicatorHeight.value); }); } } watch(() => currentRef.value, (current) => { if (current !== state.current) { state.current = current; updatesScroller(); } }); watch(() => state.current, (current) => currentRef.value = current); watch([() => indicatorHeight.value, () => state.length, () => pickerViewState.height], updatesScroller); let oldDeltaY = 0; function handleWheel(event) { const deltaY = oldDeltaY + event.deltaY; if (Math.abs(deltaY) > 10) { oldDeltaY = 0; let current = Math.min(state.current + (deltaY < 0 ? -1 : 1), state.length - 1); state.current = current = Math.max(current, 0); scroller.scrollTo(current * indicatorHeight.value); } else { oldDeltaY = deltaY; } event.preventDefault(); } function handleTap({ clientY }) { const el = rootRef.value; if (!scroller.isScrolling()) { const rect = el.getBoundingClientRect(); const r = clientY - rect.top - pickerViewState.height / 2; const o2 = indicatorHeight.value / 2; if (!(Math.abs(r) <= o2)) { const a2 = Math.ceil((Math.abs(r) - o2) / indicatorHeight.value); const s = r < 0 ? -a2 : a2; let current = Math.min(state.current + s, state.length - 1); state.current = current = Math.max(current, 0); scroller.scrollTo(current * indicatorHeight.value); } } } const initScroller = () => { const el = rootRef.value; const content = contentRef.value; const { scroller: scrollerOrigin, handleTouchStart, handleTouchMove, handleTouchEnd } = useScroller(content, { enableY: true, enableX: false, enableSnap: true, itemSize: indicatorHeight.value, friction: new Friction(1e-4), spring: new Spring(2, 90, 20), onSnap: (index2) => { if (!isNaN(index2) && index2 !== state.current) { state.current = index2; } } }); scroller = scrollerOrigin; useTouchtrack(el, (e2) => { switch (e2.detail.state) { case "start": handleTouchStart(e2); disableScrollBounce({ disable: true }); break; case "move": handleTouchMove(e2); break; case "end": case "cancel": handleTouchEnd(e2); disableScrollBounce({ disable: false }); } }, true); useCustomClick(el); initScrollBounce(); updatesScroller(); }; { useRebuild(() => { state.length = contentRef.value.children.length; initIndicatorHeight(); initScroller(); }); } return () => { const defaultSlots = slots.default && slots.default(); const padding = `${maskSize.value}px 0`; return createVNode("uni-picker-view-column", { "ref": rootRef }, { default: () => [createVNode("div", { "onWheel": handleWheel, "onClick": handleTap, "class": "uni-picker-view-group" }, [createVNode("div", mergeProps(scopedAttrsState.attrs, { "class": ["uni-picker-view-mask", pickerViewProps.maskClass], "style": `background-size: 100% ${maskSize.value}px;${pickerViewProps.maskStyle}` }), null, 16), createVNode("div", mergeProps(scopedAttrsState.attrs, { "class": ["uni-picker-view-indicator", pickerViewProps.indicatorClass], "style": pickerViewProps.indicatorStyle }), [createVNode(ResizeSensor, { "ref": resizeSensorRef, "onResize": ({ height }) => indicatorHeight.value = height }, null, 8, ["onResize"])], 16), createVNode("div", { "ref": contentRef, "class": ["uni-picker-view-content", className], "style": { padding } }, [defaultSlots], 6)], 40, ["onWheel", "onClick"])] }, 512); }; } }); const VALUES = { activeColor: PRIMARY_COLOR, backgroundColor: "#EBEBEB", activeMode: "backwards" }; const props$d = { percent: { type: [Number, String], default: 0, validator(value) { return !isNaN(parseFloat(value)); } }, showInfo: { type: [Boolean, String], default: false }, strokeWidth: { type: [Number, String], default: 6, validator(value) { return !isNaN(parseFloat(value)); } }, color: { type: String, default: VALUES.activeColor }, activeColor: { type: String, default: VALUES.activeColor }, backgroundColor: { type: String, default: VALUES.backgroundColor }, active: { type: [Boolean, String], default: false }, activeMode: { type: String, default: VALUES.activeMode }, duration: { type: [Number, String], default: 30, validator(value) { return !isNaN(parseFloat(value)); } } }; var Progress = /* @__PURE__ */ defineBuiltInComponent({ name: "Progress", props: props$d, setup(props2) { const state = useProgressState(props2); _activeAnimation(state, props2); watch(() => state.realPercent, (newValue, oldValue) => { state.strokeTimer && clearInterval(state.strokeTimer); state.lastPercent = oldValue || 0; _activeAnimation(state, props2); }); return () => { const { showInfo } = props2; const { outerBarStyle, innerBarStyle, currentPercent } = state; return createVNode("uni-progress", { "class": "uni-progress" }, { default: () => [createVNode("div", { "style": outerBarStyle, "class": "uni-progress-bar" }, [createVNode("div", { "style": innerBarStyle, "class": "uni-progress-inner-bar" }, null, 4)], 4), showInfo ? createVNode("p", { "class": "uni-progress-info" }, [currentPercent + "%"]) : ""], _: 1 }); }; } }); function useProgressState(props2) { const currentPercent = ref(0); const outerBarStyle = computed$1(() => `background-color: ${props2.backgroundColor}; height: ${props2.strokeWidth}px;`); const innerBarStyle = computed$1(() => { const backgroundColor = props2.color !== VALUES.activeColor && props2.activeColor === VALUES.activeColor ? props2.color : props2.activeColor; return `width: ${currentPercent.value}%;background-color: ${backgroundColor}`; }); const realPercent = computed$1(() => { let realValue = parseFloat(props2.percent); realValue < 0 && (realValue = 0); realValue > 100 && (realValue = 100); return realValue; }); const state = reactive({ outerBarStyle, innerBarStyle, realPercent, currentPercent, strokeTimer: 0, lastPercent: 0 }); return state; } function _activeAnimation(state, props2) { if (props2.active) { state.currentPercent = props2.activeMode === VALUES.activeMode ? 0 : state.lastPercent; state.strokeTimer = setInterval(() => { if (state.currentPercent + 1 > state.realPercent) { state.currentPercent = state.realPercent; state.strokeTimer && clearInterval(state.strokeTimer); } else { state.currentPercent += 1; } }, parseFloat(props2.duration)); } else { state.currentPercent = state.realPercent; } } const uniRadioGroupKey = PolySymbol("uniCheckGroup"); const props$c = { name: { type: String, default: "" } }; var RadioGroup = /* @__PURE__ */ defineBuiltInComponent({ name: "RadioGroup", props: props$c, setup(props2, { emit: emit2, slots }) { const rootRef = ref(null); const trigger2 = useCustomEvent(rootRef, emit2); useProvideRadioGroup(props2, trigger2); return () => { return createVNode("uni-radio-group", { "ref": rootRef }, { default: () => [slots.default && slots.default()] }, 512); }; } }); function useProvideRadioGroup(props2, trigger2) { const fields = []; onMounted(() => { _resetRadioGroupValue(fields.length - 1); }); const getFieldsValue = () => { var _a; return (_a = fields.find((field) => field.value.radioChecked)) == null ? void 0 : _a.value.value; }; provide(uniRadioGroupKey, { addField(field) { fields.push(field); }, removeField(field) { fields.splice(fields.indexOf(field), 1); }, radioChange($event, field) { const index2 = fields.indexOf(field); _resetRadioGroupValue(index2, true); trigger2("change", $event, { value: getFieldsValue() }); } }); const uniForm = inject(uniFormKey, false); if (uniForm) { uniForm.addField({ submit: () => { let data = ["", null]; if (props2.name !== "") { data[0] = props2.name; data[1] = getFieldsValue(); } return data; } }); } function setFieldChecked(field, radioChecked) { field.value = { radioChecked, value: field.value.value }; } function _resetRadioGroupValue(key, change) { fields.forEach((value, index2) => { if (index2 === key) { return; } if (change) { setFieldChecked(fields[index2], false); } else { fields.forEach((v2, i) => { if (index2 >= i) { return; } if (fields[i].value.radioChecked) { setFieldChecked(fields[index2], false); } }); } }); } return fields; } const props$b = { checked: { type: [Boolean, String], default: false }, id: { type: String, default: "" }, disabled: { type: [Boolean, String], default: false }, color: { type: String, default: "#007aff" }, value: { type: String, default: "" } }; var Radio = /* @__PURE__ */ defineBuiltInComponent({ name: "Radio", props: props$b, setup(props2, { slots }) { const radioChecked = ref(props2.checked); const radioValue = ref(props2.value); const checkedStyle = computed$1(() => `background-color: ${props2.color};border-color: ${props2.color};`); watch([() => props2.checked, () => props2.value], ([newChecked, newModelValue]) => { radioChecked.value = newChecked; radioValue.value = newModelValue; }); const reset2 = () => { radioChecked.value = false; }; const { uniCheckGroup, uniLabel, field } = useRadioInject(radioChecked, radioValue, reset2); const _onClick = ($event) => { if (props2.disabled) { return; } radioChecked.value = true; uniCheckGroup && uniCheckGroup.radioChange($event, field); }; if (!!uniLabel) { uniLabel.addHandler(_onClick); onBeforeUnmount(() => { uniLabel.removeHandler(_onClick); }); } useListeners$1(props2, { "label-click": _onClick }); return () => { const { booleanAttrs } = useBooleanAttr(props2, "disabled"); return createVNode("uni-radio", mergeProps(booleanAttrs, { "onClick": _onClick }), { default: () => [createVNode("div", { "class": "uni-radio-wrapper" }, [createVNode("div", { "class": ["uni-radio-input", { "uni-radio-input-disabled": props2.disabled }], "style": radioChecked.value ? checkedStyle.value : "" }, [radioChecked.value ? createSvgIconVNode(ICON_PATH_SUCCESS_NO_CIRCLE, "#fff", 18) : ""], 6), slots.default && slots.default()])] }, 16, ["onClick"]); }; } }); function useRadioInject(radioChecked, radioValue, reset2) { const field = computed$1({ get: () => ({ radioChecked: Boolean(radioChecked.value), value: radioValue.value }), set: ({ radioChecked: checked }) => { radioChecked.value = checked; } }); const formField = { reset: reset2 }; const uniCheckGroup = inject(uniRadioGroupKey, false); if (!!uniCheckGroup) { uniCheckGroup.addField(field); } const uniForm = inject(uniFormKey, false); if (!!uniForm) { uniForm.addField(formField); } const uniLabel = inject(uniLabelKey, false); onBeforeUnmount(() => { uniCheckGroup && uniCheckGroup.removeField(field); uniForm && uniForm.removeField(formField); }); return { uniCheckGroup, uniForm, uniLabel, field }; } function removeDOCTYPE(html) { return html.replace(/<\?xml.*\?>\n/, "").replace(/\n/, "").replace(/\n/, ""); } function parseAttrs(attrs2) { return attrs2.reduce(function(pre, attr2) { let value = attr2.value; const name = attr2.name; if (value.match(/ /) && name !== "style") { value = value.split(" "); } if (pre[name]) { if (Array.isArray(pre[name])) { pre[name].push(value); } else { pre[name] = [pre[name], value]; } } else { pre[name] = value; } return pre; }, {}); } function parseHtml(html) { html = removeDOCTYPE(html); const stacks = []; const results = { node: "root", children: [] }; HTMLParser(html, { start: function(tag, attrs2, unary) { const node = { name: tag }; if (attrs2.length !== 0) { node.attrs = parseAttrs(attrs2); } if (unary) { const parent = stacks[0] || results; if (!parent.children) { parent.children = []; } parent.children.push(node); } else { stacks.unshift(node); } }, end: function(tag) { const node = stacks.shift(); if (node.name !== tag) console.error("invalid state: mismatch end tag"); if (stacks.length === 0) { results.children.push(node); } else { const parent = stacks[0]; if (!parent.children) { parent.children = []; } parent.children.push(node); } }, chars: function(text2) { const node = { type: "text", text: text2 }; if (stacks.length === 0) { results.children.push(node); } else { const parent = stacks[0]; if (!parent.children) { parent.children = []; } parent.children.push(node); } }, comment: function(text2) { const node = { node: "comment", text: text2 }; const parent = stacks[0]; if (!parent.children) { parent.children = []; } parent.children.push(node); } }); return results.children; } const TAGS = { a: "", abbr: "", b: "", blockquote: "", br: "", code: "", col: ["span", "width"], colgroup: ["span", "width"], dd: "", del: "", div: "", dl: "", dt: "", em: "", fieldset: "", h1: "", h2: "", h3: "", h4: "", h5: "", h6: "", hr: "", i: "", img: ["alt", "src", "height", "width"], ins: "", label: "", legend: "", li: "", ol: ["start", "type"], p: "", q: "", span: "", strong: "", sub: "", sup: "", table: ["width"], tbody: "", td: ["colspan", "rowspan", "height", "width"], tfoot: "", th: ["colspan", "rowspan", "height", "width"], thead: "", tr: "", ul: "" }; const CHARS = { amp: "&", gt: ">", lt: "<", nbsp: " ", quot: '"', apos: "'" }; function decodeEntities(htmlString) { return htmlString.replace(/&(([a-zA-Z]+)|(#x{0,1}[\da-zA-Z]+));/gi, function(match, stage) { if (hasOwn$1(CHARS, stage) && CHARS[stage]) { return CHARS[stage]; } if (/^#[0-9]{1,4}$/.test(stage)) { return String.fromCharCode(stage.slice(1)); } if (/^#x[0-9a-f]{1,4}$/i.test(stage)) { return String.fromCharCode("0" + stage.slice(1)); } const wrap = document.createElement("div"); wrap.innerHTML = match; return wrap.innerText || wrap.textContent; }); } function parseNodes(nodes, parentNode) { nodes.forEach(function(node) { if (!isPlainObject(node)) { return; } if (!hasOwn$1(node, "type") || node.type === "node") { if (!(typeof node.name === "string" && node.name)) { return; } const tagName = node.name.toLowerCase(); if (!hasOwn$1(TAGS, tagName)) { return; } const elem = document.createElement(tagName); if (!elem) { return; } const attrs2 = node.attrs; if (isPlainObject(attrs2)) { const tagAttrs = TAGS[tagName] || []; Object.keys(attrs2).forEach(function(name) { let value = attrs2[name]; switch (name) { case "class": Array.isArray(value) && (value = value.join(" ")); case "style": elem.setAttribute(name, value); break; default: if (tagAttrs.indexOf(name) !== -1) { elem.setAttribute(name, value); } } }); } const children = node.children; if (Array.isArray(children) && children.length) { parseNodes(node.children, elem); } parentNode.appendChild(elem); } else { if (node.type === "text" && typeof node.text === "string" && node.text !== "") { parentNode.appendChild(document.createTextNode(decodeEntities(node.text))); } } }); return parentNode; } const props$a = { nodes: { type: [Array, String], default: function() { return []; } } }; var RichText = /* @__PURE__ */ defineBuiltInComponent({ name: "RichText", compatConfig: { MODE: 3 }, props: props$a, setup(props2) { const rootRef = ref(null); function _renderNodes(nodes) { if (typeof nodes === "string") { nodes = parseHtml(nodes); } const nodeList = parseNodes(nodes, document.createDocumentFragment()); rootRef.value.firstElementChild.innerHTML = ""; rootRef.value.firstElementChild.appendChild(nodeList); } watch(() => props2.nodes, (value) => { _renderNodes(value); }); onMounted(() => { _renderNodes(props2.nodes); }); return () => { return createVNode("uni-rich-text", { "ref": rootRef }, { default: () => [createVNode("div", null, null)] }, 512); }; } }); const passiveOptions = passive(true); const props$9 = { scrollX: { type: [Boolean, String], default: false }, scrollY: { type: [Boolean, String], default: false }, upperThreshold: { type: [Number, String], default: 50 }, lowerThreshold: { type: [Number, String], default: 50 }, scrollTop: { type: [Number, String], default: 0 }, scrollLeft: { type: [Number, String], default: 0 }, scrollIntoView: { type: String, default: "" }, scrollWithAnimation: { type: [Boolean, String], default: false }, enableBackToTop: { type: [Boolean, String], default: false }, refresherEnabled: { type: [Boolean, String], default: false }, refresherThreshold: { type: Number, default: 45 }, refresherDefaultStyle: { type: String, default: "back" }, refresherBackground: { type: String, default: "#fff" }, refresherTriggered: { type: [Boolean, String], default: false } }; var ScrollView = /* @__PURE__ */ defineBuiltInComponent({ name: "ScrollView", compatConfig: { MODE: 3 }, props: props$9, emits: ["scroll", "scrolltoupper", "scrolltolower", "refresherrefresh", "refresherrestore", "refresherpulling", "refresherabort", "update:refresherTriggered"], setup(props2, { emit: emit2, slots }) { const rootRef = ref(null); const main = ref(null); const wrap = ref(null); const content = ref(null); const refresherinner = ref(null); const trigger2 = useCustomEvent(rootRef, emit2); const { state, scrollTopNumber, scrollLeftNumber } = useScrollViewState(props2); useScrollViewLoader(props2, state, scrollTopNumber, scrollLeftNumber, trigger2, rootRef, main, content, emit2); const mainStyle = computed$1(() => { let style = ""; props2.scrollX ? style += "overflow-x:auto;" : style += "overflow-x:hidden;"; props2.scrollY ? style += "overflow-y:auto;" : style += "overflow-y:hidden;"; return style; }); return () => { const { refresherEnabled, refresherBackground, refresherDefaultStyle } = props2; const { refresherHeight, refreshState, refreshRotate } = state; return createVNode("uni-scroll-view", { "ref": rootRef }, { default: () => [createVNode("div", { "ref": wrap, "class": "uni-scroll-view" }, [createVNode("div", { "ref": main, "style": mainStyle.value, "class": "uni-scroll-view" }, [createVNode("div", { "ref": content, "class": "uni-scroll-view-content" }, [refresherEnabled ? createVNode("div", { "ref": refresherinner, "style": { backgroundColor: refresherBackground, height: refresherHeight + "px" }, "class": "uni-scroll-view-refresher" }, [refresherDefaultStyle !== "none" ? createVNode("div", { "class": "uni-scroll-view-refresh" }, [createVNode("div", { "class": "uni-scroll-view-refresh-inner" }, [refreshState == "pulling" ? createVNode("svg", { "key": "refresh__icon", "style": { transform: "rotate(" + refreshRotate + "deg)" }, "fill": "#2BD009", "class": "uni-scroll-view-refresh__icon", "width": "24", "height": "24", "viewBox": "0 0 24 24" }, [createVNode("path", { "d": "M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z" }, null), createVNode("path", { "d": "M0 0h24v24H0z", "fill": "none" }, null)], 4) : null, refreshState == "refreshing" ? createVNode("svg", { "key": "refresh__spinner", "class": "uni-scroll-view-refresh__spinner", "width": "24", "height": "24", "viewBox": "25 25 50 50" }, [createVNode("circle", { "cx": "50", "cy": "50", "r": "20", "fill": "none", "style": "color: #2bd009", "stroke-width": "3" }, null)]) : null])]) : null, refresherDefaultStyle == "none" ? slots.refresher && slots.refresher() : null], 4) : null, slots.default && slots.default()], 512)], 4)], 512)] }, 512); }; } }); function useScrollViewState(props2) { const scrollTopNumber = computed$1(() => { return Number(props2.scrollTop) || 0; }); const scrollLeftNumber = computed$1(() => { return Number(props2.scrollLeft) || 0; }); const state = reactive({ lastScrollTop: scrollTopNumber.value, lastScrollLeft: scrollLeftNumber.value, lastScrollToUpperTime: 0, lastScrollToLowerTime: 0, refresherHeight: 0, refreshRotate: 0, refreshState: "" }); return { state, scrollTopNumber, scrollLeftNumber }; } function useScrollViewLoader(props2, state, scrollTopNumber, scrollLeftNumber, trigger2, rootRef, main, content, emit2) { let _lastScrollTime = 0; let beforeRefreshing = false; let toUpperNumber = 0; let triggerAbort = false; let __transitionEnd = () => { }; const upperThresholdNumber = computed$1(() => { let val = Number(props2.upperThreshold); return isNaN(val) ? 50 : val; }); const lowerThresholdNumber = computed$1(() => { let val = Number(props2.lowerThreshold); return isNaN(val) ? 50 : val; }); function scrollTo2(scrollToValue, direction2) { const container = main.value; let transformValue = 0; let transform = ""; scrollToValue < 0 ? scrollToValue = 0 : direction2 === "x" && scrollToValue > container.scrollWidth - container.offsetWidth ? scrollToValue = container.scrollWidth - container.offsetWidth : direction2 === "y" && scrollToValue > container.scrollHeight - container.offsetHeight && (scrollToValue = container.scrollHeight - container.offsetHeight); direction2 === "x" ? transformValue = container.scrollLeft - scrollToValue : direction2 === "y" && (transformValue = container.scrollTop - scrollToValue); if (transformValue === 0) return; let _content = content.value; _content.style.transition = "transform .3s ease-out"; _content.style.webkitTransition = "-webkit-transform .3s ease-out"; if (direction2 === "x") { transform = "translateX(" + transformValue + "px) translateZ(0)"; } else { direction2 === "y" && (transform = "translateY(" + transformValue + "px) translateZ(0)"); } _content.removeEventListener("transitionend", __transitionEnd); _content.removeEventListener("webkitTransitionEnd", __transitionEnd); __transitionEnd = () => _transitionEnd(scrollToValue, direction2); _content.addEventListener("transitionend", __transitionEnd); _content.addEventListener("webkitTransitionEnd", __transitionEnd); if (direction2 === "x") { container.style.overflowX = "hidden"; } else if (direction2 === "y") { container.style.overflowY = "hidden"; } _content.style.transform = transform; _content.style.webkitTransform = transform; } function _handleScroll($event) { if ($event.timeStamp - _lastScrollTime > 20) { _lastScrollTime = $event.timeStamp; const target = $event.target; trigger2("scroll", $event, { scrollLeft: target.scrollLeft, scrollTop: target.scrollTop, scrollHeight: target.scrollHeight, scrollWidth: target.scrollWidth, deltaX: state.lastScrollLeft - target.scrollLeft, deltaY: state.lastScrollTop - target.scrollTop }); if (props2.scrollY) { if (target.scrollTop <= upperThresholdNumber.value && state.lastScrollTop - target.scrollTop > 0 && $event.timeStamp - state.lastScrollToUpperTime > 200) { trigger2("scrolltoupper", $event, { direction: "top" }); state.lastScrollToUpperTime = $event.timeStamp; } if (target.scrollTop + target.offsetHeight + lowerThresholdNumber.value >= target.scrollHeight && state.lastScrollTop - target.scrollTop < 0 && $event.timeStamp - state.lastScrollToLowerTime > 200) { trigger2("scrolltolower", $event, { direction: "bottom" }); state.lastScrollToLowerTime = $event.timeStamp; } } if (props2.scrollX) { if (target.scrollLeft <= upperThresholdNumber.value && state.lastScrollLeft - target.scrollLeft > 0 && $event.timeStamp - state.lastScrollToUpperTime > 200) { trigger2("scrolltoupper", $event, { direction: "left" }); state.lastScrollToUpperTime = $event.timeStamp; } if (target.scrollLeft + target.offsetWidth + lowerThresholdNumber.value >= target.scrollWidth && state.lastScrollLeft - target.scrollLeft < 0 && $event.timeStamp - state.lastScrollToLowerTime > 200) { trigger2("scrolltolower", $event, { direction: "right" }); state.lastScrollToLowerTime = $event.timeStamp; } } state.lastScrollTop = target.scrollTop; state.lastScrollLeft = target.scrollLeft; } } function _scrollTopChanged(val) { if (props2.scrollY) { { if (props2.scrollWithAnimation) { scrollTo2(val, "y"); } else { main.value.scrollTop = val; } } } } function _scrollLeftChanged(val) { if (props2.scrollX) { { if (props2.scrollWithAnimation) { scrollTo2(val, "x"); } else { main.value.scrollLeft = val; } } } } function _scrollIntoViewChanged(val) { if (val) { if (!/^[_a-zA-Z][-_a-zA-Z0-9:]*$/.test(val)) { console.error(`id error: scroll-into-view=${val}`); return; } let element = rootRef.value.querySelector("#" + val); if (element) { let mainRect = main.value.getBoundingClientRect(); let elRect = element.getBoundingClientRect(); if (props2.scrollX) { let left = elRect.left - mainRect.left; let scrollLeft = main.value.scrollLeft; let x = scrollLeft + left; if (props2.scrollWithAnimation) { scrollTo2(x, "x"); } else { main.value.scrollLeft = x; } } if (props2.scrollY) { let top = elRect.top - mainRect.top; let scrollTop = main.value.scrollTop; let y = scrollTop + top; if (props2.scrollWithAnimation) { scrollTo2(y, "y"); } else { main.value.scrollTop = y; } } } } } function _transitionEnd(val, direction2) { content.value.style.transition = ""; content.value.style.webkitTransition = ""; content.value.style.transform = ""; content.value.style.webkitTransform = ""; let _main = main.value; if (direction2 === "x") { _main.style.overflowX = props2.scrollX ? "auto" : "hidden"; _main.scrollLeft = val; } else if (direction2 === "y") { _main.style.overflowY = props2.scrollY ? "auto" : "hidden"; _main.scrollTop = val; } content.value.removeEventListener("transitionend", __transitionEnd); content.value.removeEventListener("webkitTransitionEnd", __transitionEnd); } function _setRefreshState(_state) { switch (_state) { case "refreshing": state.refresherHeight = props2.refresherThreshold; if (!beforeRefreshing) { beforeRefreshing = true; trigger2("refresherrefresh", {}, {}); emit2("update:refresherTriggered", true); } break; case "restore": case "refresherabort": beforeRefreshing = false; state.refresherHeight = toUpperNumber = 0; if (_state === "restore") { triggerAbort = false; trigger2("refresherrestore", {}, {}); } if (_state === "refresherabort" && triggerAbort) { triggerAbort = false; trigger2("refresherabort", {}, {}); } break; } state.refreshState = _state; } onMounted(() => { _scrollTopChanged(scrollTopNumber.value); _scrollLeftChanged(scrollLeftNumber.value); _scrollIntoViewChanged(props2.scrollIntoView); let __handleScroll = function(event) { event.stopPropagation(); _handleScroll(event); }; let touchStart = { x: 0, y: 0 }; let needStop = null; let __handleTouchMove = function(event) { let x = event.touches[0].pageX; let y = event.touches[0].pageY; let _main = main.value; if (Math.abs(x - touchStart.x) > Math.abs(y - touchStart.y)) { if (props2.scrollX) { if (_main.scrollLeft === 0 && x > touchStart.x) { needStop = false; return; } else if (_main.scrollWidth === _main.offsetWidth + _main.scrollLeft && x < touchStart.x) { needStop = false; return; } needStop = true; } else { needStop = false; } } else { if (props2.scrollY) { if (_main.scrollTop === 0 && y > touchStart.y) { needStop = false; if (props2.refresherEnabled && event.cancelable !== false) event.preventDefault(); } else if (_main.scrollHeight === _main.offsetHeight + _main.scrollTop && y < touchStart.y) { needStop = false; return; } else { needStop = true; } } else { needStop = false; } } if (needStop) { event.stopPropagation(); } if (_main.scrollTop === 0 && event.touches.length === 1) { state.refreshState = "pulling"; } if (props2.refresherEnabled && state.refreshState === "pulling") { const dy = y - touchStart.y; if (toUpperNumber === 0) { toUpperNumber = y; } if (!beforeRefreshing) { state.refresherHeight = y - toUpperNumber; if (state.refresherHeight > 0) { triggerAbort = true; trigger2("refresherpulling", event, { deltaY: dy }); } } else { state.refresherHeight = dy + props2.refresherThreshold; triggerAbort = false; } const route = state.refresherHeight / props2.refresherThreshold; state.refreshRotate = (route > 1 ? 1 : route) * 360; } }; let __handleTouchStart = function(event) { if (event.touches.length === 1) { disableScrollBounce({ disable: true }); touchStart = { x: event.touches[0].pageX, y: event.touches[0].pageY }; } }; let __handleTouchEnd = function(event) { touchStart = { x: 0, y: 0 }; disableScrollBounce({ disable: false }); if (state.refresherHeight >= props2.refresherThreshold) { _setRefreshState("refreshing"); } else { _setRefreshState("refresherabort"); } }; main.value.addEventListener("touchstart", __handleTouchStart, passiveOptions); main.value.addEventListener("touchmove", __handleTouchMove); main.value.addEventListener("scroll", __handleScroll, passiveOptions); main.value.addEventListener("touchend", __handleTouchEnd, passiveOptions); initScrollBounce(); onBeforeUnmount(() => { main.value.removeEventListener("touchstart", __handleTouchStart); main.value.removeEventListener("touchmove", __handleTouchMove); main.value.removeEventListener("scroll", __handleScroll); main.value.removeEventListener("touchend", __handleTouchEnd); }); }); onActivated(() => { props2.scrollY && (main.value.scrollTop = state.lastScrollTop); props2.scrollX && (main.value.scrollLeft = state.lastScrollLeft); }); watch(scrollTopNumber, (val) => { _scrollTopChanged(val); }); watch(scrollLeftNumber, (val) => { _scrollLeftChanged(val); }); watch(() => props2.scrollIntoView, (val) => { _scrollIntoViewChanged(val); }); watch(() => props2.refresherTriggered, (val) => { if (val === true) { _setRefreshState("refreshing"); } else if (val === false) { _setRefreshState("restore"); } }); } const props$8 = { name: { type: String, default: "" }, min: { type: [Number, String], default: 0 }, max: { type: [Number, String], default: 100 }, value: { type: [Number, String], default: 0 }, step: { type: [Number, String], default: 1 }, disabled: { type: [Boolean, String], default: false }, color: { type: String, default: "#e9e9e9" }, backgroundColor: { type: String, default: "#e9e9e9" }, activeColor: { type: String, default: "#007aff" }, selectedColor: { type: String, default: "#007aff" }, blockColor: { type: String, default: "#ffffff" }, blockSize: { type: [Number, String], default: 28 }, showValue: { type: [Boolean, String], default: false } }; var Slider = /* @__PURE__ */ defineBuiltInComponent({ name: "Slider", props: props$8, emits: ["changing", "change"], setup(props2, { emit: emit2 }) { const sliderRef = ref(null); const sliderValueRef = ref(null); const sliderHandleRef = ref(null); const sliderValue = ref(Number(props2.value)); watch(() => props2.value, (val) => { sliderValue.value = Number(val); }); const trigger2 = useCustomEvent(sliderRef, emit2); const state = useSliderState(props2, sliderValue); const { _onClick, _onTrack } = useSliderLoader(props2, sliderValue, sliderRef, sliderValueRef, trigger2); onMounted(() => { useTouchtrack(sliderHandleRef.value, _onTrack); }); return () => { const { setBgColor, setBlockBg, setActiveColor, setBlockStyle } = state; return createVNode("uni-slider", { "ref": sliderRef, "onClick": withWebEvent(_onClick) }, { default: () => [createVNode("div", { "class": "uni-slider-wrapper" }, [createVNode("div", { "class": "uni-slider-tap-area" }, [createVNode("div", { "style": setBgColor.value, "class": "uni-slider-handle-wrapper" }, [createVNode("div", { "ref": sliderHandleRef, "style": setBlockBg.value, "class": "uni-slider-handle" }, null, 4), createVNode("div", { "style": setBlockStyle.value, "class": "uni-slider-thumb" }, null, 4), createVNode("div", { "style": setActiveColor.value, "class": "uni-slider-track" }, null, 4)], 4)]), withDirectives(createVNode("span", { "ref": sliderValueRef, "class": "uni-slider-value" }, [sliderValue.value], 512), [[vShow, props2.showValue]])]), createVNode("slot", null, null)], _: 1 }, 8, ["onClick"]); }; } }); function useSliderState(props2, sliderValue) { const _getValueWidth = () => { const max = Number(props2.max); const min = Number(props2.min); return 100 * (sliderValue.value - min) / (max - min) + "%"; }; const _getBgColor = () => { return props2.backgroundColor !== "#e9e9e9" ? props2.backgroundColor : props2.color !== "#007aff" ? props2.color : "#007aff"; }; const _getActiveColor = () => { return props2.activeColor !== "#007aff" ? props2.activeColor : props2.selectedColor !== "#e9e9e9" ? props2.selectedColor : "#e9e9e9"; }; const state = { setBgColor: computed$1(() => ({ backgroundColor: _getBgColor() })), setBlockBg: computed$1(() => ({ left: _getValueWidth() })), setActiveColor: computed$1(() => ({ backgroundColor: _getActiveColor(), width: _getValueWidth() })), setBlockStyle: computed$1(() => ({ width: props2.blockSize + "px", height: props2.blockSize + "px", marginLeft: -props2.blockSize / 2 + "px", marginTop: -props2.blockSize / 2 + "px", left: _getValueWidth(), backgroundColor: props2.blockColor })) }; return state; } function useSliderLoader(props2, sliderValue, sliderRef, sliderValueRef, trigger2) { const _onClick = ($event) => { if (props2.disabled) { return; } _onUserChangedValue($event); trigger2("change", $event, { value: sliderValue.value }); }; const _filterValue = (e2) => { const max = Number(props2.max); const min = Number(props2.min); const step = Number(props2.step); return e2 < min ? min : e2 > max ? max : computeController.mul.call(Math.round((e2 - min) / step), step) + min; }; const _onUserChangedValue = (e2) => { const max = Number(props2.max); const min = Number(props2.min); const sliderRightBox = sliderValueRef.value; const sliderRightBoxLeft = getComputedStyle(sliderRightBox, null).marginLeft; let sliderRightBoxWidth = sliderRightBox.offsetWidth; sliderRightBoxWidth = sliderRightBoxWidth + parseInt(sliderRightBoxLeft); const slider2 = sliderRef.value; const offsetWidth = slider2.offsetWidth - (props2.showValue ? sliderRightBoxWidth : 0); const boxLeft = slider2.getBoundingClientRect().left; const value = (e2.x - boxLeft) * (max - min) / offsetWidth + min; sliderValue.value = _filterValue(value); }; const _onTrack = (e2) => { if (!props2.disabled) { return e2.detail.state === "move" ? (_onUserChangedValue({ x: e2.detail.x }), trigger2("changing", e2, { value: sliderValue.value }), false) : e2.detail.state === "end" && trigger2("change", e2, { value: sliderValue.value }); } }; const uniForm = inject(uniFormKey, false); if (!!uniForm) { const field = { reset: () => sliderValue.value = Number(props2.min), submit: () => { const data = ["", null]; if (props2.name !== "") { data[0] = props2.name; data[1] = sliderValue.value; } return data; } }; uniForm.addField(field); onBeforeUnmount(() => { uniForm.removeField(field); }); } return { _onClick, _onTrack }; } var computeController = { mul: function(arg) { let m = 0; let s1 = this.toString(); let s2 = arg.toString(); try { m += s1.split(".")[1].length; } catch (e2) { } try { m += s2.split(".")[1].length; } catch (e2) { } return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m); } }; const props$7 = { indicatorDots: { type: [Boolean, String], default: false }, vertical: { type: [Boolean, String], default: false }, autoplay: { type: [Boolean, String], default: false }, circular: { type: [Boolean, String], default: false }, interval: { type: [Number, String], default: 5e3 }, duration: { type: [Number, String], default: 500 }, current: { type: [Number, String], default: 0 }, indicatorColor: { type: String, default: "" }, indicatorActiveColor: { type: String, default: "" }, previousMargin: { type: String, default: "" }, nextMargin: { type: String, default: "" }, currentItemId: { type: String, default: "" }, skipHiddenItemLayout: { type: [Boolean, String], default: false }, displayMultipleItems: { type: [Number, String], default: 1 }, disableTouch: { type: [Boolean, String], default: false } }; function useState(props2) { const interval = computed$1(() => { const interval2 = Number(props2.interval); return isNaN(interval2) ? 5e3 : interval2; }); const duration = computed$1(() => { const duration2 = Number(props2.duration); return isNaN(duration2) ? 500 : duration2; }); const displayMultipleItems = computed$1(() => { const displayMultipleItems2 = Math.round(props2.displayMultipleItems); return isNaN(displayMultipleItems2) ? 1 : displayMultipleItems2; }); const state = reactive({ interval, duration, displayMultipleItems, current: Math.round(props2.current) || 0, currentItemId: props2.currentItemId, userTracking: false }); return state; } function useLayout(props2, state, swiperContexts, slideFrameRef, emit2, trigger2) { function cancelSchedule() { if (timer) { clearTimeout(timer); timer = null; } } let timer = null; let invalid = true; let viewportPosition = 0; let viewportMoveRatio = 1; let animating = null; let requestedAnimation = false; let contentTrackViewport = 0; let transitionStart; let currentChangeSource = ""; let animationFrame; const circularEnabled = computed$1(() => props2.circular && swiperContexts.value.length > state.displayMultipleItems); function checkCircularLayout(index2) { if (!invalid) { for (let items = swiperContexts.value, n = items.length, i = index2 + state.displayMultipleItems, r = 0; r < n; r++) { const item = items[r]; const s = Math.floor(index2 / n) * n + r; const l = s + n; const c = s - n; const u = Math.max(index2 - (s + 1), s - i, 0); const d = Math.max(index2 - (l + 1), l - i, 0); const h2 = Math.max(index2 - (c + 1), c - i, 0); const p2 = Math.min(u, d, h2); const position = [s, l, c][[u, d, h2].indexOf(p2)]; item.updatePosition(position, props2.vertical); } } } function updateViewport(index2) { if (!(Math.floor(2 * viewportPosition) === Math.floor(2 * index2) && Math.ceil(2 * viewportPosition) === Math.ceil(2 * index2))) { if (circularEnabled.value) { checkCircularLayout(index2); } } const x = props2.vertical ? "0" : 100 * -index2 * viewportMoveRatio + "%"; const y = props2.vertical ? 100 * -index2 * viewportMoveRatio + "%" : "0"; const transform = "translate(" + x + ", " + y + ") translateZ(0)"; const slideFrame = slideFrameRef.value; if (slideFrame) { slideFrame.style.webkitTransform = transform; slideFrame.style.transform = transform; } viewportPosition = index2; if (!transitionStart) { if (index2 % 1 === 0) { return; } transitionStart = index2; } index2 -= Math.floor(transitionStart); const items = swiperContexts.value; if (index2 <= -(items.length - 1)) { index2 += items.length; } else if (index2 >= items.length) { index2 -= items.length; } index2 = transitionStart % 1 > 0.5 || transitionStart < 0 ? index2 - 1 : index2; trigger2("transition", {}, { dx: props2.vertical ? 0 : index2 * slideFrame.offsetWidth, dy: props2.vertical ? index2 * slideFrame.offsetHeight : 0 }); } function endViewportAnimation() { if (animating) { updateViewport(animating.toPos); animating = null; } } function normalizeCurrentValue(current) { const length = swiperContexts.value.length; if (!length) { return -1; } const index2 = (Math.round(current) % length + length) % length; if (circularEnabled.value) { if (length <= state.displayMultipleItems) { return 0; } } else if (index2 > length - state.displayMultipleItems) { return length - state.displayMultipleItems; } return index2; } function cancelViewportAnimation() { animating = null; } function animateFrameFuncProto() { if (!animating) { requestedAnimation = false; return; } const _animating = animating; const toPos = _animating.toPos; const acc = _animating.acc; const endTime = _animating.endTime; const source = _animating.source; const time = endTime - Date.now(); if (time <= 0) { updateViewport(toPos); animating = null; requestedAnimation = false; transitionStart = null; const item = swiperContexts.value[state.current]; if (item) { const currentItemId = item.getItemId(); trigger2("animationfinish", {}, { current: state.current, currentItemId, source }); } return; } const s = acc * time * time / 2; const l = toPos + s; updateViewport(l); animationFrame = requestAnimationFrame(animateFrameFuncProto); } function animateViewport(current, source, n) { cancelViewportAnimation(); const duration = state.duration; const length = swiperContexts.value.length; let position = viewportPosition; if (circularEnabled.value) { if (n < 0) { for (; position < current; ) { position += length; } for (; position - length > current; ) { position -= length; } } else if (n > 0) { for (; position > current; ) { position -= length; } for (; position + length < current; ) { position += length; } } else { for (; position + length < current; ) { position += length; } for (; position - length > current; ) { position -= length; } if (position + length - current < current - position) { position += length; } } } animating = { toPos: current, acc: 2 * (position - current) / (duration * duration), endTime: Date.now() + duration, source }; if (!requestedAnimation) { requestedAnimation = true; animationFrame = requestAnimationFrame(animateFrameFuncProto); } } function scheduleAutoplay() { cancelSchedule(); const items = swiperContexts.value; const callback = function() { timer = null; currentChangeSource = "autoplay"; if (circularEnabled.value) { state.current = normalizeCurrentValue(state.current + 1); } else { state.current = state.current + state.displayMultipleItems < items.length ? state.current + 1 : 0; } animateViewport(state.current, "autoplay", circularEnabled.value ? 1 : 0); timer = setTimeout(callback, state.interval); }; if (!(invalid || items.length <= state.displayMultipleItems)) { timer = setTimeout(callback, state.interval); } } function resetLayout() { cancelSchedule(); endViewportAnimation(); const items = swiperContexts.value; for (let i = 0; i < items.length; i++) { items[i].updatePosition(i, props2.vertical); } viewportMoveRatio = 1; const slideFrameEl = slideFrameRef.value; if (state.displayMultipleItems === 1 && items.length) { const itemRect = items[0].getBoundingClientRect(); const slideFrameRect = slideFrameEl.getBoundingClientRect(); viewportMoveRatio = itemRect.width / slideFrameRect.width; if (!(viewportMoveRatio > 0 && viewportMoveRatio < 1)) { viewportMoveRatio = 1; } } const position = viewportPosition; viewportPosition = -2; const current = state.current; if (current >= 0) { invalid = false; if (state.userTracking) { updateViewport(position + current - contentTrackViewport); contentTrackViewport = current; } else { updateViewport(current); if (props2.autoplay) { scheduleAutoplay(); } } } else { invalid = true; updateViewport(-state.displayMultipleItems - 1); } } watch([() => props2.current, () => props2.currentItemId, () => [...swiperContexts.value]], () => { let current = -1; if (props2.currentItemId) { for (let i = 0, items = swiperContexts.value; i < items.length; i++) { const itemId = items[i].getItemId(); if (itemId === props2.currentItemId) { current = i; break; } } } if (current < 0) { current = Math.round(props2.current) || 0; } current = current < 0 ? 0 : current; if (state.current !== current) { currentChangeSource = ""; state.current = current; } }); watch([() => props2.vertical, () => circularEnabled.value, () => state.displayMultipleItems, () => [...swiperContexts.value]], resetLayout); watch(() => state.interval, () => { if (timer) { cancelSchedule(); scheduleAutoplay(); } }); function currentChanged(current, history) { const source = currentChangeSource; currentChangeSource = ""; const items = swiperContexts.value; if (!source) { const length = items.length; animateViewport(current, "", circularEnabled.value && history + (length - current) % length > length / 2 ? 1 : 0); } const item = items[current]; if (item) { const currentItemId = state.currentItemId = item.getItemId(); trigger2("change", {}, { current: state.current, currentItemId, source }); } } watch(() => state.current, (val, oldVal) => { currentChanged(val, oldVal); emit2("update:current", val); }); watch(() => state.currentItemId, (val) => { emit2("update:currentItemId", val); }); function inintAutoplay(enable) { if (enable) { scheduleAutoplay(); } else { cancelSchedule(); } } watch(() => props2.autoplay && !state.userTracking, inintAutoplay); inintAutoplay(props2.autoplay && !state.userTracking); onMounted(() => { let userDirectionChecked = false; let contentTrackSpeed = 0; let contentTrackT = 0; function handleTrackStart() { cancelSchedule(); contentTrackViewport = viewportPosition; contentTrackSpeed = 0; contentTrackT = Date.now(); cancelViewportAnimation(); } function handleTrackMove(data) { const oldContentTrackT = contentTrackT; contentTrackT = Date.now(); const length = swiperContexts.value.length; const other = length - state.displayMultipleItems; function calc2(val) { return 0.5 - 0.25 / (val + 0.5); } function move(oldVal, newVal) { let val = contentTrackViewport + oldVal; contentTrackSpeed = 0.6 * contentTrackSpeed + 0.4 * newVal; if (!circularEnabled.value) { if (val < 0 || val > other) { if (val < 0) { val = -calc2(-val); } else { if (val > other) { val = other + calc2(val - other); } } contentTrackSpeed = 0; } } updateViewport(val); } const time = contentTrackT - oldContentTrackT || 1; const slideFrameEl = slideFrameRef.value; if (props2.vertical) { move(-data.dy / slideFrameEl.offsetHeight, -data.ddy / time); } else { move(-data.dx / slideFrameEl.offsetWidth, -data.ddx / time); } } function handleTrackEnd(isCancel) { state.userTracking = false; const t2 = contentTrackSpeed / Math.abs(contentTrackSpeed); let n = 0; if (!isCancel && Math.abs(contentTrackSpeed) > 0.2) { n = 0.5 * t2; } const current = normalizeCurrentValue(viewportPosition + n); if (isCancel) { updateViewport(contentTrackViewport); } else { currentChangeSource = "touch"; state.current = current; animateViewport(current, "touch", n !== 0 ? n : current === 0 && circularEnabled.value && viewportPosition >= 1 ? 1 : 0); } } useTouchtrack(slideFrameRef.value, (event) => { if (props2.disableTouch) { return; } if (!invalid) { if (event.detail.state === "start") { state.userTracking = true; userDirectionChecked = false; return handleTrackStart(); } if (event.detail.state === "end") { return handleTrackEnd(false); } if (event.detail.state === "cancel") { return handleTrackEnd(true); } if (state.userTracking) { if (!userDirectionChecked) { userDirectionChecked = true; const t2 = Math.abs(event.detail.dx); const n = Math.abs(event.detail.dy); if (t2 >= n && props2.vertical) { state.userTracking = false; } else { if (t2 <= n && !props2.vertical) { state.userTracking = false; } } if (!state.userTracking) { if (props2.autoplay) { scheduleAutoplay(); } return; } } handleTrackMove(event.detail); return false; } } }); }); onUnmounted(() => { cancelSchedule(); cancelAnimationFrame(animationFrame); }); function onSwiperDotClick(index2) { animateViewport(state.current = index2, currentChangeSource = "click", circularEnabled.value ? 1 : 0); } return { onSwiperDotClick }; } var Swiper = /* @__PURE__ */ defineBuiltInComponent({ name: "Swiper", props: props$7, emits: ["change", "transition", "animationfinish", "update:current", "update:currentItemId"], setup(props2, { slots, emit: emit2 }) { const rootRef = ref(null); const trigger2 = useCustomEvent(rootRef, emit2); const slidesWrapperRef = ref(null); const slideFrameRef = ref(null); const state = useState(props2); const slidesStyle = computed$1(() => { let style = {}; if (props2.nextMargin || props2.previousMargin) { style = props2.vertical ? { left: 0, right: 0, top: rpx2px$1(props2.previousMargin, true), bottom: rpx2px$1(props2.nextMargin, true) } : { top: 0, bottom: 0, left: rpx2px$1(props2.previousMargin, true), right: rpx2px$1(props2.nextMargin, true) }; } return style; }); const slideFrameStyle = computed$1(() => { const value = Math.abs(100 / state.displayMultipleItems) + "%"; return { width: props2.vertical ? "100%" : value, height: !props2.vertical ? "100%" : value }; }); let swiperItems = []; const originSwiperContexts = []; const swiperContexts = ref([]); function updateSwiperContexts() { const contexts = []; for (let index2 = 0; index2 < swiperItems.length; index2++) { let swiperItem2 = swiperItems[index2]; if (!(swiperItem2 instanceof Element)) { swiperItem2 = swiperItem2.el; } const swiperContext = originSwiperContexts.find((context) => swiperItem2 === context.rootRef.value); if (swiperContext) { contexts.push(markRaw(swiperContext)); } } swiperContexts.value = contexts; } { useRebuild(() => { swiperItems = slideFrameRef.value.children; updateSwiperContexts(); }); } const addSwiperContext = function(swiperContext) { originSwiperContexts.push(swiperContext); updateSwiperContexts(); }; provide("addSwiperContext", addSwiperContext); const removeSwiperContext = function(swiperContext) { const index2 = originSwiperContexts.indexOf(swiperContext); if (index2 >= 0) { originSwiperContexts.splice(index2, 1); updateSwiperContexts(); } }; provide("removeSwiperContext", removeSwiperContext); const { onSwiperDotClick } = useLayout(props2, state, swiperContexts, slideFrameRef, emit2, trigger2); return () => { const defaultSlots = slots.default && slots.default(); swiperItems = flatVNode(defaultSlots); return createVNode("uni-swiper", { "ref": rootRef }, { default: () => [createVNode("div", { "ref": slidesWrapperRef, "class": "uni-swiper-wrapper" }, [createVNode("div", { "class": "uni-swiper-slides", "style": slidesStyle.value }, [createVNode("div", { "ref": slideFrameRef, "class": "uni-swiper-slide-frame", "style": slideFrameStyle.value }, [defaultSlots], 4)], 4), props2.indicatorDots && createVNode("div", { "class": ["uni-swiper-dots", props2.vertical ? "uni-swiper-dots-vertical" : "uni-swiper-dots-horizontal"] }, [swiperContexts.value.map((_, index2, array) => createVNode("div", { "onClick": () => onSwiperDotClick(index2), "class": { "uni-swiper-dot": true, "uni-swiper-dot-active": index2 < state.current + state.displayMultipleItems && index2 >= state.current || index2 < state.current + state.displayMultipleItems - array.length }, "style": { background: index2 === state.current ? props2.indicatorActiveColor : props2.indicatorColor } }, null, 14, ["onClick"]))], 2)], 512)] }, 512); }; } }); const props$6 = { itemId: { type: String, default: "" } }; var SwiperItem = /* @__PURE__ */ defineBuiltInComponent({ name: "SwiperItem", props: props$6, setup(props2, { slots }) { const rootRef = ref(null); const context = { rootRef, getItemId() { return props2.itemId; }, getBoundingClientRect() { const el = rootRef.value; return el.getBoundingClientRect(); }, updatePosition(position, vertical) { const x = vertical ? "0" : 100 * position + "%"; const y = vertical ? 100 * position + "%" : "0"; const rootEl = rootRef.value; const value = `translate(${x},${y}) translateZ(0)`; if (rootEl) { rootEl.style.webkitTransform = value; rootEl.style.transform = value; } } }; onMounted(() => { const addSwiperContext = inject("addSwiperContext"); if (addSwiperContext) { addSwiperContext(context); } }); onUnmounted(() => { const removeSwiperContext = inject("removeSwiperContext"); if (removeSwiperContext) { removeSwiperContext(context); } }); return () => { return createVNode("uni-swiper-item", { "ref": rootRef, "style": { position: "absolute", width: "100%", height: "100%" } }, { default: () => [slots.default && slots.default()] }, 512); }; } }); const props$5 = { name: { type: String, default: "" }, checked: { type: [Boolean, String], default: false }, type: { type: String, default: "switch" }, id: { type: String, default: "" }, disabled: { type: [Boolean, String], default: false }, color: { type: String, default: "#007aff" } }; var Switch = /* @__PURE__ */ defineBuiltInComponent({ name: "Switch", props: props$5, emits: ["change"], setup(props2, { emit: emit2 }) { const rootRef = ref(null); const switchChecked = ref(props2.checked); const uniLabel = useSwitchInject(props2, switchChecked); const trigger2 = useCustomEvent(rootRef, emit2); watch(() => props2.checked, (val) => { switchChecked.value = val; }); const _onClick = ($event) => { if (props2.disabled) { return; } switchChecked.value = !switchChecked.value; trigger2("change", $event, { value: switchChecked.value }); }; if (!!uniLabel) { uniLabel.addHandler(_onClick); onBeforeUnmount(() => { uniLabel.removeHandler(_onClick); }); } useListeners$1(props2, { "label-click": _onClick }); return () => { const { color, type } = props2; const { booleanAttrs } = useBooleanAttr(props2, "disabled"); return createVNode("uni-switch", mergeProps({ "ref": rootRef }, booleanAttrs, { "onClick": _onClick }), { default: () => [createVNode("div", { "class": "uni-switch-wrapper" }, [withDirectives(createVNode("div", { "class": ["uni-switch-input", [switchChecked.value ? "uni-switch-input-checked" : ""]], "style": { backgroundColor: switchChecked.value ? color : "#DFDFDF", borderColor: switchChecked.value ? color : "#DFDFDF" } }, null, 6), [[vShow, type === "switch"]]), withDirectives(createVNode("div", { "class": "uni-checkbox-input" }, [switchChecked.value ? createSvgIconVNode(ICON_PATH_SUCCESS_NO_CIRCLE, props2.color, 22) : ""], 512), [[vShow, type === "checkbox"]])])] }, 16, ["onClick"]); }; } }); function useSwitchInject(props2, switchChecked) { const uniForm = inject(uniFormKey, false); const uniLabel = inject(uniLabelKey, false); const formField = { submit: () => { const data = ["", null]; if (props2.name) { data[0] = props2.name; data[1] = switchChecked.value; } return data; }, reset: () => { switchChecked.value = false; } }; if (!!uniForm) { uniForm.addField(formField); onUnmounted(() => { uniForm.removeField(formField); }); } return uniLabel; } const SPACE_UNICODE = { ensp: "\u2002", emsp: "\u2003", nbsp: "\xA0" }; function parseText(text2, options) { return text2.replace(/\\n/g, "\n").split("\n").map((text22) => { return normalizeText(text22, options); }); } function normalizeText(text2, { space, decode }) { if (!text2) { return text2; } if (space && SPACE_UNICODE[space]) { text2 = text2.replace(/ /g, SPACE_UNICODE[space]); } if (!decode) { return text2; } return text2.replace(/ /g, SPACE_UNICODE.nbsp).replace(/ /g, SPACE_UNICODE.ensp).replace(/ /g, SPACE_UNICODE.emsp).replace(/</g, "<").replace(/>/g, ">").replace(/&/g, "&").replace(/"/g, '"').replace(/'/g, "'"); } const props$4 = /* @__PURE__ */ extend({}, props$j, { placeholderClass: { type: String, default: "input-placeholder" }, autoHeight: { type: [Boolean, String], default: false }, confirmType: { type: String, default: "" } }); let fixMargin = false; function setFixMargin() { const DARK_TEST_STRING = "(prefers-color-scheme: dark)"; fixMargin = String(navigator.platform).indexOf("iP") === 0 && String(navigator.vendor).indexOf("Apple") === 0 && window.matchMedia(DARK_TEST_STRING).media !== DARK_TEST_STRING; } var Textarea = /* @__PURE__ */ defineBuiltInComponent({ name: "Textarea", props: props$4, emit: ["confirm", "linechange", ...emit], setup(props2, { emit: emit2 }) { const rootRef = ref(null); const { fieldRef, state, scopedAttrsState, fixDisabledColor, trigger: trigger2 } = useField(props2, rootRef, emit2); const valueCompute = computed$1(() => state.value.split("\n")); const isDone = computed$1(() => ["done", "go", "next", "search", "send"].includes(props2.confirmType)); const heightRef = ref(0); const lineRef = ref(null); watch(() => heightRef.value, (height) => { const el = rootRef.value; const lineEl = lineRef.value; let lineHeight = parseFloat(getComputedStyle(el).lineHeight); if (isNaN(lineHeight)) { lineHeight = lineEl.offsetHeight; } var lineCount = Math.round(height / lineHeight); trigger2("linechange", {}, { height, heightRpx: 750 / window.innerWidth * height, lineCount }); if (props2.autoHeight) { el.style.height = height + "px"; } }); function onResize({ height }) { heightRef.value = height; } function confirm(event) { trigger2("confirm", event, { value: state.value }); } function onKeyDownEnter(event) { if (event.key !== "Enter") { return; } if (isDone.value) { event.preventDefault(); } } function onKeyUpEnter(event) { if (event.key !== "Enter") { return; } if (isDone.value) { confirm(event); const textarea2 = event.target; textarea2.blur(); } } { setFixMargin(); } return () => { let textareaNode = props2.disabled && fixDisabledColor ? createVNode("textarea", { "ref": fieldRef, "value": state.value, "tabindex": "-1", "readonly": !!props2.disabled, "maxlength": state.maxlength, "class": { "uni-textarea-textarea": true, "uni-textarea-textarea-fix-margin": fixMargin }, "style": { overflowY: props2.autoHeight ? "hidden" : "auto" }, "onFocus": (event) => event.target.blur() }, null, 46, ["value", "readonly", "maxlength", "onFocus"]) : createVNode("textarea", { "ref": fieldRef, "value": state.value, "disabled": !!props2.disabled, "maxlength": state.maxlength, "enterkeyhint": props2.confirmType, "class": { "uni-textarea-textarea": true, "uni-textarea-textarea-fix-margin": fixMargin }, "style": { overflowY: props2.autoHeight ? "hidden" : "auto" }, "onKeydown": onKeyDownEnter, "onKeyup": onKeyUpEnter }, null, 46, ["value", "disabled", "maxlength", "enterkeyhint", "onKeydown", "onKeyup"]); return createVNode("uni-textarea", { "ref": rootRef }, { default: () => [createVNode("div", { "class": "uni-textarea-wrapper" }, [withDirectives(createVNode("div", mergeProps(scopedAttrsState.attrs, { "style": props2.placeholderStyle, "class": ["uni-textarea-placeholder", props2.placeholderClass] }), [props2.placeholder], 16), [[vShow, !state.value.length]]), createVNode("div", { "ref": lineRef, "class": "uni-textarea-line" }, [" "], 512), createVNode("div", { "class": "uni-textarea-compute" }, [valueCompute.value.map((item) => createVNode("div", null, [item.trim() ? item : "."])), createVNode(ResizeSensor, { "initial": true, "onResize": onResize }, null, 8, ["initial", "onResize"])]), props2.confirmType === "search" ? createVNode("form", { "action": "", "onSubmit": () => false, "class": "uni-input-form" }, [textareaNode], 40, ["onSubmit"]) : textareaNode])] }, 512); }; } }); /* @__PURE__ */ defineBuiltInComponent({ name: "View", props: extend({}, hoverProps), setup(props2, { slots }) { const { hovering, binding } = useHover(props2); return () => { const hoverClass = props2.hoverClass; if (hoverClass && hoverClass !== "none") { return createVNode("uni-view", mergeProps({ "class": hovering.value ? hoverClass : "" }, binding), { default: () => [slots.default && slots.default()] }, 16, ["class"]); } return createVNode("uni-view", null, { default: () => [slots.default && slots.default()] }); }; } }); function normalizeEvent(vm, id2) { if (!id2) { id2 = vm.id; } if (!id2) { return; } return vm.$options.name.toLowerCase() + "." + id2; } function addSubscribe(name, callback, pageId) { if (!name) { return; } registerViewMethod(pageId || getCurrentPageId(), name, ({ type, data }, resolve2) => { callback(type, data, resolve2); }); } function removeSubscribe(name) { if (!name) { return; } unregisterViewMethod(getCurrentPageId(), name); } function useSubscribe(callback, name, multiple, pageId) { const instance = getCurrentInstance(); const vm = instance.proxy; onMounted(() => { addSubscribe(name || normalizeEvent(vm), callback, pageId); if (multiple || !name) { watch(() => vm.id, (value, oldValue) => { addSubscribe(normalizeEvent(vm, value), callback, pageId); removeSubscribe(oldValue && normalizeEvent(vm, oldValue)); }); } }); onBeforeUnmount(() => { removeSubscribe(name || normalizeEvent(vm)); }); } let index = 0; function useContextInfo(_id) { const page = useCurrentPageId(); const instance = getCurrentInstance(); const vm = instance.proxy; const type = vm.$options.name.toLowerCase(); const id2 = _id || vm.id || `context${index++}`; onMounted(() => { const el = vm.$el; el.__uniContextInfo = { id: id2, type, page }; }); return `${type}.${id2}`; } function getContextInfo(el) { return el.__uniContextInfo; } const PROP_NAMES_HOVER$1 = ["space", "decode"]; class UniTextElement extends UniElement { constructor(id2, parentNodeId, refNodeId, nodeJson) { super(id2, document.createElement("uni-text"), parentNodeId, refNodeId, nodeJson, PROP_NAMES_HOVER$1); this._text = ""; } init(nodeJson) { this._text = nodeJson.t || ""; super.init(nodeJson); } setText(text2) { this._text = text2; this.update(); } update() { const { $props: { space, decode } } = this; this.$.innerHTML = parseText(this._text, { space, decode }).join("
"); } } class UniTextNode extends UniNode { constructor(id2, parentNodeId, refNodeId, nodeJson) { super(id2, "#text", parentNodeId, document.createTextNode("")); this.init(nodeJson); this.insert(parentNodeId, refNodeId); } } var view = "uni-view {\n display: block;\n}\nuni-view[hidden] {\n display: none;\n}\n"; const PROP_NAMES_HOVER = [ "hover-class", "hover-stop-propagation", "hover-start-time", "hover-stay-time" ]; class UniHoverElement extends UniElement { constructor(id2, element, parentNodeId, refNodeId, nodeJson, propNames = []) { super(id2, element, parentNodeId, refNodeId, nodeJson, [ ...PROP_NAMES_HOVER, ...propNames ]); } update() { const hoverClass = this.$props["hover-class"]; if (hoverClass && hoverClass !== "none") { if (!this._hover) { this._hover = new Hover(this.$, this.$props); } this._hover.addEvent(); } else { if (this._hover) { this._hover.removeEvent(); } } } } class Hover { constructor($2, props2) { this._listening = false; this._hovering = false; this._hoverTouch = false; this.$ = $2; this.props = props2; this.__hoverTouchStart = this._hoverTouchStart.bind(this); this.__hoverTouchEnd = this._hoverTouchEnd.bind(this); this.__hoverTouchCancel = this._hoverTouchCancel.bind(this); } get hovering() { return this._hovering; } set hovering(hovering) { this._hovering = hovering; const hoverClass = this.props["hover-class"]; if (hovering) { this.$.classList.add(hoverClass); } else { this.$.classList.remove(hoverClass); } } addEvent() { if (this._listening) { return; } { console.log(formatLog(this.$.tagName, "Hover", "addEventListener", this.props["hover-class"])); } this._listening = true; this.$.addEventListener("touchstart", this.__hoverTouchStart); this.$.addEventListener("touchend", this.__hoverTouchEnd); this.$.addEventListener("touchcancel", this.__hoverTouchCancel); } removeEvent() { if (!this._listening) { return; } { console.log(formatLog(this.$.tagName, "Hover", "removeEventListener")); } this._listening = false; this.$.removeEventListener("touchstart", this.__hoverTouchStart); this.$.removeEventListener("touchend", this.__hoverTouchEnd); this.$.removeEventListener("touchcancel", this.__hoverTouchCancel); } _hoverTouchStart(evt) { if (evt._hoverPropagationStopped) { return; } const hoverClass = this.props["hover-class"]; if (!hoverClass || hoverClass === "none" || this.$.disabled) { return; } if (evt.touches.length > 1) { return; } if (this.props["hover-stop-propagation"]) { evt._hoverPropagationStopped = true; } this._hoverTouch = true; this._hoverStartTimer = setTimeout(() => { this.hovering = true; if (!this._hoverTouch) { this._hoverReset(); } }, this.props["hover-start-time"]); } _hoverTouchEnd() { this._hoverTouch = false; if (this.hovering) { this._hoverReset(); } } _hoverReset() { requestAnimationFrame(() => { clearTimeout(this._hoverStayTimer); this._hoverStayTimer = setTimeout(() => { this.hovering = false; }, this.props["hover-stay-time"]); }); } _hoverTouchCancel() { this._hoverTouch = false; this.hovering = false; clearTimeout(this._hoverStartTimer); } } class UniViewElement extends UniHoverElement { constructor(id2, parentNodeId, refNodeId, nodeJson) { super(id2, document.createElement("uni-view"), parentNodeId, refNodeId, nodeJson); } } function getStatusbarHeight() { return plus.navigator.isImmersedStatusbar() ? Math.round(plus.os.name === "iOS" ? plus.navigator.getSafeAreaInsets().top : plus.navigator.getStatusbarHeight()) : 0; } function getNavigationBarHeight() { const webview2 = plus.webview.currentWebview(); const style = webview2.getStyle(); const titleNView = style && style.titleNView; if (titleNView && titleNView.type === "default") { return NAVBAR_HEIGHT + getStatusbarHeight(); } return 0; } const onDrawKey = Symbol("onDraw"); function getFixed($el) { let fixed; while ($el) { const style = getComputedStyle($el); const transform = style.transform || style.webkitTransform; fixed = transform && transform !== "none" ? false : fixed; fixed = style.position === "fixed" ? true : fixed; $el = $el.parentElement; } return fixed; } function useNativeAttrs(props2, ignore) { return computed$1(() => { const object = {}; Object.keys(props2).forEach((key) => { if (ignore && ignore.includes(key)) { return; } let val = props2[key]; val = key === "src" ? getRealPath(val) : val; object[key.replace(/[A-Z]/g, (str) => "-" + str.toLowerCase())] = val; }); return object; }); } function useNative(rootRef) { const position = reactive({ top: "0px", left: "0px", width: "0px", height: "0px", position: "static" }); const hidden = ref(false); function updatePosition() { const el = rootRef.value; const rect = el.getBoundingClientRect(); hidden.value = rect.width === 0 || rect.height === 0; if (!hidden.value) { position.position = getFixed(el) ? "absolute" : "static"; const keys = ["top", "left", "width", "height"]; keys.forEach((key) => { let val = rect[key]; val = key === "top" ? val + (position.position === "static" ? document.documentElement.scrollTop || document.body.scrollTop || 0 : getNavigationBarHeight()) : val; position[key] = val + "px"; }); } } let request = null; function requestPositionUpdate() { if (request) { cancelAnimationFrame(request); } request = requestAnimationFrame(() => { request = null; updatePosition(); }); } window.addEventListener("updateview", requestPositionUpdate); let onDrawCallbacks = []; let attachedCallback; function onParentReady(callback) { const onDraw2 = inject(onDrawKey); const newCallback = (parentPosition) => { callback(parentPosition); onDrawCallbacks.forEach((callback2) => callback2(position)); onDrawCallbacks = null; }; if (onDraw2) { onDraw2(newCallback); } else { attachedCallback = () => newCallback({ top: "0px", left: "0px", width: Number.MAX_SAFE_INTEGER + "px", height: Number.MAX_SAFE_INTEGER + "px", position: "static" }); } } const onDraw = function(callback) { if (onDrawCallbacks) { onDrawCallbacks.push(callback); } else { callback(position); } }; provide(onDrawKey, onDraw); onMounted(() => { updatePosition(); if (attachedCallback) { attachedCallback(); } }); return { position, hidden, onParentReady }; } var Ad = /* @__PURE__ */ defineBuiltInComponent({ name: "Ad", props: { adpid: { type: [Number, String], default: "" }, data: { type: Object, default: null }, dataCount: { type: Number, default: 5 }, channel: { type: String, default: "" } }, setup(props2, { emit: emit2 }) { const rootRef = ref(null); const containerRef = ref(null); const trigger2 = useCustomEvent(rootRef, emit2); const attrs2 = useNativeAttrs(props2, ["id"]); const { position, onParentReady } = useNative(containerRef); let adView; onParentReady(() => { adView = plus.ad.createAdView(Object.assign({}, attrs2.value, position)); plus.webview.currentWebview().append(adView); adView.setDislikeListener((data) => { containerRef.value.style.height = "0"; window.dispatchEvent(new CustomEvent("updateview")); trigger2("close", {}, data); }); adView.setRenderingListener((data) => { if (data.result === 0) { containerRef.value.style.height = data.height + "px"; window.dispatchEvent(new CustomEvent("updateview")); } else { trigger2("error", {}, { errCode: data.result }); } }); adView.setAdClickedListener(() => { trigger2("adclicked", {}, {}); }); watch(() => position, (position2) => adView.setStyle(position2), { deep: true }); watch(() => props2.adpid, (val) => { if (val) { loadData(); } }); watch(() => props2.data, (val) => { if (val) { adView.renderingBind(val); } }); function loadData() { let args = { adpid: props2.adpid, width: position.width, count: props2.dataCount }; if (props2.channel !== void 0) { args.ext = { channel: props2.channel }; } UniViewJSBridge.invokeServiceMethod("getAdData", args, ({ code, data, message }) => { if (code === 0) { adView.renderingBind(data); } else { trigger2("error", {}, { errMsg: message }); } }); } if (props2.adpid) { loadData(); } }); onBeforeUnmount(() => { if (adView) { adView.close(); } }); return () => { return createVNode("uni-ad", { "ref": rootRef }, { default: () => [createVNode("div", { "ref": containerRef, "class": "uni-ad-container" }, null, 512)] }, 512); }; } }); class UniComponent extends UniNode { constructor(id2, tag, component, parentNodeId, refNodeId, nodeJson, selector) { super(id2, tag, parentNodeId); const container = document.createElement("div"); container.__vueParent = getVueParent(this); this.$props = reactive({}); this.init(nodeJson); this.$app = createApp(createWrapper(component, this.$props)); this.$app.mount(container); this.$ = container.firstElementChild; if (selector) { this.$holder = this.$.querySelector(selector); { if (!this.$holder) { console.error(formatLog(tag, "holder", selector, this.$)); } } } if (hasOwn$1(nodeJson, "t")) { this.setText(nodeJson.t || ""); } this.insert(parentNodeId, refNodeId); flushPostFlushCbs(); } init(nodeJson) { const { a: a2, e: e2 } = nodeJson; if (a2) { Object.keys(a2).forEach((n) => { this.setAttr(n, a2[n]); }); } if (e2) { Object.keys(e2).forEach((n) => { this.addEvent(n, e2[n]); }); } } setText(text2) { (this.$holder || this.$).textContent = text2; } addEvent(name, value) { const decoded = name; this.$props[decoded] = createInvoker(this.id, value, parseEventName(decoded)[1]); } removeEvent(name) { this.$props[name] = null; } setAttr(name, value) { this.$props[name] = value; } removeAttr(name) { this.$props[name] = null; } remove() { this.isUnmounted = true; this.$app.unmount(); removeElement(this.id); } appendChild(node) { return (this.$holder || this.$).appendChild(node); } insertBefore(newChild, refChild) { return (this.$holder || this.$).insertBefore(newChild, refChild); } } class UniContainerComponent extends UniComponent { constructor(id2, tag, component, parentNodeId, refNodeId, nodeJson, selector) { super(id2, tag, component, parentNodeId, refNodeId, nodeJson, selector); } getRebuildFn() { if (!this._rebuild) { this._rebuild = this.rebuild.bind(this); } return this._rebuild; } setText(text2) { queuePostActionJob(this.getRebuildFn()); return super.setText(text2); } appendChild(node) { queuePostActionJob(this.getRebuildFn()); return super.appendChild(node); } insertBefore(newChild, refChild) { queuePostActionJob(this.getRebuildFn()); return super.insertBefore(newChild, refChild); } rebuild() { { console.log(formatLog("rebuild", this.id, this.tag)); } const vm = this.$.__vueParentComponent; if (vm.rebuild) { vm.rebuild(); } } } function getVueParent(node) { while (node && node.pid > 0) { node = $(node.pid); if (node) { const { __vueParentComponent } = node.$; if (__vueParentComponent) { return __vueParentComponent; } } } return null; } function setHolderText(holder, clazz, text2) { holder.childNodes.forEach((childNode) => { if (childNode instanceof Element) { if (childNode.className.indexOf(clazz) === -1) { holder.removeChild(childNode); } } else { holder.removeChild(childNode); } }); holder.appendChild(document.createTextNode(text2)); } class UniAd extends UniComponent { constructor(id2, parentNodeId, refNodeId, nodeJson) { super(id2, "uni-ad", Ad, parentNodeId, refNodeId, nodeJson); } } var audio = "uni-audio {\n display: none;\n}\n\nuni-audio[controls] {\n display: inline-block;\n}\n\nuni-audio[hidden] {\n display: none;\n}\n\n.uni-audio-default {\n max-width: 100%;\n min-width: 302px;\n height: 65px;\n background: #fcfcfc;\n border: 1px solid #e0e0e0;\n border-radius: 2.5px;\n display: inline-block;\n overflow: hidden;\n}\n\n.uni-audio-left {\n width: 65px;\n height: 65px;\n float: left;\n background-color: #e6e6e6;\n background-size: 100% 100%;\n background-position: 50% 50%;\n}\n\n.uni-audio-button {\n width: 24px;\n height: 24px;\n margin: 20.5px;\n background-size: cover;\n}\n\n.uni-audio-button.play {\n background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAB4dJREFUaAXNWg1MlVUYvpcfIRCJ+MnCaOBl8dOcOCEQZ9kmI5cQG5Yb6MifKbMaGVobOtlibTWHDpgpxBUwF07826iFsMkYJhg559JdGiQSkUzSBA0QkZ7n4/u+nXsvwf3jwru99/y/3/N+3znvec97rlbjABofH38GYtaAV4MjwDqwH9gHTBoE3wd3gA3gi+B6rVY7hHR2CKD9wFngs+BHYGuJYziWMqiscwgP8wLvBQ+AHUWURZle1mqhtXQAhLui7xZwPvgFsBENDg7+Drp069at2z09Pf03b978u6mpqZ+dVq1aFRAVFeW/aNGigNDQ0JfDwsISfXx8wowETBT+QpIPLsf0GpuomvrXIgUAPhhizoGXi+II+tq1az/o9fpLFRUVd8S26fJZWVkLN2/enBgTE/PW/PnzF5v0b0P5HSjxp0m9WXFaBQD+NYw6C1bf+vDwcF9DQ4N+/fr19ciPm0m1osLT01N76tSpNaD3PTw8FgpD+TXSoESrUGeWnVIBgM/EiDKwJ0eiPNrS0nJsw4YNNd3d3aOscxSFhIS4V1dXpyckJGRB5jxZ7jDSbVDiW7lslriY1cgVMvjjKErgR0dH/zl06NCuFStWfOdo8HwkZVL2wYMHP3ny5AlNLonPPi5jkSpMfyb9AhjAadMIlsBjrndmZ2fnnThxos9UwEyUMzIynj9y5EgB1gb3ExK/xBuTTSczBQCeC/ZnsDTnCR6f9YMbN25QiNMoOjras7W1tcjb2ztcfijXRKzpwjaaQgBPU0lrI4HntOGbdzZ4AuYzt2/fvm9sbOweyyBiOidjlCr4Y6QAyrTzkqlEx9GSkpJ9zpo2BGNKfHZRUdF+1D+W24iNGFVSpxAAcxekryK9/cuXLx/FoqpWe85iBlPpvbi4uB0yBE4lHabSvyyLX2AXyhJ42nmYytPsMBcI+80ZWKZeGQsxEqtEkgJ4+3Sm9sh1Gm5SM2EqFfnWpsRSV1dXIYzbI2NWv0AqGiXXl+4Bd1ihs0XZu3fvHhgYGNBXVVUlWDTAyk7p6ekNIyMj7fIwYiVmIwWkNvo2trgHAQEBy+CghW7cuPGLvr6+L3fu3PmSJNBBP8R09erVHwVxEwrgU/AwkqQ00DFT8lamqkEICgqKKy4u1sMU7li6dKnVLvL/Pbe0tLRFaEsidi1+UlB5ng3ctBYsWLBV6GRxFnJ4yjIj7CX36uvrS1NTU+uwEM3ara3Al/gaTl+EPC6Vi/hNRUhHR8dPSt5Rqbu7+3Nr1679rL+//3BBQYHyYJvFd3V1iTNkNRV4RZF2G6TkHZ36+vpG5uXlHcah59Pk5GSbj5AY3y1gi6ACisOk4UlKaJyJrBYnsuTa2trjzc3N7/r7+9N1sYo6OzsfCAN0VEB9GzwGCo0zlnV1dfVOTEzMhn3Xl5eXx1rzIBOMflRAsv8UopxhrRFoT18vL68QHCu/am9vz7FUjglGHyow6xQcHBxjKwgqwKCTRIweKHlnpZhGDfC7LP4CJhgH3QCUxzd/AmboA0kP8zNNcDt+w8ZUvHv37l+tedaSJUueFfrfpwJ0oSVLxLiN0DgjWWxsDxobG79JSUn53haXRafT+QrAOjiFDEoFg05K3tEpduoxg8FweuXKlRlJSUm1toAnpvDwcB55FTJQAdUFYMRMaXFkil34l9zc3K2RkZElV65ceWSPbCz414XxF6kAXWfpdMNwHyNmQge7skNDQ3dOnjy5PzAwMLewsLDLLmEYDJMb5ObmFiXLIeZ6FxzNGOK+IFeyk91f4enTpyNtbW3HIiIiNsHCNCmy7U1zcnKWCTIuEDu/AOn8RKLRMFbJcJ9StjRlBIN94Y40ZmZmboqNja3iScrS8dP1IyaEWt4W+kmYaYVILHA/8GGglbHKdevWqV+FHaYjOGofw811hcfZOV1fW9pxzE1wcXGJlscSq6SA+qZhJfai8nN2wNHtDhb0pt7eXoe9Qcq1lRg3hRvNkLtyytuHfAHlKVOI+UIwQxYaRolramrSmZ8LhLefJIAnRmKVSFUAHbiq8yeqNRpGiWE5XlXKs5WWlZUthu3/SHh+voxVqlKnEEuYRvTPee5czjKjxDCr2bMVnYNF9IO7fRRQAokHxIuPeCig3t4YKcAeUCIYiRrcffjwYUd8fPyHzo6PwuJ4XL9+/QAWrjILOHWmDu5SAWjHa500sBSNZoibUWKGvNnuDOKbNwFPLLytITYjUteAWIuOvNbZptQxxF1ZWXnYGWuCc57TRnjzhMFbGmIyI7MpJPbAdMpEuQzsKdc/hi+jT0tLO+NoE0tTSWsjL9h58vP45qe8YppSAQqBEmaXfAy0MlbJcJ+tXqUMUMMdlpsUIuE78JYVO89mznn7LvmUh8gL+xzKknVS6hmrZLiPETNrr1npmNG3oXsg7LCKaFobx1yzKhKhBE3sFnA+mCFuI4IyBuyWzYjb/MHQh+lFN09SPIxgirxIlxhepeIWiHL41vPBFl90i4MtykOROfVXA4tAT9YJisyJP3tMu4gnA29aB2UY4V4DXg1m/FMH9gMrMSd6jwwe8PxtAPMU6JC/2/wHuyI2cMsNBRIAAAAASUVORK5CYII=);\n}\n\n.uni-audio-button.pause {\n background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABatJREFUaAXVWl1IpFUYnllZGUf3wlz6MXER1ES7s83VUDJw6KpdaSTDwMnYFSK6KNirooHullKQCNzQRjZ/wom1u9ALQ0mT1ktFdEBWXLdibaH1jwmx5zme83W+z2Hm+7bZmc8X3jl/73vO837n/z3j9aSBjo6O8lBNC7gZXAUuBxeCz4FJj8APwTHwCngaPOX1evcRZocAuhAcAt8G74KdEnWoyzpobGYIjfnBn4D/BqeLWBfr9Du1wmtXAZXnQPY9cBj8HNhEe3t7sbW1tfn19fW7m5ubD5aXl7dnZmYeUKipqel8dXV1UUlJyfmysrILFRUV9X6/n8PMSveREQYPYHgdWgsTpW0ZAPDPQ3kC/JJeCUEvLi7+NDg4+EskEvldL0sVD4VCz3Z1db1SW1v7egJj7kD/Coy4l6qelAYAfB0quQ02vno8Hr8/OTkZaWtrmzo4ODhK1Uiycp/P5x0fH28JBAKh3Nxcow3osDdaYcRCMv2kBgD8O1D+BuyTlcTn5+cj7e3t0Y2NjX+SVey0rLS09OzY2Fiwvr4+BN1cqX+A8CqM+E6mTwRnTuTIDAn+FpIC/OHh4V+9vb0fNzQ0jKYbPJtknaybbbAtCYNt35JYZJY5SNgDctj8DFEBfnd3d627u/vT4eHhP8zqTybV0dHxTH9//+f5+fkVsgX2xKuJhtMJAwCeE/Y3sBiPBF9XV/fh0tISK8kY1dTU+BYWFvo0IzgnLlontmkIATyXSq42Ajy7kl8+0+D5ldgm29aGEzFNSIwUEWQyADlc59VSGe/r6/ssU8PmGI75l20TA3LjsoTYiNEgYwjBMu6CPKuIr4/Vph+TasyQzGJkbm7ubaxO1yQEDqVyDKU9pvUe+AhpAZ7rPJbKHyjgBuKyTUwSCzESqyBhAL4+D1PXZZ6Hm9STWCpV/U5DYiEmTe+6xOwRQwiJEAq/pQCPB0VFRdf+7w7LutJJ3LG3t7dvaseOdzGMImoIXVaN8WzjNvDERkzEpnAiFJjP4OvzMhJQBTyYqbjdEDov7+/vf4+6pu0wZQcGBi7arV/JWbAFiN2Lnzcg8COFuGkVFBSo2a70UoYEhC5+OqWgJoAv+mdeXt5bWpat6M7Ozk1tc7vMIfSa0lxdXf1VxZ2ETsGz7sfRoV4sFtMxNtOAF1hAugs6jrn3lxcmDV0VDTBuRrxJaYWujFowltMA40LNa6ArUWugLBgLaYByfXjUHVaTd13UgvEcDTjVRAPodBJE74GKuzW0YHxEA+gxE0TXh4q7NbRgfEgDeIQWRL+Nirs1tGCM0YAVBZZOJxV3a2jBuEIDphVYesxU3EnIY4ETeco+jg71LBinacAUWNxueFSlx4yCTmh0dPRLJ4AoOzIy8oWTNihLbNpxmpin1H2AnrcrFJqdnf0KM901tzFiUoQ94M3GxsYPZHoC94FW9gBJnEYZoa8SBy1hGNNuIWIiNg2PwKwbIPYDdhF9lZqgK6LEpA0fYv3PAHQF94IbCikdrcXFxWdVOtsh/abEpOG4ITGbvBI9EBA3f3qJo9FoUFPIapROX81zTYzEKkgNIQ8s4qwOH2d7PPQS9/T0vKjS2QqJQXqsFYSwxCrSpsmK6yVdi7zx0APmoVuvs7Pz/Wx55+jkHRoa+jonJ+cp4gHdAV+CAcbrjckASsCI0+vcpQGw7h6CVrDwRvMCTS8xvwbLM0Fsy+KZJha+1hCbiYw5oOdCkM86V1UejWBXZmJOsA22pXkeCIOvNAmfmk4MIQWaIYZTwiemYDAY3dracsUTU1IDpBGn95FP9Yac2KfzmVUzgkssHxfCYOGGR2gQvXp0jNG3lOyh+wKosrLykmWMq3q4SYXBth+6laLtEL3hqr8a2AZuFYQhrvizR8pJbAWeKA1j6OFuATeDq8D09hWClc+Jp0ceGHn/5hWWt8C0/N3mX15C4bDnCIuAAAAAAElFTkSuQmCC);\n}\n\n.uni-audio-right {\n box-sizing: border-box;\n height: 65px;\n margin-left: 65px;\n padding: 11px 16.5px 13.5px 15px;\n overflow: hidden;\n}\n\n.uni-audio-time {\n margin-top: 3.5px;\n height: 16.5px;\n font-size: 12px;\n color: #888888;\n float: right;\n}\n\n.uni-audio-info {\n margin-right: 70px;\n overflow: hidden;\n}\n\n.uni-audio-name {\n height: 22.5px;\n line-height: 22.5px;\n margin-bottom: 3.5px;\n font-size: 14px;\n color: #353535;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n\n.uni-audio-author {\n height: 14.5px;\n line-height: 14.5px;\n font-size: 12px;\n color: #888888;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n"; class UniAudio extends UniComponent { constructor(id2, parentNodeId, refNodeId, nodeJson) { super(id2, "uni-audio", _sfc_main, parentNodeId, refNodeId, nodeJson); } } var button = "uni-button {\n position: relative;\n display: block;\n margin-left: auto;\n margin-right: auto;\n padding-left: 14px;\n padding-right: 14px;\n box-sizing: border-box;\n font-size: 18px;\n text-align: center;\n text-decoration: none;\n line-height: 2.55555556;\n border-radius: 5px;\n -webkit-tap-highlight-color: transparent;\n overflow: hidden;\n color: #000000;\n background-color: #f8f8f8;\n cursor: pointer;\n}\n\nuni-button[hidden] {\n display: none !important;\n}\n\nuni-button:after {\n content: ' ';\n width: 200%;\n height: 200%;\n position: absolute;\n top: 0;\n left: 0;\n border: 1px solid rgba(0, 0, 0, 0.2);\n transform: scale(0.5);\n transform-origin: 0 0;\n box-sizing: border-box;\n border-radius: 10px;\n}\n\nuni-button[native] {\n padding-left: 0;\n padding-right: 0;\n}\n\nuni-button[native] .uni-button-cover-view-wrapper {\n border: inherit;\n border-color: inherit;\n border-radius: inherit;\n background-color: inherit;\n}\n\nuni-button[native] .uni-button-cover-view-inner {\n padding-left: 14px;\n padding-right: 14px;\n}\n\nuni-button uni-cover-view {\n line-height: inherit;\n white-space: inherit;\n}\n\nuni-button[type='default'] {\n color: #000000;\n background-color: #f8f8f8;\n}\n\nuni-button[type='primary'] {\n color: #ffffff;\n background-color: #007aff;\n}\n\nuni-button[type='warn'] {\n color: #ffffff;\n background-color: #e64340;\n}\n\nuni-button[disabled] {\n color: rgba(255, 255, 255, 0.6);\n cursor: not-allowed;\n}\n\nuni-button[disabled][type='default'],\nuni-button[disabled]:not([type]) {\n color: rgba(0, 0, 0, 0.3);\n background-color: #f7f7f7;\n}\n\nuni-button[disabled][type='primary'] {\n background-color: rgba(0, 122, 255, 0.6);\n}\n\nuni-button[disabled][type='warn'] {\n background-color: #ec8b89;\n}\n\nuni-button[type='primary'][plain] {\n color: #007aff;\n border: 1px solid #007aff;\n background-color: transparent;\n}\n\nuni-button[type='primary'][plain][disabled] {\n color: rgba(0, 0, 0, 0.2);\n border-color: rgba(0, 0, 0, 0.2);\n}\n\nuni-button[type='primary'][plain]:after {\n border-width: 0;\n}\n\nuni-button[type='default'][plain] {\n color: #353535;\n border: 1px solid #353535;\n background-color: transparent;\n}\n\nuni-button[type='default'][plain][disabled] {\n color: rgba(0, 0, 0, 0.2);\n border-color: rgba(0, 0, 0, 0.2);\n}\n\nuni-button[type='default'][plain]:after {\n border-width: 0;\n}\n\nuni-button[plain] {\n color: #353535;\n border: 1px solid #353535;\n background-color: transparent;\n}\n\nuni-button[plain][disabled] {\n color: rgba(0, 0, 0, 0.2);\n border-color: rgba(0, 0, 0, 0.2);\n}\n\nuni-button[plain]:after {\n border-width: 0;\n}\n\nuni-button[plain][native] .uni-button-cover-view-inner {\n padding: 0;\n}\n\nuni-button[type='warn'][plain] {\n color: #e64340;\n border: 1px solid #e64340;\n background-color: transparent;\n}\n\nuni-button[type='warn'][plain][disabled] {\n color: rgba(0, 0, 0, 0.2);\n border-color: rgba(0, 0, 0, 0.2);\n}\n\nuni-button[type='warn'][plain]:after {\n border-width: 0;\n}\n\nuni-button[size='mini'] {\n display: inline-block;\n line-height: 2.3;\n font-size: 13px;\n padding: 0 1.34em;\n}\n\nuni-button[size='mini'][native] {\n padding: 0;\n}\n\nuni-button[size='mini'][native] .uni-button-cover-view-inner {\n padding: 0 1.34em;\n}\n\nuni-button[loading]:not([disabled]) {\n cursor: progress;\n}\n\nuni-button[loading]:before {\n content: ' ';\n display: inline-block;\n width: 18px;\n height: 18px;\n vertical-align: middle;\n animation: uni-loading 1s steps(12, end) infinite;\n background-size: 100%;\n}\n\nuni-button[loading][type='primary'] {\n color: rgba(255, 255, 255, 0.6);\n background-color: #0062cc;\n}\n\nuni-button[loading][type='primary'][plain] {\n color: #007aff;\n background-color: transparent;\n}\n\nuni-button[loading][type='default'] {\n color: rgba(0, 0, 0, 0.6);\n background-color: #dedede;\n}\n\nuni-button[loading][type='default'][plain] {\n color: #353535;\n background-color: transparent;\n}\n\nuni-button[loading][type='warn'] {\n color: rgba(255, 255, 255, 0.6);\n background-color: #ce3c39;\n}\n\nuni-button[loading][type='warn'][plain] {\n color: #e64340;\n background-color: transparent;\n}\n\nuni-button[loading][native]:before {\n content: none;\n}\n\n.button-hover {\n color: rgba(0, 0, 0, 0.6);\n background-color: #dedede;\n}\n\n.button-hover[plain] {\n color: rgba(53, 53, 53, 0.6);\n border-color: rgba(53, 53, 53, 0.6);\n background-color: transparent;\n}\n\n.button-hover[type='primary'] {\n color: rgba(255, 255, 255, 0.6);\n background-color: #0062cc;\n}\n\n.button-hover[type='primary'][plain] {\n color: rgba(26, 173, 25, 0.6);\n border-color: rgba(26, 173, 25, 0.6);\n background-color: transparent;\n}\n\n.button-hover[type='default'] {\n color: rgba(0, 0, 0, 0.6);\n background-color: #dedede;\n}\n\n.button-hover[type='default'][plain] {\n color: rgba(53, 53, 53, 0.6);\n border-color: rgba(53, 53, 53, 0.6);\n background-color: transparent;\n}\n\n.button-hover[type='warn'] {\n color: rgba(255, 255, 255, 0.6);\n background-color: #ce3c39;\n}\n\n.button-hover[type='warn'][plain] {\n color: rgba(230, 67, 64, 0.6);\n border-color: rgba(230, 67, 64, 0.6);\n background-color: transparent;\n}\n"; class UniButton extends UniComponent { constructor(id2, parentNodeId, refNodeId, nodeJson) { super(id2, "uni-button", Button, parentNodeId, refNodeId, nodeJson); } } class UniTodoNode extends UniNode { constructor(id2, tag, parentNodeId, refNodeId) { super(id2, tag, parentNodeId); this.insert(parentNodeId, refNodeId); } } class UniCamera extends UniTodoNode { constructor(id2, parentNodeId, refNodeId) { super(id2, "uni-camera", parentNodeId, refNodeId); } } var canvas = "uni-canvas {\n width: 300px;\n height: 150px;\n display: block;\n position: relative;\n}\n\nuni-canvas > .uni-canvas-canvas {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n"; class UniCanvas extends UniComponent { constructor(id2, parentNodeId, refNodeId, nodeJson) { super(id2, "uni-canvas", Canvas, parentNodeId, refNodeId, nodeJson, "canvas > div"); } } var checkbox = "uni-checkbox {\n -webkit-tap-highlight-color: transparent;\n display: inline-block;\n cursor: pointer;\n}\n\nuni-checkbox[hidden] {\n display: none;\n}\n\nuni-checkbox[disabled] {\n cursor: not-allowed;\n}\n\n.uni-checkbox-wrapper {\n display: inline-flex;\n align-items: center;\n vertical-align: middle;\n}\n\n.uni-checkbox-input {\n margin-right: 5px;\n -webkit-appearance: none;\n appearance: none;\n outline: 0;\n border: 1px solid #d1d1d1;\n background-color: #ffffff;\n border-radius: 3px;\n width: 22px;\n height: 22px;\n position: relative;\n}\n\n.uni-checkbox-input svg {\n color: #007aff;\n font-size: 22px;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -48%) scale(0.73);\n}\n\nuni-checkbox:not([disabled]) .uni-checkbox-input:hover {\n border-color: #007aff;\n}\n\n.uni-checkbox-input.uni-checkbox-input-disabled {\n background-color: #e1e1e1;\n}\n\n.uni-checkbox-input.uni-checkbox-input-disabled:before {\n color: #adadad;\n}\n\nuni-checkbox-group {\n display: block;\n}\n"; class UniCheckbox extends UniComponent { constructor(id2, parentNodeId, refNodeId, nodeJson) { super(id2, "uni-checkbox", Checkbox, parentNodeId, refNodeId, nodeJson, ".uni-checkbox-wrapper"); } setText(text2) { setHolderText(this.$holder, "uni-checkbox-input", text2); } } var checkboxGroup = "uni-checkbox-group {\n display: block;\n}\n\nuni-checkbox-group[hidden] {\n display: none;\n}\n"; class UniCheckboxGroup extends UniComponent { constructor(id2, parentNodeId, refNodeId, nodeJson) { super(id2, "uni-checkbox-group", CheckboxGroup, parentNodeId, refNodeId, nodeJson); } } var coverImage = "uni-cover-image {\n display: block;\n line-height: 1.2;\n overflow: hidden;\n height: 100%;\n width: 100%;\n pointer-events: auto;\n}\n\nuni-cover-image[hidden] {\n display: none;\n}\n\nuni-cover-image .uni-cover-image {\n width: 100%;\n height: 100%;\n}\n"; let id = 0; function useCover(rootRef, trigger2, content) { const { position, hidden, onParentReady } = useNative(rootRef); let cover; onParentReady((parentPosition) => { const viewPosition = computed$1(() => { const object = {}; for (const key in position) { let val = position[key]; const valNumber = parseFloat(val); const parentValNumber = parseFloat(parentPosition[key]); if (key === "top" || key === "left") { val = Math.max(valNumber, parentValNumber) + "px"; } else if (key === "width" || key === "height") { const base2 = key === "width" ? "left" : "top"; const parentStart = parseFloat(parentPosition[base2]); const viewStart = parseFloat(position[base2]); const diff1 = Math.max(parentStart - viewStart, 0); const diff2 = Math.max(viewStart + valNumber - (parentStart + parentValNumber), 0); val = Math.max(valNumber - diff1 - diff2, 0) + "px"; } object[key] = val; } return object; }); const baseStyle = [ "borderRadius", "borderColor", "borderWidth", "backgroundColor" ]; const textStyle = [ "paddingTop", "paddingRight", "paddingBottom", "paddingLeft", "color", "textAlign", "lineHeight", "fontSize", "fontWeight", "textOverflow", "whiteSpace" ]; const imageStyle = []; const textAlign = { start: "left", end: "right" }; function updateStyle(style2) { const computedStyle = getComputedStyle(rootRef.value); baseStyle.concat(textStyle, imageStyle).forEach((key) => { style2[key] = computedStyle[key]; }); return style2; } const style = reactive(updateStyle({})); let request = null; function requestStyleUpdate() { if (request) { cancelAnimationFrame(request); } request = requestAnimationFrame(() => { request = null; updateStyle(style); }); } window.addEventListener("updateview", requestStyleUpdate); function getTagPosition() { const position2 = {}; for (const key in position2) { let val = position2[key]; if (key === "top" || key === "left") { val = Math.min(parseFloat(val) - parseFloat(parentPosition[key]), 0) + "px"; } position2[key] = val; } return position2; } const tags = computed$1(() => { const position2 = getTagPosition(); const tags2 = [ { tag: "rect", position: position2, rectStyles: { color: style.backgroundColor, radius: style.borderRadius, borderColor: style.borderColor, borderWidth: style.borderWidth } } ]; if ("src" in content) { if (content.src) { tags2.push({ tag: "img", position: position2, src: content.src }); } } else { const lineSpacing = parseFloat(style.lineHeight) - parseFloat(style.fontSize); let width = parseFloat(position2.width) - parseFloat(style.paddingLeft) - parseFloat(style.paddingRight); width = width < 0 ? 0 : width; let height = parseFloat(position2.height) - parseFloat(style.paddingTop) - lineSpacing / 2 - parseFloat(style.paddingBottom); height = height < 0 ? 0 : height; tags2.push({ tag: "font", position: { top: `${parseFloat(position2.top) + parseFloat(style.paddingTop) + lineSpacing / 2}px`, left: `${parseFloat(position2.left) + parseFloat(style.paddingLeft)}px`, width: `${width}px`, height: `${height}px` }, textStyles: { align: textAlign[style.textAlign] || style.textAlign, color: style.color, decoration: "none", lineSpacing: `${lineSpacing}px`, margin: "0px", overflow: style.textOverflow, size: style.fontSize, verticalAlign: "top", weight: style.fontWeight, whiteSpace: style.whiteSpace }, text: content.text }); } return tags2; }); cover = new plus.nativeObj.View(`cover-${Date.now()}-${id++}`, viewPosition.value, tags.value); { console.log(formatLog("Cover", cover.id, viewPosition.value, tags.value)); } plus.webview.currentWebview().append(cover); if (hidden.value) { cover.hide(); } cover.addEventListener("click", () => { trigger2("click", {}, {}); }); watch(() => hidden.value, (val) => { cover[val ? "hide" : "show"](); }); watch(() => viewPosition.value, (val) => { cover.setStyle(val); }, { deep: true }); watch(() => tags.value, () => { cover.reset(); cover.draw(tags.value); }, { deep: true }); }); onBeforeUnmount(() => { if (cover) { cover.close(); } }); } const TEMP_PATH = "_doc/uniapp_temp/"; const props$3 = { src: { type: String, default: "" }, autoSize: { type: [Boolean, String], default: false } }; function useImageLoad(props2, content, trigger2) { const style = ref(""); let downloaTask; function loadImage() { content.src = ""; style.value = props2.autoSize ? "width:0;height:0;" : ""; const realPath = props2.src ? getRealPath(props2.src) : ""; if (realPath.indexOf("http://") === 0 || realPath.indexOf("https://") === 0) { downloaTask = plus.downloader.createDownload(realPath, { filename: TEMP_PATH + "/download/" }, (task, status) => { if (status === 200) { getImageInfo(task.filename); } else { trigger2("error", {}, { errMsg: "error" }); } }); downloaTask.start(); } else if (realPath) { getImageInfo(realPath); } } function getImageInfo(src) { content.src = src; plus.io.getImageInfo({ src, success: ({ width, height }) => { if (props2.autoSize) { style.value = `width:${width}px;height:${height}px;`; window.dispatchEvent(new CustomEvent("updateview")); } trigger2("load", {}, { width, height }); }, fail: () => { trigger2("error", {}, { errMsg: "error" }); } }); } if (props2.src) { loadImage(); } watch(() => props2.src, loadImage); onBeforeUnmount(() => { if (downloaTask) { downloaTask.abort(); } }); return style; } var CoverImage = /* @__PURE__ */ defineBuiltInComponent({ name: "CoverImage", props: props$3, emits: ["click", "load", "error"], setup(props2, { emit: emit2 }) { const rootRef = ref(null); const trigger2 = useCustomEvent(rootRef, emit2); let content = reactive({ src: "" }); const style = useImageLoad(props2, content, trigger2); useCover(rootRef, trigger2, content); return () => { return createVNode("uni-cover-image", { "ref": rootRef, "style": style.value }, { default: () => [createVNode("div", { "class": "uni-cover-image" }, null)] }, 8, ["style"]); }; } }); class UniCoverImage extends UniComponent { constructor(id2, parentNodeId, refNodeId, nodeJson) { super(id2, "uni-cover-image", CoverImage, parentNodeId, refNodeId, nodeJson); } } var coverView = "uni-cover-view {\n display: block;\n line-height: 1.2;\n overflow: hidden;\n white-space: nowrap;\n pointer-events: auto;\n}\n\nuni-cover-view[hidden] {\n display: none;\n}\n\nuni-cover-view .uni-cover-view {\n width: 100%;\n height: 100%;\n}\n"; var CoverView = /* @__PURE__ */ defineBuiltInComponent({ name: "CoverView", emits: ["click"], setup(_, { emit: emit2 }) { const rootRef = ref(null); const textRef = ref(null); const trigger2 = useCustomEvent(rootRef, emit2); let content = reactive({ text: "" }); useCover(rootRef, trigger2, content); useRebuild(() => { const node = textRef.value.childNodes[0]; content.text = node && node instanceof Text ? node.textContent : ""; }); return () => { return createVNode("uni-cover-view", { "ref": rootRef }, { default: () => [createVNode("div", { "ref": textRef, "class": "uni-cover-view" }, null, 512)] }, 512); }; } }); class UniCoverView extends UniContainerComponent { constructor(id2, parentNodeId, refNodeId, nodeJson) { super(id2, "uni-cover-view", CoverView, parentNodeId, refNodeId, nodeJson, ".uni-cover-view"); } } var editor = ".ql-container {\n display: block;\n position: relative;\n box-sizing: border-box;\n -webkit-user-select: text;\n user-select: text;\n outline: none;\n overflow: hidden;\n width: 100%;\n height: 200px;\n min-height: 200px;\n}\n.ql-container[hidden] {\n display: none;\n}\n.ql-container .ql-editor {\n position: relative;\n font-size: inherit;\n line-height: inherit;\n font-family: inherit;\n min-height: inherit;\n width: 100%;\n height: 100%;\n padding: 0;\n overflow-x: hidden;\n overflow-y: auto;\n -webkit-tap-highlight-color: transparent;\n -webkit-touch-callout: none;\n -webkit-overflow-scrolling: touch;\n}\n.ql-container .ql-editor::-webkit-scrollbar {\n width: 0 !important;\n}\n.ql-container .ql-editor.scroll-disabled {\n overflow: hidden;\n}\n.ql-container .ql-image-overlay {\n display: flex;\n position: absolute;\n box-sizing: border-box;\n border: 1px dashed #ccc;\n justify-content: center;\n align-items: center;\n -webkit-user-select: none;\n user-select: none;\n}\n.ql-container .ql-image-overlay .ql-image-size {\n position: absolute;\n padding: 4px 8px;\n text-align: center;\n background-color: #fff;\n color: #888;\n border: 1px solid #ccc;\n box-sizing: border-box;\n opacity: 0.8;\n right: 4px;\n top: 4px;\n font-size: 12px;\n display: inline-block;\n width: auto;\n}\n.ql-container .ql-image-overlay .ql-image-toolbar {\n position: relative;\n text-align: center;\n box-sizing: border-box;\n background: #000;\n border-radius: 5px;\n color: #fff;\n font-size: 0;\n min-height: 24px;\n z-index: 100;\n}\n.ql-container .ql-image-overlay .ql-image-toolbar span {\n display: inline-block;\n cursor: pointer;\n padding: 5px;\n font-size: 12px;\n border-right: 1px solid #fff;\n}\n.ql-container .ql-image-overlay .ql-image-toolbar span:last-child {\n border-right: 0;\n}\n.ql-container .ql-image-overlay .ql-image-toolbar span.triangle-up {\n padding: 0;\n position: absolute;\n top: -12px;\n left: 50%;\n transform: translatex(-50%);\n width: 0;\n height: 0;\n border-width: 6px;\n border-style: solid;\n border-color: transparent transparent black transparent;\n}\n.ql-container .ql-image-overlay .ql-image-handle {\n position: absolute;\n height: 12px;\n width: 12px;\n border-radius: 50%;\n border: 1px solid #ccc;\n box-sizing: border-box;\n background: #fff;\n}\n.ql-container img {\n display: inline-block;\n max-width: 100%;\n}\n.ql-clipboard p {\n margin: 0;\n padding: 0;\n}\n.ql-editor {\n box-sizing: border-box;\n height: 100%;\n outline: none;\n overflow-y: auto;\n tab-size: 4;\n -moz-tab-size: 4;\n text-align: left;\n white-space: pre-wrap;\n word-wrap: break-word;\n}\n.ql-editor > * {\n cursor: text;\n}\n.ql-editor p,\n.ql-editor ol,\n.ql-editor ul,\n.ql-editor pre,\n.ql-editor blockquote,\n.ql-editor h1,\n.ql-editor h2,\n.ql-editor h3,\n.ql-editor h4,\n.ql-editor h5,\n.ql-editor h6 {\n margin: 0;\n padding: 0;\n counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;\n}\n.ql-editor ol > li,\n.ql-editor ul > li {\n list-style-type: none;\n}\n.ql-editor ul > li::before {\n content: '\\2022';\n}\n.ql-editor ul[data-checked=true],\n.ql-editor ul[data-checked=false] {\n pointer-events: none;\n}\n.ql-editor ul[data-checked=true] > li *,\n.ql-editor ul[data-checked=false] > li * {\n pointer-events: all;\n}\n.ql-editor ul[data-checked=true] > li::before,\n.ql-editor ul[data-checked=false] > li::before {\n color: #777;\n cursor: pointer;\n pointer-events: all;\n}\n.ql-editor ul[data-checked=true] > li::before {\n content: '\\2611';\n}\n.ql-editor ul[data-checked=false] > li::before {\n content: '\\2610';\n}\n.ql-editor li::before {\n display: inline-block;\n white-space: nowrap;\n width: 2em;\n}\n.ql-editor ol li {\n counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;\n counter-increment: list-0;\n}\n.ql-editor ol li:before {\n content: counter(list-0, decimal) '. ';\n}\n.ql-editor ol li.ql-indent-1 {\n counter-increment: list-1;\n}\n.ql-editor ol li.ql-indent-1:before {\n content: counter(list-1, lower-alpha) '. ';\n}\n.ql-editor ol li.ql-indent-1 {\n counter-reset: list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;\n}\n.ql-editor ol li.ql-indent-2 {\n counter-increment: list-2;\n}\n.ql-editor ol li.ql-indent-2:before {\n content: counter(list-2, lower-roman) '. ';\n}\n.ql-editor ol li.ql-indent-2 {\n counter-reset: list-3 list-4 list-5 list-6 list-7 list-8 list-9;\n}\n.ql-editor ol li.ql-indent-3 {\n counter-increment: list-3;\n}\n.ql-editor ol li.ql-indent-3:before {\n content: counter(list-3, decimal) '. ';\n}\n.ql-editor ol li.ql-indent-3 {\n counter-reset: list-4 list-5 list-6 list-7 list-8 list-9;\n}\n.ql-editor ol li.ql-indent-4 {\n counter-increment: list-4;\n}\n.ql-editor ol li.ql-indent-4:before {\n content: counter(list-4, lower-alpha) '. ';\n}\n.ql-editor ol li.ql-indent-4 {\n counter-reset: list-5 list-6 list-7 list-8 list-9;\n}\n.ql-editor ol li.ql-indent-5 {\n counter-increment: list-5;\n}\n.ql-editor ol li.ql-indent-5:before {\n content: counter(list-5, lower-roman) '. ';\n}\n.ql-editor ol li.ql-indent-5 {\n counter-reset: list-6 list-7 list-8 list-9;\n}\n.ql-editor ol li.ql-indent-6 {\n counter-increment: list-6;\n}\n.ql-editor ol li.ql-indent-6:before {\n content: counter(list-6, decimal) '. ';\n}\n.ql-editor ol li.ql-indent-6 {\n counter-reset: list-7 list-8 list-9;\n}\n.ql-editor ol li.ql-indent-7 {\n counter-increment: list-7;\n}\n.ql-editor ol li.ql-indent-7:before {\n content: counter(list-7, lower-alpha) '. ';\n}\n.ql-editor ol li.ql-indent-7 {\n counter-reset: list-8 list-9;\n}\n.ql-editor ol li.ql-indent-8 {\n counter-increment: list-8;\n}\n.ql-editor ol li.ql-indent-8:before {\n content: counter(list-8, lower-roman) '. ';\n}\n.ql-editor ol li.ql-indent-8 {\n counter-reset: list-9;\n}\n.ql-editor ol li.ql-indent-9 {\n counter-increment: list-9;\n}\n.ql-editor ol li.ql-indent-9:before {\n content: counter(list-9, decimal) '. ';\n}\n.ql-editor .ql-indent-1:not(.ql-direction-rtl) {\n padding-left: 2em;\n}\n.ql-editor li.ql-indent-1:not(.ql-direction-rtl) {\n padding-left: 2em;\n}\n.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right {\n padding-right: 2em;\n}\n.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right {\n padding-right: 2em;\n}\n.ql-editor .ql-indent-2:not(.ql-direction-rtl) {\n padding-left: 4em;\n}\n.ql-editor li.ql-indent-2:not(.ql-direction-rtl) {\n padding-left: 4em;\n}\n.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right {\n padding-right: 4em;\n}\n.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right {\n padding-right: 4em;\n}\n.ql-editor .ql-indent-3:not(.ql-direction-rtl) {\n padding-left: 6em;\n}\n.ql-editor li.ql-indent-3:not(.ql-direction-rtl) {\n padding-left: 6em;\n}\n.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right {\n padding-right: 6em;\n}\n.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right {\n padding-right: 6em;\n}\n.ql-editor .ql-indent-4:not(.ql-direction-rtl) {\n padding-left: 8em;\n}\n.ql-editor li.ql-indent-4:not(.ql-direction-rtl) {\n padding-left: 8em;\n}\n.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right {\n padding-right: 8em;\n}\n.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right {\n padding-right: 8em;\n}\n.ql-editor .ql-indent-5:not(.ql-direction-rtl) {\n padding-left: 10em;\n}\n.ql-editor li.ql-indent-5:not(.ql-direction-rtl) {\n padding-left: 10em;\n}\n.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right {\n padding-right: 10em;\n}\n.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right {\n padding-right: 10em;\n}\n.ql-editor .ql-indent-6:not(.ql-direction-rtl) {\n padding-left: 12em;\n}\n.ql-editor li.ql-indent-6:not(.ql-direction-rtl) {\n padding-left: 12em;\n}\n.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right {\n padding-right: 12em;\n}\n.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right {\n padding-right: 12em;\n}\n.ql-editor .ql-indent-7:not(.ql-direction-rtl) {\n padding-left: 14em;\n}\n.ql-editor li.ql-indent-7:not(.ql-direction-rtl) {\n padding-left: 14em;\n}\n.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right {\n padding-right: 14em;\n}\n.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right {\n padding-right: 14em;\n}\n.ql-editor .ql-indent-8:not(.ql-direction-rtl) {\n padding-left: 16em;\n}\n.ql-editor li.ql-indent-8:not(.ql-direction-rtl) {\n padding-left: 16em;\n}\n.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right {\n padding-right: 16em;\n}\n.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right {\n padding-right: 16em;\n}\n.ql-editor .ql-indent-9:not(.ql-direction-rtl) {\n padding-left: 18em;\n}\n.ql-editor li.ql-indent-9:not(.ql-direction-rtl) {\n padding-left: 18em;\n}\n.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right {\n padding-right: 18em;\n}\n.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right {\n padding-right: 18em;\n}\n.ql-editor .ql-direction-rtl {\n direction: rtl;\n text-align: inherit;\n}\n.ql-editor .ql-align-center {\n text-align: center;\n}\n.ql-editor .ql-align-justify {\n text-align: justify;\n}\n.ql-editor .ql-align-right {\n text-align: right;\n}\n.ql-editor.ql-blank::before {\n color: rgba(0, 0, 0, 0.6);\n content: attr(data-placeholder);\n font-style: italic;\n pointer-events: none;\n position: absolute;\n}\n.ql-container.ql-disabled .ql-editor ul[data-checked] > li::before {\n pointer-events: none;\n}\n.ql-clipboard {\n left: -100000px;\n height: 1px;\n overflow-y: hidden;\n position: absolute;\n top: 50%;\n}\n"; class UniEditor extends UniComponent { constructor(id2, parentNodeId, refNodeId, nodeJson) { super(id2, "uni-editor", Editor, parentNodeId, refNodeId, nodeJson); } } var form = ""; class UniForm extends UniComponent { constructor(id2, parentNodeId, refNodeId, nodeJson) { super(id2, "uni-form", Form, parentNodeId, refNodeId, nodeJson, "span"); } } class UniFunctionalPageNavigator extends UniTodoNode { constructor(id2, parentNodeId, refNodeId) { super(id2, "uni-functional-page-navigator", parentNodeId, refNodeId); } } var icon = "uni-icon {\n display: inline-block;\n font-size: 0;\n box-sizing: border-box;\n}\n\nuni-icon[hidden] {\n display: none;\n}\n"; class UniIcon extends UniComponent { constructor(id2, parentNodeId, refNodeId, nodeJson) { super(id2, "uni-icon", Icon, parentNodeId, refNodeId, nodeJson); } } var image = "uni-image {\n width: 320px;\n height: 240px;\n display: inline-block;\n overflow: hidden;\n position: relative;\n}\n\nuni-image[hidden] {\n display: none;\n}\n\nuni-image > div {\n width: 100%;\n height: 100%;\n}\n\nuni-image > img {\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n user-select: none;\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n opacity: 0;\n}\n\nuni-image > .uni-image-will-change {\n will-change: transform;\n}\n"; class UniImage extends UniComponent { constructor(id2, parentNodeId, refNodeId, nodeJson) { super(id2, "uni-image", Image$1, parentNodeId, refNodeId, nodeJson); } } var input = "uni-input {\n display: block;\n font-size: 16px;\n line-height: 1.4em;\n height: 1.4em;\n min-height: 1.4em;\n overflow: hidden;\n}\n\nuni-input[hidden] {\n display: none;\n}\n\n.uni-input-wrapper,\n.uni-input-placeholder,\n.uni-input-form,\n.uni-input-input {\n outline: none;\n border: none;\n padding: 0;\n margin: 0;\n text-decoration: inherit;\n}\n\n.uni-input-wrapper,\n.uni-input-form {\n display: flex;\n position: relative;\n width: 100%;\n height: 100%;\n flex-direction: column;\n justify-content: center;\n}\n\n.uni-input-placeholder,\n.uni-input-input {\n width: 100%;\n}\n\n.uni-input-placeholder {\n position: absolute;\n top: auto !important;\n left: 0;\n color: gray;\n overflow: hidden;\n text-overflow: clip;\n white-space: pre;\n word-break: keep-all;\n pointer-events: none;\n line-height: inherit;\n}\n\n.uni-input-input {\n position: relative;\n display: block;\n height: 100%;\n background: none;\n color: inherit;\n opacity: 1;\n font: inherit;\n line-height: inherit;\n letter-spacing: inherit;\n text-align: inherit;\n text-indent: inherit;\n text-transform: inherit;\n text-shadow: inherit;\n}\n\n.uni-input-input[type='search']::-webkit-search-cancel-button {\n display: none;\n}\n\n.uni-input-input::-webkit-outer-spin-button,\n.uni-input-input::-webkit-inner-spin-button {\n -webkit-appearance: none;\n appearance: none;\n margin: 0;\n}\n\n.uni-input-input[type='number'] {\n -moz-appearance: textfield;\n}\n\n.uni-input-input:disabled {\n /* \u7528\u4E8E\u91CD\u7F6EiOS14\u4EE5\u4E0B\u7981\u7528\u72B6\u6001\u6587\u5B57\u989C\u8272 */\n -webkit-text-fill-color: currentcolor;\n}\n"; class UniInput extends UniComponent { constructor(id2, parentNodeId, refNodeId, nodeJson) { super(id2, "uni-input", Input, parentNodeId, refNodeId, nodeJson); } } var label = ".uni-label-pointer {\n cursor: pointer;\n}\n"; class UniLabel extends UniComponent { constructor(id2, parentNodeId, refNodeId, nodeJson) { super(id2, "uni-label", Label, parentNodeId, refNodeId, nodeJson); } } class UniLivePlayer extends UniTodoNode { constructor(id2, parentNodeId, refNodeId) { super(id2, "uni-live-player", parentNodeId, refNodeId); } } class UniLivePusher extends UniTodoNode { constructor(id2, parentNodeId, refNodeId) { super(id2, "uni-live-pusher", parentNodeId, refNodeId); } } var map = "uni-map {\n width: 300px;\n height: 225px;\n display: inline-block;\n line-height: 0;\n overflow: hidden;\n position: relative;\n}\n\nuni-map[hidden] {\n display: none;\n}\n\n.uni-map-container {\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n overflow: hidden;\n background-color: black;\n}\n\n.uni-map-slot {\n position: absolute;\n top: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n pointer-events: none;\n}"; const convertCoordinates = (lng, lat, callback) => { callback({ coord: { latitude: lat, longitude: lng } }); }; function parseHex(color) { if (color.indexOf("#") !== 0) { return { color, opacity: 1 }; } const opacity = color.substr(7, 2); return { color: color.substr(0, 7), opacity: opacity ? Number("0x" + opacity) / 255 : 1 }; } const props$2 = { id: { type: String, default: "" }, latitude: { type: [Number, String], default: "" }, longitude: { type: [Number, String], default: "" }, scale: { type: [String, Number], default: 16 }, markers: { type: Array, default() { return []; } }, polyline: { type: Array, default() { return []; } }, circles: { type: Array, default() { return []; } }, controls: { type: Array, default() { return []; } } }; var Map$1 = /* @__PURE__ */ defineBuiltInComponent({ name: "Map", props: props$2, emits: ["click", "regionchange", "controltap", "markertap", "callouttap"], setup(props2, { emit: emit2 }) { const rootRef = ref(null); const trigger2 = useCustomEvent(rootRef, emit2); const containerRef = ref(null); const attrs2 = useNativeAttrs(props2, ["id"]); const { position, hidden, onParentReady } = useNative(containerRef); let map2; const { _addMarkers, _addMapLines, _addMapCircles, _setMap } = useMapMethods(props2, trigger2); onParentReady(() => { map2 = extend(plus.maps.create(getCurrentPageId() + "-map-" + (props2.id || Date.now()), Object.assign({}, attrs2.value, position)), { __markers__: [], __markers_map__: {}, __lines__: [], __circles__: [] }); map2.setZoom(parseInt(String(props2.scale))); plus.webview.currentWebview().append(map2); if (hidden.value) { map2.hide(); } map2.onclick = (e2) => { trigger2("click", {}, e2); }; map2.onstatuschanged = (e2) => { trigger2("regionchange", {}, {}); }; _setMap(map2); _addMarkers(props2.markers); _addMapLines(props2.polyline); _addMapCircles(props2.circles); watch(() => attrs2.value, (attrs3) => map2 && map2.setStyles(attrs3), { deep: true }); watch(() => position, (position2) => map2 && map2.setStyles(position2), { deep: true }); watch(() => hidden.value, (val) => { map2 && map2[val ? "hide" : "show"](); }); watch(() => props2.scale, (val) => { map2 && map2.setZoom(parseInt(String(val))); }); watch([() => props2.latitude, () => props2.longitude], ([latitude, longitude]) => { map2 && map2.setStyles({ center: new plus.maps.Point(Number(latitude), Number(longitude)) }); }); watch(() => props2.markers, (val) => { _addMarkers(val, true); }); watch(() => props2.polyline, (val) => { _addMapLines(val); }); watch(() => props2.circles, (val) => { _addMapCircles(val); }); }); const mapControls = computed$1(() => props2.controls.map((control) => { const position2 = { position: "absolute" }; ["top", "left", "width", "height"].forEach((key) => { if (control.position[key]) { position2[key] = control.position[key] + "px"; } }); return { id: control.id, iconPath: getRealPath(control.iconPath), position: position2 }; })); onBeforeUnmount(() => { if (map2) { map2.close(); _setMap(null); } }); return () => { return createVNode("uni-map", { "ref": rootRef, "id": props2.id }, { default: () => [createVNode("div", { "ref": containerRef, "class": "uni-map-container" }, null, 512), mapControls.value.map((control, index2) => createVNode(resolveComponent("v-uni-cover-image"), { "key": index2, "src": control.iconPath, "style": control.position, "auto-size": true, "onClick": () => trigger2("controltap", {}, { controlId: control.id }) }, null, 8, ["src", "style", "auto-size", "onClick"])), createVNode("div", { "class": "uni-map-slot" }, null)], _: 1 }, 8, ["id"]); }; } }); function useMapMethods(props2, trigger2) { let map2; function moveToLocation(resolve2, { longitude, latitude } = {}) { if (!map2) return; map2.setCenter(new plus.maps.Point(Number(longitude || props2.longitude), Number(latitude || props2.latitude))); resolve2({ errMsg: "moveToLocation:ok" }); } function getCenterLocation(resolve2) { if (!map2) return; map2.getCurrentCenter((state, point) => { resolve2({ longitude: point.getLng(), latitude: point.getLat(), errMsg: "getCenterLocation:ok" }); }); } function getRegion(resolve2) { if (!map2) return; const rect = map2.getBounds(); resolve2({ southwest: rect.getSouthWest(), northeast: rect.getNorthEast(), errMsg: "getRegion:ok" }); } function getScale(resolve2) { if (!map2) return; resolve2({ scale: map2.getZoom(), errMsg: "getScale:ok" }); } function _addMarker(marker) { if (!map2) return; const { id: id2, latitude, longitude, iconPath, callout, label: label2 } = marker; convertCoordinates(longitude, latitude, (res) => { const { latitude: latitude2, longitude: longitude2 } = res.coord; const nativeMarker = new plus.maps.Marker(new plus.maps.Point(longitude2, latitude2)); if (iconPath) { nativeMarker.setIcon(getRealPath(iconPath)); } if (label2 && label2.content) { nativeMarker.setLabel(label2.content); } let nativeBubble = void 0; if (callout && callout.content) { nativeBubble = new plus.maps.Bubble(callout.content); } if (nativeBubble) { nativeMarker.setBubble(nativeBubble); } if (id2 || id2 === 0) { nativeMarker.onclick = (e2) => { trigger2("markertap", {}, { markerId: id2 }); }; if (nativeBubble) { nativeBubble.onclick = () => { trigger2("callouttap", {}, { markerId: id2 }); }; } } map2 == null ? void 0 : map2.addOverlay(nativeMarker); map2.__markers__.push(nativeMarker); map2 && (map2.__markers_map__[id2 + ""] = nativeMarker); }); } function _clearMarkers() { if (!map2) return; const markers = map2.__markers__; markers.forEach((marker) => { map2 == null ? void 0 : map2.removeOverlay(marker); }); map2.__markers__ = []; map2.__markers_map__ = {}; } function _addMarkers(markers, clear2) { if (clear2) { _clearMarkers(); } markers.forEach((marker) => { _addMarker(marker); }); } function _addMapLines(lines) { if (!map2) return; if (map2.__lines__.length > 0) { map2.__lines__.forEach((circle) => { map2 == null ? void 0 : map2.removeOverlay(circle); }); map2.__lines__ = []; } lines.forEach((line) => { const { color, width } = line; const points = line.points.map((point) => new plus.maps.Point(point.longitude, point.latitude)); const polyline = new plus.maps.Polyline(points); if (color) { const strokeStyle = parseHex(color); polyline.setStrokeColor(strokeStyle.color); polyline.setStrokeOpacity(strokeStyle.opacity); } if (width) { polyline.setLineWidth(width); } map2 == null ? void 0 : map2.addOverlay(polyline); map2.__lines__.push(polyline); }); } function _addMapCircles(circles) { if (!map2) return; if (map2.__circles__.length > 0) { map2.__circles__.forEach((circle) => { map2 == null ? void 0 : map2.removeOverlay(circle); }); map2.__circles__ = []; } circles.forEach((circle) => { const { latitude, longitude, color, fillColor, radius, strokeWidth } = circle; const nativeCircle = new plus.maps.Circle(new plus.maps.Point(longitude, latitude), radius); if (color) { const strokeStyle = parseHex(color); nativeCircle.setStrokeColor(strokeStyle.color); nativeCircle.setStrokeOpacity(strokeStyle.opacity); } if (fillColor) { const fillStyle = parseHex(fillColor); nativeCircle.setFillColor(fillStyle.color); nativeCircle.setFillOpacity(fillStyle.opacity); } if (strokeWidth) { nativeCircle.setLineWidth(strokeWidth); } map2 == null ? void 0 : map2.addOverlay(nativeCircle); map2.__circles__.push(nativeCircle); }); } const methods2 = { moveToLocation, getCenterLocation, getRegion, getScale }; useSubscribe((type, data, resolve2) => { methods2[type] && methods2[type](resolve2, data); }, useContextInfo(), true); return { _addMarkers, _addMapLines, _addMapCircles, _setMap(_map) { map2 = _map; } }; } class UniMap extends UniComponent { constructor(id2, parentNodeId, refNodeId, nodeJson) { super(id2, "uni-map", Map$1, parentNodeId, refNodeId, nodeJson, ".uni-map-slot"); } } var movableArea = "uni-movable-area {\n display: block;\n position: relative;\n width: 10px;\n height: 10px;\n}\n\nuni-movable-area[hidden] {\n display: none;\n}\n"; class UniMovableArea extends UniContainerComponent { constructor(id2, parentNodeId, refNodeId, nodeJson) { super(id2, "uni-movable-area", MovableArea, parentNodeId, refNodeId, nodeJson); } } var movableView = "uni-movable-view {\n display: inline-block;\n width: 10px;\n height: 10px;\n top: 0px;\n left: 0px;\n position: absolute;\n cursor: grab;\n}\n\nuni-movable-view[hidden] {\n display: none;\n}\n"; class UniMovableView extends UniComponent { constructor(id2, parentNodeId, refNodeId, nodeJson) { super(id2, "uni-movable-view", MovableView, parentNodeId, refNodeId, nodeJson); } } var navigator$1 = "uni-navigator {\n height: auto;\n width: auto;\n display: block;\n cursor: pointer;\n}\n\nuni-navigator[hidden] {\n display: none;\n}\n\n.navigator-hover {\n background-color: rgba(0, 0, 0, 0.1);\n opacity: 0.7;\n}\n"; class UniNavigator extends UniComponent { constructor(id2, parentNodeId, refNodeId, nodeJson) { super(id2, "uni-navigator", Navigator, parentNodeId, refNodeId, nodeJson); } } class UniOfficialAccount extends UniTodoNode { constructor(id2, parentNodeId, refNodeId) { super(id2, "uni-official-account", parentNodeId, refNodeId); } } class UniOpenData extends UniTodoNode { constructor(id2, parentNodeId, refNodeId) { super(id2, "uni-open-data", parentNodeId, refNodeId); } } var Picker = /* @__PURE__ */ defineBuiltInComponent({ name: "Picker" }); class UniPicker extends UniComponent { constructor(id2, parentNodeId, refNodeId, nodeJson) { super(id2, "uni-picker", Picker, parentNodeId, refNodeId, nodeJson); } } var pickerView = "uni-picker-view {\n display: block;\n}\n\n.uni-picker-view-wrapper {\n display: flex;\n position: relative;\n overflow: hidden;\n height: 100%;\n}\n\nuni-picker-view[hidden] {\n display: none;\n}\n"; class UniPickerView extends UniContainerComponent { constructor(id2, parentNodeId, refNodeId, nodeJson) { super(id2, "uni-picker-view", PickerView, parentNodeId, refNodeId, nodeJson, ".uni-picker-view-wrapper"); } } var pickerViewColumn = "uni-picker-view-column {\n flex: 1;\n position: relative;\n height: 100%;\n overflow: hidden;\n}\n\nuni-picker-view-column[hidden] {\n display: none;\n}\n\n.uni-picker-view-group {\n height: 100%;\n overflow: hidden;\n}\n\n.uni-picker-view-mask {\n transform: translateZ(0);\n}\n\n.uni-picker-view-indicator,\n.uni-picker-view-mask {\n position: absolute;\n left: 0;\n width: 100%;\n z-index: 3;\n pointer-events: none;\n}\n\n.uni-picker-view-mask {\n top: 0;\n height: 100%;\n margin: 0 auto;\n background: linear-gradient(\n 180deg,\n hsla(0, 0%, 100%, 0.95),\n hsla(0, 0%, 100%, 0.6)\n ),\n linear-gradient(0deg, hsla(0, 0%, 100%, 0.95), hsla(0, 0%, 100%, 0.6));\n background-position: top, bottom;\n background-size: 100% 102px;\n background-repeat: no-repeat;\n}\n\n.uni-picker-view-indicator {\n height: 34px;\n /* top: 102px; */\n top: 50%;\n transform: translateY(-50%);\n}\n\n.uni-picker-view-content {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n will-change: transform;\n padding: 102px 0;\n cursor: pointer;\n}\n\n.uni-picker-view-content > * {\n height: 34px;\n overflow: hidden;\n}\n\n.uni-picker-view-indicator:after,\n.uni-picker-view-indicator:before {\n content: ' ';\n position: absolute;\n left: 0;\n right: 0;\n height: 1px;\n color: #e5e5e5;\n}\n\n.uni-picker-view-indicator:before {\n top: 0;\n border-top: 1px solid #e5e5e5;\n transform-origin: 0 0;\n transform: scaleY(0.5);\n}\n\n.uni-picker-view-indicator:after {\n bottom: 0;\n border-bottom: 1px solid #e5e5e5;\n transform-origin: 0 100%;\n transform: scaleY(0.5);\n}\n\n.uni-picker-view-indicator:after,\n.uni-picker-view-indicator:before {\n content: ' ';\n position: absolute;\n left: 0;\n right: 0;\n height: 1px;\n color: #e5e5e5;\n}\n"; class UniPickerViewColumn extends UniContainerComponent { constructor(id2, parentNodeId, refNodeId, nodeJson) { super(id2, "uni-picker-view-column", PickerViewColumn, parentNodeId, refNodeId, nodeJson, ".uni-picker-view-content"); } } var progress = "uni-progress {\n display: flex;\n align-items: center;\n}\n\nuni-progress[hidden] {\n display: none;\n}\n\n.uni-progress-bar {\n flex: 1;\n}\n\n.uni-progress-inner-bar {\n width: 0;\n height: 100%;\n}\n\n.uni-progress-info {\n margin-top: 0;\n margin-bottom: 0;\n min-width: 2em;\n margin-left: 15px;\n font-size: 16px;\n}\n"; class UniProgress extends UniComponent { constructor(id2, parentNodeId, refNodeId, nodeJson) { super(id2, "uni-progress", Progress, parentNodeId, refNodeId, nodeJson); } } var radio = "uni-radio {\n -webkit-tap-highlight-color: transparent;\n display: inline-block;\n cursor: pointer;\n}\n\nuni-radio[hidden] {\n display: none;\n}\n\nuni-radio[disabled] {\n cursor: not-allowed;\n}\n\n.uni-radio-wrapper {\n display: inline-flex;\n align-items: center;\n vertical-align: middle;\n}\n\n.uni-radio-input {\n -webkit-appearance: none;\n appearance: none;\n margin-right: 5px;\n outline: 0;\n border: 1px solid #d1d1d1;\n background-color: #ffffff;\n border-radius: 50%;\n width: 22px;\n height: 22px;\n position: relative;\n}\n\nuni-radio:not([disabled]) .uni-radio-input:hover {\n border-color: #007aff;\n}\n\n.uni-radio-input svg {\n color: #ffffff;\n font-size: 18px;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -48%) scale(0.73);\n}\n\n.uni-radio-input.uni-radio-input-disabled {\n background-color: #e1e1e1;\n border-color: #d1d1d1;\n}\n\n.uni-radio-input.uni-radio-input-disabled:before {\n color: #adadad;\n}\n"; class UniRadio extends UniComponent { constructor(id2, parentNodeId, refNodeId, nodeJson) { super(id2, "uni-radio", Radio, parentNodeId, refNodeId, nodeJson, ".uni-radio-wrapper"); } setText(text2) { setHolderText(this.$holder, "uni-radio-input", text2); } } var radioGroup = "uni-radio-group {\n display: block;\n}\nuni-radio-group[hidden] {\n display: none;\n}\n"; class UniRadioGroup extends UniComponent { constructor(id2, parentNodeId, refNodeId, nodeJson) { super(id2, "uni-radio-group", RadioGroup, parentNodeId, refNodeId, nodeJson); } } var richText = ""; class UniRichText extends UniComponent { constructor(id2, parentNodeId, refNodeId, nodeJson) { super(id2, "uni-rich-text", RichText, parentNodeId, refNodeId, nodeJson); } } var scrollView = "uni-scroll-view {\n display: block;\n width: 100%;\n}\n\nuni-scroll-view[hidden] {\n display: none;\n}\n\n.uni-scroll-view {\n position: relative;\n -webkit-overflow-scrolling: touch;\n width: 100%;\n /* display: flex; \u65F6\u5728\u5B89\u5353\u4E0B\u4F1A\u5BFC\u81F4scrollWidth\u548CoffsetWidth\u4E00\u6837 */\n height: 100%;\n max-height: inherit;\n}\n\n.uni-scroll-view-content {\n width: 100%;\n height: 100%;\n}\n\n.uni-scroll-view-refresher {\n position: relative;\n overflow: hidden;\n}\n\n.uni-scroll-view-refresh {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n}\n\n.uni-scroll-view-refresh-inner {\n display: flex;\n align-items: center;\n justify-content: center;\n line-height: 0;\n width: 40px;\n height: 40px;\n border-radius: 50%;\n background-color: #fff;\n box-shadow: 0 1px 6px rgba(0, 0, 0, 0.117647),\n 0 1px 4px rgba(0, 0, 0, 0.117647);\n}\n\n.uni-scroll-view-refresh__spinner {\n transform-origin: center center;\n animation: uni-scroll-view-refresh-rotate 2s linear infinite;\n}\n\n.uni-scroll-view-refresh__spinner > circle {\n stroke: currentColor;\n stroke-linecap: round;\n animation: uni-scroll-view-refresh-dash 2s linear infinite;\n}\n\n@keyframes uni-scroll-view-refresh-rotate {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n}\n\n@keyframes uni-scroll-view-refresh-dash {\n 0% {\n stroke-dasharray: 1, 200;\n stroke-dashoffset: 0;\n }\n\n 50% {\n stroke-dasharray: 89, 200;\n stroke-dashoffset: -35px;\n }\n\n 100% {\n stroke-dasharray: 89, 200;\n stroke-dashoffset: -124px;\n }\n}\n"; class UniScrollView extends UniComponent { constructor(id2, parentNodeId, refNodeId, nodeJson) { super(id2, "uni-scroll-view", ScrollView, parentNodeId, refNodeId, nodeJson, ".uni-scroll-view-content"); } setText(text2) { setHolderText(this.$holder, "uni-scroll-view-refresher", text2); } } var slider = "uni-slider {\n margin: 10px 18px;\n padding: 0;\n display: block;\n}\n\nuni-slider[hidden] {\n display: none;\n}\n\nuni-slider .uni-slider-wrapper {\n display: flex;\n align-items: center;\n min-height: 16px;\n}\n\nuni-slider .uni-slider-tap-area {\n flex: 1;\n padding: 8px 0;\n}\n\nuni-slider .uni-slider-handle-wrapper {\n position: relative;\n height: 2px;\n border-radius: 5px;\n background-color: #e9e9e9;\n cursor: pointer;\n transition: background-color 0.3s ease;\n -webkit-tap-highlight-color: transparent;\n}\n\nuni-slider .uni-slider-track {\n height: 100%;\n border-radius: 6px;\n background-color: #007aff;\n transition: background-color 0.3s ease;\n}\n\nuni-slider .uni-slider-handle,\nuni-slider .uni-slider-thumb {\n position: absolute;\n left: 50%;\n top: 50%;\n cursor: pointer;\n border-radius: 50%;\n transition: border-color 0.3s ease;\n}\n\nuni-slider .uni-slider-handle {\n width: 28px;\n height: 28px;\n margin-top: -14px;\n margin-left: -14px;\n background-color: transparent;\n z-index: 3;\n cursor: grab;\n}\n\nuni-slider .uni-slider-thumb {\n z-index: 2;\n box-shadow: 0 0 4px rgba(0, 0, 0, 0.2);\n}\n\nuni-slider .uni-slider-step {\n position: absolute;\n width: 100%;\n height: 2px;\n background: transparent;\n z-index: 1;\n}\n\nuni-slider .uni-slider-value {\n width: 3ch;\n color: #888;\n font-size: 14px;\n margin-left: 1em;\n}\n\nuni-slider .uni-slider-disabled .uni-slider-track {\n background-color: #ccc;\n}\n\nuni-slider .uni-slider-disabled .uni-slider-thumb {\n background-color: #fff;\n border-color: #ccc;\n}\n"; class UniSlider extends UniComponent { constructor(id2, parentNodeId, refNodeId, nodeJson) { super(id2, "uni-slider", Slider, parentNodeId, refNodeId, nodeJson); } } var swiper = "uni-swiper {\n display: block;\n height: 150px;\n}\n\nuni-swiper[hidden] {\n display: none;\n}\n\n.uni-swiper-wrapper {\n overflow: hidden;\n position: relative;\n width: 100%;\n height: 100%;\n transform: translateZ(0);\n}\n\n.uni-swiper-slides {\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n bottom: 0;\n}\n\n.uni-swiper-slide-frame {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n will-change: transform;\n}\n\n.uni-swiper-dots {\n position: absolute;\n font-size: 0;\n}\n\n.uni-swiper-dots-horizontal {\n left: 50%;\n bottom: 10px;\n text-align: center;\n white-space: nowrap;\n transform: translate(-50%, 0);\n}\n\n.uni-swiper-dots-horizontal .uni-swiper-dot {\n margin-right: 8px;\n}\n\n.uni-swiper-dots-horizontal .uni-swiper-dot:last-child {\n margin-right: 0;\n}\n\n.uni-swiper-dots-vertical {\n right: 10px;\n top: 50%;\n text-align: right;\n transform: translate(0, -50%);\n}\n\n.uni-swiper-dots-vertical .uni-swiper-dot {\n display: block;\n margin-bottom: 9px;\n}\n\n.uni-swiper-dots-vertical .uni-swiper-dot:last-child {\n margin-bottom: 0;\n}\n\n.uni-swiper-dot {\n display: inline-block;\n width: 8px;\n height: 8px;\n cursor: pointer;\n transition-property: background-color;\n transition-timing-function: ease;\n background: rgba(0, 0, 0, 0.3);\n border-radius: 50%;\n}\n\n.uni-swiper-dot-active {\n background-color: #000000;\n}\n"; class UniSwiper extends UniContainerComponent { constructor(id2, parentNodeId, refNodeId, nodeJson) { super(id2, "uni-swiper", Swiper, parentNodeId, refNodeId, nodeJson, ".uni-swiper-slide-frame"); } } var swiperItem = "uni-swiper-item {\n display: block;\n overflow: hidden;\n will-change: transform;\n position: absolute;\n width: 100%;\n height: 100%;\n cursor: grab;\n}\n\nuni-swiper-item[hidden] {\n display: none;\n}\n"; class UniSwiperItem extends UniComponent { constructor(id2, parentNodeId, refNodeId, nodeJson) { super(id2, "uni-swiper-item", SwiperItem, parentNodeId, refNodeId, nodeJson); } } var _switch = "uni-switch {\n -webkit-tap-highlight-color: transparent;\n display: inline-block;\n cursor: pointer;\n}\n\nuni-switch[hidden] {\n display: none;\n}\n\nuni-switch[disabled] {\n cursor: not-allowed;\n}\n\n.uni-switch-wrapper {\n display: inline-flex;\n align-items: center;\n vertical-align: middle;\n}\n\n.uni-switch-input {\n -webkit-appearance: none;\n appearance: none;\n position: relative;\n width: 52px;\n height: 32px;\n margin-right: 5px;\n border: 1px solid #dfdfdf;\n outline: 0;\n border-radius: 16px;\n box-sizing: border-box;\n background-color: #dfdfdf;\n transition: background-color 0.1s, border 0.1s;\n}\n\nuni-switch[disabled] .uni-switch-input {\n opacity: 0.7;\n}\n\n.uni-switch-input:before {\n content: ' ';\n position: absolute;\n top: 0;\n left: 0;\n width: 50px;\n height: 30px;\n border-radius: 15px;\n background-color: #fdfdfd;\n transition: transform 0.3s;\n}\n\n.uni-switch-input:after {\n content: ' ';\n position: absolute;\n top: 0;\n left: 0;\n width: 30px;\n height: 30px;\n border-radius: 15px;\n background-color: #ffffff;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);\n transition: transform 0.3s;\n}\n\n.uni-switch-input.uni-switch-input-checked {\n border-color: #007aff;\n background-color: #007aff;\n}\n\n.uni-switch-input.uni-switch-input-checked:before {\n transform: scale(0);\n}\n\n.uni-switch-input.uni-switch-input-checked:after {\n transform: translateX(20px);\n}\n\nuni-switch .uni-checkbox-input {\n margin-right: 5px;\n -webkit-appearance: none;\n appearance: none;\n outline: 0;\n border: 1px solid #d1d1d1;\n background-color: #ffffff;\n border-radius: 3px;\n width: 22px;\n height: 22px;\n position: relative;\n color: #007aff;\n}\n\nuni-switch:not([disabled]) .uni-checkbox-input:hover {\n border-color: #007aff;\n}\n\nuni-switch .uni-checkbox-input svg {\n color: inherit;\n font-size: 22px;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -48%) scale(0.73);\n}\n\n.uni-checkbox-input.uni-checkbox-input-disabled {\n background-color: #e1e1e1;\n}\n\n.uni-checkbox-input.uni-checkbox-input-disabled:before {\n color: #adadad;\n}\n"; class UniSwitch extends UniComponent { constructor(id2, parentNodeId, refNodeId, nodeJson) { super(id2, "uni-switch", Switch, parentNodeId, refNodeId, nodeJson); } } var textarea = "uni-textarea {\n width: 300px;\n height: 150px;\n display: block;\n position: relative;\n font-size: 16px;\n line-height: normal;\n white-space: pre-wrap;\n word-break: break-all;\n box-sizing: content-box !important;\n}\nuni-textarea[hidden] {\n display: none;\n}\n.uni-textarea-wrapper,\n.uni-textarea-placeholder,\n.uni-textarea-line,\n.uni-textarea-compute,\n.uni-textarea-textarea {\n outline: none;\n border: none;\n padding: 0;\n margin: 0;\n text-decoration: inherit;\n}\n.uni-textarea-wrapper {\n display: block;\n position: relative;\n width: 100%;\n height: 100%;\n min-height: inherit;\n}\n.uni-textarea-placeholder,\n.uni-textarea-line,\n.uni-textarea-compute,\n.uni-textarea-textarea {\n position: absolute;\n width: 100%;\n height: 100%;\n left: 0;\n top: 0;\n white-space: inherit;\n word-break: inherit;\n}\n.uni-textarea-placeholder {\n color: grey;\n overflow: hidden;\n}\n.uni-textarea-line,\n.uni-textarea-compute {\n visibility: hidden;\n height: auto;\n}\n.uni-textarea-line {\n width: 1em;\n}\n.uni-textarea-textarea {\n resize: none;\n background: none;\n color: inherit;\n opacity: 1;\n font: inherit;\n line-height: inherit;\n letter-spacing: inherit;\n text-align: inherit;\n text-indent: inherit;\n text-transform: inherit;\n text-shadow: inherit;\n}\n/* \u7528\u4E8E\u89E3\u51B3 iOS textarea \u5185\u90E8\u9ED8\u8BA4\u8FB9\u8DDD */\n.uni-textarea-textarea-fix-margin {\n width: auto;\n right: 0;\n margin: 0 -3px;\n}\n.uni-textarea-textarea:disabled {\n /* \u7528\u4E8E\u91CD\u7F6EiOS14\u4EE5\u4E0B\u7981\u7528\u72B6\u6001\u6587\u5B57\u989C\u8272 */\n -webkit-text-fill-color: currentcolor;\n}\n"; class UniTextarea extends UniComponent { constructor(id2, parentNodeId, refNodeId, nodeJson) { super(id2, "uni-textarea", Textarea, parentNodeId, refNodeId, nodeJson); } } var video = "uni-video {\n width: 300px;\n height: 225px;\n display: inline-block;\n line-height: 0;\n overflow: hidden;\n position: relative;\n}\n\nuni-video[hidden] {\n display: none;\n}\n\n.uni-video-container {\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n overflow: hidden;\n background-color: black;\n}\n\n.uni-video-slot {\n position: absolute;\n top: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n pointer-events: none;\n}\n"; const props$1 = { id: { type: String, default: "" }, src: { type: String, default: "" }, duration: { type: [Number, String], default: "" }, controls: { type: [Boolean, String], default: true }, danmuList: { type: Array, default() { return []; } }, danmuBtn: { type: [Boolean, String], default: false }, enableDanmu: { type: [Boolean, String], default: false }, autoplay: { type: [Boolean, String], default: false }, loop: { type: [Boolean, String], default: false }, muted: { type: [Boolean, String], default: false }, objectFit: { type: String, default: "contain" }, poster: { type: String, default: "" }, direction: { type: [String, Number], default: "" }, showProgress: { type: Boolean, default: true }, initialTime: { type: [String, Number], default: 0 }, showFullscreenBtn: { type: [Boolean, String], default: true }, pageGesture: { type: [Boolean, String], default: false }, enableProgressGesture: { type: [Boolean, String], default: true }, showPlayBtn: { type: [Boolean, String], default: true }, enablePlayGesture: { type: [Boolean, String], default: true }, showCenterPlayBtn: { type: [Boolean, String], default: true }, showLoading: { type: [Boolean, String], default: true }, codec: { type: String, default: "hardware" }, httpCache: { type: [Boolean, String], default: false }, playStrategy: { type: [Number, String], default: 0 }, header: { type: Object, default() { return {}; } }, advanced: { type: Array, default() { return []; } } }; const emits = ["play", "pause", "ended", "timeupdate", "fullscreenchange", "fullscreenclick", "waiting", "error"]; const methods = ["play", "pause", "stop", "seek", "sendDanmu", "playbackRate", "requestFullScreen", "exitFullScreen"]; var Video = /* @__PURE__ */ defineBuiltInComponent({ name: "Video", props: props$1, emits, setup(props2, { emit: emit2 }) { const rootRef = ref(null); const trigger2 = useCustomEvent(rootRef, emit2); const containerRef = ref(null); const attrs2 = useNativeAttrs(props2, ["id"]); const { position, hidden, onParentReady } = useNative(containerRef); let video2; onParentReady(() => { video2 = plus.video.createVideoPlayer("video" + Date.now(), Object.assign({}, attrs2.value, position)); plus.webview.currentWebview().append(video2); if (hidden.value) { video2.hide(); } emits.forEach((key) => { video2.addEventListener(key, (event) => { trigger2(key, {}, event.detail); }); }); watch(() => attrs2.value, (attrs3) => video2.setStyles(attrs3), { deep: true }); watch(() => position, (position2) => video2.setStyles(position2), { deep: true }); watch(() => hidden.value, (val) => { video2[val ? "hide" : "show"](); if (!val) { video2.setStyles(position); } }); }); const id2 = useContextInfo(); useSubscribe((type, data) => { if (methods.includes(type)) { let options; switch (type) { case "seek": options = data.position; break; case "sendDanmu": options = data; break; case "playbackRate": options = data.rate; break; } if (video2) { video2[type](options); } } }, id2, true); onBeforeUnmount(() => { if (video2) { video2.close(); } }); return () => { return createVNode("uni-video", { "ref": rootRef, "id": props2.id }, { default: () => [createVNode("div", { "ref": containerRef, "class": "uni-video-container" }, null, 512), createVNode("div", { "class": "uni-video-slot" }, null)], _: 1 }, 8, ["id"]); }; } }); class UniVideo extends UniComponent { constructor(id2, parentNodeId, refNodeId, nodeJson) { super(id2, "uni-video", Video, parentNodeId, refNodeId, nodeJson, ".uni-video-slot"); } } var webview$1 = "uni-web-view {\n display: inline-block;\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n}\n"; const props = { src: { type: String, default: "" }, webviewStyles: { type: Object, default() { return {}; } } }; let webview; const insertHTMLWebView = ({ htmlId, src, webviewStyles }) => { const parentWebview = plus.webview.currentWebview(); const styles = extend(webviewStyles, { "uni-app": "none", isUniH5: true }); const parentTitleNView = parentWebview.getTitleNView(); if (parentTitleNView) { let defaultTop = NAVBAR_HEIGHT + parseFloat(styles.top || "0"); if (plus.navigator.isImmersedStatusbar()) { defaultTop += getStatusbarHeight(); } styles.top = String(defaultTop); styles.bottom = styles.bottom || "0"; } webview = plus.webview.create(src, htmlId, styles); if (parentTitleNView) { webview.addEventListener("titleUpdate", function() { const title = webview == null ? void 0 : webview.getTitle(); parentWebview.setStyle({ titleNView: { titleText: !title || title === "null" ? " " : title } }); }); } plus.webview.currentWebview().append(webview); }; const removeHTMLWebView = () => { plus.webview.currentWebview().remove(webview); webview == null ? void 0 : webview.close("none"); webview = null; }; var WebView = /* @__PURE__ */ defineBuiltInComponent({ name: "WebView", props, setup(props2) { const pageId = getCurrentPageId(); const containerRef = ref(null); const { position, hidden, onParentReady } = useNative(containerRef); const webviewStyles = computed$1(() => props2.webviewStyles); onParentReady(() => { const htmlId = ref(WEBVIEW_ID_PREFIX + pageId); insertHTMLWebView({ htmlId: htmlId.value, src: getRealPath(props2.src), webviewStyles: webviewStyles.value }); UniViewJSBridge.publishHandler(WEBVIEW_INSERTED, {}, pageId); if (hidden.value) webview == null ? void 0 : webview.hide(); }); onBeforeUnmount(() => { removeHTMLWebView(); UniViewJSBridge.publishHandler(WEBVIEW_REMOVED, {}, pageId); }); watch(() => props2.src, (val) => { const realPath = getRealPath(val) || ""; if (!realPath) { return; } if (/^(http|https):\/\//.test(realPath) && props2.webviewStyles.progress) { webview == null ? void 0 : webview.setStyle({ progress: { color: props2.webviewStyles.progress.color } }); } webview == null ? void 0 : webview.loadURL(realPath); }); watch(webviewStyles, (webviewStyles2) => { webview == null ? void 0 : webview.setStyle(webviewStyles2); }); watch(hidden, (val) => { webview && webview[val ? "hide" : "show"](); }); return () => createVNode("uni-web-view", { "ref": containerRef }, null, 512); } }); class UniWebView extends UniComponent { constructor(id2, parentNodeId, refNodeId, nodeJson) { super(id2, "uni-web-view", WebView, parentNodeId, refNodeId, nodeJson); } } const BuiltInComponents = { "#text": UniTextNode, "#comment": UniComment, VIEW: UniViewElement, IMAGE: UniImage, TEXT: UniTextElement, NAVIGATOR: UniNavigator, FORM: UniForm, BUTTON: UniButton, INPUT: UniInput, LABEL: UniLabel, RADIO: UniRadio, CHECKBOX: UniCheckbox, "CHECKBOX-GROUP": UniCheckboxGroup, AD: UniAd, AUDIO: UniAudio, CAMERA: UniCamera, CANVAS: UniCanvas, "COVER-IMAGE": UniCoverImage, "COVER-VIEW": UniCoverView, EDITOR: UniEditor, "FUNCTIONAL-PAGE-NAVIGATOR": UniFunctionalPageNavigator, ICON: UniIcon, "RADIO-GROUP": UniRadioGroup, "LIVE-PLAYER": UniLivePlayer, "LIVE-PUSHER": UniLivePusher, MAP: UniMap, "MOVABLE-AREA": UniMovableArea, "MOVABLE-VIEW": UniMovableView, "OFFICIAL-ACCOUNT": UniOfficialAccount, "OPEN-DATA": UniOpenData, PICKER: UniPicker, "PICKER-VIEW": UniPickerView, "PICKER-VIEW-COLUMN": UniPickerViewColumn, PROGRESS: UniProgress, "RICH-TEXT": UniRichText, "SCROLL-VIEW": UniScrollView, SLIDER: UniSlider, SWIPER: UniSwiper, "SWIPER-ITEM": UniSwiperItem, SWITCH: UniSwitch, TEXTAREA: UniTextarea, VIDEO: UniVideo, "WEB-VIEW": UniWebView }; function createWrapper(component, props2) { return () => h(component, props2); } const elements = new Map(); function $(id2) { return elements.get(id2); } function removeElement(id2) { { console.log(formatLog("Remove", id2, elements.size - 1)); } return elements.delete(id2); } function createElement(id2, tag, parentNodeId, refNodeId, nodeJson = {}) { let element; if (id2 === 0) { element = new UniNode(id2, tag, parentNodeId, document.createElement(tag)); } else { const Component = BuiltInComponents[tag]; if (Component) { element = new Component(id2, parentNodeId, refNodeId, nodeJson); } else { element = new UniElement(id2, document.createElement(tag), parentNodeId, refNodeId, nodeJson); } } elements.set(id2, element); return element; } const pageReadyCallbacks = []; let isPageReady = false; function onPageReady(callback) { if (isPageReady) { return callback(); } pageReadyCallbacks.push(callback); } function setPageReady() { { console.log(formatLog("setPageReady", pageReadyCallbacks.length)); } isPageReady = true; pageReadyCallbacks.forEach((fn) => fn()); pageReadyCallbacks.length = 0; } function onPageCreated() { } function onPageCreate({ css, route, platform, pixelRatio: pixelRatio2, windowWidth, disableScroll, onPageScroll, onPageReachBottom, onReachBottomDistance, statusbarHeight, windowTop, windowBottom }) { initPageInfo(route); initSystemInfo(platform, pixelRatio2, windowWidth); initPageElement(); const pageId = plus.webview.currentWebview().id; window.__id__ = pageId; document.title = `${route}[${pageId}]`; initCssVar(statusbarHeight, windowTop, windowBottom); if (disableScroll) { document.addEventListener("touchmove", disableScrollListener); } else if (onPageScroll || onPageReachBottom) { initPageScroll(onPageScroll, onPageReachBottom, onReachBottomDistance); } if (css) { initPageCss(route); } else { setPageReady(); } } function initPageInfo(route) { window.__PAGE_INFO__ = { route }; } function initSystemInfo(platform, pixelRatio2, windowWidth) { window.__SYSTEM_INFO__ = { platform, pixelRatio: pixelRatio2, windowWidth }; } function initPageElement() { createElement(0, "div", -1, -1).$ = document.getElementById("app"); } function initPageCss(route) { { console.log(formatLog("initPageCss", route + ".css")); } const element = document.createElement("link"); element.type = "text/css"; element.rel = "stylesheet"; element.href = route + ".css"; element.onload = setPageReady; element.onerror = setPageReady; document.head.appendChild(element); } function initCssVar(statusbarHeight, windowTop, windowBottom) { const cssVars = { "--window-left": "0px", "--window-right": "0px", "--window-top": windowTop + "px", "--window-bottom": windowBottom + "px", "--status-bar-height": statusbarHeight + "px" }; { console.log(formatLog("initCssVar", cssVars)); } updateCssVar(cssVars); } function initPageScroll(onPageScroll, onPageReachBottom, onReachBottomDistance) { const opts = {}; if (onPageScroll) { opts.onPageScroll = (scrollTop) => { UniViewJSBridge.publishHandler(ON_PAGE_SCROLL, { scrollTop }); }; } if (onPageReachBottom) { opts.onReachBottomDistance = onReachBottomDistance; opts.onReachBottom = () => UniViewJSBridge.publishHandler(ON_REACH_BOTTOM); } requestAnimationFrame(() => document.addEventListener("scroll", createScrollListener(opts))); } function pageScrollTo({ scrollTop, selector, duration }, publish) { scrollTo(selector || scrollTop || 0, duration); publish(); } function onVdSync(actions) { const firstAction = actions[0]; if (firstAction[0] === ACTION_TYPE_PAGE_CREATE) { onPageCreateSync(firstAction); } else { onPageReady(() => onPageUpdateSync(actions)); } } function onPageCreateSync(action) { return onPageCreate(action[1]); } function onPageUpdateSync(actions) { const dictAction = actions[0]; const getDict = createGetDict(dictAction[0] === ACTION_TYPE_DICT ? dictAction[1] : []); actions.forEach((action) => { switch (action[0]) { case ACTION_TYPE_PAGE_CREATE: return onPageCreate(action[1]); case ACTION_TYPE_PAGE_CREATED: return onPageCreated(); case ACTION_TYPE_CREATE: return createElement(action[1], getDict(action[2]), action[3], action[4], decodeNodeJson(getDict, action[5])); case ACTION_TYPE_REMOVE: return $(action[1]).remove(); case ACTION_TYPE_SET_ATTRIBUTE: return $(action[1]).setAttr(getDict(action[2]), getDict(action[3])); case ACTION_TYPE_REMOVE_ATTRIBUTE: return $(action[1]).removeAttr(getDict(action[2])); case ACTION_TYPE_ADD_EVENT: return $(action[1]).addEvent(getDict(action[2]), action[3]); case ACTION_TYPE_REMOVE_EVENT: return $(action[1]).removeEvent(getDict(action[2])); case ACTION_TYPE_SET_TEXT: return $(action[1]).setText(getDict(action[2])); } }); flushPostActionJobs(); } function initSubscribeHandlers() { const { subscribe } = UniViewJSBridge; subscribe(VD_SYNC, onVdSync); } function getRootInfo(fields) { const info = {}; if (fields.id) { info.id = ""; } if (fields.dataset) { info.dataset = {}; } if (fields.rect) { info.left = 0; info.right = 0; info.top = 0; info.bottom = 0; } if (fields.size) { info.width = document.documentElement.clientWidth; info.height = document.documentElement.clientHeight; } if (fields.scrollOffset) { const documentElement = document.documentElement; const body = document.body; info.scrollLeft = documentElement.scrollLeft || body.scrollLeft || 0; info.scrollTop = documentElement.scrollTop || body.scrollTop || 0; info.scrollHeight = documentElement.scrollHeight || body.scrollHeight || 0; info.scrollWidth = documentElement.scrollWidth || body.scrollWidth || 0; } return info; } function getNodeInfo(el, fields) { const info = {}; const { top } = getWindowOffset(); if (fields.id) { info.id = el.id; } if (fields.dataset) { info.dataset = getCustomDataset(el); } if (fields.rect || fields.size) { const rect = el.getBoundingClientRect(); if (fields.rect) { info.left = rect.left; info.right = rect.right; info.top = rect.top - top; info.bottom = rect.bottom - top; } if (fields.size) { info.width = rect.width; info.height = rect.height; } } if (Array.isArray(fields.properties)) { fields.properties.forEach((prop) => { prop = prop.replace(/-([a-z])/g, function(e2, t2) { return t2.toUpperCase(); }); }); } if (fields.scrollOffset) { if (el.tagName === "UNI-SCROLL-VIEW") { const scroll = el.children[0].children[0]; info.scrollLeft = scroll.scrollLeft; info.scrollTop = scroll.scrollTop; info.scrollHeight = scroll.scrollHeight; info.scrollWidth = scroll.scrollWidth; } else { info.scrollLeft = 0; info.scrollTop = 0; info.scrollHeight = 0; info.scrollWidth = 0; } } if (Array.isArray(fields.computedStyle)) { const sytle = getComputedStyle(el); fields.computedStyle.forEach((name) => { info[name] = sytle[name]; }); } if (fields.context) { info.contextInfo = getContextInfo(el); } return info; } function findElm(component, pageVm2) { if (!component) { return pageVm2.$el; } { return window.__$__(component).$; } } function matches(element, selectors) { const matches2 = element.matches || element.matchesSelector || element.mozMatchesSelector || element.msMatchesSelector || element.oMatchesSelector || element.webkitMatchesSelector || function(selectors2) { const matches3 = this.parentElement.querySelectorAll(selectors2); let i = matches3.length; while (--i >= 0 && matches3.item(i) !== this) { } return i > -1; }; return matches2.call(element, selectors); } function getNodesInfo(pageVm2, component, selector, single, fields) { const selfElement = findElm(component, pageVm2); const parentElement = selfElement.parentElement; if (!parentElement) { return single ? null : []; } const { nodeType } = selfElement; const maybeFragment = nodeType === 3 || nodeType === 8; if (single) { const node = maybeFragment ? parentElement.querySelector(selector) : matches(selfElement, selector) ? selfElement : selfElement.querySelector(selector); if (node) { return getNodeInfo(node, fields); } return null; } else { let infos = []; const nodeList = (maybeFragment ? parentElement : selfElement).querySelectorAll(selector); if (nodeList && nodeList.length) { [].forEach.call(nodeList, (node) => { infos.push(getNodeInfo(node, fields)); }); } if (!maybeFragment && matches(selfElement, selector)) { infos.unshift(getNodeInfo(selfElement, fields)); } return infos; } } function requestComponentInfo(page, reqs, callback) { const result = []; reqs.forEach(({ component, selector, single, fields }) => { if (component === null) { result.push(getRootInfo(fields)); } else { result.push(getNodesInfo(page, component, selector, single, fields)); } }); callback(result); } function loadFontFace({ family, source, desc }, publish) { addFont(family, source, desc).then(() => { publish(); }).catch((err) => { publish(err.toString()); }); } const pageVm = { $el: document.body }; function initViewMethods() { const pageId = getCurrentPageId(); subscribeViewMethod(pageId); registerViewMethod(pageId, "requestComponentInfo", (args, publish) => { requestComponentInfo(pageVm, args.reqs, publish); }); registerViewMethod(pageId, PAGE_SCROLL_TO, pageScrollTo); registerViewMethod(pageId, LOAD_FONT_FACE, loadFontFace); } window.uni = uni$1; window.UniViewJSBridge = UniViewJSBridge$1; window.rpx2px = upx2px; window.__$__ = $; function onWebviewReady() { initView(); initViewMethods(); initSubscribeHandlers(); preventDoubleTap(); UniViewJSBridge$1.publishHandler(ON_WEBVIEW_READY); } if (typeof plus !== "undefined") { onWebviewReady(); } else { document.addEventListener("plusready", onWebviewReady); } });