2024-07-30 12:32:18 +08:00

5870 lines
241 KiB
JavaScript

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: `<!DOCTYPE html><html><head><meta http-equiv="refresh" content="0; url=${encodedLoc}"></head></html>`,
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}<div id="${key.slice(1)}">${value}</div>`;
}
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(`<div class="respond-add flexcenter"${_scopeId}><img class="respond-add-icon"${ssrRenderAttr("src", _imports_0$1)}${_scopeId}></div>`);
} 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(`<div class="respond-list-box" style="${ssrRenderStyle({ "top": unref(top) + "px", "left": unref(left) + "px" })}"${_scopeId}><div class="respond-list-title"${_scopeId}>选择你的回应:</div><div class="respond-list"${_scopeId}><!--[-->`);
ssrRenderList(__props.riposteoptions, (item) => {
_push2(`<!--[--><!--[-->`);
ssrRenderList(item.data, (item2, key) => {
_push2(`<div class="respond-item"${_scopeId}>${jointriposte(key)}</div>`);
});
_push2(`<!--]--><!--]-->`);
});
_push2(`<!--]--></div></div>`);
} 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",
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(`<div${ssrRenderAttrs(mergeProps({ class: "respond-pop-mask" }, _attrs))}><div class="respond-pop">`);
if (JSON.stringify(__props.respondDetail) == "{}") {
_push(`<div class="respond-pop-no flexcenter"><img class="respond-title-icon" src="//app.gter.net/image/gter/offer/imgdetails/cross-grey.png?v=5.1.78_206050707"><img src="//app.gter.net/image/gter/offer/imgdetails/no-discussion.png?v=5.1.78_206050707" class="respond-pop-no-icon"><div class="respond-pop-no-text">- 暂无数据 -</div></div>`);
} else {
_push(`<!--[--><div class="respond-pop-title"> 共<span class="respond-pop-amount">${ssrInterpolate(__props.respondPopObj.user)}</span>人回应 <img class="respond-title-icon" src="//app.gter.net/image/gter/offer/imgdetails/cross-grey.png?v=5.1.78_206050707"></div><div class="respond-list"><!--[-->`);
ssrRenderList(__props.respondDetail, (item, index) => {
_push(`<div class="respond-item"><div class="${ssrRenderClass([{ "pitch": item.selected }, "respond-code"])}">${jointriposte(item.item)}</div><div class="respond-content flex1"><div class="respond-total">${ssrInterpolate(item.user.length)} 人作此回应</div><!--[-->`);
ssrRenderList(item.user, (item2, index2) => {
_push(`<div class="user-item"><img class="user-avatar"${ssrRenderAttr("src", item2.avatar)}> ${ssrInterpolate(item2.nickname || item2.username)}</div>`);
});
_push(`<!--]--></div></div>`);
});
_push(`<!--]--></div><!--]-->`);
}
_push(`</div></div>`);
};
}
};
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(/&nbsp;/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("<img") == -1)
content = info["content"];
content = content.replace(/<[^>]*>/g, "");
content = content.replace(/&nbsp;/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 `<img src="${img.src}">`;
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(/&nbsp;/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 $ajaxGET("/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
});
}
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) => {
console.log(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(`<!--[--><div id="append_parent"></div><div id="ajaxwaitid"></div><div>`);
_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(`<div class id="answer-app"><header class="flexacenter" id="pageHeader"><div class="flexacenter top"><a href="./index.html"><img class="logo" alt="寄托问答"${ssrRenderAttr("src", _imports_0)}></a><div class="right flexacenter flex1"><div class="searchInput flexacenter"><input class="input flex1" placeholder="输入搜索关键词"${ssrRenderAttr("value", $setup.keyword)}>`);
if ($setup.isSearchMode) {
_push(`<div class="clear-search flexacenter"><img class="cross-circle-black"${ssrRenderAttr("src", _imports_1)}><div class="halving-line"></div></div>`);
} else {
_push(`<!---->`);
}
_push(`<img class="input-icon"${ssrRenderAttr("src", _imports_2)}>`);
if ($setup.historicalSearchState) {
_push(`<div class="history-box"><div class="history-title">历史搜索</div><div class="history-list"><!--[-->`);
ssrRenderList($setup.historicalSearchList, (item, index) => {
_push(`<div class="history-item ellipsis">${ssrInterpolate(item)}</div>`);
});
_push(`<!--]--></div></div>`);
} else {
_push(`<!---->`);
}
_push(`</div><div class="btn-list flexacenter"><div class="item flex1">我的收藏</div><div class="item flex1">我的提问</div><div class="item flex1">我的回答</div></div><div class="add-btn flexcenter"><img class="add-icon"${ssrRenderAttr("src", _imports_3)}> 我要提问 </div></div></div><div class="${ssrRenderClass([{ "tab-list-fixed": $setup.tabListFixeState }, "tab-box flexcenter"])}"><div class="tab-list flexacenter"><!--[-->`);
ssrRenderList($setup.typeList, (item, index) => {
_push(`<!--[-->`);
if (index !== 0) {
_push(`<div class="halving-line">|</div>`);
} else {
_push(`<!---->`);
}
_push(`<!--[-->`);
ssrRenderList(item, (it) => {
_push(`<div class="${ssrRenderClass([{ pitch: $setup.typePitch == it["id"] }, "item flexcenter"])}">${ssrInterpolate(it["name"])}</div>`);
});
_push(`<!--]--><!--]-->`);
});
_push(`<!--]--></div></div></header><div class="${ssrRenderClass([{ "mode-list": $setup.type == "list" }, "main flexflex"])}"><div class="list-box"><div class="main-header" style="${ssrRenderStyle({ paddingLeft: $setup.type == "list" ? 0 : "calc((100vw - 1200px) / 2)" })}"><div class="flexacenter">`);
if ($setup.myModelState) {
_push(`<div class="search-keyword flexacenter"><div class="ellipsis">我的收藏/提问/回答</div><img class="search-keyword-cross"${ssrRenderAttr("src", _imports_4)}></div>`);
} else if ($setup.isSearchMode) {
_push(`<!--[--><div class="search-keyword flexacenter"><div class="ellipsis">${ssrInterpolate($setup.keywordText)}</div><img class="search-keyword-cross"${ssrRenderAttr("src", _imports_4)}></div><div class="total grid-item">共 ${ssrInterpolate($setup.total)} 条搜索结果</div><!--]-->`);
} else {
_push(`<div class="total grid-item">共 ${ssrInterpolate($setup.total)} 条问答</div>`);
}
_push(`</div>`);
if ($setup.type != "details") {
_push(`<div class="look-only flexcenter">`);
if ($setup.zeroreply == 0) {
_push(`<img class="look-icon"${ssrRenderAttr("src", _imports_34)}>`);
} else {
_push(`<img class="look-icon"${ssrRenderAttr("src", _imports_35)}>`);
}
_push(` 只看0回答 </div>`);
} else {
_push(`<!---->`);
}
_push(`</div><div class="list" id="list" style="${ssrRenderStyle([$setup.listStyle(), { height: $setup.listHeight + "px" }])}"><!--[-->`);
ssrRenderList($setup.list, (item, index) => {
_push(`<!--[-->`);
if (item["isrecom"] && $setup.type != "list") {
_push(`<a style="${ssrRenderStyle($setup.itemStyle(index, item["content"], item["type"]))}" class="${ssrRenderClass([{ pitch: index === $setup.pitchIndex, upLevel: index === $setup.pitchIndex - 1 }, "item grid-item flexflex"])}" target="_blank"${ssrRenderAttr("href", item["url"])}><img class="dot"${ssrRenderAttr("src", _imports_7)}><div class="content" style="${ssrRenderStyle({ width: $setup.type == "list" ? "531px" : "430px" })}"><div class="issue-title flexcenter"><div class="recommend flexcenter">推荐阅读</div><div class="issue ellipsis flex1">${ssrInterpolate(item["title"])}</div></div>`);
if (item["type"] == "thread") {
_push(`<!--[-->`);
if (item["message"]) {
_push(`<div class="answer ellipsis">${ssrInterpolate(item["message"])}</div>`);
} else {
_push(`<!---->`);
}
_push(`<!--]-->`);
} else if (item["type"] == "vote") {
_push(`<div class="answer" style="${ssrRenderStyle({ "height": "auto" })}"><!--[-->`);
ssrRenderList(item["option"].slice(0, 2), (ite, i) => {
_push(`<div>${ssrInterpolate($setup.replaceNumberObj[i] + ite)}</div>`);
});
_push(`<!--]--><div>${ssrInterpolate($setup.replaceNumberObj[2])} …</div></div>`);
} else {
_push(`<div class="answer ellipsis flexacenter">`);
if (item["profession"] || item["professional"]) {
_push(`<div class="value-value">${ssrInterpolate(item["profession"] || item["professional"])}</div>`);
} else {
_push(`<!---->`);
}
if (item["project"] || item["degree"]) {
_push(`<div class="value-value">${ssrInterpolate(item["project"] || item["degree"])}</div>`);
} else {
_push(`<!---->`);
}
if (item["interviewtime"] || item["semester"]) {
_push(`<div class="value-value">${ssrInterpolate(item["interviewtime"] || item["semester"])}</div>`);
} else {
_push(`<!---->`);
}
if (item["apply_results"]) {
_push(`<div class="value-value">${ssrInterpolate(item["apply_results"])}</div>`);
} else {
_push(`<!---->`);
}
_push(`</div>`);
}
_push(`<div class="bottom flexacenter"><div class="typename flexcenter">${ssrInterpolate(item["typename"])}</div></div></div></a>`);
} else {
_push(`<a style="${ssrRenderStyle($setup.itemStyle(index, item["content"]))}" class="${ssrRenderClass([[{ pitch: index === $setup.pitchIndex, upLevel: index === $setup.pitchIndex - 1 }, `item${index}`], "item grid-item flexflex"])}"${ssrRenderAttr("href", $setup.setItemUrl(item["uniqid"]))}><img class="dot"${ssrRenderAttr("src", _imports_7)}><div class="content" style="${ssrRenderStyle({ width: $setup.type == "list" ? "531px" : "430px" })}"><div class="issue-title flexcenter">`);
if (item["ishot"] == 1) {
_push(`<img class="hot-icon"${ssrRenderAttr("src", _imports_8)}>`);
} else {
_push(`<!---->`);
}
_push(`<div class="issue ellipsis flex1">${ssrInterpolate(item["title"])}</div></div>`);
if (item["content"]) {
_push(`<div class="answer ellipsis">${ssrInterpolate(item["content"])}</div>`);
} else {
_push(`<!---->`);
}
_push(`<div class="bottom flexacenter">`);
if (item["typename"]) {
_push(`<div class="typename flexcenter">${ssrInterpolate(item["typename"])}</div>`);
} else {
_push(`<div></div>`);
}
_push(`<div class="flexacenter"><div class="quantity">${ssrInterpolate($setup.handleDate(item.publicationdate, false))}提问</div><div class="longString"></div><div class="quantity">${ssrInterpolate(item["answers"] == 0 ? "暂无回答" : "共" + item["answers"] + "个回答")}</div>`);
if ($setup.type == "list") {
_push(`<!--[--><div class="longString"></div><div class="answer-btn">我来回答</div><!--]-->`);
} else {
_push(`<!---->`);
}
_push(`</div></div></div></a>`);
}
_push(`<!--]-->`);
});
_push(`<!--]--></div>`);
if ($setup.inTheEndState) {
_push(`<div class="bottom-tps" style="${ssrRenderStyle($setup.bottomTpsStyle())}">- 到底了 -</div>`);
} else {
_push(`<!---->`);
}
if ($setup.myModelState) {
_push(`<div class="bottom-tps" style="${ssrRenderStyle($setup.bottomTpsStyle())}"></div>`);
} else {
_push(`<!---->`);
}
if ($setup.isListEmptyState && $setup.list.length == 0) {
_push(`<div class="empty-box flexcenter"><div class="dot-list flexacenter"><img class="item"${ssrRenderAttr("src", _imports_9)}><img class="item"${ssrRenderAttr("src", _imports_9)}><img class="item"${ssrRenderAttr("src", _imports_9)}><img class="item"${ssrRenderAttr("src", _imports_10)}><img class="item"${ssrRenderAttr("src", _imports_10)}><img class="item"${ssrRenderAttr("src", _imports_10)}></div><img class="empty-icon"${ssrRenderAttr("src", _imports_11)}>`);
if ($setup.isSearchMode) {
_push(`<div class="empty-hint">没有找到相关结果,请更换搜索关键词</div>`);
} else {
_push(`<div class="empty-hint">暂无数据</div>`);
}
_push(`</div>`);
} else {
_push(`<!---->`);
}
_push(`</div>`);
if ($setup.type == "details") {
_push(`<div class="details-area-box flexflex">`);
if ($setup.detailLoading) {
_push(`<div class="loading-bj flexcenter"><svg t="1642133548066" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2597" width="200" height="200"><path d="M512 249.5c-22.5 0-37.5-15-37.5-37.5V99.5c0-22.5 15-37.5 37.5-37.5s37.5 15 37.5 37.5V212c0 22.5-15 37.5-37.5 37.5z m0 712.5c-22.5 0-37.5-15-37.5-37.5V812c0-22.5 15-37.5 37.5-37.5s37.5 15 37.5 37.5v112.5c0 22.5-15 37.5-37.5 37.5zM212 549.5H99.5C77 549.5 62 534.5 62 512s15-37.5 37.5-37.5H212c22.5 0 37.5 15 37.5 37.5s-15 37.5-37.5 37.5z m712.5 0H812c-22.5 0-37.5-15-37.5-37.5s15-37.5 37.5-37.5h112.5c22.5 0 37.5 15 37.5 37.5s-15 37.5-37.5 37.5z m-153.75-150c-11.25 0-26.25-7.5-33.75-18.75-11.25-18.75-3.75-41.25 15-52.5L849.5 272c18.75-11.25 41.25-3.75 52.5 15s3.75 41.25-15 52.5l-97.5 56.25c-3.75 3.75-11.25 3.75-18.75 3.75z m-615 356.25c-11.25 0-26.25-7.5-33.75-18.75-11.25-18.75-3.75-41.25 15-52.5l97.5-56.25c18.75-11.25 41.25-3.75 52.5 15s3.75 41.25-15 52.5L174.5 752c-7.5 3.75-15 3.75-18.75 3.75z m506.25-465c-7.5 0-11.25 0-18.75-3.75-18.75-11.25-22.5-33.75-15-52.5L684.5 137c11.25-18.75 33.75-22.5 52.5-15 18.75 11.25 22.5 33.75 15 52.5L695.75 272c-7.5 11.25-22.5 18.75-33.75 18.75z m-356.25 615c-7.5 0-11.25 0-18.75-3.75-18.75-11.25-22.5-33.75-15-52.5l56.25-97.5c11.25-15 33.75-22.5 52.5-11.25s22.5 33.75 15 52.5L339.5 887c-7.5 11.25-22.5 18.75-33.75 18.75z m-52.5-506.25c-7.5 0-15 0-18.75-3.75L137 339.5c-18.75-11.25-26.25-33.75-15-52.5s33.75-22.5 52.5-15l97.5 56.25c18.75 11.25 22.5 33.75 11.25 52.5-3.75 11.25-18.75 18.75-30 18.75z m615 356.25c-7.5 0-11.25 0-18.75-3.75L752 695.75c-18.75-11.25-22.5-33.75-15-52.5 11.25-18.75 33.75-22.5 52.5-15L887 684.5c18.75 11.25 22.5 33.75 15 52.5-7.5 11.25-18.75 18.75-33.75 18.75zM362 290.75c-11.25 0-26.25-7.5-33.75-18.75L272 174.5c-7.5-18.75-3.75-41.25 15-52.5s41.25-3.75 52.5 15l56.25 97.5c7.5 18.75 3.75 41.25-15 48.75-7.5 3.75-11.25 7.5-18.75 7.5z m356.25 615c-11.25 0-26.25-7.5-33.75-18.75l-56.25-97.5c-11.25-18.75-3.75-41.25 15-52.5s41.25-3.75 52.5 15L752 849.5c11.25 18.75 3.75 41.25-15 52.5-7.5 3.75-11.25 3.75-18.75 3.75z" p-id="2598" fill="#26d79f"></path></svg></div>`);
} else {
_push(`<!---->`);
}
_push(`<div class="details-box flexflex"><div class="close-box"><div class="close-circle flexcenter"><img class="close-icon"${ssrRenderAttr("src", _imports_12)}><img class="details-cross-icon"${ssrRenderAttr("src", _imports_13)}></div></div><div class="details-issue"><img class="qq"${ssrRenderAttr("src", _imports_14)}><div class="titletitle">${ssrInterpolate($setup.detailsInfo["title"])}</div>`);
if ($setup.detailsInfo["content"]) {
_push(`<div class="hint">${$setup.detailsInfo["content"]}</div>`);
} else {
_push(`<!---->`);
}
_push(`<div class="info-box flexacenter"><div class="user-info flexacenter">`);
if ($setup.detailsInfo["avatar"]) {
_push(`<img class="avatar"${ssrRenderAttr("src", $setup.detailsInfo["avatar"])}>`);
} else {
_push(`<!---->`);
}
_push(`<div class="user-name">${ssrInterpolate($setup.detailsInfo["nickname"])}</div>`);
if ($setup.avatarState) {
_push(`<div class="avatar-box flexflex"><a class="avatar-item flexcenter" target="_blank"><img class="avatar-icon"${ssrRenderAttr("src", _imports_15)}> 发送信息 </a><a class="avatar-item flexcenter" target="_blank"><img class="avatar-icon"${ssrRenderAttr("src", _imports_16)}> TA的主页 </a><div class="avatar-mask"></div></div>`);
} else {
_push(`<!---->`);
}
_push(`</div><div class="time">${ssrInterpolate($setup.handleDate($setup.detailsInfo["publicationdate"]))}</div></div><div class="operate-box flexacenter"><div class="${ssrRenderClass([{ white: $setup.detailsInfo["answers"] == 0 }, "answer-btn flexcenter"])}"><img class="answer-btn-icon answer-icon-edit"${ssrRenderAttr("src", _imports_17)}><img class="answer-btn-icon answer-icon-white"${ssrRenderAttr("src", _imports_18)}> 我来回答 </div><div class="operate-list flexacenter"><div class="operate-item flexacenter" style="${ssrRenderStyle({ "cursor": "auto" })}"><img class="operate-icon operate-collect-icon" style="${ssrRenderStyle({ "width": "13px", "height": "8px" })}"${ssrRenderAttr("src", _imports_19)}> ${ssrInterpolate($setup.detailsInfo["viewnum"] || 0)}</div>`);
_push(ssrRenderComponent(_component_ClientOnly, null, {}, _parent));
_push(`<div class="operate-item flexacenter operate-transmit"><img class="operate-icon operate-transmit-icon"${ssrRenderAttr("src", _imports_22)}> 转发 `);
if ($setup.questionsTransmitState) {
_push(`<div class="transmit-box flexflex" style="${ssrRenderStyle({ "z-index": "10" })}"><img class="cross-icon"${ssrRenderAttr("src", _imports_13)}><div class="transmit-left transmit-web"><div class="transmit-title">转发网页版</div><div class="transmit-content"><div class="transmit-headline">${ssrInterpolate($setup.detailsInfo["title"])}</div><div class="transmit-url">${ssrInterpolate($setup.getCurrentUrl())}</div></div><div class="transmit-web-btn flexcenter">复制链接</div></div><div class="transmit-right transmit-mini"><div class="transmit-title">转发小程序版</div><div class="transmit-content flexcenter"><img class="transmit-mini-img"${ssrRenderAttr("src", $setup.detailShare["qrcode"])}><div class="flexcenter"><img class="give-sweep"${ssrRenderAttr("src", _imports_23)}> 扫码转发该问答 </div></div></div></div>`);
} else {
_push(`<!---->`);
}
_push(`</div></div></div></div><div class="answer-total-amount">共 ${ssrInterpolate($setup.detailsInfo["answers"])} 个回答</div><!--[-->`);
ssrRenderList($setup.answerList, (item, index) => {
var _a, _b, _c, _d, _e, _f, _g;
_push(`<div class="answer-box-item"><img class="aa"${ssrRenderAttr("src", _imports_24)}>`);
if (item["ismyself"] == 1) {
_push(`<div class="edit-btn flexcenter"><img class="edit-icon"${ssrRenderAttr("src", _imports_17)}></div>`);
} else {
_push(`<!---->`);
}
_push(`<div class="answer-text">${item["content"]}</div><div class="info-box flexacenter"><div class="user-info flexacenter"><img class="avatar"${ssrRenderAttr("src", item["avatar"])}><div class="user-name">${ssrInterpolate(item["nickname"])}</div>`);
if (item["groupid"] == 14) {
_push(`<img class="homeShare"${ssrRenderAttr("src", _imports_25)}>`);
} else {
_push(`<!---->`);
}
if (item["avatarState"]) {
_push(`<div class="avatar-box flexflex"><a class="avatar-item flexcenter" target="_blank"><img class="avatar-icon"${ssrRenderAttr("src", _imports_15)}> 发送信息 </a><a class="avatar-item flexcenter" target="_blank"><img class="avatar-icon"${ssrRenderAttr("src", _imports_16)}> TA的主页 </a><div class="avatar-mask"></div></div>`);
} else {
_push(`<!---->`);
}
_push(`</div><div class="time">${ssrInterpolate($setup.handleDate(item["publicationdate"]))}</div></div><div class="operate-box flexacenter"><div class="interaction-box flexacenter flex1"><div class="${ssrRenderClass([{ "pitch": item.tab == "riposte" }, "interaction-item flexacenter"])}">`);
if ((_a = item.ripostecount) == null ? void 0 : _a.total) {
_push(`<!--[--> 回应 <span class="amount">${ssrInterpolate((_b = item.ripostecount) == null ? void 0 : _b.total)}</span><!--]-->`);
} else {
_push(`<!--[-->添加回应<!--]-->`);
}
_push(`</div><div class="${ssrRenderClass([{ "pitch": item.tab == "comment" }, "interaction-item flexacenter"])}">`);
if (item.commentnum != 0) {
_push(`<!--[--> 讨论 <span class="amount">${ssrInterpolate(item.commentnum)}</span><!--]-->`);
} else {
_push(`<!--[-->添加讨论<!--]-->`);
}
_push(`</div><div class="${ssrRenderClass([{ "pitch": item.tab == "coin" }, "interaction-item flexacenter"])}">`);
if (item.coinnum > 0) {
_push(`<!--[--> 投币 <span class="amount">${ssrInterpolate(item.coinnum)}</span><!--]-->`);
} else {
_push(`<!--[-->给TA投币<!--]-->`);
}
_push(`</div></div><div class="operate-list flexacenter"><div class="operate-item flexacenter">`);
if (item["iscollection"] == 1) {
_push(`<img class="operate-icon operate-collect-icon"${ssrRenderAttr("src", _imports_21)}>`);
} else {
_push(`<img class="operate-icon operate-collect-icon"${ssrRenderAttr("src", _imports_20)}>`);
}
_push(` ${ssrInterpolate(item["collectionnum"] == 0 ? "收藏" : item["collectionnum"])}</div><div class="operate-item operate-transmit flexacenter"><img class="operate-icon operate-transmit-icon"${ssrRenderAttr("src", _imports_22)}> 转发 `);
if (item["transmitState"]) {
_push(`<div class="transmit-box flexflex"><img class="cross-icon"${ssrRenderAttr("src", _imports_13)}><div class="transmit-left transmit-web"><div class="transmit-title">转发网页版</div><div class="transmit-content"><div class="transmit-headline">${ssrInterpolate($setup.detailsInfo["title"])}</div><div class="transmit-url">${ssrInterpolate($setup.getCurrentUrl())}</div></div><div class="transmit-web-btn flexcenter">复制链接</div></div><div class="transmit-right transmit-mini"><div class="transmit-title">转发小程序版</div><div class="transmit-content flexcenter"><img class="transmit-mini-img"${ssrRenderAttr("src", item["share"]["qrcode"])}><div class="flexcenter"><img class="give-sweep"${ssrRenderAttr("src", _imports_23)}> 扫码转发该问答 </div></div></div></div>`);
} else {
_push(`<!---->`);
}
_push(`</div></div></div>`);
if (item.tab == "coin") {
_push(`<div class="answer-coins"><div class="coins-show flexacenter"><img class="coins-icon"${ssrRenderAttr("src", _imports_26)}><div class="coins-text flexacenter flex1"> 该回答已获 <span class="quantity">${ssrInterpolate(item.coinnum)}</span> 个寄托币 </div><div class="coins-btn flexcenter">给TA投币</div></div>`);
if (((_c = item.ranklist) == null ? void 0 : _c.length) > 0) {
_push(`<div class="answer-coins-list"><!--[-->`);
ssrRenderList(item.ranklist, (item2, index2) => {
_push(`<div class="answer-coins-item flexacenter"><div class="ranking">${ssrInterpolate(index2 + 1)}</div><div class="coins-user flexacenter flex1"><img class="coins-user-img"${ssrRenderAttr("src", item2.avatar)}><div class="coins-user-name flex1">${ssrInterpolate(item2.nickname)}</div></div><div class="bi flexacenter"><div class="bi-amount">${ssrInterpolate(item2.coinnum)}</div> 币 </div></div>`);
});
_push(`<!--]--></div>`);
} else {
_push(`<!---->`);
}
_push(`</div>`);
} else {
_push(`<!---->`);
}
if (item.tab == "riposte") {
_push(`<div class="respond-area"><!--[-->`);
ssrRenderList(item.ripostelist, (it, i) => {
_push(`<div class="${ssrRenderClass([{ "pitch": it.selected }, "respond-already-item flexacenter"])}"><div class="code flexacenter">${$setup.jointriposte(it.item)}</div> ${ssrInterpolate(it.num)}</div>`);
});
_push(`<!--]-->`);
if (((_d = item.ripostelist) == null ? void 0 : _d.length) <= 3) {
_push(`<div class="respond-select flexacenter"><!--[-->`);
ssrRenderList(item.randomEmojis.slice(0, ((_e = item.ripostelist) == null ? void 0 : _e.length) == 0 ? 8 : 5), (it, i) => {
_push(`<div class="respond-select-item">${$setup.jointriposte(it)}</div>`);
});
_push(`<!--]-->`);
_push(ssrRenderComponent(_component_RespondAdd, {
riposteoptions: item.riposteoptions,
onSelectEomji: $setup.selectEomji,
index
}, null, _parent));
_push(`</div>`);
} 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(`<div class="respond-list-btn"> 共 <span class="respond-list-btn-amount">${ssrInterpolate((_g = item.ripostecount) == null ? void 0 : _g.user)}</span> 人回应 <img class="respond-list-btn-icon"${ssrRenderAttr("src", _imports_27)}></div>`);
} else {
_push(`<!---->`);
}
_push(`</div>`);
} else {
_push(`<!---->`);
}
if (item.tab == "comment") {
_push(`<div class="comments-area"><div class="post-comment-box"><div class="${ssrRenderClass([{ "post-comment-radius": item.commentnum == 0 }, "post-comment flexacenter"])}"><textarea class="post-input flex1" placeholder="说点什么…">${ssrInterpolate(item["commentInput"])}</textarea><div class="post-ok flexcenter">OK</div></div></div>`);
if (item["commentList"] && item["commentList"].length != 0) {
_push(`<div class="${ssrRenderClass([{ "show-one-comment": item["showOneCommentState"] }, "comments-box"])}"><!--[-->`);
ssrRenderList(item["commentList"], (it, ind) => {
_push(`<div class="comments-item"><div class="comments-header flexacenter"><div class="comments-header-left flexacenter"><img class="comments-avatar"${ssrRenderAttr("src", it["avatar"])}><div class="comments-username">${ssrInterpolate(it["nickname"])}</div><div class="comments-time">${ssrInterpolate($setup.handleDate(it["timestamp"]))}</div>`);
if (it["questioner"] == 1) {
_push(`<div class="comments-identity">提问者</div>`);
} else if (it["isauthor"] == 1) {
_push(`<div class="comments-identity">回答者</div>`);
} else {
_push(`<!---->`);
}
if (it["avatarState"]) {
_push(`<div class="avatar-box flexflex"><a class="avatar-item flexcenter" target="_blank"><img class="avatar-icon"${ssrRenderAttr("src", _imports_15)}> 发送信息 </a><a class="avatar-item flexcenter" target="_blank"><img class="avatar-icon"${ssrRenderAttr("src", _imports_16)}> TA的主页 </a><div class="avatar-mask"></div></div>`);
} else {
_push(`<!---->`);
}
_push(`</div><div class="comments-header-right flexacenter"><div class="menu-box flexacenter"><img class="menu-icon"${ssrRenderAttr("src", _imports_28)}><div class="report-box flexcenter">举报</div></div><img class="comment-icon"${ssrRenderAttr("src", _imports_29)}><div class="flexacenter like-box">`);
if (it["islike"] == 0) {
_push(`<img class="like-icon"${ssrRenderAttr("src", _imports_30)}>`);
} else {
_push(`<img class="like-icon"${ssrRenderAttr("src", _imports_31)}>`);
}
_push(`<div class="like-quantity">${ssrInterpolate(it["likenum"] || 0)}</div></div></div></div><div class="comments-content"><div class="comments-text">${ssrInterpolate(it["content"])}</div>`);
if (it["childState"]) {
_push(`<div class="comments-input-box flexacenter"><div class="comments-input flexflex"><textarea class="flex1" placeholder="回复">${ssrInterpolate(it["commentInput"])}</textarea><div class="comments-btn flexcenter">发送</div></div><img class="forkfork"${ssrRenderAttr("src", _imports_13)}></div>`);
} else {
_push(`<!---->`);
}
_push(`</div>`);
if (it["child"].length != 0) {
_push(`<div class="child-comments"><!--[-->`);
ssrRenderList(it["child"], (ite, i) => {
_push(`<div class="comments-item"><div class="comments-header flexacenter"><div class="comments-header-left flexacenter"><img class="comments-avatar"${ssrRenderAttr("src", ite["avatar"])}><div class="comments-username">${ssrInterpolate(ite["nickname"])}</div><div class="comments-time">${ssrInterpolate($setup.handleDate(ite["timestamp"]))}</div>`);
if (ite["questioner"] == 1) {
_push(`<div class="comments-identity">提问者</div>`);
} else if (ite["isauthor"] == 1) {
_push(`<div class="comments-identity">回答者</div>`);
} else {
_push(`<!---->`);
}
if (ite["avatarState"]) {
_push(`<div class="avatar-box flexflex"><a class="avatar-item flexcenter" target="_blank"><img class="avatar-icon"${ssrRenderAttr("src", _imports_15)}> 发送信息 </a><a class="avatar-item flexcenter" target="_blank"><img class="avatar-icon"${ssrRenderAttr("src", _imports_16)}> TA的主页 </a><div class="avatar-mask"></div></div>`);
} else {
_push(`<!---->`);
}
_push(`</div><div class="comments-header-right flexacenter"><div class="menu-box flexacenter"><img class="menu-icon"${ssrRenderAttr("src", _imports_28)}><div class="report-box flexcenter">举报</div></div><img class="comment-icon"${ssrRenderAttr("src", _imports_29)}><div class="flexacenter like-box">`);
if (ite["islike"] == 0) {
_push(`<img class="like-icon"${ssrRenderAttr("src", _imports_30)}>`);
} else {
_push(`<img class="like-icon"${ssrRenderAttr("src", _imports_31)}>`);
}
_push(`<div class="like-quantity">${ssrInterpolate(ite["likenum"] || 0)}</div></div></div></div><div class="comments-content"><div class="comments-text">`);
if (JSON.stringify(ite["reply"]) != "[]") {
_push(`<div class="comments-reply">@${ssrInterpolate(ite["reply"]["nickname"])}</div>`);
} else {
_push(`<!---->`);
}
_push(` ${ssrInterpolate(ite["content"])}</div>`);
if (ite["childState"]) {
_push(`<div class="comments-input-box flexacenter"><div class="comments-input flexflex"><textarea class="flex1" placeholder="回复">${ssrInterpolate(ite["commentInput"])}</textarea><div class="comments-btn flexcenter">发送</div></div><img class="forkfork"${ssrRenderAttr("src", _imports_13)}></div>`);
} else {
_push(`<!---->`);
}
_push(`</div></div>`);
});
_push(`<!--]-->`);
if (it["childnum"] > it["child"].length) {
_push(`<div class="comments-also flexacenter"><div class>还有${ssrInterpolate(it["childnum"] - 1)}条回复</div><img class="also-icon"${ssrRenderAttr("src", _imports_33)}></div>`);
} else {
_push(`<!---->`);
}
_push(`</div>`);
} else {
_push(`<!---->`);
}
_push(`</div>`);
});
_push(`<!--]-->`);
if (item["showOneCommentState"] && item.commentnum > 2) {
_push(`<div class="more-comments flexcenter"> 更多讨论 <img class="more-comments-icon"${ssrRenderAttr("src", _imports_33)}></div>`);
} else {
_push(`<!---->`);
}
_push(`</div>`);
} else {
_push(`<!---->`);
}
_push(`</div>`);
} else {
_push(`<!---->`);
}
_push(`</div>`);
});
_push(`<!--]-->`);
if ($setup.answerList.length > 0) {
_push(`<div class="copyright flexcenter">· 著作权归作者所有 ·</div>`);
} else {
_push(`<!---->`);
}
if (!$setup.isNeedLogin) {
_push(`<div class="your-answer-box"><div class="your-answer-header flexacenter">您的答案</div><div class="${ssrRenderClass([{ placeholder: $setup.yourAnswerPlaceholderState }, "your-answer-textarea"])}" contenteditable="true">${$setup.yourAnswer["text"]}</div><div class="flexacenter your-answer-bottom"><div class="option-box flexacenter">`);
if ($setup.yourAnswer["anonymous"] == 0) {
_push(`<img class="option-icon"${ssrRenderAttr("src", _imports_34)}>`);
} else {
_push(`<img class="option-icon"${ssrRenderAttr("src", _imports_35)}>`);
}
_push(` 匿名发表 </div><div class="your-answer-submit flexcenter">提交回答</div></div></div>`);
} else {
_push(`<!---->`);
}
if ($setup.isNeedLogin && $setup.answerList.length == 0) {
_push(`<div class="answer-empty-box flexcenter"><div class="empty-box flexcenter"><div class="dot-list flexacenter"><!--[-->`);
ssrRenderList(3, (item) => {
_push(`<img class="dot-item"${ssrRenderAttr("src", _imports_9)}>`);
});
_push(`<!--]--><!--[-->`);
ssrRenderList(3, (item) => {
_push(`<img class="dot-item"${ssrRenderAttr("src", _imports_10)}>`);
});
_push(`<!--]--></div><img class="empty-icon"${ssrRenderAttr("src", _imports_11)}></div><div class="empty-hint">我在等待你的回答</div></div>`);
} else {
_push(`<!---->`);
}
_push(`<div class="mobile-phone-check flexcenter"><img class="QRCode-icon"${ssrRenderAttr("src", _imports_36)} alt> 手机查看该问答 <div class="QRCode-pop flexcenter"><img class="offer-mini-QRcode"${ssrRenderAttr("src", $setup.detailShare["qrcode"])}><div class="QRCode-hint flexacenter"><img class="QRCode-img"${ssrRenderAttr("src", _imports_23)}> 微信扫一扫 </div></div></div></div></div>`);
} else {
_push(`<!---->`);
}
_push(`</div>`);
if ($setup.myType) {
_push(`<div class="popover-mask my-popover flexcenter"><div class="popover-box flexflex"><img class="cross-icon"${ssrRenderAttr("src", _imports_13)}><div class="tab-list flexcenter"><div class="${ssrRenderClass([{ pitch: $setup.myType == "collect" }, "tab-item flexacenter"])}"> 我的收藏 <div class="quantity">${ssrInterpolate($setup.myCollectionCount || $setup.myCount["collect"] || 0)}</div></div><div class="long-string"></div><div class="${ssrRenderClass([{ pitch: $setup.myType == "questions" }, "tab-item flexacenter"])}"> 我的提问 <div class="quantity">${ssrInterpolate($setup.myQuestionsCount || $setup.myCount["questions"] || 0)}</div></div><div class="long-string"></div><div class="${ssrRenderClass([{ pitch: $setup.myType == "answers" }, "tab-item flexacenter"])}"> 我的回答 <div class="quantity">${ssrInterpolate($setup.myAnswerCount || $setup.myCount["answer"] || 0)}</div></div></div>`);
if ($setup.myType == "collect" && $setup.myCollectionList.length == 0 || $setup.myType == "answers" && $setup.myAnswerList.length == 0 || $setup.myType == "questions" && $setup.myQuestionsList.length == 0) {
_push(`<div class="empty-box flexcenter"><div class="dot-list flexacenter"><img class="item"${ssrRenderAttr("src", _imports_9)}><img class="item"${ssrRenderAttr("src", _imports_9)}><img class="item"${ssrRenderAttr("src", _imports_9)}><img class="item"${ssrRenderAttr("src", _imports_10)}><img class="item"${ssrRenderAttr("src", _imports_10)}><img class="item"${ssrRenderAttr("src", _imports_10)}></div><img class="empty-icon"${ssrRenderAttr("src", _imports_11)}><div class="empty-hint">暂无内容</div></div>`);
} else {
_push(`<!---->`);
}
if ($setup.myType == "collect" && $setup.myCollectionList.length != 0) {
_push(`<div class="content-box collect-list"><!--[-->`);
ssrRenderList($setup.myCollectionList, (item, index) => {
_push(`<div class="item flexflex">`);
if (item.type == "askanswercollection") {
_push(`<!--[--><div class="icon a flexcenter">A</div><div class="centre flexflex flex1"><div class="titletitle ellipsis">${item["data"]["content"]}</div><div class="text ellipsis">提问:${ssrInterpolate(item["data"]["title"])}</div></div><div class="delete-box flexacenter"><img class="delete-icon"${ssrRenderAttr("src", _imports_37)}></div><!--]-->`);
} else {
_push(`<!--[--><div class="icon q flexcenter">Q</div><div class="centre flexflex flex1"><div class="titletitle ellipsis">${ssrInterpolate(item["data"]["title"])}</div><div class="text ellipsis">${ssrInterpolate(item["data"]["answers"] > 0 ? "共" + item["data"]["answers"] + "个回答" : "暂无回答")}</div></div><div class="delete-box flexacenter"><img class="delete-icon"${ssrRenderAttr("src", _imports_37)}></div><!--]-->`);
}
_push(`</div>`);
});
_push(`<!--]--></div>`);
} else {
_push(`<!---->`);
}
if ($setup.myType == "answers" && $setup.myAnswerList.length != 0) {
_push(`<div class="content-box answers-list"><!--[-->`);
ssrRenderList($setup.myAnswerList, (item, index) => {
_push(`<div class="item flexflex"><div class="icon a flexcenter">A</div><div class="centre flexflex flex1"><div class="info flexacenter"><div class="name">${ssrInterpolate(item["nickname"])}</div><div class="time">${ssrInterpolate($setup.handleDate(item["publicationdate"]))}</div></div><div class="titletitle ellipsis">${item["content"]}</div><div class="text ellipsis">提问:${ssrInterpolate(item["title"])}</div></div><div class="operate-box flexacenter"><div class="state-box flexacenter"><div class="text">${ssrInterpolate(item["anonymous"] == 0 ? "公开" : "匿名")}</div><img class="arrows"${ssrRenderAttr("src", _imports_38)}>`);
if (item["popupState"]) {
_push(`<div class="state-popup flexflex"><div class="${ssrRenderClass([{ pitch: item["anonymous"] == 0 }, "state-popup-item flexacenter flex1"])}"><div class>公开发表</div><img class="state-popup-icon"${ssrRenderAttr("src", _imports_39)}></div><div class="${ssrRenderClass([{ pitch: item["anonymous"] == 1 }, "state-popup-item flexacenter flex1"])}"><div class>匿名发表</div><img class="state-popup-icon"${ssrRenderAttr("src", _imports_39)}></div></div>`);
} else {
_push(`<!---->`);
}
_push(`</div><img class="edit-icon"${ssrRenderAttr("src", _imports_17)}></div></div>`);
});
_push(`<!--]--></div>`);
} else {
_push(`<!---->`);
}
if ($setup.myType == "questions" && $setup.myQuestionsList.length != 0) {
_push(`<div class="content-box questions-list"><!--[-->`);
ssrRenderList($setup.myQuestionsList, (item, index) => {
_push(`<div class="item flexflex"><div class="icon q flexcenter">Q</div><div class="centre flexflex flex1"><div class="info flexacenter"><div class="name">${ssrInterpolate(item["nickname"])}</div><div class="time">${ssrInterpolate($setup.handleDate(item["publicationdate"]))}</div></div><div class="titletitle ellipsis">${ssrInterpolate(item["title"])}</div><div class="text flexacenter">`);
if (item["authornewnum"] > 0) {
_push(`<div class="new-answer flexacenter"> 有${ssrInterpolate(item["authornewnum"])}个新回答 <div class="long-string"></div></div>`);
} else {
_push(`<!---->`);
}
_push(` ${ssrInterpolate(item["answers"] == 0 ? "暂无回答" : "共" + item["answers"] + "个回答")}</div></div><div class="operate-box flexacenter"><div class="state-box flexacenter"><div class="text">${ssrInterpolate(item["anonymous"] == 0 ? "公开" : "匿名")}</div><img class="arrows"${ssrRenderAttr("src", _imports_38)}>`);
if (item["popupState"]) {
_push(`<div class="state-popup flexflex"><div class="${ssrRenderClass([{ pitch: item["anonymous"] == 0 }, "state-popup-item flexacenter flex1"])}"><div class>公开发表</div><img class="state-popup-icon"${ssrRenderAttr("src", _imports_39)}></div><div class="${ssrRenderClass([{ pitch: item["anonymous"] == 1 }, "state-popup-item flexacenter flex1"])}"><div class>匿名发表</div><img class="state-popup-icon"${ssrRenderAttr("src", _imports_39)}></div></div>`);
} else {
_push(`<!---->`);
}
_push(`</div></div></div>`);
});
_push(`<!--]--></div>`);
} else {
_push(`<!---->`);
}
_push(`</div></div>`);
} else {
_push(`<!---->`);
}
if ($setup.questionsSetp) {
_push(`<div class="popover-mask flexcenter issue-box">`);
if ($setup.questionsSetp == 1) {
_push(`<div class="choosing-theme"><div class="titletitle">选择提问所属主题</div><div class="theme-list flexflex"><!--[-->`);
ssrRenderList($setup.questionsTypeList, (item, index) => {
_push(`<div class="theme-stair-box flexflex"><!--[-->`);
ssrRenderList(item, (item2) => {
_push(`<div class="theme-item flexcenter">${ssrInterpolate(item2.name)}</div>`);
});
_push(`<!--]--></div>`);
});
_push(`<!--]--></div></div>`);
} else {
_push(`<div class="issue-form"><img class="issue-bj"${ssrRenderAttr("src", _imports_40)}><div class="flexcenter q">Q</div><img class="cross-icon"${ssrRenderAttr("src", _imports_13)}><div class="issue-input"><textarea placeholder="一句话描述问题,以问号结尾">${ssrInterpolate($setup.questionsObj.title)}</textarea></div><textarea class="issue-replenish" placeholder="欢迎补充,清晰表达问题的关键点,可获得更有效的解答(非必填)">${ssrInterpolate($setup.questionsObj.content)}</textarea><div class="issue-bottom flexacenter"><div class="option-box flexacenter" style="${ssrRenderStyle({ "color": "#333" })}">`);
if ($setup.questionsObj.anonymous == 0) {
_push(`<img class="option-icon"${ssrRenderAttr("src", _imports_34)}>`);
} else {
_push(`<img class="option-icon"${ssrRenderAttr("src", _imports_35)}>`);
}
_push(` 匿名发表 <div class style="${ssrRenderStyle({ "color": "#aaa" })}">(发布后只能修改是否匿名)</div></div><div class="issue-btn flexcenter">发布问题</div></div></div>`);
}
_push(`</div>`);
} else {
_push(`<!---->`);
}
if ($setup.IAnswerEditState) {
_push(`<div class="popover-mask flexcenter"><div class="edit-answers"><img class="close-icon"${ssrRenderAttr("src", _imports_13)}><div class="titletitle">编辑回答</div><div class="${ssrRenderClass([{ placeholder: $setup.questionPlaceholderState }, "question-textarea"])}" contenteditable="true">${$setup.IAnswerInfo["text"]}</div><div class="issue-bottom flexacenter"><div class="option-box flexacenter">`);
if ($setup.IAnswerInfo["anonymous"] == 0) {
_push(`<img class="option-icon"${ssrRenderAttr("src", _imports_34)}>`);
} else {
_push(`<img class="option-icon"${ssrRenderAttr("src", _imports_35)}>`);
}
_push(` 匿名发表 </div><div class="issue-btn flexcenter">提交回答</div></div></div></div>`);
} else {
_push(`<!---->`);
}
if ($setup.IAnswerState) {
_push(`<div class="popover-mask flexcenter"><div class="i-answer-box flexflex"><img class="close-icon"${ssrRenderAttr("src", _imports_13)}><div class="question-header"><div class="question-title flexflex"><div class="question-icon flexcenter">Q</div><div class="flex1">${$setup.IAnswerInfo["title"]}</div></div>`);
if ($setup.IAnswerInfo["content"]) {
_push(`<div class="question-replenish">${$setup.IAnswerInfo["content"]}</div>`);
} else {
_push(`<!---->`);
}
_push(`</div><div class="question-middle flexflex"><div class="question-icon flexcenter">A</div><div class="${ssrRenderClass([{ placeholder: $setup.questionPlaceholderState }, "question-textarea"])}" contenteditable="true">${$setup.IAnswerInfo["text"]}</div></div><div class="issue-bottom flexacenter"><div class="option-box flexacenter">`);
if ($setup.IAnswerInfo["anonymous"] == 0) {
_push(`<img class="option-icon"${ssrRenderAttr("src", _imports_34)}>`);
} else {
_push(`<img class="option-icon"${ssrRenderAttr("src", _imports_35)}>`);
}
_push(` 匿名发表 </div><div class="issue-btn flexcenter">提交回答</div></div></div></div>`);
} else {
_push(`<!---->`);
}
_push(`<template><div class="${ssrRenderClass([$setup.boxClass(), "box-item"])}" style="${ssrRenderStyle({ top: "20px" })}"><div class="msg-container">${ssrInterpolate($setup.msg["text"])}</div></div></template>`);
if ($setup.dialogSrc) {
_push(`<div class="detail-image-mask flexcenter"><div class="detail-image flexcenter"><img class="detail-img"${ssrRenderAttr("src", $setup.dialogSrc)}></div></div>`);
} else {
_push(`<!---->`);
}
_push(`<div class="alert-form" style="${ssrRenderStyle($setup.alertShow ? null : { display: "none" })}"><div class="comments reports"><div class="head"><span style="${ssrRenderStyle({ "display": "flex", "align-items": "center" })}"><img style="${ssrRenderStyle({ "width": "25px", "margin-right": "7px" })}" src="//app.gter.net/image/gter/offer/img/exclamationpoint.png?v=4.2.08_331040000">举报投诉 </span><div class="close icon-close iconfont"></div></div><div class="form"><div class="radio-area flexacenter"><!--[-->`);
ssrRenderList($setup.reasonList, (s, i) => {
_push(`<div class="${ssrRenderClass([{ pitch: $setup.checkList.includes(s) }, "radio-area-item flexacenter"])}"><div cdivlass="radio-area-frame"></div> ${ssrInterpolate(s)}</div>`);
});
_push(`<!--]--></div><div class="text-box"><textarea placeholder="请输入举报原因" maxlength="200">${ssrInterpolate($setup.alertText)}</textarea><div class="text-num">${ssrInterpolate(200 - $setup.alertText.length)}</div></div><div class="footer"><button type="button">取消</button><button type="submit"${ssrIncludeBooleanAttr($setup.checkList.length == 0) ? " disabled" : ""}>提交</button></div></div></div></div>`);
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(`<div class="respond-pop-mask"><div class="slit-pop-box"><div class="slit-left"><img class="slit-left-icon"${ssrRenderAttr("src", _imports_26)}></div><div class="slit-box"><div class="slit-head" style="${ssrRenderStyle({})}"><div class="slit-head-title flexflex" style="${ssrRenderStyle({})}"><span>投币</span> <a target="_blank"${ssrRenderAttr("href", $setup.insert.coinConfig.strategy.url)} style="${ssrRenderStyle({})}">${ssrInterpolate($setup.insert.coinConfig.strategy.button)}</a></div><div class="in-all"> 你共有 <span>${ssrInterpolate($setup.insert.coinMybalance)}</span> 寄托币 </div></div><div class="coin-quantity flex-items"><!--[-->`);
ssrRenderList($setup.insert.coinConfig.list, (item) => {
_push(`<div class="${ssrRenderClass([{ "coin-pitch": $setup.coinAmount == item }, "coin-quantity-item"])}">${ssrInterpolate(item)} <span>${ssrInterpolate($setup.insert.coinConfig.unit)}</span></div>`);
});
_push(`<!--]--></div><input class="slit-input" type="number"${ssrRenderAttr("value", $setup.coinAmount)} placeholder="自定义投币金额"><div class="message-box"><div class="message-hint">顺便说点什么</div><input class="slit-input"${ssrRenderAttr("value", $setup.coinMessage)} placeholder="请输入" maxlength="500"></div><div class="operation"><div class="operation-item flexcenter">取消</div><div class="operation-item flexcenter greenBj">确定</div></div></div></div></div>`);
} else {
_push(`<!---->`);
}
if ($setup.insertcoinsNoState) {
_push(`<div class="respond-pop-mask"><div class="no-jituobi-pop-box"><img class="no-jituobi-close"${ssrRenderAttr("src", _imports_41)}><div class="no-jituobi-head flexacenter"><img class="bi-icon"${ssrRenderAttr("src", _imports_26)} style="${ssrRenderStyle({ "margin-right": "12px" })}"><span style="${ssrRenderStyle({ "margin-top": "10px" })}">${ssrInterpolate($setup.insert.coinConfig.strategy.tips)}</span></div><a${ssrRenderAttr("href", $setup.insert.coinConfig.strategy.url)} target="_blank"><div class="strategy-btn greenBj flexcenter">${ssrInterpolate($setup.insert.coinConfig.strategy.button)}<img class="strategy-icon"${ssrRenderAttr("src", _imports_42)}></div></a></div></div>`);
} else {
_push(`<!---->`);
}
_push(`</div></div><!--]-->`);
}
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) => `<span class="stack${i.internal ? " internal" : ""}">${i.text}</span>`).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