import { version, ref, watchEffect, watch, getCurrentInstance, defineComponent, computed, provide, renderSlot, inject, openBlock, createElementBlock, normalizeClass, unref, normalizeStyle, withDirectives, cloneVNode, Fragment, Text, Comment, createVNode, createBlock, mergeProps, withCtx, createCommentVNode, toRef, Teleport, Transition, vShow, readonly, toDisplayString, createTextVNode, hasInjectionContext, warn, useSSRContext, createApp, effectScope, reactive, shallowRef, onUnmounted, nextTick, isRef, defineAsyncComponent, onErrorCaptured, onServerPrefetch, resolveDynamicComponent, h, isReadonly, isShallow, isReactive, toRaw, withModifiers, renderList } from 'vue'; import { d as useRuntimeConfig$1, $ as $fetch, w as withQuery, l as hasProtocol, p as parseURL, m as isScriptProtocol, j as joinURL, h as createError$1, n as sanitizeStatusCode, o as createHooks, q as isEqual, r as stringifyParsedURL, t as stringifyQuery, v as parseQuery } from '../nitro/node-server.mjs'; import { getActiveHead } from 'unhead'; import { defineHeadPlugin, composableNames } from '@unhead/shared'; import { onClickOutside, tryOnScopeDispose, isClient, unrefElement } from '@vueuse/core'; import { NOOP, isObject, isString, hasOwn, isFunction, isArray } from '@vue/shared'; import { isNil, fromPairs, pick, isUndefined } from 'lodash-unified'; import { ssrRenderSuspense, ssrRenderComponent, ssrRenderVNode, ssrInterpolate, ssrRenderAttr, ssrRenderList, ssrRenderClass, ssrRenderStyle, ssrIncludeBooleanAttr, ssrRenderAttrs } from 'vue/server-renderer'; import { placements, createPopper } from '@popperjs/core'; import axios from 'axios'; import 'node:http'; import 'node:https'; import 'fs'; import 'path'; import 'node:fs'; import 'node:url'; function createContext$1(opts = {}) { let currentInstance; let isSingleton = false; const checkConflict = (instance) => { if (currentInstance && currentInstance !== instance) { throw new Error("Context conflict"); } }; let als; if (opts.asyncContext) { const _AsyncLocalStorage = opts.AsyncLocalStorage || globalThis.AsyncLocalStorage; if (_AsyncLocalStorage) { als = new _AsyncLocalStorage(); } else { console.warn("[unctx] `AsyncLocalStorage` is not provided."); } } const _getCurrentInstance = () => { if (als && currentInstance === void 0) { const instance = als.getStore(); if (instance !== void 0) { return instance; } } return currentInstance; }; return { use: () => { const _instance = _getCurrentInstance(); if (_instance === void 0) { throw new Error("Context is not available"); } return _instance; }, tryUse: () => { return _getCurrentInstance(); }, set: (instance, replace) => { if (!replace) { checkConflict(instance); } currentInstance = instance; isSingleton = true; }, unset: () => { currentInstance = void 0; isSingleton = false; }, call: (instance, callback) => { checkConflict(instance); currentInstance = instance; try { return als ? als.run(instance, callback) : callback(); } finally { if (!isSingleton) { currentInstance = void 0; } } }, async callAsync(instance, callback) { currentInstance = instance; const onRestore = () => { currentInstance = instance; }; const onLeave = () => currentInstance === instance ? onRestore : void 0; asyncHandlers$1.add(onLeave); try { const r = als ? als.run(instance, callback) : callback(); if (!isSingleton) { currentInstance = void 0; } return await r; } finally { asyncHandlers$1.delete(onLeave); } } }; } function createNamespace$1(defaultOpts = {}) { const contexts = {}; return { get(key, opts = {}) { if (!contexts[key]) { contexts[key] = createContext$1({ ...defaultOpts, ...opts }); } contexts[key]; return contexts[key]; } }; } const _globalThis$1 = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof global !== "undefined" ? global : {}; const globalKey$2 = "__unctx__"; const defaultNamespace$1 = _globalThis$1[globalKey$2] || (_globalThis$1[globalKey$2] = createNamespace$1()); const getContext = (key, opts = {}) => defaultNamespace$1.get(key, opts); const asyncHandlersKey$1 = "__unctx_async_handlers__"; const asyncHandlers$1 = _globalThis$1[asyncHandlersKey$1] || (_globalThis$1[asyncHandlersKey$1] = /* @__PURE__ */ new Set()); const appConfig = useRuntimeConfig$1().app; const baseURL = () => appConfig.baseURL; if (!globalThis.$fetch) { globalThis.$fetch = $fetch.create({ baseURL: baseURL() }); } const nuxtAppCtx = /* @__PURE__ */ getContext("nuxt-app", { asyncContext: false }); const NuxtPluginIndicator = "__nuxt_plugin"; function createNuxtApp(options) { let hydratingCount = 0; const nuxtApp = { _scope: effectScope(), provide: void 0, globalName: "nuxt", versions: { get nuxt() { return "3.8.2"; }, get vue() { return nuxtApp.vueApp.version; } }, payload: reactive({ data: {}, state: {}, _errors: {}, ...{ serverRendered: true } }), static: { data: {} }, runWithContext: (fn) => nuxtApp._scope.run(() => callWithNuxt(nuxtApp, fn)), isHydrating: false, deferHydration() { if (!nuxtApp.isHydrating) { return () => { }; } hydratingCount++; let called = false; return () => { if (called) { return; } called = true; hydratingCount--; if (hydratingCount === 0) { nuxtApp.isHydrating = false; return nuxtApp.callHook("app:suspense:resolve"); } }; }, _asyncDataPromises: {}, _asyncData: {}, _payloadRevivers: {}, ...options }; nuxtApp.hooks = createHooks(); nuxtApp.hook = nuxtApp.hooks.hook; { const contextCaller = async function(hooks, args) { for (const hook of hooks) { await nuxtApp.runWithContext(() => hook(...args)); } }; nuxtApp.hooks.callHook = (name, ...args) => nuxtApp.hooks.callHookWith(contextCaller, name, ...args); } nuxtApp.callHook = nuxtApp.hooks.callHook; nuxtApp.provide = (name, value) => { const $name = "$" + name; defineGetter(nuxtApp, $name, value); defineGetter(nuxtApp.vueApp.config.globalProperties, $name, value); }; defineGetter(nuxtApp.vueApp, "$nuxt", nuxtApp); defineGetter(nuxtApp.vueApp.config.globalProperties, "$nuxt", nuxtApp); { if (nuxtApp.ssrContext) { nuxtApp.ssrContext.nuxt = nuxtApp; nuxtApp.ssrContext._payloadReducers = {}; nuxtApp.payload.path = nuxtApp.ssrContext.url; } nuxtApp.ssrContext = nuxtApp.ssrContext || {}; if (nuxtApp.ssrContext.payload) { Object.assign(nuxtApp.payload, nuxtApp.ssrContext.payload); } nuxtApp.ssrContext.payload = nuxtApp.payload; nuxtApp.ssrContext.config = { public: options.ssrContext.runtimeConfig.public, app: options.ssrContext.runtimeConfig.app }; } const runtimeConfig = options.ssrContext.runtimeConfig; nuxtApp.provide("config", runtimeConfig); return nuxtApp; } async function applyPlugin(nuxtApp, plugin) { if (plugin.hooks) { nuxtApp.hooks.addHooks(plugin.hooks); } if (typeof plugin === "function") { const { provide: provide2 } = await nuxtApp.runWithContext(() => plugin(nuxtApp)) || {}; if (provide2 && typeof provide2 === "object") { for (const key in provide2) { nuxtApp.provide(key, provide2[key]); } } } } async function applyPlugins(nuxtApp, plugins2) { var _a, _b; const parallels = []; const errors = []; for (const plugin of plugins2) { if (((_a = nuxtApp.ssrContext) == null ? void 0 : _a.islandContext) && ((_b = plugin.env) == null ? void 0 : _b.islands) === false) { continue; } const promise = applyPlugin(nuxtApp, plugin); if (plugin.parallel) { parallels.push(promise.catch((e) => errors.push(e))); } else { await promise; } } await Promise.all(parallels); if (errors.length) { throw errors[0]; } } /*! @__NO_SIDE_EFFECTS__ */ // @__NO_SIDE_EFFECTS__ function defineNuxtPlugin(plugin) { if (typeof plugin === "function") { return plugin; } delete plugin.name; return Object.assign(plugin.setup || (() => { }), plugin, { [NuxtPluginIndicator]: true }); } function callWithNuxt(nuxt, setup, args) { const fn = () => args ? setup(...args) : setup(); { return nuxt.vueApp.runWithContext(() => nuxtAppCtx.callAsync(nuxt, fn)); } } /*! @__NO_SIDE_EFFECTS__ */ // @__NO_SIDE_EFFECTS__ function useNuxtApp() { var _a; let nuxtAppInstance; if (hasInjectionContext()) { nuxtAppInstance = (_a = getCurrentInstance()) == null ? void 0 : _a.appContext.app.$nuxt; } nuxtAppInstance = nuxtAppInstance || nuxtAppCtx.tryUse(); if (!nuxtAppInstance) { { throw new Error("[nuxt] instance unavailable"); } } return nuxtAppInstance; } /*! @__NO_SIDE_EFFECTS__ */ // @__NO_SIDE_EFFECTS__ function useRuntimeConfig() { return (/* @__PURE__ */ useNuxtApp()).$config; } function defineGetter(obj, key, val) { Object.defineProperty(obj, key, { get: () => val }); } version.startsWith("3"); function resolveUnref(r) { return typeof r === "function" ? r() : unref(r); } function resolveUnrefHeadInput(ref2, lastKey = "") { if (ref2 instanceof Promise) return ref2; const root = resolveUnref(ref2); if (!ref2 || !root) return root; if (Array.isArray(root)) return root.map((r) => resolveUnrefHeadInput(r, lastKey)); if (typeof root === "object") { return Object.fromEntries( Object.entries(root).map(([k, v]) => { if (k === "titleTemplate" || k.startsWith("on")) return [k, unref(v)]; return [k, resolveUnrefHeadInput(v, k)]; }) ); } return root; } defineHeadPlugin({ hooks: { "entries:resolve": function(ctx) { for (const entry2 of ctx.entries) entry2.resolvedInput = resolveUnrefHeadInput(entry2.input); } } }); const headSymbol = "usehead"; const _global = typeof globalThis !== "undefined" ? globalThis : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {}; const globalKey$1 = "__unhead_injection_handler__"; function setHeadInjectionHandler(handler) { _global[globalKey$1] = handler; } function injectHead() { if (globalKey$1 in _global) { return _global[globalKey$1](); } const head = inject(headSymbol); if (!head && "production" !== "production") console.warn("Unhead is missing Vue context, falling back to shared context. This may have unexpected results."); return head || getActiveHead(); } function useHead(input, options = {}) { const head = options.head || injectHead(); if (head) { if (!head.ssr) return clientUseHead(head, input, options); return head.push(input, options); } } function clientUseHead(head, input, options = {}) { const deactivated = ref(false); const resolvedInput = ref({}); watchEffect(() => { resolvedInput.value = deactivated.value ? {} : resolveUnrefHeadInput(input); }); const entry2 = head.push(resolvedInput.value, options); watch(resolvedInput, (e) => { entry2.patch(e); }); getCurrentInstance(); return entry2; } const coreComposableNames = [ "injectHead" ]; ({ "@unhead/vue": [...coreComposableNames, ...composableNames] }); const unhead_KgADcZ0jPj = /* @__PURE__ */ defineNuxtPlugin({ name: "nuxt:head", enforce: "pre", setup(nuxtApp) { const head = nuxtApp.ssrContext.head; setHeadInjectionHandler( // need a fresh instance of the nuxt app to avoid parallel requests interfering with each other () => (/* @__PURE__ */ useNuxtApp()).vueApp._context.provides.usehead ); nuxtApp.vueApp.use(head); } }); const PageRouteSymbol = Symbol("route"); const useRouter = () => { var _a; return (_a = /* @__PURE__ */ useNuxtApp()) == null ? void 0 : _a.$router; }; const useRoute = () => { if (hasInjectionContext()) { return inject(PageRouteSymbol, (/* @__PURE__ */ useNuxtApp())._route); } return (/* @__PURE__ */ useNuxtApp())._route; }; /*! @__NO_SIDE_EFFECTS__ */ // @__NO_SIDE_EFFECTS__ function defineNuxtRouteMiddleware(middleware) { return middleware; } const isProcessingMiddleware = () => { try { if ((/* @__PURE__ */ useNuxtApp())._processingMiddleware) { return true; } } catch { return true; } return false; }; const navigateTo = (to, options) => { if (!to) { to = "/"; } const toPath = typeof to === "string" ? to : withQuery(to.path || "/", to.query || {}) + (to.hash || ""); if (options == null ? void 0 : options.open) { return Promise.resolve(); } const isExternal = (options == null ? void 0 : options.external) || hasProtocol(toPath, { acceptRelative: true }); if (isExternal) { if (!(options == null ? void 0 : options.external)) { throw new Error("Navigating to an external URL is not allowed by default. Use `navigateTo(url, { external: true })`."); } const protocol = parseURL(toPath).protocol; if (protocol && isScriptProtocol(protocol)) { throw new Error(`Cannot navigate to a URL with '${protocol}' protocol.`); } } const inMiddleware = isProcessingMiddleware(); const router = useRouter(); const nuxtApp = /* @__PURE__ */ useNuxtApp(); { if (nuxtApp.ssrContext) { const fullPath = typeof to === "string" || isExternal ? toPath : router.resolve(to).fullPath || "/"; const location2 = isExternal ? toPath : joinURL((/* @__PURE__ */ useRuntimeConfig()).app.baseURL, fullPath); const redirect = async function(response) { await nuxtApp.callHook("app:redirected"); const encodedLoc = location2.replace(/"/g, "%22"); nuxtApp.ssrContext._renderResponse = { statusCode: sanitizeStatusCode((options == null ? void 0 : options.redirectCode) || 302, 302), body: ``, headers: { location: location2 } }; return response; }; if (!isExternal && inMiddleware) { router.afterEach((final) => final.fullPath === fullPath ? redirect(false) : void 0); return to; } return redirect(!inMiddleware ? void 0 : ( /* abort route navigation */ false )); } } if (isExternal) { nuxtApp._scope.stop(); if (options == null ? void 0 : options.replace) { location.replace(toPath); } else { location.href = toPath; } if (inMiddleware) { if (!nuxtApp.isHydrating) { return false; } return new Promise(() => { }); } return Promise.resolve(); } return (options == null ? void 0 : options.replace) ? router.replace(to) : router.push(to); }; const useError = () => toRef((/* @__PURE__ */ useNuxtApp()).payload, "error"); const showError = (_err) => { const err = createError(_err); try { const nuxtApp = /* @__PURE__ */ useNuxtApp(); const error = useError(); if (false) ; error.value = error.value || err; } catch { throw err; } return err; }; const isNuxtError = (err) => !!(err && typeof err === "object" && "__nuxt_error" in err); const createError = (err) => { const _err = createError$1(err); _err.__nuxt_error = true; return _err; }; function createContext(opts = {}) { let currentInstance; let isSingleton = false; const checkConflict = (instance) => { if (currentInstance && currentInstance !== instance) { throw new Error("Context conflict"); } }; let als; if (opts.asyncContext) { const _AsyncLocalStorage = opts.AsyncLocalStorage || globalThis.AsyncLocalStorage; if (_AsyncLocalStorage) { als = new _AsyncLocalStorage(); } else { console.warn("[unctx] `AsyncLocalStorage` is not provided."); } } const _getCurrentInstance = () => { if (als && currentInstance === void 0) { const instance = als.getStore(); if (instance !== void 0) { return instance; } } return currentInstance; }; return { use: () => { const _instance = _getCurrentInstance(); if (_instance === void 0) { throw new Error("Context is not available"); } return _instance; }, tryUse: () => { return _getCurrentInstance(); }, set: (instance, replace) => { if (!replace) { checkConflict(instance); } currentInstance = instance; isSingleton = true; }, unset: () => { currentInstance = void 0; isSingleton = false; }, call: (instance, callback) => { checkConflict(instance); currentInstance = instance; try { return als ? als.run(instance, callback) : callback(); } finally { if (!isSingleton) { currentInstance = void 0; } } }, async callAsync(instance, callback) { currentInstance = instance; const onRestore = () => { currentInstance = instance; }; const onLeave = () => currentInstance === instance ? onRestore : void 0; asyncHandlers.add(onLeave); try { const r = als ? als.run(instance, callback) : callback(); if (!isSingleton) { currentInstance = void 0; } return await r; } finally { asyncHandlers.delete(onLeave); } } }; } function createNamespace(defaultOpts = {}) { const contexts = {}; return { get(key, opts = {}) { if (!contexts[key]) { contexts[key] = createContext({ ...defaultOpts, ...opts }); } contexts[key]; return contexts[key]; } }; } const _globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof global !== "undefined" ? global : {}; const globalKey = "__unctx__"; _globalThis[globalKey] || (_globalThis[globalKey] = createNamespace()); const asyncHandlersKey = "__unctx_async_handlers__"; const asyncHandlers = _globalThis[asyncHandlersKey] || (_globalThis[asyncHandlersKey] = /* @__PURE__ */ new Set()); const manifest_45route_45rule = /* @__PURE__ */ defineNuxtRouteMiddleware(async (to) => { { return; } }); const globalMiddleware = [ manifest_45route_45rule ]; function getRouteFromPath(fullPath) { if (typeof fullPath === "object") { fullPath = stringifyParsedURL({ pathname: fullPath.path || "", search: stringifyQuery(fullPath.query || {}), hash: fullPath.hash || "" }); } const url = parseURL(fullPath.toString()); return { path: url.pathname, fullPath, query: parseQuery(url.search), hash: url.hash, // stub properties for compat with vue-router params: {}, name: void 0, matched: [], redirectedFrom: void 0, meta: {}, href: fullPath }; } const router_CaKIoANnI2 = /* @__PURE__ */ defineNuxtPlugin({ name: "nuxt:router", enforce: "pre", setup(nuxtApp) { const initialURL = nuxtApp.ssrContext.url; const routes = []; const hooks = { "navigate:before": [], "resolve:before": [], "navigate:after": [], error: [] }; const registerHook = (hook, guard) => { hooks[hook].push(guard); return () => hooks[hook].splice(hooks[hook].indexOf(guard), 1); }; (/* @__PURE__ */ useRuntimeConfig()).app.baseURL; const route = reactive(getRouteFromPath(initialURL)); async function handleNavigation(url, replace) { try { const to = getRouteFromPath(url); for (const middleware of hooks["navigate:before"]) { const result = await middleware(to, route); if (result === false || result instanceof Error) { return; } if (typeof result === "string" && result.length) { return handleNavigation(result, true); } } for (const handler of hooks["resolve:before"]) { await handler(to, route); } Object.assign(route, to); if (false) ; for (const middleware of hooks["navigate:after"]) { await middleware(to, route); } } catch (err) { for (const handler of hooks.error) { await handler(err); } } } const router = { currentRoute: route, isReady: () => Promise.resolve(), // These options provide a similar API to vue-router but have no effect options: {}, install: () => Promise.resolve(), // Navigation push: (url) => handleNavigation(url), replace: (url) => handleNavigation(url), back: () => window.history.go(-1), go: (delta) => window.history.go(delta), forward: () => window.history.go(1), // Guards beforeResolve: (guard) => registerHook("resolve:before", guard), beforeEach: (guard) => registerHook("navigate:before", guard), afterEach: (guard) => registerHook("navigate:after", guard), onError: (handler) => registerHook("error", handler), // Routes resolve: getRouteFromPath, addRoute: (parentName, route2) => { routes.push(route2); }, getRoutes: () => routes, hasRoute: (name) => routes.some((route2) => route2.name === name), removeRoute: (name) => { const index = routes.findIndex((route2) => route2.name === name); if (index !== -1) { routes.splice(index, 1); } } }; nuxtApp.vueApp.component("RouterLink", { functional: true, props: { to: String, custom: Boolean, replace: Boolean, // Not implemented activeClass: String, exactActiveClass: String, ariaCurrentValue: String }, setup: (props, { slots }) => { const navigate = () => handleNavigation(props.to, props.replace); return () => { var _a; const route2 = router.resolve(props.to); return props.custom ? (_a = slots.default) == null ? void 0 : _a.call(slots, { href: props.to, navigate, route: route2 }) : h("a", { href: props.to, onClick: (e) => { e.preventDefault(); return navigate(); } }, slots); }; } }); nuxtApp._route = route; nuxtApp._middleware = nuxtApp._middleware || { global: [], named: {} }; const initialLayout = nuxtApp.payload.state._layout; nuxtApp.hooks.hookOnce("app:created", async () => { router.beforeEach(async (to, from) => { var _a; to.meta = reactive(to.meta || {}); if (nuxtApp.isHydrating && initialLayout && !isReadonly(to.meta.layout)) { to.meta.layout = initialLayout; } nuxtApp._processingMiddleware = true; if (!((_a = nuxtApp.ssrContext) == null ? void 0 : _a.islandContext)) { const middlewareEntries = /* @__PURE__ */ new Set([...globalMiddleware, ...nuxtApp._middleware.global]); for (const middleware of middlewareEntries) { const result = await nuxtApp.runWithContext(() => middleware(to, from)); { if (result === false || result instanceof Error) { const error = result || createError$1({ statusCode: 404, statusMessage: `Page Not Found: ${initialURL}` }); delete nuxtApp._processingMiddleware; return nuxtApp.runWithContext(() => showError(error)); } } if (result === true) { continue; } if (result || result === false) { return result; } } } }); router.afterEach(() => { delete nuxtApp._processingMiddleware; }); await router.replace(initialURL); if (!isEqual(route.fullPath, initialURL)) { await nuxtApp.runWithContext(() => navigateTo(route.fullPath)); } }); return { provide: { route, router } }; } }); function definePayloadReducer(name, reduce) { { (/* @__PURE__ */ useNuxtApp()).ssrContext._payloadReducers[name] = reduce; } } const reducers = { NuxtError: (data) => isNuxtError(data) && data.toJSON(), EmptyShallowRef: (data) => isRef(data) && isShallow(data) && !data.value && (typeof data.value === "bigint" ? "0n" : JSON.stringify(data.value) || "_"), EmptyRef: (data) => isRef(data) && !data.value && (typeof data.value === "bigint" ? "0n" : JSON.stringify(data.value) || "_"), ShallowRef: (data) => isRef(data) && isShallow(data) && data.value, ShallowReactive: (data) => isReactive(data) && isShallow(data) && toRaw(data), Ref: (data) => isRef(data) && data.value, Reactive: (data) => isReactive(data) && toRaw(data) }; const revive_payload_server_eJ33V7gbc6 = /* @__PURE__ */ defineNuxtPlugin({ name: "nuxt:revive-payload:server", setup() { for (const reducer in reducers) { definePayloadReducer(reducer, reducers[reducer]); } } }); const components_plugin_KR1HBZs4kY = /* @__PURE__ */ defineNuxtPlugin({ name: "nuxt:global-components" }); const element_plus_teleports_plugin_h4Dmekbj62 = /* @__PURE__ */ defineNuxtPlugin((nuxtApp) => { nuxtApp.hook("app:rendered", (ctx) => { var _a; if ((_a = ctx.ssrContext) == null ? void 0 : _a.teleports) { ctx.ssrContext.teleports = renderTeleports(ctx.ssrContext.teleports); } }); }); function renderTeleports(teleports) { const body = Object.entries(teleports).reduce((all, [key, value]) => { if (key.startsWith("#el-popper-container-") || [].includes(key)) { return `${all}
${value}
`; } return all; }, teleports.body || ""); return { ...teleports, body }; } const composeEventHandlers = (theirsHandler, oursHandler, { checkForDefaultPrevented = true } = {}) => { const handleEvent = (event) => { const shouldPrevent = theirsHandler == null ? void 0 : theirsHandler(event); if (checkForDefaultPrevented === false || !shouldPrevent) { return oursHandler == null ? void 0 : oursHandler(event); } }; return handleEvent; }; const isBoolean = (val) => typeof val === "boolean"; const isNumber = (val) => typeof val === "number"; const isStringNumber = (val) => { if (!isString(val)) { return false; } return !Number.isNaN(Number(val)); }; function addUnit(value, defaultUnit = "px") { if (!value) return ""; if (isNumber(value) || isStringNumber(value)) { return `${value}${defaultUnit}`; } else if (isString(value)) { return value; } } const epPropKey = "__epPropKey"; const definePropType = (val) => val; const isEpProp = (val) => isObject(val) && !!val[epPropKey]; const buildProp = (prop, key) => { if (!isObject(prop) || isEpProp(prop)) return prop; const { values, required, default: defaultValue, type, validator } = prop; const _validator = values || validator ? (val) => { let valid = false; let allowedValues = []; if (values) { allowedValues = Array.from(values); if (hasOwn(prop, "default")) { allowedValues.push(defaultValue); } valid || (valid = allowedValues.includes(val)); } if (validator) valid || (valid = validator(val)); if (!valid && allowedValues.length > 0) { const allowValuesText = [...new Set(allowedValues)].map((value) => JSON.stringify(value)).join(", "); warn(`Invalid prop: validation failed${key ? ` for prop "${key}"` : ""}. Expected one of [${allowValuesText}], got value ${JSON.stringify(val)}.`); } return valid; } : void 0; const epProp = { type, required: !!required, validator: _validator, [epPropKey]: true }; if (hasOwn(prop, "default")) epProp.default = defaultValue; return epProp; }; const buildProps = (props) => fromPairs(Object.entries(props).map(([key, option]) => [ key, buildProp(option, key) ])); const iconPropType = definePropType([ String, Object, Function ]); const withInstall = (main, extra) => { main.install = (app) => { for (const comp of [main, ...Object.values(extra != null ? extra : {})]) { app.component(comp.name, comp); } }; if (extra) { for (const [key, comp] of Object.entries(extra)) { main[key] = comp; } } return main; }; const withInstallDirective = (directive, name) => { directive.install = (app) => { app.directive(name, directive); }; return directive; }; const EVENT_CODE = { tab: "Tab", enter: "Enter", space: "Space", left: "ArrowLeft", up: "ArrowUp", right: "ArrowRight", down: "ArrowDown", esc: "Escape", delete: "Delete", backspace: "Backspace", numpadEnter: "NumpadEnter", pageUp: "PageUp", pageDown: "PageDown", home: "Home", end: "End" }; const defaultNamespace = "el"; const statePrefix = "is-"; const _bem = (namespace, block, blockSuffix, element, modifier) => { let cls = `${namespace}-${block}`; if (blockSuffix) { cls += `-${blockSuffix}`; } if (element) { cls += `__${element}`; } if (modifier) { cls += `--${modifier}`; } return cls; }; const namespaceContextKey = Symbol("namespaceContextKey"); const useGetDerivedNamespace = (namespaceOverrides) => { const derivedNamespace = namespaceOverrides || (getCurrentInstance() ? inject(namespaceContextKey, ref(defaultNamespace)) : ref(defaultNamespace)); const namespace = computed(() => { return unref(derivedNamespace) || defaultNamespace; }); return namespace; }; const useNamespace = (block, namespaceOverrides) => { const namespace = useGetDerivedNamespace(namespaceOverrides); const b = (blockSuffix = "") => _bem(namespace.value, block, blockSuffix, "", ""); const e = (element) => element ? _bem(namespace.value, block, "", element, "") : ""; const m = (modifier) => modifier ? _bem(namespace.value, block, "", "", modifier) : ""; const be = (blockSuffix, element) => blockSuffix && element ? _bem(namespace.value, block, blockSuffix, element, "") : ""; const em = (element, modifier) => element && modifier ? _bem(namespace.value, block, "", element, modifier) : ""; const bm = (blockSuffix, modifier) => blockSuffix && modifier ? _bem(namespace.value, block, blockSuffix, "", modifier) : ""; const bem = (blockSuffix, element, modifier) => blockSuffix && element && modifier ? _bem(namespace.value, block, blockSuffix, element, modifier) : ""; const is = (name, ...args) => { const state = args.length >= 1 ? args[0] : true; return name && state ? `${statePrefix}${name}` : ""; }; const cssVar = (object) => { const styles = {}; for (const key in object) { if (object[key]) { styles[`--${namespace.value}-${key}`] = object[key]; } } return styles; }; const cssVarBlock = (object) => { const styles = {}; for (const key in object) { if (object[key]) { styles[`--${namespace.value}-${block}-${key}`] = object[key]; } } return styles; }; const cssVarName = (name) => `--${namespace.value}-${name}`; const cssVarBlockName = (name) => `--${namespace.value}-${block}-${name}`; return { namespace, b, e, m, be, em, bm, bem, is, cssVar, cssVarName, cssVarBlock, cssVarBlockName }; }; const _prop = buildProp({ type: definePropType(Boolean), default: null }); const _event = buildProp({ type: definePropType(Function) }); const createModelToggleComposable = (name) => { const updateEventKey = `update:${name}`; const updateEventKeyRaw2 = `onUpdate:${name}`; const useModelToggleEmits2 = [updateEventKey]; const useModelToggleProps2 = { [name]: _prop, [updateEventKeyRaw2]: _event }; const useModelToggle2 = ({ indicator, toggleReason, shouldHideWhenRouteChanges, shouldProceed, onShow, onHide }) => { const instance = getCurrentInstance(); const { emit } = instance; const props = instance.props; const hasUpdateHandler = computed(() => isFunction(props[updateEventKeyRaw2])); const isModelBindingAbsent = computed(() => props[name] === null); const doShow = (event) => { if (indicator.value === true) { return; } indicator.value = true; if (toggleReason) { toggleReason.value = event; } if (isFunction(onShow)) { onShow(event); } }; const doHide = (event) => { if (indicator.value === false) { return; } indicator.value = false; if (toggleReason) { toggleReason.value = event; } if (isFunction(onHide)) { onHide(event); } }; const show = (event) => { if (props.disabled === true || isFunction(shouldProceed) && !shouldProceed()) return; const shouldEmit = hasUpdateHandler.value && isClient; if (shouldEmit) { emit(updateEventKey, true); } if (isModelBindingAbsent.value || !shouldEmit) { doShow(event); } }; const hide = (event) => { if (props.disabled === true || !isClient) return; const shouldEmit = hasUpdateHandler.value && isClient; if (shouldEmit) { emit(updateEventKey, false); } if (isModelBindingAbsent.value || !shouldEmit) { doHide(event); } }; const onChange = (val) => { if (!isBoolean(val)) return; if (props.disabled && val) { if (hasUpdateHandler.value) { emit(updateEventKey, false); } } else if (indicator.value !== val) { if (val) { doShow(); } else { doHide(); } } }; const toggle = () => { if (indicator.value) { hide(); } else { show(); } }; watch(() => props[name], onChange); if (shouldHideWhenRouteChanges && instance.appContext.config.globalProperties.$route !== void 0) { watch(() => ({ ...instance.proxy.$route }), () => { if (shouldHideWhenRouteChanges.value && indicator.value) { hide(); } }); } return { hide, show, toggle, hasUpdateHandler }; }; return { useModelToggle: useModelToggle2, useModelToggleProps: useModelToggleProps2, useModelToggleEmits: useModelToggleEmits2 }; }; const usePopper = (referenceElementRef, popperElementRef, opts = {}) => { const stateUpdater = { name: "updateState", enabled: true, phase: "write", fn: ({ state }) => { const derivedState = deriveState(state); Object.assign(states.value, derivedState); }, requires: ["computeStyles"] }; const options = computed(() => { const { onFirstUpdate, placement, strategy, modifiers } = unref(opts); return { onFirstUpdate, placement: placement || "bottom", strategy: strategy || "absolute", modifiers: [ ...modifiers || [], stateUpdater, { name: "applyStyles", enabled: false } ] }; }); const instanceRef = shallowRef(); const states = ref({ styles: { popper: { position: unref(options).strategy, left: "0", top: "0" }, arrow: { position: "absolute" } }, attributes: {} }); const destroy = () => { if (!instanceRef.value) return; instanceRef.value.destroy(); instanceRef.value = void 0; }; watch(options, (newOptions) => { const instance = unref(instanceRef); if (instance) { instance.setOptions(newOptions); } }, { deep: true }); watch([referenceElementRef, popperElementRef], ([referenceElement, popperElement]) => { destroy(); if (!referenceElement || !popperElement) return; instanceRef.value = createPopper(referenceElement, popperElement, unref(options)); }); return { state: computed(() => { var _a; return { ...((_a = unref(instanceRef)) == null ? void 0 : _a.state) || {} }; }), styles: computed(() => unref(states).styles), attributes: computed(() => unref(states).attributes), update: () => { var _a; return (_a = unref(instanceRef)) == null ? void 0 : _a.update(); }, forceUpdate: () => { var _a; return (_a = unref(instanceRef)) == null ? void 0 : _a.forceUpdate(); }, instanceRef: computed(() => unref(instanceRef)) }; }; function deriveState(state) { const elements = Object.keys(state.elements); const styles = fromPairs(elements.map((element) => [element, state.styles[element] || {}])); const attributes = fromPairs(elements.map((element) => [element, state.attributes[element]])); return { styles, attributes }; } function useTimeout() { let timeoutHandle; const registerTimeout = (fn, delay) => { cancelTimeout(); timeoutHandle = window.setTimeout(fn, delay); }; const cancelTimeout = () => window.clearTimeout(timeoutHandle); tryOnScopeDispose(() => cancelTimeout()); return { registerTimeout, cancelTimeout }; } const defaultIdInjection = { prefix: Math.floor(Math.random() * 1e4), current: 0 }; const ID_INJECTION_KEY = Symbol("elIdInjection"); const useIdInjection = () => { return getCurrentInstance() ? inject(ID_INJECTION_KEY, defaultIdInjection) : defaultIdInjection; }; const useId = (deterministicId) => { const idInjection = useIdInjection(); const namespace = useGetDerivedNamespace(); const idRef = computed(() => unref(deterministicId) || `${namespace.value}-id-${idInjection.prefix}-${idInjection.current++}`); return idRef; }; const usePopperContainerId = () => { const namespace = useGetDerivedNamespace(); const idInjection = useIdInjection(); const id = computed(() => { return `${namespace.value}-popper-container-${idInjection.prefix}`; }); const selector = computed(() => `#${id.value}`); return { id, selector }; }; const usePopperContainer = () => { const { id, selector } = usePopperContainerId(); return { id, selector }; }; const useDelayedToggleProps = buildProps({ showAfter: { type: Number, default: 0 }, hideAfter: { type: Number, default: 200 }, autoClose: { type: Number, default: 0 } }); const useDelayedToggle = ({ showAfter, hideAfter, autoClose, open, close }) => { const { registerTimeout } = useTimeout(); const { registerTimeout: registerTimeoutForAutoClose, cancelTimeout: cancelTimeoutForAutoClose } = useTimeout(); const onOpen = (event) => { registerTimeout(() => { open(event); const _autoClose = unref(autoClose); if (isNumber(_autoClose) && _autoClose > 0) { registerTimeoutForAutoClose(() => { close(event); }, _autoClose); } }, unref(showAfter)); }; const onClose = (event) => { cancelTimeoutForAutoClose(); registerTimeout(() => { close(event); }, unref(hideAfter)); }; return { onOpen, onClose }; }; const FORWARD_REF_INJECTION_KEY = Symbol("elForwardRef"); const useForwardRef = (forwardRef) => { const setForwardRef = (el) => { forwardRef.value = el; }; provide(FORWARD_REF_INJECTION_KEY, { setForwardRef }); }; const useForwardRefDirective = (setForwardRef) => { return { mounted(el) { setForwardRef(el); }, updated(el) { setForwardRef(el); }, unmounted() { setForwardRef(null); } }; }; const initial = { current: 0 }; const zIndex = ref(0); const defaultInitialZIndex = 2e3; const ZINDEX_INJECTION_KEY = Symbol("elZIndexContextKey"); const zIndexContextKey = Symbol("zIndexContextKey"); const useZIndex = (zIndexOverrides) => { const increasingInjection = getCurrentInstance() ? inject(ZINDEX_INJECTION_KEY, initial) : initial; const zIndexInjection = zIndexOverrides || (getCurrentInstance() ? inject(zIndexContextKey, void 0) : void 0); const initialZIndex = computed(() => { const zIndexFromInjection = unref(zIndexInjection); return isNumber(zIndexFromInjection) ? zIndexFromInjection : defaultInitialZIndex; }); const currentZIndex = computed(() => initialZIndex.value + zIndex.value); const nextZIndex = () => { increasingInjection.current++; zIndex.value = increasingInjection.current; return currentZIndex.value; }; if (!isClient && !inject(ZINDEX_INJECTION_KEY)) ; return { initialZIndex, currentZIndex, nextZIndex }; }; const ariaProps = buildProps({ ariaLabel: String, ariaOrientation: { type: String, values: ["horizontal", "vertical", "undefined"] }, ariaControls: String }); const useAriaProps = (arias) => { return pick(ariaProps, arias); }; var _export_sfc$1 = (sfc, props) => { const target = sfc.__vccOpts || sfc; for (const [key, val] of props) { target[key] = val; } return target; }; const formItemContextKey = Symbol("formItemContextKey"); const POPPER_INJECTION_KEY = Symbol("popper"); const POPPER_CONTENT_INJECTION_KEY = Symbol("popperContent"); const roleTypes = [ "dialog", "grid", "group", "listbox", "menu", "navigation", "tooltip", "tree" ]; const popperProps = buildProps({ role: { type: String, values: roleTypes, default: "tooltip" } }); const __default__$7 = defineComponent({ name: "ElPopper", inheritAttrs: false }); const _sfc_main$f = /* @__PURE__ */ defineComponent({ ...__default__$7, props: popperProps, setup(__props, { expose }) { const props = __props; const triggerRef = ref(); const popperInstanceRef = ref(); const contentRef = ref(); const referenceRef = ref(); const role = computed(() => props.role); const popperProvides = { triggerRef, popperInstanceRef, contentRef, referenceRef, role }; expose(popperProvides); provide(POPPER_INJECTION_KEY, popperProvides); return (_ctx, _cache) => { return renderSlot(_ctx.$slots, "default"); }; } }); var Popper = /* @__PURE__ */ _export_sfc$1(_sfc_main$f, [["__file", "popper.vue"]]); const popperArrowProps = buildProps({ arrowOffset: { type: Number, default: 5 } }); const __default__$6 = defineComponent({ name: "ElPopperArrow", inheritAttrs: false }); const _sfc_main$e = /* @__PURE__ */ defineComponent({ ...__default__$6, props: popperArrowProps, setup(__props, { expose }) { const props = __props; const ns = useNamespace("popper"); const { arrowOffset, arrowRef, arrowStyle } = inject(POPPER_CONTENT_INJECTION_KEY, void 0); watch(() => props.arrowOffset, (val) => { arrowOffset.value = val; }); expose({ arrowRef }); return (_ctx, _cache) => { return openBlock(), createElementBlock("span", { ref_key: "arrowRef", ref: arrowRef, class: normalizeClass(unref(ns).e("arrow")), style: normalizeStyle(unref(arrowStyle)), "data-popper-arrow": "" }, null, 6); }; } }); var ElPopperArrow = /* @__PURE__ */ _export_sfc$1(_sfc_main$e, [["__file", "arrow.vue"]]); const NAME = "ElOnlyChild"; const OnlyChild = defineComponent({ name: NAME, setup(_, { slots, attrs }) { var _a; const forwardRefInjection = inject(FORWARD_REF_INJECTION_KEY); const forwardRefDirective = useForwardRefDirective((_a = forwardRefInjection == null ? void 0 : forwardRefInjection.setForwardRef) != null ? _a : NOOP); return () => { var _a2; const defaultSlot = (_a2 = slots.default) == null ? void 0 : _a2.call(slots, attrs); if (!defaultSlot) return null; if (defaultSlot.length > 1) { return null; } const firstLegitNode = findFirstLegitChild(defaultSlot); if (!firstLegitNode) { return null; } return withDirectives(cloneVNode(firstLegitNode, attrs), [[forwardRefDirective]]); }; } }); function findFirstLegitChild(node) { if (!node) return null; const children = node; for (const child of children) { if (isObject(child)) { switch (child.type) { case Comment: continue; case Text: case "svg": return wrapTextContent(child); case Fragment: return findFirstLegitChild(child.children); default: return child; } } return wrapTextContent(child); } return null; } function wrapTextContent(s) { const ns = useNamespace("only-child"); return createVNode("span", { "class": ns.e("content") }, [s]); } const popperTriggerProps = buildProps({ virtualRef: { type: definePropType(Object) }, virtualTriggering: Boolean, onMouseenter: { type: definePropType(Function) }, onMouseleave: { type: definePropType(Function) }, onClick: { type: definePropType(Function) }, onKeydown: { type: definePropType(Function) }, onFocus: { type: definePropType(Function) }, onBlur: { type: definePropType(Function) }, onContextmenu: { type: definePropType(Function) }, id: String, open: Boolean }); const __default__$5 = defineComponent({ name: "ElPopperTrigger", inheritAttrs: false }); const _sfc_main$d = /* @__PURE__ */ defineComponent({ ...__default__$5, props: popperTriggerProps, setup(__props, { expose }) { const props = __props; const { role, triggerRef } = inject(POPPER_INJECTION_KEY, void 0); useForwardRef(triggerRef); const ariaControls = computed(() => { return ariaHaspopup.value ? props.id : void 0; }); const ariaDescribedby = computed(() => { if (role && role.value === "tooltip") { return props.open && props.id ? props.id : void 0; } return void 0; }); const ariaHaspopup = computed(() => { if (role && role.value !== "tooltip") { return role.value; } return void 0; }); const ariaExpanded = computed(() => { return ariaHaspopup.value ? `${props.open}` : void 0; }); expose({ triggerRef }); return (_ctx, _cache) => { return !_ctx.virtualTriggering ? (openBlock(), createBlock(unref(OnlyChild), mergeProps({ key: 0 }, _ctx.$attrs, { "aria-controls": unref(ariaControls), "aria-describedby": unref(ariaDescribedby), "aria-expanded": unref(ariaExpanded), "aria-haspopup": unref(ariaHaspopup) }), { default: withCtx(() => [ renderSlot(_ctx.$slots, "default") ]), _: 3 }, 16, ["aria-controls", "aria-describedby", "aria-expanded", "aria-haspopup"])) : createCommentVNode("v-if", true); }; } }); var ElPopperTrigger = /* @__PURE__ */ _export_sfc$1(_sfc_main$d, [["__file", "trigger.vue"]]); const FOCUSOUT_PREVENTED = "focus-trap.focusout-prevented"; const FOCUSOUT_PREVENTED_OPTS = { cancelable: true, bubbles: false }; const ON_TRAP_FOCUS_EVT = "focusAfterTrapped"; const ON_RELEASE_FOCUS_EVT = "focusAfterReleased"; const FOCUS_TRAP_INJECTION_KEY = Symbol("elFocusTrap"); const focusReason = ref(); const lastUserFocusTimestamp = ref(0); const lastAutomatedFocusTimestamp = ref(0); const obtainAllFocusableElements = (element) => { const nodes = []; const walker = document.createTreeWalker(element, NodeFilter.SHOW_ELEMENT, { acceptNode: (node) => { const isHiddenInput = node.tagName === "INPUT" && node.type === "hidden"; if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP; return node.tabIndex >= 0 || node === document.activeElement ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP; } }); while (walker.nextNode()) nodes.push(walker.currentNode); return nodes; }; const getVisibleElement = (elements, container) => { for (const element of elements) { if (!isHidden(element, container)) return element; } }; const isHidden = (element, container) => { if (getComputedStyle(element).visibility === "hidden") return true; while (element) { if (container && element === container) return false; if (getComputedStyle(element).display === "none") return true; element = element.parentElement; } return false; }; const getEdges = (container) => { const focusable = obtainAllFocusableElements(container); const first = getVisibleElement(focusable, container); const last = getVisibleElement(focusable.reverse(), container); return [first, last]; }; const isSelectable = (element) => { return element instanceof HTMLInputElement && "select" in element; }; const tryFocus = (element, shouldSelect) => { if (element && element.focus) { const prevFocusedElement = document.activeElement; element.focus({ preventScroll: true }); lastAutomatedFocusTimestamp.value = window.performance.now(); if (element !== prevFocusedElement && isSelectable(element) && shouldSelect) { element.select(); } } }; const useFocusReason = () => { return { focusReason, lastUserFocusTimestamp, lastAutomatedFocusTimestamp }; }; const createFocusOutPreventedEvent = (detail) => { return new CustomEvent(FOCUSOUT_PREVENTED, { ...FOCUSOUT_PREVENTED_OPTS, detail }); }; const _sfc_main$c = defineComponent({ name: "ElFocusTrap", inheritAttrs: false, props: { loop: Boolean, trapped: Boolean, focusTrapEl: Object, focusStartEl: { type: [Object, String], default: "first" } }, emits: [ ON_TRAP_FOCUS_EVT, ON_RELEASE_FOCUS_EVT, "focusin", "focusout", "focusout-prevented", "release-requested" ], setup(props, { emit }) { const forwardRef = ref(); let lastFocusAfterTrapped; const { focusReason: focusReason2 } = useFocusReason(); const onKeydown = (e) => { if (!props.loop && !props.trapped) return; const { key, altKey, ctrlKey, metaKey, currentTarget, shiftKey } = e; const { loop } = props; const isTabbing = key === EVENT_CODE.tab && !altKey && !ctrlKey && !metaKey; const currentFocusingEl = document.activeElement; if (isTabbing && currentFocusingEl) { const container = currentTarget; const [first, last] = getEdges(container); const isTabbable = first && last; if (!isTabbable) { if (currentFocusingEl === container) { const focusoutPreventedEvent = createFocusOutPreventedEvent({ focusReason: focusReason2.value }); emit("focusout-prevented", focusoutPreventedEvent); if (!focusoutPreventedEvent.defaultPrevented) { e.preventDefault(); } } } else { if (!shiftKey && currentFocusingEl === last) { const focusoutPreventedEvent = createFocusOutPreventedEvent({ focusReason: focusReason2.value }); emit("focusout-prevented", focusoutPreventedEvent); if (!focusoutPreventedEvent.defaultPrevented) { e.preventDefault(); if (loop) tryFocus(first, true); } } else if (shiftKey && [first, container].includes(currentFocusingEl)) { const focusoutPreventedEvent = createFocusOutPreventedEvent({ focusReason: focusReason2.value }); emit("focusout-prevented", focusoutPreventedEvent); if (!focusoutPreventedEvent.defaultPrevented) { e.preventDefault(); if (loop) tryFocus(last, true); } } } } }; provide(FOCUS_TRAP_INJECTION_KEY, { focusTrapRef: forwardRef, onKeydown }); watch(() => props.focusTrapEl, (focusTrapEl) => { if (focusTrapEl) { forwardRef.value = focusTrapEl; } }, { immediate: true }); watch([forwardRef], ([forwardRef2], [oldForwardRef]) => { if (forwardRef2) { forwardRef2.addEventListener("keydown", onKeydown); forwardRef2.addEventListener("focusin", onFocusIn); forwardRef2.addEventListener("focusout", onFocusOut); } if (oldForwardRef) { oldForwardRef.removeEventListener("keydown", onKeydown); oldForwardRef.removeEventListener("focusin", onFocusIn); oldForwardRef.removeEventListener("focusout", onFocusOut); } }); const onFocusIn = (e) => { const trapContainer = unref(forwardRef); if (!trapContainer) return; const target = e.target; const relatedTarget = e.relatedTarget; const isFocusedInTrap = target && trapContainer.contains(target); if (!props.trapped) { relatedTarget && trapContainer.contains(relatedTarget); } if (isFocusedInTrap) emit("focusin", e); if (props.trapped) { if (isFocusedInTrap) { lastFocusAfterTrapped = target; } else { tryFocus(lastFocusAfterTrapped, true); } } }; const onFocusOut = (e) => { const trapContainer = unref(forwardRef); if (!trapContainer) return; if (props.trapped) { const relatedTarget = e.relatedTarget; if (!isNil(relatedTarget) && !trapContainer.contains(relatedTarget)) { setTimeout(() => { if (props.trapped) { const focusoutPreventedEvent = createFocusOutPreventedEvent({ focusReason: focusReason2.value }); emit("focusout-prevented", focusoutPreventedEvent); if (!focusoutPreventedEvent.defaultPrevented) { tryFocus(lastFocusAfterTrapped, true); } } }, 0); } } else { const target = e.target; const isFocusedInTrap = target && trapContainer.contains(target); if (!isFocusedInTrap) emit("focusout", e); } }; return { onKeydown }; } }); function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) { return renderSlot(_ctx.$slots, "default", { handleKeydown: _ctx.onKeydown }); } var ElFocusTrap = /* @__PURE__ */ _export_sfc$1(_sfc_main$c, [["render", _sfc_render$2], ["__file", "focus-trap.vue"]]); const POSITIONING_STRATEGIES = ["fixed", "absolute"]; const popperCoreConfigProps = buildProps({ boundariesPadding: { type: Number, default: 0 }, fallbackPlacements: { type: definePropType(Array), default: void 0 }, gpuAcceleration: { type: Boolean, default: true }, offset: { type: Number, default: 12 }, placement: { type: String, values: placements, default: "bottom" }, popperOptions: { type: definePropType(Object), default: () => ({}) }, strategy: { type: String, values: POSITIONING_STRATEGIES, default: "absolute" } }); const popperContentProps = buildProps({ ...popperCoreConfigProps, id: String, style: { type: definePropType([String, Array, Object]) }, className: { type: definePropType([String, Array, Object]) }, effect: { type: definePropType(String), default: "dark" }, visible: Boolean, enterable: { type: Boolean, default: true }, pure: Boolean, focusOnShow: { type: Boolean, default: false }, trapping: { type: Boolean, default: false }, popperClass: { type: definePropType([String, Array, Object]) }, popperStyle: { type: definePropType([String, Array, Object]) }, referenceEl: { type: definePropType(Object) }, triggerTargetEl: { type: definePropType(Object) }, stopPopperMouseEvent: { type: Boolean, default: true }, virtualTriggering: Boolean, zIndex: Number, ...useAriaProps(["ariaLabel"]) }); const popperContentEmits = { mouseenter: (evt) => evt instanceof MouseEvent, mouseleave: (evt) => evt instanceof MouseEvent, focus: () => true, blur: () => true, close: () => true }; const buildPopperOptions = (props, modifiers = []) => { const { placement, strategy, popperOptions } = props; const options = { placement, strategy, ...popperOptions, modifiers: [...genModifiers(props), ...modifiers] }; deriveExtraModifiers(options, popperOptions == null ? void 0 : popperOptions.modifiers); return options; }; const unwrapMeasurableEl = ($el) => { if (!isClient) return; return unrefElement($el); }; function genModifiers(options) { const { offset, gpuAcceleration, fallbackPlacements } = options; return [ { name: "offset", options: { offset: [0, offset != null ? offset : 12] } }, { name: "preventOverflow", options: { padding: { top: 2, bottom: 2, left: 5, right: 5 } } }, { name: "flip", options: { padding: 5, fallbackPlacements } }, { name: "computeStyles", options: { gpuAcceleration } } ]; } function deriveExtraModifiers(options, modifiers) { if (modifiers) { options.modifiers = [...options.modifiers, ...modifiers != null ? modifiers : []]; } } const DEFAULT_ARROW_OFFSET = 0; const usePopperContent = (props) => { const { popperInstanceRef, contentRef, triggerRef, role } = inject(POPPER_INJECTION_KEY, void 0); const arrowRef = ref(); const arrowOffset = ref(); const eventListenerModifier = computed(() => { return { name: "eventListeners", enabled: !!props.visible }; }); const arrowModifier = computed(() => { var _a; const arrowEl = unref(arrowRef); const offset = (_a = unref(arrowOffset)) != null ? _a : DEFAULT_ARROW_OFFSET; return { name: "arrow", enabled: !isUndefined(arrowEl), options: { element: arrowEl, padding: offset } }; }); const options = computed(() => { return { onFirstUpdate: () => { update(); }, ...buildPopperOptions(props, [ unref(arrowModifier), unref(eventListenerModifier) ]) }; }); const computedReference = computed(() => unwrapMeasurableEl(props.referenceEl) || unref(triggerRef)); const { attributes, state, styles, update, forceUpdate, instanceRef } = usePopper(computedReference, contentRef, options); watch(instanceRef, (instance) => popperInstanceRef.value = instance); return { attributes, arrowRef, contentRef, instanceRef, state, styles, role, forceUpdate, update }; }; const usePopperContentDOM = (props, { attributes, styles, role }) => { const { nextZIndex } = useZIndex(); const ns = useNamespace("popper"); const contentAttrs = computed(() => unref(attributes).popper); const contentZIndex = ref(isNumber(props.zIndex) ? props.zIndex : nextZIndex()); const contentClass = computed(() => [ ns.b(), ns.is("pure", props.pure), ns.is(props.effect), props.popperClass ]); const contentStyle = computed(() => { return [ { zIndex: unref(contentZIndex) }, unref(styles).popper, props.popperStyle || {} ]; }); const ariaModal = computed(() => role.value === "dialog" ? "false" : void 0); const arrowStyle = computed(() => unref(styles).arrow || {}); const updateZIndex = () => { contentZIndex.value = isNumber(props.zIndex) ? props.zIndex : nextZIndex(); }; return { ariaModal, arrowStyle, contentAttrs, contentClass, contentStyle, contentZIndex, updateZIndex }; }; const usePopperContentFocusTrap = (props, emit) => { const trapped = ref(false); const focusStartRef = ref(); const onFocusAfterTrapped = () => { emit("focus"); }; const onFocusAfterReleased = (event) => { var _a; if (((_a = event.detail) == null ? void 0 : _a.focusReason) !== "pointer") { focusStartRef.value = "first"; emit("blur"); } }; const onFocusInTrap = (event) => { if (props.visible && !trapped.value) { if (event.target) { focusStartRef.value = event.target; } trapped.value = true; } }; const onFocusoutPrevented = (event) => { if (!props.trapping) { if (event.detail.focusReason === "pointer") { event.preventDefault(); } trapped.value = false; } }; const onReleaseRequested = () => { trapped.value = false; emit("close"); }; return { focusStartRef, trapped, onFocusAfterReleased, onFocusAfterTrapped, onFocusInTrap, onFocusoutPrevented, onReleaseRequested }; }; const __default__$4 = defineComponent({ name: "ElPopperContent" }); const _sfc_main$b = /* @__PURE__ */ defineComponent({ ...__default__$4, props: popperContentProps, emits: popperContentEmits, setup(__props, { expose, emit }) { const props = __props; const { focusStartRef, trapped, onFocusAfterReleased, onFocusAfterTrapped, onFocusInTrap, onFocusoutPrevented, onReleaseRequested } = usePopperContentFocusTrap(props, emit); const { attributes, arrowRef, contentRef, styles, instanceRef, role, update } = usePopperContent(props); const { ariaModal, arrowStyle, contentAttrs, contentClass, contentStyle, updateZIndex } = usePopperContentDOM(props, { styles, attributes, role }); const formItemContext = inject(formItemContextKey, void 0); const arrowOffset = ref(); provide(POPPER_CONTENT_INJECTION_KEY, { arrowStyle, arrowRef, arrowOffset }); if (formItemContext) { provide(formItemContextKey, { ...formItemContext, addInputId: NOOP, removeInputId: NOOP }); } const updatePopper = (shouldUpdateZIndex = true) => { update(); shouldUpdateZIndex && updateZIndex(); }; expose({ popperContentRef: contentRef, popperInstanceRef: instanceRef, updatePopper, contentStyle }); return (_ctx, _cache) => { return openBlock(), createElementBlock("div", mergeProps({ ref_key: "contentRef", ref: contentRef }, unref(contentAttrs), { style: unref(contentStyle), class: unref(contentClass), tabindex: "-1", onMouseenter: _cache[0] || (_cache[0] = (e) => _ctx.$emit("mouseenter", e)), onMouseleave: _cache[1] || (_cache[1] = (e) => _ctx.$emit("mouseleave", e)) }), [ createVNode(unref(ElFocusTrap), { trapped: unref(trapped), "trap-on-focus-in": true, "focus-trap-el": unref(contentRef), "focus-start-el": unref(focusStartRef), onFocusAfterTrapped: unref(onFocusAfterTrapped), onFocusAfterReleased: unref(onFocusAfterReleased), onFocusin: unref(onFocusInTrap), onFocusoutPrevented: unref(onFocusoutPrevented), onReleaseRequested: unref(onReleaseRequested) }, { default: withCtx(() => [ renderSlot(_ctx.$slots, "default") ]), _: 3 }, 8, ["trapped", "focus-trap-el", "focus-start-el", "onFocusAfterTrapped", "onFocusAfterReleased", "onFocusin", "onFocusoutPrevented", "onReleaseRequested"]) ], 16); }; } }); var ElPopperContent = /* @__PURE__ */ _export_sfc$1(_sfc_main$b, [["__file", "content.vue"]]); const ElPopper = withInstall(Popper); const TOOLTIP_INJECTION_KEY = Symbol("elTooltip"); const useTooltipContentProps = buildProps({ ...useDelayedToggleProps, ...popperContentProps, appendTo: { type: definePropType([String, Object]) }, content: { type: String, default: "" }, rawContent: Boolean, persistent: Boolean, visible: { type: definePropType(Boolean), default: null }, transition: String, teleported: { type: Boolean, default: true }, disabled: Boolean, ...useAriaProps(["ariaLabel"]) }); const useTooltipTriggerProps = buildProps({ ...popperTriggerProps, disabled: Boolean, trigger: { type: definePropType([String, Array]), default: "hover" }, triggerKeys: { type: definePropType(Array), default: () => [EVENT_CODE.enter, EVENT_CODE.space] } }); const { useModelToggleProps: useTooltipModelToggleProps, useModelToggleEmits: useTooltipModelToggleEmits, useModelToggle: useTooltipModelToggle } = createModelToggleComposable("visible"); const useTooltipProps = buildProps({ ...popperProps, ...useTooltipModelToggleProps, ...useTooltipContentProps, ...useTooltipTriggerProps, ...popperArrowProps, showArrow: { type: Boolean, default: true } }); const tooltipEmits = [ ...useTooltipModelToggleEmits, "before-show", "before-hide", "show", "hide", "open", "close" ]; const isTriggerType = (trigger, type) => { if (isArray(trigger)) { return trigger.includes(type); } return trigger === type; }; const whenTrigger = (trigger, type, handler) => { return (e) => { isTriggerType(unref(trigger), type) && handler(e); }; }; const __default__$3 = defineComponent({ name: "ElTooltipTrigger" }); const _sfc_main$a = /* @__PURE__ */ defineComponent({ ...__default__$3, props: useTooltipTriggerProps, setup(__props, { expose }) { const props = __props; const ns = useNamespace("tooltip"); const { controlled, id, open, onOpen, onClose, onToggle } = inject(TOOLTIP_INJECTION_KEY, void 0); const triggerRef = ref(null); const stopWhenControlledOrDisabled = () => { if (unref(controlled) || props.disabled) { return true; } }; const trigger = toRef(props, "trigger"); const onMouseenter = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "hover", onOpen)); const onMouseleave = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "hover", onClose)); const onClick = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "click", (e) => { if (e.button === 0) { onToggle(e); } })); const onFocus = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "focus", onOpen)); const onBlur = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "focus", onClose)); const onContextMenu = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "contextmenu", (e) => { e.preventDefault(); onToggle(e); })); const onKeydown = composeEventHandlers(stopWhenControlledOrDisabled, (e) => { const { code } = e; if (props.triggerKeys.includes(code)) { e.preventDefault(); onToggle(e); } }); expose({ triggerRef }); return (_ctx, _cache) => { return openBlock(), createBlock(unref(ElPopperTrigger), { id: unref(id), "virtual-ref": _ctx.virtualRef, open: unref(open), "virtual-triggering": _ctx.virtualTriggering, class: normalizeClass(unref(ns).e("trigger")), onBlur: unref(onBlur), onClick: unref(onClick), onContextmenu: unref(onContextMenu), onFocus: unref(onFocus), onMouseenter: unref(onMouseenter), onMouseleave: unref(onMouseleave), onKeydown: unref(onKeydown) }, { default: withCtx(() => [ renderSlot(_ctx.$slots, "default") ]), _: 3 }, 8, ["id", "virtual-ref", "open", "virtual-triggering", "class", "onBlur", "onClick", "onContextmenu", "onFocus", "onMouseenter", "onMouseleave", "onKeydown"]); }; } }); var ElTooltipTrigger = /* @__PURE__ */ _export_sfc$1(_sfc_main$a, [["__file", "trigger.vue"]]); const __default__$2 = defineComponent({ name: "ElTooltipContent", inheritAttrs: false }); const _sfc_main$9 = /* @__PURE__ */ defineComponent({ ...__default__$2, props: useTooltipContentProps, setup(__props, { expose }) { const props = __props; const { selector } = usePopperContainerId(); const ns = useNamespace("tooltip"); const contentRef = ref(null); const destroyed = ref(false); const { controlled, id, open, trigger, onClose, onOpen, onShow, onHide, onBeforeShow, onBeforeHide } = inject(TOOLTIP_INJECTION_KEY, void 0); const transitionClass = computed(() => { return props.transition || `${ns.namespace.value}-fade-in-linear`; }); const persistentRef = computed(() => { return props.persistent; }); const shouldRender = computed(() => { return unref(persistentRef) ? true : unref(open); }); const shouldShow = computed(() => { return props.disabled ? false : unref(open); }); const appendTo = computed(() => { return props.appendTo || selector.value; }); const contentStyle = computed(() => { var _a; return (_a = props.style) != null ? _a : {}; }); const ariaHidden = computed(() => !unref(open)); const onTransitionLeave = () => { onHide(); }; const stopWhenControlled = () => { if (unref(controlled)) return true; }; const onContentEnter = composeEventHandlers(stopWhenControlled, () => { if (props.enterable && unref(trigger) === "hover") { onOpen(); } }); const onContentLeave = composeEventHandlers(stopWhenControlled, () => { if (unref(trigger) === "hover") { onClose(); } }); const onBeforeEnter = () => { var _a, _b; (_b = (_a = contentRef.value) == null ? void 0 : _a.updatePopper) == null ? void 0 : _b.call(_a); onBeforeShow == null ? void 0 : onBeforeShow(); }; const onBeforeLeave = () => { onBeforeHide == null ? void 0 : onBeforeHide(); }; const onAfterShow = () => { onShow(); stopHandle = onClickOutside(computed(() => { var _a; return (_a = contentRef.value) == null ? void 0 : _a.popperContentRef; }), () => { if (unref(controlled)) return; const $trigger = unref(trigger); if ($trigger !== "hover") { onClose(); } }); }; const onBlur = () => { if (!props.virtualTriggering) { onClose(); } }; let stopHandle; watch(() => unref(open), (val) => { if (!val) { stopHandle == null ? void 0 : stopHandle(); } }, { flush: "post" }); watch(() => props.content, () => { var _a, _b; (_b = (_a = contentRef.value) == null ? void 0 : _a.updatePopper) == null ? void 0 : _b.call(_a); }); expose({ contentRef }); return (_ctx, _cache) => { return openBlock(), createBlock(Teleport, { disabled: !_ctx.teleported, to: unref(appendTo) }, [ createVNode(Transition, { name: unref(transitionClass), onAfterLeave: onTransitionLeave, onBeforeEnter, onAfterEnter: onAfterShow, onBeforeLeave }, { default: withCtx(() => [ unref(shouldRender) ? withDirectives((openBlock(), createBlock(unref(ElPopperContent), mergeProps({ key: 0, id: unref(id), ref_key: "contentRef", ref: contentRef }, _ctx.$attrs, { "aria-label": _ctx.ariaLabel, "aria-hidden": unref(ariaHidden), "boundaries-padding": _ctx.boundariesPadding, "fallback-placements": _ctx.fallbackPlacements, "gpu-acceleration": _ctx.gpuAcceleration, offset: _ctx.offset, placement: _ctx.placement, "popper-options": _ctx.popperOptions, strategy: _ctx.strategy, effect: _ctx.effect, enterable: _ctx.enterable, pure: _ctx.pure, "popper-class": _ctx.popperClass, "popper-style": [_ctx.popperStyle, unref(contentStyle)], "reference-el": _ctx.referenceEl, "trigger-target-el": _ctx.triggerTargetEl, visible: unref(shouldShow), "z-index": _ctx.zIndex, onMouseenter: unref(onContentEnter), onMouseleave: unref(onContentLeave), onBlur, onClose: unref(onClose) }), { default: withCtx(() => [ !destroyed.value ? renderSlot(_ctx.$slots, "default", { key: 0 }) : createCommentVNode("v-if", true) ]), _: 3 }, 16, ["id", "aria-label", "aria-hidden", "boundaries-padding", "fallback-placements", "gpu-acceleration", "offset", "placement", "popper-options", "strategy", "effect", "enterable", "pure", "popper-class", "popper-style", "reference-el", "trigger-target-el", "visible", "z-index", "onMouseenter", "onMouseleave", "onClose"])), [ [vShow, unref(shouldShow)] ]) : createCommentVNode("v-if", true) ]), _: 3 }, 8, ["name"]) ], 8, ["disabled", "to"]); }; } }); var ElTooltipContent = /* @__PURE__ */ _export_sfc$1(_sfc_main$9, [["__file", "content.vue"]]); const _hoisted_1 = ["innerHTML"]; const _hoisted_2 = { key: 1 }; const __default__$1 = defineComponent({ name: "ElTooltip" }); const _sfc_main$8 = /* @__PURE__ */ defineComponent({ ...__default__$1, props: useTooltipProps, emits: tooltipEmits, setup(__props, { expose, emit }) { const props = __props; usePopperContainer(); const id = useId(); const popperRef = ref(); const contentRef = ref(); const updatePopper = () => { var _a; const popperComponent = unref(popperRef); if (popperComponent) { (_a = popperComponent.popperInstanceRef) == null ? void 0 : _a.update(); } }; const open = ref(false); const toggleReason = ref(); const { show, hide, hasUpdateHandler } = useTooltipModelToggle({ indicator: open, toggleReason }); const { onOpen, onClose } = useDelayedToggle({ showAfter: toRef(props, "showAfter"), hideAfter: toRef(props, "hideAfter"), autoClose: toRef(props, "autoClose"), open: show, close: hide }); const controlled = computed(() => isBoolean(props.visible) && !hasUpdateHandler.value); provide(TOOLTIP_INJECTION_KEY, { controlled, id, open: readonly(open), trigger: toRef(props, "trigger"), onOpen: (event) => { onOpen(event); }, onClose: (event) => { onClose(event); }, onToggle: (event) => { if (unref(open)) { onClose(event); } else { onOpen(event); } }, onShow: () => { emit("show", toggleReason.value); }, onHide: () => { emit("hide", toggleReason.value); }, onBeforeShow: () => { emit("before-show", toggleReason.value); }, onBeforeHide: () => { emit("before-hide", toggleReason.value); }, updatePopper }); watch(() => props.disabled, (disabled) => { if (disabled && open.value) { open.value = false; } }); const isFocusInsideContent = (event) => { var _a, _b; const popperContent = (_b = (_a = contentRef.value) == null ? void 0 : _a.contentRef) == null ? void 0 : _b.popperContentRef; const activeElement = (event == null ? void 0 : event.relatedTarget) || document.activeElement; return popperContent && popperContent.contains(activeElement); }; expose({ popperRef, contentRef, isFocusInsideContent, updatePopper, onOpen, onClose, hide }); return (_ctx, _cache) => { return openBlock(), createBlock(unref(ElPopper), { ref_key: "popperRef", ref: popperRef, role: _ctx.role }, { default: withCtx(() => [ createVNode(ElTooltipTrigger, { disabled: _ctx.disabled, trigger: _ctx.trigger, "trigger-keys": _ctx.triggerKeys, "virtual-ref": _ctx.virtualRef, "virtual-triggering": _ctx.virtualTriggering }, { default: withCtx(() => [ _ctx.$slots.default ? renderSlot(_ctx.$slots, "default", { key: 0 }) : createCommentVNode("v-if", true) ]), _: 3 }, 8, ["disabled", "trigger", "trigger-keys", "virtual-ref", "virtual-triggering"]), createVNode(ElTooltipContent, { ref_key: "contentRef", ref: contentRef, "aria-label": _ctx.ariaLabel, "boundaries-padding": _ctx.boundariesPadding, content: _ctx.content, disabled: _ctx.disabled, effect: _ctx.effect, enterable: _ctx.enterable, "fallback-placements": _ctx.fallbackPlacements, "hide-after": _ctx.hideAfter, "gpu-acceleration": _ctx.gpuAcceleration, offset: _ctx.offset, persistent: _ctx.persistent, "popper-class": _ctx.popperClass, "popper-style": _ctx.popperStyle, placement: _ctx.placement, "popper-options": _ctx.popperOptions, pure: _ctx.pure, "raw-content": _ctx.rawContent, "reference-el": _ctx.referenceEl, "trigger-target-el": _ctx.triggerTargetEl, "show-after": _ctx.showAfter, strategy: _ctx.strategy, teleported: _ctx.teleported, transition: _ctx.transition, "virtual-triggering": _ctx.virtualTriggering, "z-index": _ctx.zIndex, "append-to": _ctx.appendTo }, { default: withCtx(() => [ renderSlot(_ctx.$slots, "content", {}, () => [ _ctx.rawContent ? (openBlock(), createElementBlock("span", { key: 0, innerHTML: _ctx.content }, null, 8, _hoisted_1)) : (openBlock(), createElementBlock("span", _hoisted_2, toDisplayString(_ctx.content), 1)) ]), _ctx.showArrow ? (openBlock(), createBlock(unref(ElPopperArrow), { key: 0, "arrow-offset": _ctx.arrowOffset }, null, 8, ["arrow-offset"])) : createCommentVNode("v-if", true) ]), _: 3 }, 8, ["aria-label", "boundaries-padding", "content", "disabled", "effect", "enterable", "fallback-placements", "hide-after", "gpu-acceleration", "offset", "persistent", "popper-class", "popper-style", "placement", "popper-options", "pure", "raw-content", "reference-el", "trigger-target-el", "show-after", "strategy", "teleported", "transition", "virtual-triggering", "z-index", "append-to"]) ]), _: 3 }, 8, ["role"]); }; } }); var Tooltip = /* @__PURE__ */ _export_sfc$1(_sfc_main$8, [["__file", "tooltip.vue"]]); const ElTooltip = withInstall(Tooltip); const _sfc_main$7 = /* @__PURE__ */ defineComponent({ inheritAttrs: false }); function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) { return renderSlot(_ctx.$slots, "default"); } var Collection = /* @__PURE__ */ _export_sfc$1(_sfc_main$7, [["render", _sfc_render$1], ["__file", "collection.vue"]]); const _sfc_main$6 = /* @__PURE__ */ defineComponent({ name: "ElCollectionItem", inheritAttrs: false }); function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { return renderSlot(_ctx.$slots, "default"); } var CollectionItem = /* @__PURE__ */ _export_sfc$1(_sfc_main$6, [["render", _sfc_render], ["__file", "collection-item.vue"]]); const COLLECTION_ITEM_SIGN = `data-el-collection-item`; const createCollectionWithScope = (name) => { const COLLECTION_NAME = `El${name}Collection`; const COLLECTION_ITEM_NAME = `${COLLECTION_NAME}Item`; const COLLECTION_INJECTION_KEY = Symbol(COLLECTION_NAME); const COLLECTION_ITEM_INJECTION_KEY = Symbol(COLLECTION_ITEM_NAME); const ElCollection = { ...Collection, name: COLLECTION_NAME, setup() { const collectionRef = ref(null); const itemMap = /* @__PURE__ */ new Map(); const getItems = () => { const collectionEl = unref(collectionRef); if (!collectionEl) return []; const orderedNodes = Array.from(collectionEl.querySelectorAll(`[${COLLECTION_ITEM_SIGN}]`)); const items = [...itemMap.values()]; return items.sort((a, b) => orderedNodes.indexOf(a.ref) - orderedNodes.indexOf(b.ref)); }; provide(COLLECTION_INJECTION_KEY, { itemMap, getItems, collectionRef }); } }; const ElCollectionItem = { ...CollectionItem, name: COLLECTION_ITEM_NAME, setup(_, { attrs }) { const collectionItemRef = ref(null); inject(COLLECTION_INJECTION_KEY, void 0); provide(COLLECTION_ITEM_INJECTION_KEY, { collectionItemRef }); } }; return { COLLECTION_INJECTION_KEY, COLLECTION_ITEM_INJECTION_KEY, ElCollection, ElCollectionItem }; }; const dropdownProps = buildProps({ trigger: useTooltipTriggerProps.trigger, effect: { ...useTooltipContentProps.effect, default: "light" }, type: { type: definePropType(String) }, placement: { type: definePropType(String), default: "bottom" }, popperOptions: { type: definePropType(Object), default: () => ({}) }, id: String, size: { type: String, default: "" }, splitButton: Boolean, hideOnClick: { type: Boolean, default: true }, loop: { type: Boolean, default: true }, showTimeout: { type: Number, default: 150 }, hideTimeout: { type: Number, default: 150 }, tabindex: { type: definePropType([Number, String]), default: 0 }, maxHeight: { type: definePropType([Number, String]), default: "" }, popperClass: { type: String, default: "" }, disabled: Boolean, role: { type: String, default: "menu" }, buttonProps: { type: definePropType(Object) }, teleported: useTooltipContentProps.teleported }); buildProps({ command: { type: [Object, String, Number], default: () => ({}) }, disabled: Boolean, divided: Boolean, textValue: String, icon: { type: iconPropType } }); buildProps({ onKeydown: { type: definePropType(Function) } }); createCollectionWithScope("Dropdown"); const popoverProps = buildProps({ trigger: useTooltipTriggerProps.trigger, placement: dropdownProps.placement, disabled: useTooltipTriggerProps.disabled, visible: useTooltipContentProps.visible, transition: useTooltipContentProps.transition, popperOptions: dropdownProps.popperOptions, tabindex: dropdownProps.tabindex, content: useTooltipContentProps.content, popperStyle: useTooltipContentProps.popperStyle, popperClass: useTooltipContentProps.popperClass, enterable: { ...useTooltipContentProps.enterable, default: true }, effect: { ...useTooltipContentProps.effect, default: "light" }, teleported: useTooltipContentProps.teleported, title: String, width: { type: [String, Number], default: 150 }, offset: { type: Number, default: void 0 }, showAfter: { type: Number, default: 0 }, hideAfter: { type: Number, default: 200 }, autoClose: { type: Number, default: 0 }, showArrow: { type: Boolean, default: true }, persistent: { type: Boolean, default: true }, "onUpdate:visible": { type: Function } }); const popoverEmits = { "update:visible": (value) => isBoolean(value), "before-enter": () => true, "before-leave": () => true, "after-enter": () => true, "after-leave": () => true }; const updateEventKeyRaw = `onUpdate:visible`; const __default__ = defineComponent({ name: "ElPopover" }); const _sfc_main$5 = /* @__PURE__ */ defineComponent({ ...__default__, props: popoverProps, emits: popoverEmits, setup(__props, { expose, emit }) { const props = __props; const onUpdateVisible = computed(() => { return props[updateEventKeyRaw]; }); const ns = useNamespace("popover"); const tooltipRef = ref(); const popperRef = computed(() => { var _a; return (_a = unref(tooltipRef)) == null ? void 0 : _a.popperRef; }); const style = computed(() => { return [ { width: addUnit(props.width) }, props.popperStyle ]; }); const kls = computed(() => { return [ns.b(), props.popperClass, { [ns.m("plain")]: !!props.content }]; }); const gpuAcceleration = computed(() => { return props.transition === `${ns.namespace.value}-fade-in-linear`; }); const hide = () => { var _a; (_a = tooltipRef.value) == null ? void 0 : _a.hide(); }; const beforeEnter = () => { emit("before-enter"); }; const beforeLeave = () => { emit("before-leave"); }; const afterEnter = () => { emit("after-enter"); }; const afterLeave = () => { emit("update:visible", false); emit("after-leave"); }; expose({ popperRef, hide }); return (_ctx, _cache) => { return openBlock(), createBlock(unref(ElTooltip), mergeProps({ ref_key: "tooltipRef", ref: tooltipRef }, _ctx.$attrs, { trigger: _ctx.trigger, placement: _ctx.placement, disabled: _ctx.disabled, visible: _ctx.visible, transition: _ctx.transition, "popper-options": _ctx.popperOptions, tabindex: _ctx.tabindex, content: _ctx.content, offset: _ctx.offset, "show-after": _ctx.showAfter, "hide-after": _ctx.hideAfter, "auto-close": _ctx.autoClose, "show-arrow": _ctx.showArrow, "aria-label": _ctx.title, effect: _ctx.effect, enterable: _ctx.enterable, "popper-class": unref(kls), "popper-style": unref(style), teleported: _ctx.teleported, persistent: _ctx.persistent, "gpu-acceleration": unref(gpuAcceleration), "onUpdate:visible": unref(onUpdateVisible), onBeforeShow: beforeEnter, onBeforeHide: beforeLeave, onShow: afterEnter, onHide: afterLeave }), { content: withCtx(() => [ _ctx.title ? (openBlock(), createElementBlock("div", { key: 0, class: normalizeClass(unref(ns).e("title")), role: "title" }, toDisplayString(_ctx.title), 3)) : createCommentVNode("v-if", true), renderSlot(_ctx.$slots, "default", {}, () => [ createTextVNode(toDisplayString(_ctx.content), 1) ]) ]), default: withCtx(() => [ _ctx.$slots.reference ? renderSlot(_ctx.$slots, "reference", { key: 0 }) : createCommentVNode("v-if", true) ]), _: 3 }, 16, ["trigger", "placement", "disabled", "visible", "transition", "popper-options", "tabindex", "content", "offset", "show-after", "hide-after", "auto-close", "show-arrow", "aria-label", "effect", "enterable", "popper-class", "popper-style", "teleported", "persistent", "gpu-acceleration", "onUpdate:visible"]); }; } }); var Popover = /* @__PURE__ */ _export_sfc$1(_sfc_main$5, [["__file", "popover.vue"]]); const attachEvents = (el, binding) => { const popperComponent = binding.arg || binding.value; const popover = popperComponent == null ? void 0 : popperComponent.popperRef; if (popover) { popover.triggerRef = el; } }; var PopoverDirective = { mounted(el, binding) { attachEvents(el, binding); }, updated(el, binding) { attachEvents(el, binding); } }; const VPopover = "popover"; const ElPopoverDirective = withInstallDirective(PopoverDirective, VPopover); const ElPopover = withInstall(Popover, { directive: ElPopoverDirective }); const element_plus_injection_plugin_1RNPi6ogby = /* @__PURE__ */ defineNuxtPlugin((nuxtApp) => { nuxtApp.vueApp.provide(ID_INJECTION_KEY, { "prefix": 1024, "current": 0 }).provide(ZINDEX_INJECTION_KEY, { "current": 0 }); }); const plugins = [ unhead_KgADcZ0jPj, router_CaKIoANnI2, revive_payload_server_eJ33V7gbc6, components_plugin_KR1HBZs4kY, element_plus_teleports_plugin_h4Dmekbj62, element_plus_injection_plugin_1RNPi6ogby ]; const removeUndefinedProps = (props) => Object.fromEntries(Object.entries(props).filter(([, value]) => value !== void 0)); const setupForUseMeta = (metaFactory, renderChild) => (props, ctx) => { useHead(() => metaFactory({ ...removeUndefinedProps(props), ...ctx.attrs }, ctx)); return () => { var _a, _b; return renderChild ? (_b = (_a = ctx.slots).default) == null ? void 0 : _b.call(_a) : null; }; }; const globalProps = { accesskey: String, autocapitalize: String, autofocus: { type: Boolean, default: void 0 }, class: [String, Object, Array], contenteditable: { type: Boolean, default: void 0 }, contextmenu: String, dir: String, draggable: { type: Boolean, default: void 0 }, enterkeyhint: String, exportparts: String, hidden: { type: Boolean, default: void 0 }, id: String, inputmode: String, is: String, itemid: String, itemprop: String, itemref: String, itemscope: String, itemtype: String, lang: String, nonce: String, part: String, slot: String, spellcheck: { type: Boolean, default: void 0 }, style: String, tabindex: String, title: String, translate: String }; defineComponent({ name: "NoScript", inheritAttrs: false, props: { ...globalProps, title: String, body: Boolean, renderPriority: [String, Number] }, setup: setupForUseMeta((props, { slots }) => { var _a; const noscript = { ...props }; const textContent = (((_a = slots.default) == null ? void 0 : _a.call(slots)) || []).filter(({ children }) => children).map(({ children }) => children).join(""); if (textContent) { noscript.children = textContent; } return { noscript: [noscript] }; }) }); defineComponent({ // eslint-disable-next-line vue/no-reserved-component-names name: "Link", inheritAttrs: false, props: { ...globalProps, as: String, crossorigin: String, disabled: Boolean, fetchpriority: String, href: String, hreflang: String, imagesizes: String, imagesrcset: String, integrity: String, media: String, prefetch: { type: Boolean, default: void 0 }, referrerpolicy: String, rel: String, sizes: String, title: String, type: String, /** @deprecated **/ methods: String, /** @deprecated **/ target: String, body: Boolean, renderPriority: [String, Number] }, setup: setupForUseMeta((link) => ({ link: [link] })) }); defineComponent({ // eslint-disable-next-line vue/no-reserved-component-names name: "Base", inheritAttrs: false, props: { ...globalProps, href: String, target: String }, setup: setupForUseMeta((base2) => ({ base: base2 })) }); const Title = defineComponent({ // eslint-disable-next-line vue/no-reserved-component-names name: "Title", inheritAttrs: false, setup: setupForUseMeta((_, { slots }) => { var _a, _b, _c; return { title: ((_c = (_b = (_a = slots.default) == null ? void 0 : _a.call(slots)) == null ? void 0 : _b[0]) == null ? void 0 : _c.children) || null }; }) }); const Meta = defineComponent({ // eslint-disable-next-line vue/no-reserved-component-names name: "Meta", inheritAttrs: false, props: { ...globalProps, charset: String, content: String, httpEquiv: String, name: String, body: Boolean, renderPriority: [String, Number] }, setup: setupForUseMeta((props) => { const meta = { ...props }; if (meta.httpEquiv) { meta["http-equiv"] = meta.httpEquiv; delete meta.httpEquiv; } return { meta: [meta] }; }) }); defineComponent({ // eslint-disable-next-line vue/no-reserved-component-names name: "Style", inheritAttrs: false, props: { ...globalProps, type: String, media: String, nonce: String, title: String, /** @deprecated **/ scoped: { type: Boolean, default: void 0 }, body: Boolean, renderPriority: [String, Number] }, setup: setupForUseMeta((props, { slots }) => { var _a, _b, _c; const style = { ...props }; const textContent = (_c = (_b = (_a = slots.default) == null ? void 0 : _a.call(slots)) == null ? void 0 : _b[0]) == null ? void 0 : _c.children; if (textContent) { style.children = textContent; } return { style: [style] }; }) }); const Head = defineComponent({ // eslint-disable-next-line vue/no-reserved-component-names name: "Head", inheritAttrs: false, setup: (_props, ctx) => () => { var _a, _b; return (_b = (_a = ctx.slots).default) == null ? void 0 : _b.call(_a); } }); defineComponent({ // eslint-disable-next-line vue/no-reserved-component-names name: "Html", inheritAttrs: false, props: { ...globalProps, manifest: String, version: String, xmlns: String, renderPriority: [String, Number] }, setup: setupForUseMeta((htmlAttrs) => ({ htmlAttrs }), true) }); defineComponent({ // eslint-disable-next-line vue/no-reserved-component-names name: "Body", inheritAttrs: false, props: { ...globalProps, renderPriority: [String, Number] }, setup: setupForUseMeta((bodyAttrs) => ({ bodyAttrs }), true) }); const __nuxt_component_3 = defineComponent({ name: "ClientOnly", inheritAttrs: false, // eslint-disable-next-line vue/require-prop-types props: ["fallback", "placeholder", "placeholderTag", "fallbackTag"], setup(_, { slots, attrs }) { const mounted = ref(false); return (props) => { var _a; if (mounted.value) { return (_a = slots.default) == null ? void 0 : _a.call(slots); } const slot = slots.fallback || slots.placeholder; if (slot) { return slot(); } const fallbackStr = props.fallback || props.placeholder || ""; const fallbackTag = props.fallbackTag || props.placeholderTag || "span"; return createElementBlock(fallbackTag, attrs, fallbackStr); }; } }); const _imports_0$1 = "" + __buildAssetsURL("plus-sign.4260c2a7.svg"); const _sfc_main$4 = { __name: "RespondAdd", __ssrInlineRender: true, props: { riposteoptions: Array, index: Number }, emits: ["selectEomji"], setup(__props, { emit: __emit }) { const props = __props; const add = ref(null); const top = ref(0); const left = ref(0); const close = () => { selectEomjiPop.value = false; }; let selectEomjiPop = ref(false); const emit = __emit; const selectEomji = (key) => { close(); emit("selectEomji", key, props.index, true); }; const jointriposte = (item) => { return `&#x${item};`; }; return (_ctx, _push, _parent, _attrs) => { const _component_el_popover = ElPopover; _push(ssrRenderComponent(_component_el_popover, mergeProps({ placement: "bottom", width: 470, trigger: "click", visible: unref(selectEomjiPop), "onUpdate:visible": ($event) => isRef(selectEomjiPop) ? selectEomjiPop.value = $event : selectEomjiPop = $event }, _attrs), { reference: withCtx((_, _push2, _parent2, _scopeId) => { if (_push2) { _push2(`
`); } else { return [ createVNode("div", { class: "respond-add flexcenter", ref_key: "add", ref: add }, [ createVNode("img", { class: "respond-add-icon", src: _imports_0$1 }) ], 512) ]; } }), default: withCtx((_, _push2, _parent2, _scopeId) => { if (_push2) { _push2(`
选择你的回应:
`); ssrRenderList(__props.riposteoptions, (item) => { _push2(``); ssrRenderList(item.data, (item2, key) => { _push2(`
${jointriposte(key)}
`); }); _push2(``); }); _push2(`
`); } else { return [ createVNode("div", { class: "respond-list-box", style: { "top": unref(top) + "px", "left": unref(left) + "px" }, onClick: withModifiers(() => { }, ["stop"]) }, [ createVNode("div", { class: "respond-list-title" }, "选择你的回应:"), createVNode("div", { class: "respond-list" }, [ (openBlock(true), createBlock(Fragment, null, renderList(__props.riposteoptions, (item) => { return openBlock(), createBlock(Fragment, { key: item }, [ (openBlock(true), createBlock(Fragment, null, renderList(item.data, (item2, key) => { return openBlock(), createBlock("div", { class: "respond-item flexcenter", key }, [ createVNode("div", { class: "respond-item-key", innerHTML: jointriposte(key), onClick: ($event) => selectEomji(key) }, null, 8, ["innerHTML", "onClick"]) ]); }), 128)) ], 64); }), 128)) ]) ], 12, ["onClick"]) ]; } }), _: 1 }, _parent)); }; } }; const _sfc_setup$4 = _sfc_main$4.setup; _sfc_main$4.setup = (props, ctx) => { const ssrContext = useSSRContext(); (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/RespondAdd.vue"); return _sfc_setup$4 ? _sfc_setup$4(props, ctx) : void 0; }; const __nuxt_component_4 = _sfc_main$4; const _sfc_main$3 = { __name: "RespondPop", __ssrInlineRender: true, props: { respondDetail: Array, respondPopObj: Object }, emits: ["closePopList", "selectEomji"], setup(__props, { emit: __emit }) { ref(false); const jointriposte = (item) => { return `&#x${item};`; }; return (_ctx, _push, _parent, _attrs) => { _push(`
`); if (JSON.stringify(__props.respondDetail) == "{}") { _push(`
- 暂无数据 -
`); } else { _push(`
${ssrInterpolate(__props.respondPopObj.user)}人回应
`); ssrRenderList(__props.respondDetail, (item, index) => { _push(`
${jointriposte(item.item)}
${ssrInterpolate(item.user.length)} 人作此回应
`); ssrRenderList(item.user, (item2, index2) => { _push(`
${ssrInterpolate(item2.nickname || item2.username)}
`); }); _push(`
`); }); _push(`
`); } _push(`
`); }; } }; const _sfc_setup$3 = _sfc_main$3.setup; _sfc_main$3.setup = (props, ctx) => { const ssrContext = useSSRContext(); (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/RespondPop.vue"); return _sfc_setup$3 ? _sfc_setup$3(props, ctx) : void 0; }; const __nuxt_component_5 = _sfc_main$3; const useStateKeyPrefix = "$s"; function useState(...args) { const autoKey = typeof args[args.length - 1] === "string" ? args.pop() : void 0; if (typeof args[0] !== "string") { args.unshift(autoKey); } const [_key, init] = args; if (!_key || typeof _key !== "string") { throw new TypeError("[nuxt] [useState] key must be a string: " + _key); } if (init !== void 0 && typeof init !== "function") { throw new Error("[nuxt] [useState] init must be a function: " + init); } const key = useStateKeyPrefix + _key; const nuxt = /* @__PURE__ */ useNuxtApp(); const state = toRef(nuxt.payload.state, key); if (state.value === void 0 && init) { const initialValue = init(); if (isRef(initialValue)) { nuxt.payload.state[key] = initialValue; return initialValue; } state.value = initialValue; } return state; } const _imports_0 = "" + __buildAssetsURL("logo.6622f82d.png"); const _imports_1 = "data:image/png;base64,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"; const _imports_2 = "data:image/png;base64,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"; const _imports_3 = "" + __buildAssetsURL("add-icon.0b0b5313.svg"); const _imports_4 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAIKADAAQAAAABAAAAIAAAAACshmLzAAAED0lEQVRYCe2Wu09UQRTGdwlYWWMAIzEhWhCJhRgVAbHzAWil1sT/gKcKLAqG159AYimVgIFSeVOglSYmRhPFEEiIlTQ2sP6+y5zr3OUuLFDqJLPnzHce883MmdmbSPzrLXmQDRgaGjqNfyO9Op1OFyFPuvjVZDK5Dja3tbU10dHR8d3h+4qcCDDxdZL3ku3yvhlxgMwS4nFLS8vMfv57Eujr6zuRn5//goQ3vESf0Sch9BW55vBifMrA6pFnPN9Jxk0Q2fCwiJqVwODg4Hk8J+inXMQYyVIk+xDJkDFgtyogkgK+60wrxDVki4sloMkJmifRcZJsoN/LZTvdhIEYGBioI26UQSF9E/1qHIldBLTtBQUFywRp5Z/y8vJuNjc3r6AfuA0PD5dub29PEVhOX4HERUhEjiMvM6vOHEyTbxxlcuUVcXLcUi56KTs6ItxvEQKqdlgGBYfz/cOu3J9AOcj5wGH1HG+tb48QYNI+Zxxra2ub9h2lc64XSFCVidtYNvnY2CTb/hZ9XGPIPDdcMiTgHplLAnFKSfqN86wEV20s4Nvp26Q7bEE+cSTAu+XHIq+oNqSrhQQw3NmBEl/iqpViOoY9KFp8n7LaLuefkC7MjZPo8o00l1NviEjoNQ1aSACGVx322smIaG1tXSSw1QN7WHU3q20D6zGcPF3t7e1LNvYl8boRatU7IroDwbtOgi9mzJTUxZBPAj2Ff7/5aXJW+szGMTLITVyJ2cIdAChy4JoZ42QmCfPJYfIEV3Ld+RdbnE8gLZCz3vU4mbMn/TiD4zCzBdLLHcwl0A+ylYfsItFuoDP3t918dByqCRvHSeKCXUbaXH8JGIgsiwsWpmrHHp45kK5jeCVFwr8divEbdsu9mwDGOTkzQXhF/GASq3LDakfv5Gb0qkv3fHv6+/vtRnlwoN7WL0cxa4bwCPQlI1As2coKczBJAf2WWWNIPnETB2bpwoIBPujyjTTlBD8DyBTp8KqHBPQZhcOSonBISfqNN/0dJCphX8VVsyc7dBEmm3y4Ke9Dg1PIGewecyzyTvwwe6TiYXkNx2kZkdfj/g8s8CCSvPqke+NiatixeYsPd0AAq5hBTEqH6aj/Zgs7TFMOJn/pYsf9yYVFCAhg4ibECr2QLZ06CgnFKody0b9xPA+RkbaLALugT7AGvDbp5SRY1tFEonIY8F7UKVY56L/QG6mjn5mhkRrwjapatk7VWiocUq+4KSkK6KPvl6lzBc+xUhWcfZR+0+TZ4rISUGJIFEJiBLVeY9f0l6rPbf2xBA8KE5Qw1iOje36Wbm1c2x63cnPYk4A58QjVouvqVRm2l4TMAsQfZRZcXExOBCzQVXQjyWuYpAhpf+Gr6Pqnm2U3Jvx7brH/ZbYd+APZxM/2zgvhdQAAAABJRU5ErkJggg=="; const _imports_34 = "" + __buildAssetsURL("tick-no.179037b3.svg"); const _imports_35 = "" + __buildAssetsURL("tick-option.e092d22f.svg"); const _imports_7 = "" + __buildAssetsURL("dot.1026a040.svg"); const _imports_8 = "data:image/png;base64,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"; const _imports_9 = "" + __buildAssetsURL("dot-yellow.4b5e135b.svg"); const _imports_10 = "" + __buildAssetsURL("dot-gray.86cdd7b5.svg"); const _imports_11 = "" + __buildAssetsURL("empty-icon.24a01ae2.svg"); const _imports_12 = "" + __buildAssetsURL("close-icon.86743366.svg"); const _imports_13 = "data:image/png;base64,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"; const _imports_14 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFT0lEQVRIiZ2Wa2wUVRTHf3NntmsL3T6wEFChQkRFigRsQF5iVDSYKGhMjBGNj2jiBxMfTdUExGgiTUkImCgGY0BAjS8CHzRqTIxULcZgQUUwFpZCASnQdtvO7DzuvX7Yzri7szxPMsnMueec//zPueeea/i+z0WKBUwARgMS6B5+LirAhchUYDGwBLi5xPpRYCfQBmwDjp8rmHEepjOBx4BnAOMCf/AUsB5YDfSfF7Q53Rq9t9Q3PQusvUCgUtIFrGhOt27KiwmAKGXdUt/0wdkAFZozQR9d7jGOuifIyMGzgY4HNrbUN71WvBCraUt90yZgWbH+sNvNz5kO9jsHcVS2YK3aquSGimuYm5rJKKu62HVFS31T0JxufT1UFNc0ltIh6bDtzLf8PnTgbIwiEYZgQaqRRdXzMI1YEh8BNheDzgR+zbc6HfSx4cQn9AYl98NZZdJl43l09FKSoixfvXsYo6Cmj+dbDEmH9y4BEKAz28Xmnu0odKRTSs1wHOfl06dPR0ynAnvJa4stPTtKpvT+y+/gyuS46HtXpoP2gT0lwe+uXciCVGMIiud5f9i23RBupMX5gGm3OwY4u/JGlo5ehGUU7r3x5eO4p+521nS9T0/QW7D2Xd9PNI6cRrlIYhgGhmFMBRaG6V2Sb9ye6ShwrrNqIsAu5xir0ut54Z832dD9Mb1+P0lRxnPjC6oDQFZ57B78EwCtNVprgHmCXNtER5tCs985WOB8X92dEeDa7k0Ro/3OId44/DaD0iYpylhUPTcGXBwLmC/INXEkfUEm1ocTyq8A4MN/d8SCAuwd2AfA9MopsbXj3smCb611gwDG5CsH5VDMMSFydSyuWSg/9OU6rTqRiq0N5MUbTvFYAQT5RqL0yXjJIob3Z1hTrbWyyI2lSKqsypijrwKSoow6qyZiW2fV8OKEJ/mlv4OBwAagz8/EfKusyghQKYXW+qggN/u6QqNKcwTVVmGaDju5GX1f3Z2RLgSfU30TC2tnA9DppGOgVyXHRkyVUiildoW5bMs3bKiYXOD4Rc/XAEwecTXLRt8b6Vcffg+ApCgj0AGfn/o2Bjq1YnI+IEqpnWGntwEPhYZzUjP4aWA3UquI1af/fskDYxYzPTWF6akpBDooOChC23ypsapoqJiMVjnQIAhQSrWFTD8DToTGtVYVC6tmFQRoH9jDqvR6/h46xKC0kVrR6/fTkdlHR2YfSVHG02MfjOwN4N7a2zAw0FoTBAFSynat9W/hr/YAG4DlodNtVXNIZ7vpzEblpifo5d3jH8cYhbL55Pbo/ZaqWVxfMQmlFFLKEHSj1rpgtI0gd+hP1FpjGAae9vnk1FcXNEvzGd5SNYu7ahaA1kgpcV0X27Y/cl33ISllbIg/CmyUUiKEwDAMNLBroINv+n5kSNrnBByTGMXdtbdybfnVQG6y+L6P4zhdjuNM832/v5gpzelWWuqbVjqO86plWZimGU4HPOWxxz7AX3YnR93jZOQQwhCkzJFMuuwqbqi4huvKJyKGbwzhxnFdF8dxHl55cN3Wl8Y9hdY6fkdqTreubE49cSaRSKxNJBJYloUQgoSRoHFkA40jG87JNmwPKSWe53W5rvvKa4fe2oqKpkzpM2/5P2vW2bb9sG3bP2azWTzPCzdCeKqUfEJ2nueRzWa3ZLPZaa8eXLtVK43+/xJR+rJ95MgRAEzTxLKs5y3LWmZZ1nTTNDFNM6p3voTNHwRBu+/77/i+/0H4ozof8VygSqmonkIITNOcJYSYZ5rmfCFEo2EYYw3DCAzDOKa13qmUapNSfi+lPCCljMCKAQH+A/fWzoKMpJtKAAAAAElFTkSuQmCC"; const _imports_15 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAEZ0lEQVR4nO2ZUU4bMRCGvUi8gcgNmp6giwCJN8wJmp6g9AQNJ0h6AsIJGk7Q9ARZ3pAAZTkBuUGD4A3B9rMW0kzWXhaSTRPiTxrNLHhizx/biZ1ALTleAGyp8QJgS00hAXZ3d6v39/d7QRBU1QKQJEl/dXX19OzsrK9eIMCc7OzshLzYEabVAsIbFmGH5+fnMY9WnAJQ/MHj4+NPwoVnZWXlGyK0lQWrAFtbWzXcL+w98eXy8rKDF2QE0FpXbm9vrwkr2HtisL6+/jGKogHxkIwA29vbddb8EeG7w+wHFxcXLcIhNgF6CBASjnPCWmqxlmLiuYW9K2TvqhN+xQQIECPAJuGQjACs/wQ3zhXrJ8QvDNQR4z5hAuoQNYsHA4k2AY5JrOMXBupo4b5jAuoQNYsHA4kZAZg6P5g6TbVAsJSbLOUGocAL4AXwAoiaxYPBC+AF8AIkOIEXwAvgBfACuASgfY3/f6czjY+xNifGY/7lRKd3DkeENWyARZzVD8fP6qPofzlapXcVEfd+h657v5kIQCeuuwPn4UmnhVwTVrBRrBcWBp3m9AirSjJAhE2bCIytfAFo+wdXwTJwd7DJTIgJBeS0leWs/sQJAzxQY1CMS2gztt+MrUYoIKdcAehA00GX0Ao5h+S0CAXk9cgLCTOQk7mwMJATkbNHaKNPUR/xAnKa5DQIBbQNcEPEg6GoAE83Lz1CK8wA600sA4sY2B5hBvo5pR+txiCnQ85nQhtXFJURlJwmOQ1CAW1FzeLBUFQAA237SqkP2Dg3rM3wNWvT4OoHsfOu6I8pqo4XuPqhrahZPBgoKsEJXAOjE00nHcINbIjr3X+GPmLcJ2yUKwYX4q3Ql20WXLFx6siycdK+SfsGoYA+RM3iwcDgEpzAJYDh6WezOm1COuzj27SN1AswwDpOq5SInBY+FzMT6KNGWME6eTm8fpO2DULB1AWYV7wAXgAvgBfAC+AF8AI0CAVeAC/AGwQA6zl9nkGADgKMnx0KCTDAbWCjDDjg7HPAiYnnHs4M5qjeJaxgo9wggPibTYC2st/YDLAOy6GvCkA70/50UtFMMbZ30gVtqyq9a6xg42RmckYApo7mRbqEUwEhWmtraz9sR9Y8NPeAd3d3vxiLVlOCseyzl0VqhIwABkTo0HFh1V+CjmNE2C8qgk6L7yaOq7O3wBh+U3yNUGAVQDMAbmEjlb20mIQ20+8bPhdN39MuHpwXJwFmRacDaTOQzzxOi1wRdNpnN5li8eadZ/YdRJbiDQGWC8tBM6ADlW4sG9ikWEXQ0y3+BjMbdptpH6kcAmzqmJ2bj6FIuQXLiIDQvZzib/gY1pN+otgIsFIoIgJFHeM3KLyJaWWntOINpQlgQIS86+wilFq8oVQBDBOIUHrxhtIFMLxBhJkUb5iJAIZXiDCz4g0zE8CACCGbXQvb49HGCT+pNW0/qZXFTAV4xvya9PDwoBGiqgAf802N7yr2Lytl8l8EmCe8ANhS4wXAlpq/sWppbrWv2fQAAAAASUVORK5CYII="; const _imports_16 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAE40lEQVR4nO3ZjVHbSBiH8f9WEKeCiAoiKshSQZwKTq4gpgJMBZgKMBXEVwFSBSgVRK7gTAV7j27ZwQLklWTMx8Ez8xvPxF/xK61XgNE772MAeNd9DADvuqEDSPEdibyXrJL3N0r0yqBPVtIFEr3O6gEcI1fHDLqWyX/4t9AEC3XIoEuZ3s6HD02wUCSDWCP8QX0bWmEmf8rVXrL01hyfEFrjAPVtawaxpjhD6DesIi/8Ao2QS/qK0DHmaK3LAHJJ3xA6RInXWIprhApYbckglkNohUSvu0rSF4QMWtt6520OoQJWr7slviNk0NrWO2977gEk8ksu0V2V/HtXijfGL9SdY4rWDGI5hApY7acUJxijrVzSKXJtL721xBqtGcRyCBWwevpOMFP3FvL7/M4ZxHIIFbB62i6QqX8lDrFTBrEcQgWsfCnqtZaoe3McIzSTP/qbrVA/rkQl//oppviCzc5R//vgDGI5hApY+RaS/kLfDlEikb/C3OwSU6zxWDM9HNgRcg3MIJZDqICVb46f6NsBKj0c4CUyxZupOYRcfgiDMojlECpg5UvkhzBC15aYo+4fjFB3g0TtR/5+lZrL4QCVBmQQyyFUwGr3UlwjdI4pulY/9gyhCRYakEGsfQxgjF8I/cASXbOSrhA6xUwDMojlECpgtXuZ/PYXOkKu7qW4RugUMw3IIJZDqIDV7lk1j+AEC3XPqvn8U8w0IINYDqECVruXqLkFXiJT96Y4Q+gIuQZkEMshVMDKZ+XX8QhtVfL7/hr3qzTsm3yEP6hvQ5+xRu8MYjmEClj5Fmru421NsNDDZmru5yUOEesCme66RKaBGcRyCBWw8s3xE7F+YIn7jVCp+Xu8EvXjKz1shDNkanaASgMziNU2gPo/NEei9nL5I92WVfPLLLSQf24l/z7jWyNsdow5BmcQyyFUwOppy+RP675dItOOGcRyCBWwerqs/DIao2+5/PaXa4cMYu1jACOcYIpdW2KCNXpnEMshVMBqt1JcoL59rBUqNY+slZSouW1utsYRSvTKIJZDqIDV8FJcYYTNbrCQ/0Kr1F4iv+4zPT6MCRbqkUEsh1ABq2GluMIIm51jJn8UuzbCFCe43xFydcwglkOogFX/RrhCitANxsg1vBS5mtcSaxyiUocMYjmEClj1b46fCN3AasCafaREfghfEMrlz4RoBrEcQgWs+mXlj/5mR8j1dKXI1TwTJlgokkEsh1ABq35dwequU8z09GXyu0uokr9M3ppBLIdQAavuJfI/uYVWqI/WGvuoxFeEfmCJ1gxiOYQKWHVvijOEjjHHvsrUPAsukWlLBrEcQgWsupfL/6Ez9Blr7LP69T+hrlJkGRjEcggVsOperrsBlDjEvst19551Bq1tvfM2h1ABq+4t8R2hCRbaXymuEVoh0ZYMYu0ygEzNNfncnWKmLRnEcggVsOpXia947m6QyH8ntGYQa9cBjLDENzxXK4xRYmsGsRxCBayGlck/N9H+WmN5a41oBrGeagCvMoNYmwOoFNlX31oGsXI11+8hSvwv6jKAKc4QKnGENd58BrFGqHR3eVlXye+vv1HizdZlAHWZXvaCpksTLNQzg65lev1D6PN5/qvvE6z8lL/gtbVCop4ZDCnFGIm8l66S/z1DiV4ZvOs+BoB33ccA8K77F/DNI1Ad1eJHAAAAAElFTkSuQmCC"; const _imports_17 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAAECklEQVRoBe1YS2tTQRTOowmND1wYEl26Cc2jWVhXBUvEqlDqMq2KCzdaf4ArcSEIWlB3LkTpqq0IAQVRd2pUbFwY+kif2bRQKDTGhViTJsbE76QzdW7M497k5uaCGbg9Z+bOPef7zpyZnozB0G7tCPzfETC2mr7f73fk8/mbhUJhw+Px3AmFQr+VYGopAQb+DQD7GOiQ3W6/EA6Hc3JJmOVOVHteGfDkwptKpdxYiedra2t5OT5NciapPcfn8zmRNu9gl0c+I/gIJpPJ8WAwKCu4siYJxhtWKfLId0obLzP2E3LAaDTGIM+wMR9IyFoJTQmUSRsCPzg/Px9OJBIRp9P5QyAhK500I1ANPIu6gUg4HI4t9E+zsZokNCEgB3y9JJpOQAn4ekg0lQCdNtiwdNrwDbtlMpkGYrHYBw6WSyLa19e3vbi4WKAxlk5ZqCfZHEqnDMY/sn5RNO0YJfDw8BaPhzksgp+bm5MAoHder/c8jtX15eXlMTaXiwgUIsGbgytcdnBFTakUPI7Qcfg341nnOGAjAP0VHisbm83lcreYvitULyXK5HwKaTS4sLBAqSRpADmEgUk8FMgxHKdXIPOwcRwr8hr6PjzUZrPZbH88Hk/udP/+VZWA1uCJhmoEWgFeNQKtAq8KgVaCb5hAq8E3REAP4OsmoBfwdRHQE3jFBPQGXhEBPYInAlR/1GxdXV0HUa+8x0ReVf5EfwD/+mlM0iqVByjYTmAilQd72QczqG36V1ZWvkkMKOzIKubMZvNt2OVVJUqbwlmA/6ckrgYehF/Cxh6Grwge1WdD4MmWnHLaBOfDzDEJdI1XA4GAhDzA+/HuCZ4OvH8MgpehFwsz9F9A5+CpMDulBnjYrE0AwOjq4wBNFtoQbg0mRRJYlRSAbkI+wA+WEcwtYN/IrioF24rUmsVcd3f3CEA9ZFZXIY8IHibcbvelcteBlPMg1JS0EfzXXgGA7+UfANAN6Nd4H/Li0tKSZCXoHUUec8W0mVEzbQT/tQlgskgggty+jzGRxDDSaYKnU5m0KW7Ycj9GRCD16lVTyOVy2a1WawLGad4mwB/ijrA1iMRd3od8itV6xCLPf0mpdtoIfiRq1VPIYrFQ9DnJKfFLkLmH/nVh7BzA05WhZuDJt+QoFMBwdTd9MEA3BMXW09NjSafTRxHxNEBvYpBuIKhxsk2P/I47BQQAdj9OllF82JvJZI7hfsfGjZRIzcCTXx6xEgwGA0UZQL/jRSWgkm9AMI6BZ52dnaPRaJS+06RVTCGkiKtKlNMA/AXvI7j++ISNHpmenv6qCeISJxUJ2Gy21e3t7Thy3IVnA99NEVjURZ+xuRHk6K8SW/rrUhrhP+1h/SFrI2pHoB2BdgT0EoE/XD0Yrfi3Ps4AAAAASUVORK5CYII="; const _imports_18 = "" + __buildAssetsURL("edit-icon-white.29b27582.svg"); const _imports_19 = "" + __buildAssetsURL("view-icon.da7fef35.svg"); const _imports_20 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAAEk0lEQVRoBd2YW6hVVRSGzXtw8pJkYeU5aZqVIWKgYdDxAkUpYqGJgdhDEliKCYqYGfRi2YV6SBQUxKAbPYRXEMQEfSuULkIXFBMpE6zUvKX1/bLH4W+59t5rudfu7O2Af8855hxzjH/MOddcc+0uXZpcutWRf298TwTnwKk6xqmb6814/gecAG2gqWQSbEU+sL6p2EP2CyOvJC6Au0BTSDssY+a9XNsU7CG5q0wCWoU20NDyMOx81t9FP29taxqaPeR2GtnfqLeAddamZFpBQ8o4WPnsLymxFGFfhfcakj2ktoNIQGf/TUZ0g/WdpX679TVEdQwsLoNIYFmC1VD0i9b/TqK/09UtRu4k9b4pjDaajVZhUIpNpzSNJqrP/ooyLO6m3VfhzTJ2/3vz50SMrfM79X4VGHxgtmeoD6xgW9cuBR4PXgQ++6+iV5J76bwEIuGPqD8G9Ix0B7nlhgojbqZvWAnDS6W2gdrS9vgftOu+o2egkoj00ykG2l6HwA/g+1L5Y6k8QqmJukqUQE/wBBgJgqhIKoE88hrGr2QYcD82B0C3DLZhovfIT8AT08FxTAbbQCxp3vI0Y/eDt4EmIqvMxHA3+AXkjRn2fzL2Dq3AcXALKCfKPpZSyxtQ29Fyg3K098E2tmqU2gnargOq+Jms/hdAZBXlZ7Spsw10BZ0l2sZjwUvAH37x3AM6tuFiFD9NNOtPgkaQWyHxNYjJDfJ+VbnC83l+Pcu/0Z+50tN5P7cR+lvg5Hejt4BUeY7WZBJzUi3r3ziYEHrenPx29BurhZ6NwUUbqJV4ttqggvtb8adj08lvRe+dNc4sDD0JPR/zsw6u0U4n0c/AyW9G75XX7wwGXDBHSmJhXic57e/BXkezk/8YvUdOPx3mU6jpn7VwqCQWdfQWW9E9SW/WiKXyQ9Ad1CTJJOR4SU0erx48iiZ9Qzv59eiFvYMexdlfFkAroTtNUaLriJNfg65bQqEyDW8eZEKB3n3r6LaamXyeJTqVIHwwodeiui9dEDVRmSRPAg+YxxPUdZMsSvS2Dcm1NfMk4I6/iWgFlZ7ASHzWZQvJcUjRCbi/FoK0RqBqZdYV0IzcZ858xqz5mqtKwPe9T1ZFp1kTuBMvfc2Tz5g1/6f6ENpbYC6o9ibV97TewCGZE4gB1crHMfAjVB8a5UQr9QnQuyLGHKY+D3R8gFBPin/abkp21qrrzRtkdNFKk1Ya1wLdXsM2WWrrzQBpD+kbNu4r6oXKRrwFmR0Jz4PQ9eb0i1/YprWpbx9oBy5zUGLcWeo134Hc+ZfmfHWpQ9toFfArRhA4XerrTzkV6G+U6PNyJ+0PAskY4H26mRYi2rdOcj76UnASeEDV9S2tbaRPQRcdFto6yY+UGK9ExgLffk+hFyL6wIhAQdJ11RV4AxgMKkkvOheAX0Gaj0vWvpJ6ITIdL8lgoeuk+RSMyBlJL6uXgf4MDl/JUn4LkRV4STqXrodZ+7YW0XP0OjgDkjG+q8Wxj12ecL4X/RE3KKCuk+x94KdWlpdlptA6SfRduhVMyTTi2o2GMFSHwC7QDq5/+RffN6xPYNWQnAAAAABJRU5ErkJggg=="; const _imports_21 = "" + __buildAssetsURL("collect-icon-colours.6d2ade7f.svg"); const _imports_22 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAADpUlEQVRoBe2ZO2gVQRSGTXxEo4UJYuEjGkHBoCjaKqIWViKIKFgJVkpANGlErGORSkUURBAFGy3FwkZFfKOJDxBBBG0EwfiM78f3x2wye+7c3b25s5uL5MB/d845M3P+M7MzO7u3blyyNCW7U72fqfE9tVa8wlRUtRuRTKFVJ+gBCvynSqiPE6AOpMlsKjwGinkJNIOKpIXaj0C1pH3t12Zg0m1iP0EXp0SpH/Rq5C+CJYm1R+5UUmnSbyq0od8AS43dq3Zg9Y1ctbZv9HsMZLmFplOv18OjD9sakCgP8Lpkr6FrBLSIq8Ek2lciSuIKcLmo/AVsAV7R6NgFu8hbsxjjZMKcBzaJX9jaLQWRbwR225qI7aetnJOu3UaLfCVYDLQbzQCtwCddGA8AJTggSsBmO2HQl9dFe/0OoFtVA2Xjp+mnaDMkRSYwjaj7wRuQRjLNvz7KoKgENhLwZQDiUWKbi0qggUDHU4g/x38S7AYbgNbDMnAQRITd623sQztcnjOgBXqzDAltHEfBCuCT7Rj1HHGJq6xjhm7FIckrgZlE8B1NtB1qRuQvJ/tw/AaW/Gls2iFjkkcCGqG7wBLQGlgVix5XtK13A9tO+iEgf4nkkcAFolgSt7Bpfy8n9TjOAttOM7anXCPZQyewiz4tCe332vuTZCtO2+4rtm1JjeQLmcAs+vsAXCI6FuuMkybtVHDbvUdfl9ZI/pAJnKE/l8Qn9DYFySBK8iFQ+xdgOcgkoRJYSDR7LOjMxGC40niKC0DJTjNcpbQUKgGd+93Rf1YpkVJq2SwhEtDT9i1wE9iZLXxFteZSWw+/I2BO1DJEApvozCX/Dl2vqaHlHh1Gce5EnYdI4LDTsQLEjrtRoCqvmmX36axygx4eIWS16eSy0UOoWuDuk1hl2areRjUI/SCaWl3ngdDiu1MaQ8yAFpN7vyuZV6HZl+svRALNpvPX6Lo/C5EQCWhqXfnoKnmXQyTwFJI6MkRyPSoUdfUtjkq/SuiMfw50Ab0L5CE+ngOz73NUmkAehG2fPp5BdiEbqFA9xBoolLANNpaAHZGi9bEZKHrEbbyxGbAjUrT+X8yAPh79MCPXYvRaUOcbEvpbTP+dDUgPv+4Lid6o8ngp+Ret8t9WmlwFLsf7bjcdxulWrNXyXjcBvVH5PoXXKvle+OrfzJjovo8+7dUqcfESeX0f8oqy0tToj2/fvyOjlZi46J4Xt9jIu58p8JVIU4lldAx95cL+BRfIP0NGsZjIAAAAAElFTkSuQmCC"; const _imports_23 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAACWUlEQVRoBe2Zyy4sURSGm7QBI2dESI4WyTFhxuQ8BPEQLhPEROI2FzPxHNIJOZwnOE9gSjsuESNDA9f/a7WS1a2LiC69S/ZK/uy1V7H3vy5VvatWofBaumSaE/4KF8Kd8JSCBdk/K6yRtj57w+FQmBU6hTdlSlcvhbQF6+1ZO1C/H85MeA/a3WRJ+q7Q52yhqf0iVBYWjVhbohB5yNscc0XYS8ZbDA3kn2xHDewfMY3oj3+n/AMlMyhMCiXB5FEKnOFXoOZ92TxoviIUhVCkQ0RWBbhZWZ1Lr94T3LBmZIR8qLImYp7rDER52pjxWHpIkYefFzJREYzvATcxNWiyL+XeJgGOPFardZ9wG8WBHkf0zOmhqv8dsV4c8CUTcvSNt+dYxIFcS3Sg1emLGWh1Bjj7VH/NEiLNONtk7dNbZ6es947rxwjECMQI1EWAx+i4sCx0110LfXojgls4wAtCScijVDhK8HaTV3kiA2MCJfQjZ15QQps54xzpxgjECHy7CPAYzf0LjX2mY2zG9/6ss1zTEIkv9VmH+731Ywbei1DW179FBmq+9mYdsSasX/M1nQxcu0V/Oj1UteSIXaHTRLbfghPptHFCFbidCsb3D0TpgJuBkW5gqLIhYp7rNERpVV64C7Qy6QaGlAm4rAu+zXqmeSdnIYT2fVnwT6VTzWn60blsZaN7SPvDb0AwodGNrVpCZlyU4j30qUrTOZd8Vlgjbf1GdjjO26Y+4tsy0r6nnEIVuvNEfscIegew0YP9JXBjHwiXgv+d0PRLhb3hQKlw7B9OdA0v8gypmLKP2lSLggAAAABJRU5ErkJggg=="; const _imports_24 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD+ElEQVRIiaWWz2sdVRTHP3NnJkkDmlaCeWlsAgF5LYI2vhjQJqAgFTdqEpVukoWFgii6849wJf5AKOgiXSnYBHfV7hJd1Px4uChm86BNayYakr7Nm5c3M+e6mHffm3mZSaJ+N8Pcc+75nu+5d84ZKwgCToBngUlgCngROAs0gC2gDCwDK8DvxwWyjiG8ClwDJk6SFXAHuA58828J+4GvgbdPSNSJH4D3gb87DSrDeQ7Y+B9kALPAejNWCp0K54CFTqdQoLxjUd5RVPahemBhW3DmlObc4zA2IDw3oHGy0od54EYW4QCwCjyV9N7wLG7+ofirZh0p6clezcx5YaygO00PgHFgp5PwJjBtXkTD0qbiViU77Ty8Niq8VRRUOr9F3/dnoH2GHyTJ4L+RAdyqKJY20/tEZBr4MEk4n3RY96wjycYK8GYRiv35pOteWqJlWXO+76OAEonvLBT4/q59pIr3xuCNIlx5Jt/nu7s2obTIsCxrAhhXxB2khTXPYr+eH2isAL0u7NZguA/6e7P9HtVhbTtWqbVGaw0wqYjbVQtl7+hzuzQcP78tx89XR/N9yzuHYk0p4IXkyr1q/vXvdWOFGx5s7sYqL53LJ+yMpbUeV0AhuVg9yA9ggm9sx8/blXYSWUjGapZ1UBF3/RZyugUQl68WwC9bTWKvmchw/p4EGVprHGAbeNoY+7o19fBwWc0FqQXwyUtpm7lItY450NfdJhMRtNbbio4ZNvRYvjqArWp6/X7zPessR/p0S6GIICKrDvHwnDVOFwvCupf+Ds057dbg0185ZPvi9Tihnytp28UBSZIhIsuKeFK3UCpozvSkN5qSmTNLwpxpf29cdoPTPVAabJczDENEZEUBa8STGogvzTsXokNBf9yMb2UWbldi+ym3vfbuhQjbignDMCSKot+AVadpXyDR3kqDmstV4admP93wstUZ3K+2zxLg8qhQGtSIaKIoMoQLSqlW8/4KWAJMC2K6KLwyIvksOXh5RJguSqqUYRguAV9Ceh4WgNUoioaUUlhW/GmsexaLJxzA0+eF55sDWEQIggDf9x/6vj8OeJ2EAHO+7y84joNt26bLE0rc1Mue4l4VHtVj8tM9mpG++GaXCu1fDKPs4OAA3/fnoyjK/MUAYG9vb8513c9c133CcRyMWqP4KJgyRlFEo9HYr9frH4vIjShqX8IsQoIgGHJd9/Ourq4Zo/Y4Yq3bFyQIgsVGo/ER8MAkYOBk7oaHwGytVrvqOM41x3EmbNtOESdhPuwwDO8EQXDdcZyT/wg3FeK6LmEY4jgOjUZjXCk1adv2lFKqZFnW2abaP7XWayKyHEXRSnd392oQBGZPK5mkwn8AJekF2afMgmEAAAAASUVORK5CYII="; const _imports_25 = "" + __buildAssetsURL("title.98892974.png"); const _imports_26 = "" + __buildAssetsURL("bi-icon.c9939802.png"); const _imports_27 = "" + __buildAssetsURL("arrowsRight.59ee73d7.svg"); const _imports_28 = "" + __buildAssetsURL("menu-icon-gray.d61f02b1.svg"); const _imports_29 = "" + __buildAssetsURL("comment-icon-gray.2c8779f9.svg"); const _imports_30 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAAFFklEQVRoBdWZW2icRRTHdze7MVsviblYRVEbr4iihnjpmnuCxEARtQYFxZc+ircHfUygUkXQPlnQKuibBEEkNRISkxDazUNDQLBREW0pPtikmsqa2N1ks/5OzLecmb0k+/ml+zkw7DlnZs78/zNn5puZDQZ2KI2MjFwVjUZfxf1+8q3ki+STmUzm/a6uri+RPUlBT7xYTsbHx+8Kh8NfA/ZGq8hRP0U40NnZueYY3P6G3DYs1G5ycrKmoqLiqyLgpekL5DcL+SjF7jkBOn+ZfLMF4i90e7RfGxsbKzRDVvPC6k4QeFp3FwwGjywuLtYRUtcgx1VZBJtRV5VtW/ScACBv070TSgf7+/tTra2tS+vr6+/qMuT7LL1k1VMCs7OzEQBHFIo0C/U3R2dtfO/I8gvZ27XuRvaUwPLy8g2CSwFZUnIAAr9qHbI3ad2N7CkBQuQWDYIRPqv1lpaWBLaUslUq2ZXoKQEQ9GoUjLARMlKGLUsAMhW6vhvZMwKDg4Pi60kLxJjWh4aGBPDljg0yq47s9tczAu3t7c8CYo8CcjGdTh9TeqChoeFqdL1GzupyN7InBEZHR2VUD1oAPu/p6fld21gjTVonhE5r3Y3sCYHKysqP6FyPfprweNsGFAqFHrVs31l6yWq45BaqASCDU1NThzA9o8wiHuXEecqyiWoQIMS+yVOnJJNrAsPDw7sA/wG9PWf1+FMkEnndsgUmJiYewnaPsieqq6tnlO5KLJmA7DZtbW1PEA7vMQP2YewCo7qfr2/CRkO8v2LZrkwkEilOr3LQ285uJPeJefJn5E+co7jeEbDnT3RyLSV3k9vJz5PzfUETEHqM0DlBuZHkiAHYPzFGjQL3yixN98kxRWK4lY6PYLi+gD9Z6NUFyjbMjO4v+Hgch3kXZTwej6ZSqfPU2VXMTyll9Dm3sLCwN4TTj2kooyt7dL5cDHwGRx+urq42FQIvoGKx2N/08xJ1/xDdi4S/pvr6+gNBwkPir9S1kKbNF+zrb3V3d89tF5CsH+oXG5CCrpLJ5HXcHw4DXO9kM24IvMhClY/UuYK97VABd+3dnGizx3O6SeR8yIjV3TCtdTKVZLSzidvV0XKAFwCAT2aB/CtEJHSMnaiurm6pubk5u60RYkabxsbGjGG4hApr6H5CSPd4OmcG2O6MGjQwCNrl2ttOy2B5xOrjRA4Bq4KvVGZgrwYEoRnZRo0RJsaNGdANyilv4nxYY2BNzPxvZmB6evpOSNQqAkuszx+3JMC0+WKG+ObEFHgR43xX1rckYDUqp2rEP0A2TrI5BObn5325BgBszACBEZfRzCEgxmKpHASJ9Rri/w6FS258J0UP2zGuKvlGBGwMnNnBRv62o6ND7hGlz0A5WAHYiH8IbYRPXgIDAwO+WwMQMOIfAtmraHZaioyssY1eaoLyGAbgBzU+CBWeAV3RDzKHy3vBcYXCco7L0xlH384MOHXL8svjgRH/gDiugQgBI0SYnqJrYKty7dwj2SaQjX/x7/sZAKOxgHX8+56AXCEBuUeAbqbkysqKcQf37QzwR/llXGsPOcg3f+f6+vqS2pbzGsE70c+6AluYVgN2uVHooUK/teQa7RL9mNZFziFApUa7kta3Ktd1PZZ/qKqqOmz7lBA6bxt9qJ/hKecpeSCzscmV8g2M8nDqu8SOs0B+B2AP8JQjD7s5aeMbIE/lpAbI/Oc/3XJ6cGlYW1u70Nvb69lTpEsYO9/sHwHIu0q4cL20AAAAAElFTkSuQmCC"; const _imports_31 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAQKADAAQAAAABAAAAQAAAAABGUUKwAAAD30lEQVR4AeVa7XXaMBSVDANkBDxB6QRxJmg6QVmANp2gZAOaDBCYoGwQugGZAGUD+F9Q7zPIxxAZy7ZkG0vn5Ejoy/fe954+7HDWgrRbf/8FGPeMySFyIRmf9MOneR3QeB0PufQMkJ+AOAlwlvgqYMEdD6ebswarPwOrs5WaTP7QD5PDPdu/6tvs1bZAAHaTTUcODx6S3aNqS6MhINcP0Z7tcq0csF6IUBBVyerGt8EDdLhO6iASFkg3qVEBEOORGS3+zaxf8V6NCmAOVw4RLhfWCvOZzns2KoBkMjoHdOH38EJb6abGBCCLYgW+NUW+Y7uBad8i/RoTACCjIkA544Mi/U37NiYALDoyBemyXyMCwP0HcP8vLomZzt2IANj+JqYAXferXQCyPi4/zvb1ooLVLgBi/6UoSOqPLVOUGZc3plYBYP17xH6UB0rX3mM9oauvWlebAOT6ONOXsv6R5KYqWd342gQ4un7p4yxugysdgap1/aoTmIzfrcdk+cikb0aft4z6ytXOPeDfejwCSvqrkLgT6xMgpwIQeSx6VeJeiSZUwXbuTACL5GGlYGmbuJoPBrKfbJIndL3w2QlOmtu6B9gmLxn7S0BdpRNl5Xp8a/ogHj5/AIa9/gZ7/RpzlN7uNM+fwUozTX3pqjT2WAA6oR0PKQWA81UvfPqcRnGc50+6rqVlgTfNX+lsEQA0PkDsCHQB8kQrfk8XUUkl3PKGqtzynE6lr+A+CHBCm7QcrCt4CNf9JEAMGMe9KyQNzvuJdoGCrt8gXOuPlpwEeLc+79VMiC/Q2GfF1eC1DlTiE7zHCVvhCosgF75qgHPAkjzASwEQ+vFJ1tsQgOcvyfOxCLp520qTtznhir0ifIGrt61tJn/EtqTcyxCg+McCuFECCCr4lFT8E+cASgifyMekWbBQnH0MgS2MHi+ABzEOUnh0H+CJ9RMBfLoPYPv7KICKBw/yLTgu0zzjNcCf+wBfqO1PiaAWQaEqupyfuz9xVQJ0mbfiRqv/SfwnAvhxH+AzpUQ6jz3Ah/sA3H+aJq7KvoTAW9aJVwkglCJdzHHO0VqfuMYCZKnTETG2/fB5lsVFeUBWewfqeab1iVxagE7eB7D4zS5ZMRGgm/cBPs8L70SASypda1vW1pfmkwjQtfvA8bXXKk1WV04EQKPQdbjWOhzuHkywJwJ06zjMHxH7udYngRIBoNgSv+m+fOWJz/GvOxNTEokAtFoibozcJjX5JlWGmoePDem6GstkvJ8gPyryzEQAGkQnJnwxvaMFJGeS+GHnbobfC8b475yxNpvfD1j5I3AP8P+E06KT/wdPOffX7me6UQAAAABJRU5ErkJggg=="; const _imports_33 = "data:image/png;base64,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"; const _imports_36 = "" + __buildAssetsURL("QRCode-icon.a105d5fc.svg"); const _imports_37 = "" + __buildAssetsURL("delete-icon.4d386dce.svg"); const _imports_38 = "" + __buildAssetsURL("arrows-icon.271dd0d3.svg"); const _imports_39 = "" + __buildAssetsURL("tick-orange.233abc69.svg"); const _imports_40 = "" + __buildAssetsURL("issue-bj.44adad8c.svg"); const _imports_41 = "" + __buildAssetsURL("cross-gray.2c215ff3.svg"); const _imports_42 = "" + __buildAssetsURL("arrows-black.688ffbe9.svg"); const _export_sfc = (sfc, props) => { const target = sfc.__vccOpts || sfc; for (const [key, val] of props) { target[key] = val; } return target; }; const _sfc_main$2 = { name: "#answer-app", async setup() { const $ajax = (url, data) => { url = url.indexOf("//") > -1 ? url : baseURL2 + url; return new Promise(function(resolve, reject) { axios.post(url, data, { emulateJSON: true, withCredentials: true, headers: { authorization: "production" !== "production" // 头部标记 } }).then(function(res) { var data2 = null; try { data2 = typeof res.data == "string" ? JSON.parse(res.data) : res.data; if (data2["code"] == 401) { goLogin(); } if (data2["code"] != 200) handleMsg("error", data2["message"] || "报错了,请重试!!!"); } catch (error) { } resolve(data2); }).catch((err) => { if (err.response.status == 401) ; resolve(err.response.data); }); }); }; const $ajaxGET = (url, data) => { url = url.indexOf("//") > -1 ? url : baseURL2 + url; return new Promise(function(resolve, reject) { axios.get(url, data, { emulateJSON: true, withCredentials: true, headers: { authorization: "production" !== "production" // 头部标记 } }).then(function(res) { var data2 = null; try { data2 = typeof res.data == "string" ? JSON.parse(res.data) : res.data; if (data2["code"] == 401) { goLogin(); } if (data2["code"] != 200) handleMsg("error", data2["message"] || "报错了,请重试!!!"); } catch (error) { } resolve(data2); }).catch((err) => { if (err.response.status == 401) ; resolve(err.response.data); }); }); }; let isNeedLogin = ref(true); const goLogin = () => { return; }; const route = useRoute(); let detailsInfoDataVuex = useState("detailsInfoData", () => { }); const baseURL2 = "https://ask.gter.net"; let type = ref("list"); let originUrl = ref(""); onUnmounted(() => { window.removeEventListener("keydown", handleKeydown); window.removeEventListener("scroll", handleScroll); }); const getCurrentUrl = () => { return `${window.location["origin"]}?uniqid=${detailsInfo.value["uniqid"] || ""}`; }; let myCount = ref({}); const getUserData = (key) => { $ajax("/api/user").then((res) => { if (res.code != 200) return; let data = res.data; myCount.value = data.count; handleMy(key); }); }; let isSearchMode = ref(false); const setHistoricalSearchList = () => { if (!keyword.value) return; historicalSearchList.value.unshift(keyword.value); historicalSearchList.value = [...new Set(historicalSearchList.value)]; historicalSearchList.value = historicalSearchList.value.slice(0, 10); localStorage.setItem("historical-Search", JSON.stringify(historicalSearchList.value)); }; const searchClick = () => { setHistoricalSearchList(); page = 1; list.value = []; backupsList = []; listHeight.value = 0; type.value = "list"; pitchIndex.value = null; openBottom(); myModelState.value = false; replaceState({ keyword: keyword.value }); searchBlur(); getList(); }; const searchFocus = () => { if (historicalSearchList.value.length == 0) return; historicalSearchState.value = true; }; const searchBlur = () => { setTimeout(() => historicalSearchState.value = false, 300); }; const handleClickHistoricalItem = (value) => { keyword.value = value; searchClick(); }; const handleClickClear = () => { keyword.value = ""; page = 1; list.value = []; backupsList = []; listHeight.value = 0; type.value = "list"; openBottom(); pitchIndex.value = null; getList(); }; let historicalSearchState = ref(false); let historicalSearchList = ref([]); let tabListFixeState = ref(false); const handleScroll = () => { const scrollTop = document.documentElement.scrollTop || document.body.scrollTop; const scrollHeight = document.documentElement.scrollHeight; const clientHeight = document.documentElement.clientHeight; if (scrollTop + clientHeight >= scrollHeight - 40 && type.value == "list") getList(); if (scrollTop > 115) tabListFixeState.value = true; else tabListFixeState.value = false; }; let keyword = ref(""); let keywordText = ref(""); let list = ref([]); let backupsList = []; let page = 1; let total = ref(0); let loading = ref(false); let inTheEndState = ref(false); let isListEmptyState = ref(); let zeroreply = ref(0); const getList = () => { if (page == 0 || loading.value) return; loading.value = true; $ajax("/api/lists", { page, limit: 20, keyword: keyword.value, type: typePitch.value, zeroreply: zeroreply.value }).then((res) => { if (res.code == 401) ; if (res.code != 200) return; let data = res.data; data.data.forEach((element) => { element["content"] = element["content"].replace(/<[^>]*>/g, ""); element["content"] = element["content"].replace(/ /g, ""); }); list.value = list.value.concat(data.data || []); backupsList = backupsList.concat(data.data || []); total.value = data.count || 0; keywordText.value = keyword.value || ""; if (list.value.length >= data["count"]) page = 0; else page++; if (page == 0 && list.value.length != 0) inTheEndState.value = true; else inTheEndState.value = false; if (list.value.length == 0) isListEmptyState.value = true; else isListEmptyState.value = false; if (keyword.value) isSearchMode.value = true; else isSearchMode.value = false; if (type.value == "details") handleInsertRelatedlist(); if (list.value.length == 0) type.value = "list"; }).finally(() => loading.value = false); }; let typeList = ref([]); let typePitch = ref(null); let pageHeaderHeight = ref(0); let pageListHeight = ref(0); let detailsInfo = ref({}); let detailsIsanswered = ref(0); let detailsIscollection = ref(0); let detailsIsmyself = ref(0); let detailsToken = ""; let detailShare = ref({}); let detailLoading = ref(false); const getDetails = (uniqid, index, isOpenAnswer) => { if (detailLoading.value) return; detailLoading.value = true; detailsInfo.value = {}; answerList.value = []; answerPage.value = 0; $ajax("/api/details", { uniqid }).then((res) => { if (res.code != 200) { type.value = "list"; openBottom(); pitchIndex.value = null; return; } let data = res.data; data["info"]["uniqid"] = uniqid; detailsInfo.value = data["info"] || {}; detailsIsanswered.value = data["isanswered"] || 0; detailsIscollection.value = data["iscollection"] || 0; detailsIsmyself.value = data["ismyself"] || 0; detailsToken = data["token"] || ""; detailShare.value = data["share"] || {}; type.value = "details"; if (index !== null && index !== void 0) cut(index); else calculateListIndex(data.info, uniqid); answerList.value = []; answerPage.value = 1; getAnswerList(); closeAllTransmitState(); if (isOpenAnswer) openIAnswer(); seo.value = data.seo; yourAnswer.value = { text: "", anonymous: 0 }; nextTick(() => detailsAreaScrollTop()); handleInsertRelatedlist(uniqid); }).finally(() => detailLoading.value = false); }; const detailsAreaScrollTop = () => { let detailsArea = document.querySelector(".details-area-box"); detailsArea.scrollTo({ top: 0, behavior: "smooth" }); }; const calculateListIndex = (info, uniqid) => { let targetList = [...list.value]; if (targetList.length == 0 && isSearchMode.value == false && myModelState.value == false) { setTimeout(() => calculateListIndex(info, uniqid), 200); return; } let valve = false; list.value.forEach((element, index) => { if (element["uniqid"] == uniqid) { cut(index); pitchIndex.value = index; valve = true; } }); if (!valve) { let content = ""; if (info["content"].indexOf("]*>/g, ""); content = content.replace(/ /g, ""); const obj = { answers: info["answers"], content, publicationdate: info["publicationdate"], title: info["title"], typename: info["typename"], uniqid }; list.value.unshift(obj); if (!myModelState.value) backupsList.unshift(obj); cut(0); } }; let answerList = ref([]); let answerPage = ref(1); let answerLoading = false; const getAnswerList = () => { if (answerLoading || answerPage.value == 0) return; answerLoading = true; $ajax("/api/details/answerList", { token: detailsToken, limit: 20, page: answerPage.value }).then((res) => { if (res.code != 200) return; let data = res.data; data.data.forEach((element, index) => { element.coinnum = element.reward; element["commentList"] = []; element["tab"] = "riposte"; nextTick(() => { getRiposte(index); }); }); answerList.value = answerList.value.concat(data.data); if (answerList.value.length == data["count"]) answerPage.value = 0; else answerPage.value++; detailsInfo.value["answers"] = data["count"]; if (pitchIndex.value !== null) list.value[pitchIndex.value]["answers"] = data["count"]; }).finally(() => answerLoading = false); }; const operateLike = (token, index) => { if (isNeedLogin.value) { return; } $ajax("/api/operate/like", { token }).then((res) => { if (res.code != 200) return; let data = res.data; answerList.value[index]["islike"] = data["status"]; answerList.value[index]["likenum"] = data["count"]; handleMsg("success", res["message"] || "操作成功"); }); }; const operateCollect = (token = detailsToken, index) => { if (isNeedLogin.value) { return; } $ajax("/api/operate/collect", { token }).then((res) => { if (res.code != 200) return; let data = res.data; myCollectionPage = 1; myCollectionList.value = []; if (data["type"] == "askquestioncollection") { detailsIscollection.value = data["status"]; detailsInfo.value["collectionnum"] = data["count"]; } else { answerList.value[index]["iscollection"] = data["status"]; answerList.value[index]["collectionnum"] = data["count"]; } handleMsg("success", res["message"] || "操作成功"); if (data["status"]) myCount.value["collect"]++; else myCount.value["collect"]--; }); }; let IAnswerState = ref(false); let IAnswerEditState = ref(false); let IAnswerInfo = ref({}); const openIAnswer = (index, type2) => { if (isNeedLogin.value) { return; } if (index == null) { IAnswerInfo.value = { title: detailsInfo.value["title"], content: detailsInfo.value["content"], anonymous: 0 }; IAnswerState.value = true; nextTick(() => handleInput()); } else { if (type2 == "my") { IAnswerInfo.value = { title: detailsInfo.value["title"], ...myAnswerList.value[index], text: myAnswerList.value[index]["content"], content: detailsInfo.value["content"] }; myType.value = ""; } else { IAnswerInfo.value = { title: detailsInfo.value["title"], ...answerList.value[index], text: answerList.value[index]["content"], content: detailsInfo.value["content"] }; } IAnswerEditState.value = true; nextTick(() => handleInput()); } }; const closeIAnswer = () => { IAnswerState.value = false; IAnswerEditState.value = false; isDirectlyListIAnswer = false; }; const amendIAnswer = () => { IAnswerInfo.value["anonymous"] = IAnswerInfo.value["anonymous"] == 0 ? 1 : 0; }; const submitAnswer = (type2) => { if (isNeedLogin.value) { return; } let questionTextarea = null; if (type2 == "you") questionTextarea = document.querySelector(".your-answer-textarea"); else questionTextarea = document.querySelector(".question-textarea"); if (questionTextarea) IAnswerInfo.value["text"] = questionTextarea.innerHTML; $ajax("/api/publish/answerSubmit", { token: IAnswerInfo.value["token"] || detailsToken, anonymous: IAnswerInfo.value["anonymous"] || 0, content: IAnswerInfo.value["text"] }).then((res) => { if (res.code != 200) return; if (isDirectlyListIAnswer) { getDetails(IAnswerInfo.value["uniqid"], IAnswerInfo.value["index"]); IAnswerState.value = false; } else { answerList.value = []; answerPage.value = 1; getAnswerList(); closeIAnswer(); if (!IAnswerInfo.value["token"]) myCount.value["answer"]++; if (type2 == "you") questionTextarea.innerHTML = ""; } handleMsg("success", res["message"] || "操作成功"); }); }; const openCommentState = (index) => { if (answerList.value[index]["commentState"]) answerList.value[index]["commentState"] = false; else answerList.value[index]["commentState"] = true; if (answerList.value[index]["commentList"].length == 0 && answerList.value[index]["commentnum"] != 0) getAnswerCommentList(index); }; const getAnswerCommentList = (index) => { getAnswerCommentPublic(index, 2).then((res) => { let data = res.data; answerList.value[index]["commentList"] = answerList.value[index]["commentList"].concat(data.data); answerList.value[index]["commentCount"] = data["count"]; }); }; const handleAllComment = (index) => { getAnswerCommentPublic(index, 1e3).then((res) => { if (res.code != 200) return; let data = res.data; let slice3 = data.data.slice(1); let merged1 = [...answerList.value[index]["commentList"], ...slice3.filter((item2) => !answerList.value[index]["commentList"].find((item1) => item1.id == item2.id))]; answerList.value[index]["commentList"] = merged1; answerList.value[index]["showOneCommentState"] = false; }); }; const getAnswerCommentPublic = (index, limit) => { return new Promise((resolve, reject) => { $ajax("/api/comment/lists", { token: answerList.value[index]["token"], limit, childlimit: 1 }).then((res) => { if (res.code != 200) return; resolve(res); }); }); }; const submitAnswerComments = (index, ind, i) => { if (isNeedLogin.value) { return; } const targetAnswerList = [...answerList.value]; let content = ""; let parentid = null; let token = targetAnswerList[index]["token"]; if (i != null) { content = targetAnswerList[index]["commentList"][ind]["child"][i]["commentInput"]; parentid = targetAnswerList[index]["commentList"][ind]["child"][i]["id"]; } else if (ind != null) { content = targetAnswerList[index]["commentList"][ind]["commentInput"]; parentid = targetAnswerList[index]["commentList"][ind]["id"]; } else content = targetAnswerList[index]["commentInput"]; $ajax("/api/comment/submit", { content, token, parentid }).then((res) => { if (res.code != 200) return; let data = res.data; if (i != null) { let targetData = { id: data["commentid"], content, isauthor: 1, islike: 0, likenum: 0, reply: { nickname: targetAnswerList[index]["commentList"][ind]["child"][i]["nickname"] }, ...data }; targetAnswerList[index]["commentList"][ind]["child"][i]["commentInput"] = ""; targetAnswerList[index]["commentList"][ind]["child"].unshift(targetData); targetAnswerList[index]["commentList"][ind]["childnum"]++; } else if (ind != null) { let targetData = { id: data["commentid"], content, isauthor: 1, islike: 0, likenum: 0, reply: [], ...data }; targetAnswerList[index]["commentList"][ind]["child"].unshift(targetData); targetAnswerList[index]["commentList"][ind]["childnum"]++; targetAnswerList[index]["commentList"][ind]["commentInput"] = ""; } else { let targetData = { id: data["commentid"], content, isauthor: 1, islike: 0, likenum: 0, ...data, child: [] }; targetAnswerList[index]["commentList"].unshift(targetData); targetAnswerList[index]["commentCount"]++; targetAnswerList[index]["commentInput"] = ""; } targetAnswerList[index]["commentnum"] = data["count"]; closeAnswerCommentsChild(); handleMsg("success", res["message"] || "操作成功"); }); }; const operateAnswerCommentsLike = (token, index, ind, i) => { if (isNeedLogin.value) { return; } $ajax("/api/comment/like", { token }).then((res) => { if (res.code != 200) return; let data = res.data; const targetAnswerList = [...answerList.value]; if (i == null) { targetAnswerList[index]["commentList"][ind]["islike"] = data["status"]; targetAnswerList[index]["commentList"][ind]["likenum"] = data["likenum"]; } else { targetAnswerList[index]["commentList"][ind]["child"][i]["islike"] = data["status"]; targetAnswerList[index]["commentList"][ind]["child"][i]["likenum"] = data["likenum"]; } answerList.value = targetAnswerList; handleMsg("success", res["message"] || "操作成功"); }); }; const openAnswerCommentsChild = (index, ind, i) => { if (isNeedLogin.value) { return; } closeAnswerCommentsChild(); if (i == null) answerList.value[index].commentList[ind]["childState"] = true; else answerList.value[index].commentList[ind]["child"][i]["childState"] = true; }; const closeAnswerCommentsChild = (index, ind, i) => { const targetAnswerList = [...answerList.value]; targetAnswerList.forEach((element) => { if (element["commentList"] && element["commentList"].length != 0) { element["commentList"].forEach((ele) => { ele["childState"] = false; if (ele["child"] && ele["child"].length != 0) { ele["child"].forEach((el) => { el["childState"] = false; }); } }); } }); answerList.value = targetAnswerList; }; const alsoCommentsData = (index, ind) => { const targetAnswerList = [...answerList.value]; const parentid = targetAnswerList[index]["commentList"][ind]["id"]; const token = targetAnswerList[index]["token"]; $ajax("/api/comment/childrenList", { token, parentid, limit: 20, page: 1, childlimit: 1 }).then((res) => { if (res.code != 200) return; let data = res.data; let merged1 = [...targetAnswerList[index]["commentList"][ind]["child"], ...data.data.filter((item2) => !targetAnswerList[index]["commentList"][ind]["child"].find((item1) => item1.id == item2.id))]; targetAnswerList[index]["commentList"][ind]["child"] = merged1; answerList.value = targetAnswerList; }); }; let myType = ref(""); const handleMy = (key) => { if (isNeedLogin.value) { return; } if (Object.keys(myCount.value).length === 0) { getUserData(key); return; } if (key == "collect") { myCollectionList.value = []; myCollectionPage = 1; getMyCollection(); } else if (key == "answers") { myAnswerList.value = []; myAnswerPage = 1; getMyAnswer(); } else if (key == "questions") { myQuestionsList.value = []; myQuestionsPage = 1; getMyQuestions(); } }; let myCollectionList = ref([]); let myCollectionCount = ref(0); let myCollectionPage = 1; let myCollectionLading = false; const getMyCollection = () => { if (myCollectionPage == 0 || myCollectionLading) return; myCollectionLading = true; $ajax("/api/user/collect", { limit: 20, page: myCollectionPage }).then((res) => { if (res.code != 200) return; let data = res.data; myType.value = "collect"; data.data.forEach((element) => { if (element["type"] == "askanswercollection") { let content = element["data"]["content"]; element["data"]["content"] = processHtml(content); } }); myCollectionList.value = myCollectionList.value.concat(data.data); myCollectionCount.value = data.count; if (myCollectionList.value.length != data["count"]) myCollectionPage++; else myCollectionPage = 0; }).finally(() => myCollectionLading = false); }; const processHtml = (html) => { var parser = new DOMParser(); var doc = parser.parseFromString(html, "text/html"); var img = doc.querySelector("img"); if (img) return ``; else return doc.body.textContent; }; const cancelCollection = (token, index) => { $ajax("/api/user/deleteCollect", { token }).then((res) => { if (res.code == 200) { myCollectionList.value.splice(index, 1); myCollectionCount.value--; myCount.value["collect"]--; handleMsg("success", res["message"] || "操作成功"); } }); }; const handleCollectionScroll = (e) => { const el = e.target; if (el.scrollHeight - el.scrollTop >= el.clientHeight + 10) return; getMyCollection(); }; let myAnswerList = ref([]); let myAnswerCount = ref(0); let myAnswerPage = 1; let myAnswerloadimg = false; const getMyAnswer = () => { if (myAnswerPage == 0 || myAnswerloadimg) return; myAnswerloadimg = true; $ajax("/api/user/answer", { limit: 20, page: myAnswerPage }).then((res) => { if (res.code != 200) return; let data = res.data; data.data.forEach((element) => { element["popupState"] = false; }); data.data.forEach((element) => { let content = element["content"]; element["content"] = processHtml(content); }); myAnswerList.value = myAnswerList.value.concat(data.data); myAnswerCount.value = data.count; if (myAnswerList.value.length != data["count"]) myAnswerPage++; else myAnswerPage = 0; myType.value = "answers"; }).finally(() => myAnswerloadimg = false); }; const handleAnswersScroll = (e) => { const el = e.target; if (el.scrollHeight - el.scrollTop >= el.clientHeight + 10) return; getMyAnswer(); }; let answerIndexOld = null; const cutAnswerPopupState = (index) => { myAnswerList.value[index]["popupState"] = true; if (answerIndexOld == index) { myAnswerList.value[index]["popupState"] = false; answerIndexOld = null; } else { myAnswerList.value[index]["popupState"] = true; if (answerIndexOld != null) myAnswerList.value[answerIndexOld]["popupState"] = false; answerIndexOld = index; } }; const changeAnonymous = (token, anonymous, index) => { $ajax("/api/publish/changeAnonymous", { token, anonymous }).then((res) => { if (res.code != 200) return; res.data; myAnswerList.value[index]["anonymous"] = anonymous; cutAnswerPopupState(index); handleMsg("success", res["message"] || "操作成功"); }); }; let myQuestionsList = ref([]); let myQuestionsCount = ref(0); let myQuestionsPage = 0; let myQuestionsloading = false; const getMyQuestions = () => { if (myQuestionsPage == 0 || myQuestionsloading) return; myQuestionsloading = true; $ajax("/api/user/questions", { limit: 20, page: myQuestionsPage }).then((res) => { if (res.code != 200) return; let data = res.data; myQuestionsList.value = myQuestionsList.value.concat(data.data); myQuestionsCount.value = data.count; myType.value = "questions"; if (myQuestionsList.value.length != data["count"]) myQuestionsPage++; else myQuestionsPage = 0; }).finally(() => myQuestionsloading = false); }; const handleQuestionsScroll = (e) => { const el = e.target; if (el.scrollHeight - el.scrollTop >= el.clientHeight + 10) return; getMyQuestions(); }; let questionsIndexOld = null; const cutQuestionsPopupState = (index) => { myQuestionsList.value[index]["popupState"] = true; if (questionsIndexOld == index) { myQuestionsList.value[index]["popupState"] = false; questionsIndexOld = null; } else { myQuestionsList.value[index]["popupState"] = true; if (questionsIndexOld != null) myQuestionsList.value[questionsIndexOld]["popupState"] = false; questionsIndexOld = index; } }; const changeAnonymousQuestions = (token, anonymous, index) => { $ajax("/api/publish/changeAnonymous", { token, anonymous }).then((res) => { if (res.code != 200) return; myQuestionsList.value[index]["anonymous"] = anonymous; cutQuestionsPopupState(index); handleMsg("success", res["message"] || "操作成功"); }); }; let questionsSetp = ref(0); const cutQuestionsSetp = (value) => questionsSetp.value = value; let questionsTypeList = ref([]); let questionsObj = ref({ // 提问的内容 token: "", title: "", content: "", tags: "", tid: "", anonymous: 0 }); const questionsInit = () => { if (isNeedLogin.value) { return; } $ajax("/api/publish/questions").then((res) => { if (res.code != 200) return; let data = res.data; questionsObj.value["token"] = data["token"]; questionsTypeList.value = data["typeList"] || []; cutQuestionsSetp(1); }); }; const choosingTheme = (id) => { questionsObj.value.tid = id; cutQuestionsSetp(2); }; const cutAnonymous = () => { questionsObj.value.anonymous = questionsObj.value.anonymous == 0 ? 1 : 0; }; const postingIssue = () => { if (isNeedLogin.value) { return; } $ajax("/api/publish/questionsSubmit", questionsObj.value).then((res) => { if (res.code == 200) { myCount.value["questions"]++; questionsSetp.value = 0; questionsObj.value = { token: "", title: "", content: "", tags: "", tid: "", anonymous: 0 }; handleMsg("success", res["message"] || "操作成功"); let data = res.data; getDetails(data["uniqid"]); return; } handleMsg("error", res["message"] || "刷新重试!!!"); }); }; let pitchIndex = ref(null); const cut = (index) => { pitchIndex.value = index; setTimeout(() => scrollLeftInMiddle(), 350); }; const scrollLeftInMiddle = () => { { return; } }; const listStyle = () => { const newtype = type.value; let width = ""; let margin = ""; let height = ""; if (newtype == "list") { width = "1200px"; margin = "0 auto"; } else { width = "calc((100vw - 1200px) / 2 + 512px)"; margin = "initial"; } return { width, margin, height }; }; let listHeight = ref(0); let itemHeightLeft = 0; let itemHeightRight = 0; const itemStyle = (index, content, typetype) => { if (index == 0) { itemHeightLeft = 0; itemHeightRight = 0; } const newtype = type.value; let obj = {}; if (newtype == "list") { if (itemHeightLeft <= itemHeightRight) { obj["top"] = itemHeightLeft + "px"; itemHeightLeft += content == "" ? 107 : 137; obj["left"] = 0; } else { obj["top"] = itemHeightRight + "px"; itemHeightRight += content == "" ? 107 : 137; obj["left"] = "649px"; } } else { obj["position"] = "relative"; if (!typetype) { itemHeightLeft += content == "" ? 107 : 137; obj["height"] = content == "" ? "107px" : "137px"; } else { itemHeightLeft += typetype == "vote" ? 170 : 137; obj["height"] = typetype == "vote" ? "170px" : "137px"; } obj["width"] = "100%"; obj["paddingLeft"] = "calc((100vw - 1200px) / 2)"; } if (index + 1 == list.value.length) listHeight.value = Math.max(itemHeightLeft, itemHeightRight); return obj; }; const bottomTpsStyle = (index, content) => { const newtype = type.value; let obj = {}; if (newtype == "list") ; else { obj["width"] = "calc(50vw - 88px)"; obj["height"] = `calc(100vh - ${list.value.length * 128}px - 268px)`; obj["paddingLeft"] = "calc((100vw - 1200px) / 2)"; obj["borderRight"] = "1px solid #ebebeb"; obj["borderRight"] = "1px solid #ebebeb"; obj["background"] = "#fff"; } return obj; }; const listBoxStyle = () => { const newtype = type.value; let obj = {}; if (newtype == "list") obj["overflow"] = "visible"; else obj["height"] = pageListHeight.value + "px"; return obj; }; const handleDate = (dateTimeStamp = /* @__PURE__ */ new Date(), ishour = true) => { dateTimeStamp = dateTimeStamp ? dateTimeStamp : null; var timestamp = new Date(dateTimeStamp); timestamp = timestamp.getTime(); var minute = 1e3 * 60; var hour = minute * 60; var day = hour * 24; var now = (/* @__PURE__ */ new Date()).getTime(); var diffValue = now - timestamp; var result; if (diffValue < 0) return "刚刚"; var dayC = diffValue / day; var hourC = diffValue / (hour + 1); var minC = diffValue / minute; if (dayC >= 7) { let date = new Date(timestamp); let Y = date.getFullYear() + "-"; let M = (date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1) + "-"; let D = (date.getDate() < 10 ? "0" + date.getDate() : date.getDate()) + " "; let h2 = (date.getHours() < 10 ? "0" + date.getHours() : date.getHours()) + ":"; let m = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes(); if (ishour) result = "" + Y + M + D + h2 + m; else result = "" + Y + M + D; } else if (dayC >= 1) result = "" + Math.round(dayC) + "天前"; else if (hourC >= 1) result = "" + Math.round(hourC) + "小时前"; else if (minC >= 1) result = "" + Math.round(minC) + "分钟前"; else result = "刚刚"; return result; }; let questionsTransmitState = ref(false); let questionsTransmitMaskState = ref(false); const closeTransmitState = () => { questionsTransmitState.value = true; questionsTransmitMaskState.value = true; countForwardingTimes(detailsToken); }; const closeAllTransmitState = () => { answerList.value.forEach((element) => { element["transmitState"] = false; }); questionsTransmitState.value = false; questionsTransmitMaskState.value = false; }; const handleAnswerTransmitList = (Iindex, type2) => { answerList.value[Iindex]["transmitState"] = true; questionsTransmitMaskState.value = true; countForwardingTimes(answerList.value[Iindex]["token"]); }; const countForwardingTimes = (token) => { $ajaxGET("/api/operate/share?token=" + token); }; const closeDetailMode = () => { if (myModelState.value) { closeMyModel(); return; } type.value = "list"; openBottom(); pitchIndex.value = null; seo.value = {}; list.value = JSON.parse(JSON.stringify(backupsList)); }; const handleListScroll = (e) => { const el = e.target; if (el.scrollHeight - el.scrollTop >= el.clientHeight + 40 || myModelState.value) return; getList(); }; const handlePaste = (event, type2) => { const items = (event.clipboardData || event.originalEvent.clipboardData).items; for (const item of items) { if (item.type.indexOf("image") === 0) { event.preventDefault(); handleMsg("warning", "上传图片中"); const file = item.getAsFile(); const reader = new FileReader(); reader.onload = (e) => { const base64 = e.target.result; uploadImg(base64).then((res) => { let questionTextarea = null; if (type2 == "you") questionTextarea = document.querySelector(".your-answer-textarea"); else questionTextarea = document.querySelector(".question-textarea"); let imgNode = document.createElement("img"); imgNode.setAttribute("src", res.url); imgNode.setAttribute("data-aid", res.aid); questionTextarea.appendChild(imgNode); if (type2 == "you") handleInputYou(); else handleInput(); handleMsg("success", "上传成功"); }); }; reader.readAsDataURL(file); } } }; const uploadImg = (base64) => { return new Promise((resolve, reject) => { $ajax("/api/common/upload", { data: base64 }).then((res) => { if (res.code != 200) return; let data = res.data; resolve(data); }); }); }; let questionPlaceholderState = ref(false); let yourAnswerPlaceholderState = ref(true); const handleInput = () => { const questionTextarea = document.querySelector(".question-textarea"); const html = questionTextarea.innerHTML; if (html) questionPlaceholderState.value = false; else questionPlaceholderState.value = true; }; const handleInputYou = () => { const questionTextarea = document.querySelector(".your-answer-textarea"); const html = questionTextarea.innerHTML; if (html) yourAnswerPlaceholderState.value = false; else yourAnswerPlaceholderState.value = true; }; let msg = ref({}); const handleMsg = (type2, text) => { msg.value["state"] = true; msg.value["type"] = type2; msg.value["text"] = text; }; const boxClass = () => { msgShowTimer(); return type ? `box-item-${msg.value["type"]}` : ""; }; let msgTimer = null; const msgShowTimer = () => { clearTimeout(msgTimer); msgTimer = setTimeout(() => { msg.value["state"] = false; }, 1e3); }; let copyText = (text) => { if (navigator.clipboard) { copyText = () => { navigator.clipboard.writeText(text); handleMsg("success", "复制成功"); }; } else { copyText = () => { var tempInput = document.createElement("input"); tempInput.value = text; document.body.appendChild(tempInput); tempInput.select(); document.execCommand("copy"); document.body.removeChild(tempInput); handleMsg("success", "复制成功"); }; } copyText(); }; const replaceState = (obj = {}) => { return; }; let myModelState = ref(false); let myModelList = ref([]); let temporaryData = {}; const myOpenDetails = (uniqid) => { if (!uniqid) { handleMsg("error", "没有找到相关提问"); return; } if (!myModelState.value) { temporaryData = { total: total.value, keywordText: keywordText.value, isSearchMode: isSearchMode.value, inTheEndState: inTheEndState.value, type: type.value, pitchIndex: pitchIndex.value, listlist: JSON.parse(JSON.stringify(list.value)) }; isSearchMode.value = false; inTheEndState.value = false; keyword.value = ""; list.value = JSON.parse(JSON.stringify(myModelList.value)); myModelState.value = true; pitchIndex.value = null; } getDetails(uniqid); myType.value = ""; }; const closeMyModel = () => { myModelList.value = JSON.parse(JSON.stringify(list.value)); isSearchMode.value = temporaryData["isSearchMode"]; keywordText.value = temporaryData["keywordText"]; keyword.value = temporaryData["keywordText"]; total.value = temporaryData["total"]; type.value = temporaryData["type"]; pitchIndex.value = temporaryData["pitchIndex"]; inTheEndState.value = temporaryData["inTheEndState"]; list.value = JSON.parse(JSON.stringify(temporaryData.listlist)); myModelState.value = false; if (pitchIndex.value !== null && pitchIndex.value !== void 0) { let uniqid = list.value[pitchIndex.value]["uniqid"]; getDetails(uniqid); } }; const handleDetailsScroll = (e) => { const el = e.target; if (el.scrollHeight - el.scrollTop !== el.clientHeight) return; getAnswerList(); }; let dialogSrc = ref(""); const handleAnswerText = (e) => { if (e.target.tagName === "IMG") { var src = e.target.getAttribute("src"); dialogSrc.value = src; window.addEventListener("keydown", handleKeydown); } }; const handleKeydown = (event) => { if (event.key !== "Escape") return; dialogSrc.value = ""; window.removeEventListener("keydown", handleKeydown); }; const cutType = (id) => { typePitch.value = id; page = 1; list.value = []; backupsList = []; listHeight.value = 0; myModelState.value = false; type.value = "list"; openBottom(); pitchIndex.value = null; getList(); listHeight.value = 0; }; const handleMenuState = (index, ind, i) => { if (isNeedLogin.value) { return; } if (i === void 0) reportToken = answerList.value[index].commentList[ind]["token"]; else reportToken = answerList.value[index].commentList[ind]["child"][i]["token"]; alertShow.value = true; }; let reportToken = ""; const reasonList = ["广告", "辱骂", "重复发送", "不良信息", "其他"]; let checkList = ref([]); let alertShow = ref(false); let alertText = ref(""); const selectRadio = (value) => { const index = checkList.value.indexOf(value); if (index === -1) checkList.value.push(value); else checkList.value.splice(index, 1); }; const alertSubmit = () => { checkList.value.push(alertText.value); $ajax("/api/operate/report", { message: checkList.value, token: reportToken }).then((res) => { checkList.value = []; reportToken = ""; alertShow.value = false; handleMsg("success", "举报成功"); }); }; let recommendList = []; let recommendPage = 1; const getRecommend = (uniqid) => { $ajax("/api/details/relatedlist", { page: recommendPage, limit: 20 }).then((res) => { if (res.code != 200) return; let obj = { offer: "Offer", mj: "面经", vote: "投票", thread: "帖子" }; let data = res.data; data.forEach((element) => { element["typename"] = obj[element["type"]]; element["isrecom"] = true; }); recommendList = recommendList.concat(data); recommendPage++; handleInsertRelatedlist(uniqid); }); }; const handleInsertRelatedlist = (uniqid) => { if (myModelState.value) return; let insertCount = Math.ceil(backupsList.length / 5); if (recommendList.length < insertCount) { getRecommend(uniqid); return; } let target = JSON.parse(JSON.stringify(backupsList)); let result = []; let j = 0; for (let i = 0; i < target.length; i++) { result.push(target[i]); if ((i + 1) % 4 === 0 && j < recommendList.length) { result.push(recommendList[j]); j++; } } list.value = JSON.parse(JSON.stringify(result)); nextTick(() => { if (uniqid) { result.forEach((element, index) => { if (element["uniqid"] == uniqid) { pitchIndex.value = index; } }); } }); }; const replaceNumberObj = { 0: "①", 1: "②", 2: "③" }; let seo = ref({}); let initState = ref(0); try { const params = route.query; if (params["keyword"]) keyword.value = params["keyword"]; if (params["tid"]) typePitch.value = params["tid"]; if (params["uniqid"]) { await axios.post(baseURL2 + "/api/details", { uniqid: params["uniqid"] }).then((response) => { let res = response.data; let data = res.data; data["info"]["uniqid"] = params["uniqid"]; detailsInfoDataVuex.value = data; detailsInfo.value = data["info"] || {}; detailsIsanswered.value = data["isanswered"] || 0; detailsIscollection.value = data["iscollection"] || 0; detailsIsmyself.value = data["ismyself"] || 0; detailsToken = data["token"] || ""; detailShare.value = data["share"] || {}; type.value = "details"; answerList.value = []; answerPage.value = 1; getAnswerList(); closeAllTransmitState(); replaceState({ uniqid: params["uniqid"] }); seo.value = data.seo; }).catch((error) => console.error(error)); } await $ajax("/api/lists", { page, limit: 20, keyword: keyword.value, type: typePitch.value }).then((res) => { if (res.code != 200) return; let data = res.data; data.data.forEach((element) => { element["content"] = element["content"].replace(/<[^>]*>/g, ""); element["content"] = element["content"].replace(/ /g, ""); }); list.value = data.data; backupsList = data.data; total.value = data.count || 0; keywordText.value = keyword.value || ""; if (list.value.length != data["count"]) page++; else page = 0; if (page == 0 && list.value.length != 0) inTheEndState.value = true; else inTheEndState.value = false; if (list.value.length == 0) isListEmptyState.value = true; else isListEmptyState.value = false; if (keyword.value) isSearchMode.value = true; else isSearchMode.value = false; nextTick(() => { if (list.value.length == 0) type.value = "list"; }); }); await $ajax("/api/details/relatedlist", { page: 1, limit: 20 }).then((res) => { if (res.code != 200) return; let obj = { offer: "Offer", mj: "面经", vote: "投票", thread: "帖子" }; let data = res.data; data.forEach((element) => { element["typename"] = obj[element["type"]]; element["isrecom"] = true; }); recommendList = recommendList.concat(data); recommendPage++; if (params["uniqid"]) { let target = JSON.parse(JSON.stringify(backupsList)); let result = []; let j = 0; for (let i = 0; i < target.length; i++) { result.push(target[i]); if ((i + 1) % 4 === 0 && j < recommendList.length) { result.push(recommendList[j]); j++; } } list.value = JSON.parse(JSON.stringify(result)); initState.value++; } }); } catch (error) { console.error(error); } watch(initState, (newValue, oldValue) => { if (newValue === 2) { const params = route.query; calculateListIndex(detailsInfo.value, params["uniqid"]); } }); const setItemUrl = (uniqid) => { let url = `./index.html?uniqid=${uniqid}`; let query = route.query; for (const key in query) { if (key != "uniqid") url += `&${key}=${query[key]}`; } return url; }; const handleLogo = () => { window.location.href = window.location.origin + window.location.pathname; }; let yourAnswer = ref({ text: "", anonymous: 0 }); const cutYourAnswerAnonymous = () => { yourAnswer.value["anonymous"] = yourAnswer.value["anonymous"] ? 0 : 1; }; const handleYourAnswer = () => { if (isNeedLogin.value) { return; } IAnswerInfo.value = { ...yourAnswer.value }; submitAnswer("you"); yourAnswer.value = { text: "", anonymous: 0 }; }; let isDirectlyListIAnswer = false; const openListIAnswer = (index) => { if (isNeedLogin.value) { return; } let targetData = list.value[index]; IAnswerInfo.value = { title: targetData["title"], content: targetData["content"], token: targetData["token"], uniqid: targetData["uniqid"], anonymous: 0, index }; isDirectlyListIAnswer = true; IAnswerState.value = true; nextTick(() => handleInput()); }; let avatarState = ref(false); const openUserInfo = (index, ind, i) => { if (i != null) { if (answerList.value[index].commentList[ind]["child"][i]["uin"] > 0) answerList.value[index].commentList[ind]["child"][i]["avatarState"] = !answerList.value[index].commentList[ind]["child"][i]["avatarState"]; } else if (ind != null) { if (answerList.value[index].commentList[ind]["uin"] > 0) answerList.value[index].commentList[ind]["avatarState"] = !answerList.value[index].commentList[ind]["avatarState"]; } else if (index != null) { if (answerList.value[index]["uin"] > 0) answerList.value[index]["avatarState"] = !answerList.value[index]["avatarState"]; } else { if (detailsInfo.value["uin"] > 0) avatarState.value = !avatarState.value; } }; const sendMessage = (uin) => { if (uin && typeof messagePrivateItem == "function") { messagePrivateItem({ uin }); return; } else redirectToExternalWebsite(`https://bbs.gter.net/home.php?mod=space&showmsg=1&uid=${uin}`); }; const TAHomePage = (uin) => { redirectToExternalWebsite(`https://bbs.gter.net/home.php?mod=space&uid=${uin}`); }; const redirectToExternalWebsite = (url) => { const link = document.createElement("a"); link.href = url; link.target = "_blank"; link.click(); }; const openBottom = () => { const footer = document.querySelector("body .index-footer"); if (footer) footer.style.display = "block"; else setTimeout(() => openBottom(), 1e3); }; const handleLookOnly = () => { zeroreply.value = zeroreply.value == 0 ? 1 : 0; page = 1; list.value = []; backupsList = []; listHeight.value = 0; getList(); }; const showComments = (index) => { answerList.value[index]["showOneCommentState"] = false; }; const jointriposte = (item) => { return `&#x${item};`; }; const cutOperate = (index, key) => { let target = answerList.value[index]; target["tab"] = key; if (key == "coin" && !answerList.value[index].config) { getCoinConfig(index); } if (key == "comment" && target["commentnum"] > 0) { target["showOneCommentState"] = true; target["commentList"] = []; nextTick(() => { openCommentState(index); }); } }; const getRiposte = (index) => { let target = answerList.value[index]; $ajax("/api/riposte/riposteGet", { token: target.token }).then((res) => { if (res.code != 200) return; let data = res.data; target.ripostecount = data.count || {}; target.ripostelist = data.list || []; target.riposteoptions = data.options || []; answerList.value[index] = target; if (target.ripostelist.length <= 3) randomEmoji(index); }); }; let randomEmojis = ref(["c150", "c167", "c002", "c162", "c157", "c133", "c011", "c004"]); const randomEmoji = (index) => { let emojiList = answerList.value[index].ripostelist; let riposteoptions = answerList.value[index].riposteoptions || []; let exclude = []; emojiList.forEach((element) => { exclude.push(element.item); }); let selectedList = []; for (const key in riposteoptions[0].data) { if (key != "c150") selectedList.push(key); } const random = []; if (!exclude.includes("c150")) random.push("c150"); selectedList = selectedList.filter((itemB) => !exclude.includes(itemB)); let indexes = []; while (indexes.length < 7) { let randomIndex = Math.floor(Math.random() * selectedList.length); if (indexes.indexOf(randomIndex) === -1) { indexes.push(randomIndex); random.push(selectedList[randomIndex]); } } answerList.value[index]["randomEmojis"] = random; }; let riposteSubmitState = false; const selectEomji = (code, index, ispop = false, islist = false) => { if (isNeedLogin.value) { return; } if (riposteSubmitState) return; riposteSubmitState = true; let target = answerList.value[index]; let ispitch = false; let isindex = target.ripostelist.findIndex((element) => element.item === code); if (isindex >= 0) ispitch = target.ripostelist[isindex].selected; if (ispitch && ispop) { riposteSubmitState = false; return; } riposteSubmit(code, target.token).then((res) => { const data = res.data; target.ripostecount = data.count; if (isindex >= 0) { target.ripostelist[isindex].num += ispitch ? -1 : 1; target.ripostelist[isindex].selected = !ispitch && target.ripostelist[isindex].num !== 0; if (target.ripostelist[isindex].num === 0) { target.ripostelist.splice(isindex, 1); } } else { target.ripostelist.push({ item: code, num: 1, selected: true }); } if (target.ripostelist.length <= 3) randomEmoji(index); if (islist) handleRiposteListData(code, data); }).finally(() => { riposteSubmitState = false; }); }; const handleRiposteListData = (code, data) => { let target = respondDetail.value; if (target[code].selected) { target[code].user = target[code].user.filter((item) => item.uin != data.uin); if (target[code].user.length == 0) delete target[code]; } else { target[code].user.push({ avatar: data.avatar, nickname: data.username, uid: data.uid, uin: data.uin }); } if (target.hasOwnProperty(code)) { target[code].selected = !target[code].selected; } }; const riposteSubmit = (item, token) => { return new Promise((resolve, reject) => { $ajax("/api/riposte/riposteSubmit", { token, item }).then((res) => { if (res.code != 200) { handleMsg("error", res["message"] || "报错了,请重试!!!"); reject(res); } else { resolve(res); } }); }); }; let respondDetail = ref({}); let respondPopState = ref(false); let respondPopObj = ref({}); const openRespondDetails = (index) => { var _a; if (isNeedLogin.value) { return; } let target = answerList.value[index]; respondPopObj.value.index = index; respondPopObj.value.user = (_a = target.ripostecount) == null ? void 0 : _a.user; $ajax("/api/riposte/riposteDetail", { token: target.token }).then((res) => { if (res.code != 200) return; respondDetail.value = res.data; respondPopState.value = true; }); }; const closePopList = () => { respondPopState.value = false; }; const getCoinConfig = (index) => { let target = answerList.value[index]; $ajax("/api/operate/coin", { token: target.token }).then((res) => { if (res.code != 200) return; if (res.data.coinnumpeople > 3) { getCoinranking(answerList.value[index].token).then((data) => { target["ranklist"] = data; }); } answerList.value[index] = Object.assign({}, target, res.data); }); }; const openInsert = (index) => { let target = answerList.value[index]; insert.value = { index, token: target.token, coinConfig: target.config, coinMybalance: target.mybalance, ranklist: target.ranklist }; if (target.mybalance == 0) insertcoinsNoState.value = true; else insertcoinsState.value = true; }; const closeInsert = () => { coinAmount.value = ""; coinMessage.value = ""; insertcoinsState.value = false; insertcoinsNoState.value = false; insert.value = {}; }; let coinAmount = ref(""); let coinMessage = ref(""); let insertcoinsState = ref(false); let insertcoinsNoState = ref(false); let insert = ref({}); const coinSelectAmountDispose = (amount) => { coinAmount.value = amount; }; let postCoinSbmitState = false; const postCoinSbmit = () => { if (isNeedLogin.value) { return; } if (postCoinSbmitState) return; postCoinSbmitState = true; let targetInsert = insert.value; $ajax("/api/operate/coinsubmit", { token: targetInsert.token, coinnum: coinAmount.value, message: coinMessage.value }).then((res) => { if (res.code != 200) { handleMsg("error", (res == null ? void 0 : res.message) || "投币失败"); return; } const data = res.data; answerList.value.forEach((element) => { element.mybalance = data.mybalance; }); let target = answerList.value[targetInsert.index || 0] || {}; target.coinnum += data.coinnum; getCoinranking(targetInsert.token).then((data2) => { target["ranklist"] = data2; }); if (coinMessage.value) target["commentnum"] += 1; closeInsert(); handleMsg("success", (res == null ? void 0 : res.message) || "操作成功"); }).finally(() => { postCoinSbmitState = false; }); }; const getCoinranking = (token) => { return new Promise((resolve, reject) => { $ajax("/api/operate/coinranking", { token }).then((res) => { if (res.code != 200) { handleMsg("error", (res == null ? void 0 : res.message) || "请求失败"); return; } resolve(res.data); }); }); }; return { handleLookOnly, zeroreply, replaceNumberObj, closeMyModel, myModelList, myModelState, listHeight, bottomTpsStyle, TAHomePage, sendMessage, avatarState, openUserInfo, isNeedLogin, handleInputYou, openListIAnswer, isListEmptyState, cutYourAnswerAnonymous, handleYourAnswer, yourAnswer, handleLogo, inTheEndState, setItemUrl, seo, originUrl, handleMenuState, reasonList, checkList, alertShow, alertText, selectRadio, alertSubmit, cutType, dialogSrc, answerPage, handleDetailsScroll, replaceState, copyText, boxClass, questionPlaceholderState, yourAnswerPlaceholderState, handleInput, handlePaste, itemStyle, listStyle, listBoxStyle, myType, type, pitchIndex, cut, list, keyword, keywordText, getList, total, typeList, typePitch, getDetails, detailsInfo, detailsIsanswered, detailsIscollection, detailsIsmyself, detailShare, detailLoading, answerList, operateLike, operateCollect, IAnswerState, IAnswerEditState, IAnswerInfo, amendIAnswer, openIAnswer, closeIAnswer, submitAnswer, openCommentState, submitAnswerComments, operateAnswerCommentsLike, openAnswerCommentsChild, closeAnswerCommentsChild, alsoCommentsData, handleAllComment, myCollectionList, myCollectionCount, myQuestionsList, myQuestionsCount, myAnswerList, myAnswerCount, cutAnswerPopupState, handleDate, handleCollectionScroll, handleAnswersScroll, handleQuestionsScroll, cancelCollection, getMyCollection, questionsSetp, questionsObj, cutAnonymous, cutQuestionsSetp, cutQuestionsPopupState, questionsTypeList, postingIssue, choosingTheme, handleMy, changeAnonymous, changeAnonymousQuestions, pageHeaderHeight, pageListHeight, questionsTransmitState, questionsTransmitMaskState, closeAllTransmitState, closeTransmitState, handleAnswerTransmitList, closeDetailMode, tabListFixeState, handleListScroll, historicalSearchState, historicalSearchList, searchFocus, searchBlur, searchClick, handleClickHistoricalItem, handleClickClear, isSearchMode, questionsInit, myCount, msg, myOpenDetails, handleAnswerText, getCurrentUrl, loading, showComments, jointriposte, randomEmojis, selectEomji, openRespondDetails, respondPopState, respondDetail, respondPopObj, closePopList, coinAmount, openInsert, insertcoinsState, insert, coinMessage, coinSelectAmountDispose, closeInsert, postCoinSbmit, cutOperate, insertcoinsNoState }; } }; function _sfc_ssrRender(_ctx, _push, _parent, _attrs, $props, $setup, $data, $options) { const _component_Head = Head; const _component_Title = Title; const _component_Meta = Meta; const _component_ClientOnly = __nuxt_component_3; const _component_RespondAdd = __nuxt_component_4; const _component_RespondPop = __nuxt_component_5; _push(`
`); _push(ssrRenderComponent(_component_Head, null, { default: withCtx((_, _push2, _parent2, _scopeId) => { if (_push2) { _push2(ssrRenderComponent(_component_Title, null, { default: withCtx((_2, _push3, _parent3, _scopeId2) => { if (_push3) { _push3(`${ssrInterpolate(`${$setup.seo["title"] || "问答"} - 寄托天下出国留学网`)}`); } else { return [ createTextVNode(toDisplayString(`${$setup.seo["title"] || "问答"} - 寄托天下出国留学网`), 1) ]; } }), _: 1 }, _parent2, _scopeId)); _push2(ssrRenderComponent(_component_Meta, { name: "keyword", content: $setup.seo["keyword"] }, null, _parent2, _scopeId)); _push2(ssrRenderComponent(_component_Meta, { name: "description", content: $setup.seo["description"] }, null, _parent2, _scopeId)); } else { return [ createVNode(_component_Title, null, { default: withCtx(() => [ createTextVNode(toDisplayString(`${$setup.seo["title"] || "问答"} - 寄托天下出国留学网`), 1) ]), _: 1 }), createVNode(_component_Meta, { name: "keyword", content: $setup.seo["keyword"] }, null, 8, ["content"]), createVNode(_component_Meta, { name: "description", content: $setup.seo["description"] }, null, 8, ["content"]) ]; } }), _: 1 }, _parent)); _push(`
`); if ($setup.myModelState) { _push(`
我的收藏/提问/回答
`); } else if ($setup.isSearchMode) { _push(`
${ssrInterpolate($setup.keywordText)}
共 ${ssrInterpolate($setup.total)} 条搜索结果
`); } else { _push(`
共 ${ssrInterpolate($setup.total)} 条问答
`); } _push(`
`); if ($setup.type != "details") { _push(`
`); if ($setup.zeroreply == 0) { _push(``); } else { _push(``); } _push(` 只看0回答
`); } else { _push(``); } _push(`
`); ssrRenderList($setup.list, (item, index) => { _push(``); if (item["isrecom"] && $setup.type != "list") { _push(`
推荐阅读
${ssrInterpolate(item["title"])}
`); if (item["type"] == "thread") { _push(``); if (item["message"]) { _push(`
${ssrInterpolate(item["message"])}
`); } else { _push(``); } _push(``); } else if (item["type"] == "vote") { _push(`
`); ssrRenderList(item["option"].slice(0, 2), (ite, i) => { _push(`
${ssrInterpolate($setup.replaceNumberObj[i] + ite)}
`); }); _push(`
${ssrInterpolate($setup.replaceNumberObj[2])} …
`); } else { _push(`
`); if (item["profession"] || item["professional"]) { _push(`
${ssrInterpolate(item["profession"] || item["professional"])}
`); } else { _push(``); } if (item["project"] || item["degree"]) { _push(`
${ssrInterpolate(item["project"] || item["degree"])}
`); } else { _push(``); } if (item["interviewtime"] || item["semester"]) { _push(`
${ssrInterpolate(item["interviewtime"] || item["semester"])}
`); } else { _push(``); } if (item["apply_results"]) { _push(`
${ssrInterpolate(item["apply_results"])}
`); } else { _push(``); } _push(`
`); } _push(`
${ssrInterpolate(item["typename"])}
`); } else { _push(`
`); if (item["ishot"] == 1) { _push(``); } else { _push(``); } _push(`
${ssrInterpolate(item["title"])}
`); if (item["content"]) { _push(`
${ssrInterpolate(item["content"])}
`); } else { _push(``); } _push(`
`); if (item["typename"]) { _push(`
${ssrInterpolate(item["typename"])}
`); } else { _push(`
`); } _push(`
${ssrInterpolate($setup.handleDate(item.publicationdate, false))}提问
${ssrInterpolate(item["answers"] == 0 ? "暂无回答" : "共" + item["answers"] + "个回答")}
`); if ($setup.type == "list") { _push(`
我来回答
`); } else { _push(``); } _push(`
`); } _push(``); }); _push(`
`); if ($setup.inTheEndState) { _push(`
- 到底了 -
`); } else { _push(``); } if ($setup.myModelState) { _push(`
`); } else { _push(``); } if ($setup.isListEmptyState && $setup.list.length == 0) { _push(`
`); if ($setup.isSearchMode) { _push(`
没有找到相关结果,请更换搜索关键词
`); } else { _push(`
暂无数据
`); } _push(`
`); } else { _push(``); } _push(`
`); if ($setup.type == "details") { _push(`
`); if ($setup.detailLoading) { _push(`
`); } else { _push(``); } _push(`
${ssrInterpolate($setup.detailsInfo["title"])}
`); if ($setup.detailsInfo["content"]) { _push(`
${$setup.detailsInfo["content"]}
`); } else { _push(``); } _push(`
${ssrInterpolate($setup.handleDate($setup.detailsInfo["publicationdate"]))}
我来回答
${ssrInterpolate($setup.detailsInfo["viewnum"] || 0)}
`); _push(ssrRenderComponent(_component_ClientOnly, null, {}, _parent)); _push(`
转发 `); if ($setup.questionsTransmitState) { _push(`
转发网页版
${ssrInterpolate($setup.detailsInfo["title"])}
${ssrInterpolate($setup.getCurrentUrl())}
复制链接
转发小程序版
扫码转发该问答
`); } else { _push(``); } _push(`
共 ${ssrInterpolate($setup.detailsInfo["answers"])} 个回答
`); ssrRenderList($setup.answerList, (item, index) => { var _a, _b, _c, _d, _e, _f, _g; _push(`
`); if (item["ismyself"] == 1) { _push(`
`); } else { _push(``); } _push(`
${item["content"]}
${ssrInterpolate($setup.handleDate(item["publicationdate"]))}
`); if ((_a = item.ripostecount) == null ? void 0 : _a.total) { _push(` 回应 ${ssrInterpolate((_b = item.ripostecount) == null ? void 0 : _b.total)}`); } else { _push(`添加回应`); } _push(`
`); if (item.commentnum != 0) { _push(` 讨论 ${ssrInterpolate(item.commentnum)}`); } else { _push(`添加讨论`); } _push(`
`); if (item.coinnum > 0) { _push(` 投币 ${ssrInterpolate(item.coinnum)}`); } else { _push(`给TA投币`); } _push(`
`); if (item["iscollection"] == 1) { _push(``); } else { _push(``); } _push(` ${ssrInterpolate(item["collectionnum"] == 0 ? "收藏" : item["collectionnum"])}
转发 `); if (item["transmitState"]) { _push(`
转发网页版
${ssrInterpolate($setup.detailsInfo["title"])}
${ssrInterpolate($setup.getCurrentUrl())}
复制链接
转发小程序版
扫码转发该问答
`); } else { _push(``); } _push(`
`); if (item.tab == "coin") { _push(`
该回答已获 ${ssrInterpolate(item.coinnum)} 个寄托币
给TA投币
`); if (((_c = item.ranklist) == null ? void 0 : _c.length) > 0) { _push(`
`); ssrRenderList(item.ranklist, (item2, index2) => { _push(`
${ssrInterpolate(index2 + 1)}
${ssrInterpolate(item2.nickname)}
${ssrInterpolate(item2.coinnum)}
`); }); _push(`
`); } else { _push(``); } _push(`
`); } else { _push(``); } if (item.tab == "riposte") { _push(`
`); ssrRenderList(item.ripostelist, (it, i) => { _push(`
${$setup.jointriposte(it.item)}
${ssrInterpolate(it.num)}
`); }); _push(``); if (((_d = item.ripostelist) == null ? void 0 : _d.length) <= 3) { _push(`
`); ssrRenderList(item.randomEmojis.slice(0, ((_e = item.ripostelist) == null ? void 0 : _e.length) == 0 ? 8 : 5), (it, i) => { _push(`
${$setup.jointriposte(it)}
`); }); _push(``); _push(ssrRenderComponent(_component_RespondAdd, { riposteoptions: item.riposteoptions, onSelectEomji: $setup.selectEomji, index }, null, _parent)); _push(`
`); } else { _push(ssrRenderComponent(_component_RespondAdd, { riposteoptions: item.riposteoptions, index, onSelectEomji: $setup.selectEomji }, null, _parent)); } if (((_f = item.ripostecount) == null ? void 0 : _f.user) > 0) { _push(`
${ssrInterpolate((_g = item.ripostecount) == null ? void 0 : _g.user)} 人回应
`); } else { _push(``); } _push(`
`); } else { _push(``); } if (item.tab == "comment") { _push(`
OK
`); if (item["commentList"] && item["commentList"].length != 0) { _push(`
`); ssrRenderList(item["commentList"], (it, ind) => { _push(`
${ssrInterpolate(it["nickname"])}
${ssrInterpolate($setup.handleDate(it["timestamp"]))}
`); if (it["questioner"] == 1) { _push(`
提问者
`); } else if (it["isauthor"] == 1) { _push(`
回答者
`); } else { _push(``); } if (it["avatarState"]) { _push(``); } else { _push(``); } _push(`
${ssrInterpolate(it["content"])}
`); if (it["childState"]) { _push(`
发送
`); } else { _push(``); } _push(`
`); if (it["child"].length != 0) { _push(`
`); ssrRenderList(it["child"], (ite, i) => { _push(`
${ssrInterpolate(ite["nickname"])}
${ssrInterpolate($setup.handleDate(ite["timestamp"]))}
`); if (ite["questioner"] == 1) { _push(`
提问者
`); } else if (ite["isauthor"] == 1) { _push(`
回答者
`); } else { _push(``); } if (ite["avatarState"]) { _push(``); } else { _push(``); } _push(`
`); if (JSON.stringify(ite["reply"]) != "[]") { _push(`
@${ssrInterpolate(ite["reply"]["nickname"])}
`); } else { _push(``); } _push(` ${ssrInterpolate(ite["content"])}
`); if (ite["childState"]) { _push(`
发送
`); } else { _push(``); } _push(`
`); }); _push(``); if (it["childnum"] > it["child"].length) { _push(`
还有${ssrInterpolate(it["childnum"] - 1)}条回复
`); } else { _push(``); } _push(`
`); } else { _push(``); } _push(`
`); }); _push(``); if (item["showOneCommentState"] && item.commentnum > 2) { _push(`
更多讨论
`); } else { _push(``); } _push(`
`); } else { _push(``); } _push(`
`); } else { _push(``); } _push(`
`); }); _push(``); if ($setup.answerList.length > 0) { _push(``); } else { _push(``); } if (!$setup.isNeedLogin) { _push(`
您的答案
${$setup.yourAnswer["text"]}
`); if ($setup.yourAnswer["anonymous"] == 0) { _push(``); } else { _push(``); } _push(` 匿名发表
提交回答
`); } else { _push(``); } if ($setup.isNeedLogin && $setup.answerList.length == 0) { _push(`
`); ssrRenderList(3, (item) => { _push(``); }); _push(``); ssrRenderList(3, (item) => { _push(``); }); _push(`
我在等待你的回答
`); } else { _push(``); } _push(`
手机查看该问答
微信扫一扫
`); } else { _push(``); } _push(`
`); if ($setup.myType) { _push(`
我的收藏
${ssrInterpolate($setup.myCollectionCount || $setup.myCount["collect"] || 0)}
我的提问
${ssrInterpolate($setup.myQuestionsCount || $setup.myCount["questions"] || 0)}
我的回答
${ssrInterpolate($setup.myAnswerCount || $setup.myCount["answer"] || 0)}
`); if ($setup.myType == "collect" && $setup.myCollectionList.length == 0 || $setup.myType == "answers" && $setup.myAnswerList.length == 0 || $setup.myType == "questions" && $setup.myQuestionsList.length == 0) { _push(`
暂无内容
`); } else { _push(``); } if ($setup.myType == "collect" && $setup.myCollectionList.length != 0) { _push(`
`); ssrRenderList($setup.myCollectionList, (item, index) => { _push(`
`); if (item.type == "askanswercollection") { _push(`
A
${item["data"]["content"]}
提问:${ssrInterpolate(item["data"]["title"])}
`); } else { _push(`
Q
${ssrInterpolate(item["data"]["title"])}
${ssrInterpolate(item["data"]["answers"] > 0 ? "共" + item["data"]["answers"] + "个回答" : "暂无回答")}
`); } _push(`
`); }); _push(`
`); } else { _push(``); } if ($setup.myType == "answers" && $setup.myAnswerList.length != 0) { _push(`
`); ssrRenderList($setup.myAnswerList, (item, index) => { _push(`
A
${ssrInterpolate(item["nickname"])}
${ssrInterpolate($setup.handleDate(item["publicationdate"]))}
${item["content"]}
提问:${ssrInterpolate(item["title"])}
${ssrInterpolate(item["anonymous"] == 0 ? "公开" : "匿名")}
`); if (item["popupState"]) { _push(`
公开发表
匿名发表
`); } else { _push(``); } _push(`
`); }); _push(`
`); } else { _push(``); } if ($setup.myType == "questions" && $setup.myQuestionsList.length != 0) { _push(`
`); ssrRenderList($setup.myQuestionsList, (item, index) => { _push(`
Q
${ssrInterpolate(item["nickname"])}
${ssrInterpolate($setup.handleDate(item["publicationdate"]))}
${ssrInterpolate(item["title"])}
`); if (item["authornewnum"] > 0) { _push(`
有${ssrInterpolate(item["authornewnum"])}个新回答
`); } else { _push(``); } _push(` ${ssrInterpolate(item["answers"] == 0 ? "暂无回答" : "共" + item["answers"] + "个回答")}
${ssrInterpolate(item["anonymous"] == 0 ? "公开" : "匿名")}
`); if (item["popupState"]) { _push(`
公开发表
匿名发表
`); } else { _push(``); } _push(`
`); }); _push(`
`); } else { _push(``); } _push(`
`); } else { _push(``); } if ($setup.questionsSetp) { _push(`
`); if ($setup.questionsSetp == 1) { _push(`
选择提问所属主题
`); ssrRenderList($setup.questionsTypeList, (item, index) => { _push(`
`); ssrRenderList(item, (item2) => { _push(`
${ssrInterpolate(item2.name)}
`); }); _push(`
`); }); _push(`
`); } else { _push(`
Q
`); if ($setup.questionsObj.anonymous == 0) { _push(``); } else { _push(``); } _push(` 匿名发表
(发布后只能修改是否匿名)
发布问题
`); } _push(`
`); } else { _push(``); } if ($setup.IAnswerEditState) { _push(`
编辑回答
${$setup.IAnswerInfo["text"]}
`); if ($setup.IAnswerInfo["anonymous"] == 0) { _push(``); } else { _push(``); } _push(` 匿名发表
提交回答
`); } else { _push(``); } if ($setup.IAnswerState) { _push(`
Q
${$setup.IAnswerInfo["title"]}
`); if ($setup.IAnswerInfo["content"]) { _push(`
${$setup.IAnswerInfo["content"]}
`); } else { _push(``); } _push(`
A
${$setup.IAnswerInfo["text"]}
`); if ($setup.IAnswerInfo["anonymous"] == 0) { _push(``); } else { _push(``); } _push(` 匿名发表
提交回答
`); } else { _push(``); } _push(``); if ($setup.dialogSrc) { _push(`
`); } else { _push(``); } _push(`
举报投诉
`); ssrRenderList($setup.reasonList, (s, i) => { _push(`
${ssrInterpolate(s)}
`); }); _push(`
${ssrInterpolate(200 - $setup.alertText.length)}
`); if ($setup.respondPopState) { _push(ssrRenderComponent(_component_RespondPop, { respondDetail: $setup.respondDetail, respondPopObj: $setup.respondPopObj, onClosePopList: $setup.closePopList, onSelectEomji: $setup.selectEomji }, null, _parent)); } else { _push(``); } if ($setup.insertcoinsState) { _push(`
你共有 ${ssrInterpolate($setup.insert.coinMybalance)} 寄托币
`); ssrRenderList($setup.insert.coinConfig.list, (item) => { _push(`
${ssrInterpolate(item)} ${ssrInterpolate($setup.insert.coinConfig.unit)}
`); }); _push(`
顺便说点什么
取消
确定
`); } else { _push(``); } if ($setup.insertcoinsNoState) { _push(`
${ssrInterpolate($setup.insert.coinConfig.strategy.tips)}
${ssrInterpolate($setup.insert.coinConfig.strategy.button)}
`); } else { _push(``); } _push(`
`); } const _sfc_setup$2 = _sfc_main$2.setup; _sfc_main$2.setup = (props, ctx) => { const ssrContext = useSSRContext(); (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("app.vue"); return _sfc_setup$2 ? _sfc_setup$2(props, ctx) : void 0; }; const AppComponent = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["ssrRender", _sfc_ssrRender]]); const _sfc_main$1 = { __name: "nuxt-error-page", __ssrInlineRender: true, props: { error: Object }, setup(__props) { const props = __props; const _error = props.error; (_error.stack || "").split("\n").splice(1).map((line) => { const text = line.replace("webpack:/", "").replace(".vue", ".js").trim(); return { text, internal: line.includes("node_modules") && !line.includes(".cache") || line.includes("internal") || line.includes("new Promise") }; }).map((i) => `${i.text}`).join("\n"); const statusCode = Number(_error.statusCode || 500); const is404 = statusCode === 404; const statusMessage = _error.statusMessage ?? (is404 ? "Page Not Found" : "Internal Server Error"); const description = _error.message || _error.toString(); const stack = void 0; const _Error404 = defineAsyncComponent(() => import('./static/error-404-0f1ab5c8.mjs').then((r) => r.default || r)); const _Error = defineAsyncComponent(() => import('./static/error-500-081e433d.mjs').then((r) => r.default || r)); const ErrorTemplate = is404 ? _Error404 : _Error; return (_ctx, _push, _parent, _attrs) => { _push(ssrRenderComponent(unref(ErrorTemplate), mergeProps({ statusCode: unref(statusCode), statusMessage: unref(statusMessage), description: unref(description), stack: unref(stack) }, _attrs), null, _parent)); }; } }; const _sfc_setup$1 = _sfc_main$1.setup; _sfc_main$1.setup = (props, ctx) => { const ssrContext = useSSRContext(); (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("node_modules/nuxt/dist/app/components/nuxt-error-page.vue"); return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0; }; const ErrorComponent = _sfc_main$1; const _sfc_main = { __name: "nuxt-root", __ssrInlineRender: true, setup(__props) { const IslandRenderer = defineAsyncComponent(() => import('./static/island-renderer-ce17c7fc.mjs').then((r) => r.default || r)); const nuxtApp = /* @__PURE__ */ useNuxtApp(); nuxtApp.deferHydration(); nuxtApp.ssrContext.url; const SingleRenderer = false; provide(PageRouteSymbol, useRoute()); nuxtApp.hooks.callHookWith((hooks) => hooks.map((hook) => hook()), "vue:setup"); const error = useError(); onErrorCaptured((err, target, info) => { nuxtApp.hooks.callHook("vue:error", err, target, info).catch((hookError) => console.error("[nuxt] Error in `vue:error` hook", hookError)); { const p = nuxtApp.runWithContext(() => showError(err)); onServerPrefetch(() => p); return false; } }); const islandContext = nuxtApp.ssrContext.islandContext; return (_ctx, _push, _parent, _attrs) => { ssrRenderSuspense(_push, { default: () => { if (unref(error)) { _push(ssrRenderComponent(unref(ErrorComponent), { error: unref(error) }, null, _parent)); } else if (unref(islandContext)) { _push(ssrRenderComponent(unref(IslandRenderer), { context: unref(islandContext) }, null, _parent)); } else if (unref(SingleRenderer)) { ssrRenderVNode(_push, createVNode(resolveDynamicComponent(unref(SingleRenderer)), null, null), _parent); } else { _push(ssrRenderComponent(unref(AppComponent), null, null, _parent)); } }, _: 1 }); }; } }; const _sfc_setup = _sfc_main.setup; _sfc_main.setup = (props, ctx) => { const ssrContext = useSSRContext(); (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("node_modules/nuxt/dist/app/components/nuxt-root.vue"); return _sfc_setup ? _sfc_setup(props, ctx) : void 0; }; const RootComponent = _sfc_main; let entry; { entry = async function createNuxtAppServer(ssrContext) { const vueApp = createApp(RootComponent); const nuxt = createNuxtApp({ vueApp, ssrContext }); try { await applyPlugins(nuxt, plugins); await nuxt.hooks.callHook("app:created", vueApp); } catch (err) { await nuxt.hooks.callHook("app:error", err); nuxt.payload.error = nuxt.payload.error || err; } if (ssrContext == null ? void 0 : ssrContext._renderResponse) { throw new Error("skipping render"); } return vueApp; }; } const entry$1 = (ctx) => entry(ctx); export { _export_sfc as _, useRuntimeConfig as a, useHead as b, createError as c, entry$1 as default, navigateTo as n, useRouter as u }; //# sourceMappingURL=server.mjs.map