3048 lines
151 KiB
JavaScript
3048 lines
151 KiB
JavaScript
import { version, ref, watchEffect, watch, getCurrentInstance, defineComponent, hasInjectionContext, unref, inject, useSSRContext, createApp, effectScope, reactive, onUnmounted, nextTick, defineAsyncComponent, provide, onErrorCaptured, onServerPrefetch, createVNode, resolveDynamicComponent, toRef, h, isReadonly, isRef, isShallow, isReactive, toRaw, withCtx, createTextVNode, toDisplayString, mergeProps } 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 { ssrRenderSuspense, ssrRenderComponent, ssrRenderVNode, ssrInterpolate, ssrRenderAttr, ssrRenderList, ssrRenderClass, ssrRenderStyle, ssrIncludeBooleanAttr } from 'vue/server-renderer';
|
|
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 = _globalThis$1[globalKey$2] || (_globalThis$1[globalKey$2] = createNamespace$1());
|
|
const getContext = (key, opts = {}) => defaultNamespace.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 plugins = [
|
|
unhead_KgADcZ0jPj,
|
|
router_CaKIoANnI2,
|
|
revive_payload_server_eJ33V7gbc6,
|
|
components_plugin_KR1HBZs4kY
|
|
];
|
|
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((base) => ({
|
|
base
|
|
}))
|
|
});
|
|
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 _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_5 = "" + __buildAssetsURL("dot.1026a040.svg");
|
|
const _imports_6 = "data:image/png;base64,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";
|
|
const _imports_7 = "" + __buildAssetsURL("dot-yellow.4b5e135b.svg");
|
|
const _imports_8 = "" + __buildAssetsURL("dot-gray.86cdd7b5.svg");
|
|
const _imports_9 = "" + __buildAssetsURL("empty-icon.24a01ae2.svg");
|
|
const _imports_10 = "" + __buildAssetsURL("close-icon.86743366.svg");
|
|
const _imports_11 = "data:image/png;base64,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";
|
|
const _imports_12 = "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_13 = "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_14 = "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_15 = "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_16 = "" + __buildAssetsURL("edit-icon-white.29b27582.svg");
|
|
const _imports_17 = "" + __buildAssetsURL("view-icon.da7fef35.svg");
|
|
const _imports_18 = "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_19 = "" + __buildAssetsURL("collect-icon-colours.6d2ade7f.svg");
|
|
const _imports_20 = "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_21 = "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_22 = "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_23 = "" + __buildAssetsURL("title.98892974.png");
|
|
const _imports_24 = "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_25 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAQKADAAQAAAABAAAAQAAAAABGUUKwAAAE8ElEQVR4Ae1a24tPURQexjAxuZVcm1FESqHc80CDkhIpCsULcnlQ3kSUFy9480L+BeWdPGBGQiPEw8wowjAz7nLn+6bZ0/7t+fb5/Y5z5sw+J6vWnHO+vfY+a3177cvZv6mqGjwZgVfvhV6BvoR+h76AXoJuhg6FFlZWILJW6J8IvYWyGdDCyVpE9AUaFbwpY2bMKhID0xBMZ4XBGxJaYF9TFBLOxQzekLCnCARw0vssCHgPbD90AZSBdkNN4ObaBCz3shQRmIDs61Ynso0euzGOXe4eN3gCq3Mi4Xi3CTL3ix27VB6zXGs5BFz5BYDDwpYfeODs78qArAZZEsAVwJVPANjDrrS5AJ5zT8B0EdRzgRHqEvhYgSWGsswA1YPPPBG8FXi1wBJDWRHAiW6l8PaJwAh9FfgwgSWGsiJgHTytFd7yQ0jJaAEOiK8D0qhwfqfA+PV3TeCEFAEdHttEcBYE8MtvvfCSn70fBU5ogsCfCix4aAg8vA41mxn7usrjPfcLZnm07Rs99kHDR+CdHYS5vwuc5ChhoMbOvjYo45CxNXDupyeY1RGOnxJ1nkbYB1nEAPmVZ/egub9cxuN7ot6FMnWCKt4JbzjDm4DtK2fySRHeLvTU2xJRJ1FRmpuLqfDkNNT9vDUO8sNnO/SVAcT1sMAI8ZD0XydBHr/x/PEa9AE0dalHiyegXNLs3rbvf6NsFzRKSKAvc+y2ktzzoHVJlBOVlE2GEcf4ISh3cuzZKKdYfhBaTvbAIKqdtMo4Me+2neE+nWd17dDuMvoO5XEcYVbwhKcSOQCjOG0nsWVGbjJOnR+gF99Bu3PNSyq4ToTNG2iSwOLU7cS7RnMz8hqqtp6A/0nY6yehZ6FMtzgyE8aHoTOgvo1SnPZoy3MEHrhW88ERvqvqGzQOcz5bEnkUOg4amsyHQ+xx1/erdDQpARxC3PWluaTSr7TlGBp0Ceik0yrVLgLnkmELWdxnA733B3EliaFLu3BwJDG19u4Qxpw1XQb5rE57RfVBhzg8Xf+7fOcBNHRFZQptlK1bN4TnZcKJFhLgC0zYSygPBDBG/jLlSlOcDHAr5+l5DpwdLxz2EiBscw0tF94zc5t9GSDsEw8V1WZWmBr/T/DyzjgE+JzNwxygMuAmA0pjEvQREwrOnels4UwTMV8G5KFXRUwSYu+rla4vA2StAoFq/L9DfI8Zoy8D4sQferao8c/055lALAJUGsUhajBs+a2zSLy4Z/wT902CofeqiElC84DWiZKe8U88jSEg2g8GUunPM8rbxsM0CAg5W9QEeB/Bf0iTANNWiFeVAX3jnw7HyYC8TYJTEF+D6JWKCAg5rUVMElK9T8O+CZAPvlWAZZVKqGSp8d+BoNrswOIMAbteHu5VBtxwHS8qASMQKH8LcKVk/LPQR4BK6zxNgtz9kQRXSsY/C30EuBWjnhVZUfZZlKnx/w0v5r/mlAgJyFPPljgf8aAIYPD9/gGTBITYgxGxlS2qgYWaAPuNf7aUxhAo61GGBsPxrjNQ/tLsiiSA6a8ygOvlZ6eFUXhWDZesq06dLB8ZB4+/1PE3U78eyp/f+wkrFl2ZFV7hyUiRCXiI+NSZQA8hnANae+6K+acZYTVC+a+3XtmGEh4SFCkL+K94x6G10EgxewAeHZEpLiF5FZ7/cbPzCHql9x6X//KfgSgG/gK9mIkzqc2oKwAAAABJRU5ErkJggg==";
|
|
const _imports_26 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAA4CAYAAABNGP5yAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAQKADAAQAAAABAAAAOAAAAACP8+m+AAADhUlEQVRoBe2aS4hPURzHZ7zfj4USmTGTkGcodiRRNh5JNsooO7NhgyJSyoayIDbySFlYkLLwyAaRR5Ty2DCTJPIYeYfx+U5z9O/M+f/N/zf3/q//vfdX3+4959zze3zP6557T01NxqU2EP8M8prAPDAaVLN8x/lWcBEcA+9AURlCyVHwG7SnEG3EtAEERcHfAmkM3I9pd4iBUxkJ3pGxwpGgOWAuUOv7cpuM60DjqFplOI4vA2O8AJ6TngB+Kf8QcMy46zbyQhOknq82GYbDV4GLzV0Xu0AeeoV3XUGKrg3E4k/uOxVfL+AvdWIrbfKMgF54QdUrLQL6ewXfvHRakp+8QHorLQIyLTkBmW5+gs98D+jTwx4wivpDe6jDr/6WDL23V0SsBDTi3XkwJSYvr6B3Ofgck/6/aq1DQG+KcQUv5xaB9bqJW6wEdLxExOzc+Jj1d6i3EvCkAs49qoAN8yqwB+cugx8xOPkFnSfBiRh0d1FpnQRfoUm7Kb1OarcVpbyPUtm/dFkJcHq1n66ow85wVFfrHBCV/cT15AQk3gQJO5D3gIQbIHHzme8B1mVQxK0DC8GABJuxFdsHgb75mcRKQDPWDpgsRl9pNSonAdO3TOsQWBJ9HGaNddQ070ytBMSxBzAzQEVT68uglYDj1NWPhv9BbuLEY6sj1jngHAZngwVgoNV4BPVa0HEWmBvDSoB8f9AJ3VetWIdA1QbsO54T4DOStXTeA7LW4n68eQ+AkXaPlb5eOi1Jv7E73h2U+caLcJqXTkNSh6UavEBeu/QZbtQLHPSld74rTMl1X0F8Ls41iq0WrAIioVC+ktgPLgH/aEnhc1Hda3OlP0E/y1SoHqweW2zY1lO2FqwEhfKRRB1oU6Z+buhMoGMmqatOq80E3ZURPHgfWPzd7huZTIbmAouyKOvoUOYO0J09yiajv/r1HtQ/nYKnRqVRkiBdd8BUUEo2Uliu3dPUKbl7HcQDm4G1a5XrUKnn9ZFjK9AQDclgMq+BUjpUJj0XwFLQRTQJFhMdfRkLZChOGYdyzdKNRYzoHHMTCH30kP9a3kaCkHwgswWUO7mGdMWap265t9PRUItqVdoCivUGitIhswjjHgiRoLwbQF+AUy39iG4X0IoQIuIl+XEPS0wkL3rB0QfPEAlzknevMh5ozGu913E5R4R6gFarTMlEoj0MjgC9tEUmfwCaJfF0KbQc/QAAAABJRU5ErkJggg==";
|
|
const _imports_27 = "" + __buildAssetsURL("menu-icon-gray.d61f02b1.svg");
|
|
const _imports_28 = "" + __buildAssetsURL("comment-icon-gray.2c8779f9.svg");
|
|
const _imports_29 = "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_30 = "data:image/png;base64,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";
|
|
const _imports_31 = "" + __buildAssetsURL("tick-no.179037b3.svg");
|
|
const _imports_32 = "" + __buildAssetsURL("tick-option.e092d22f.svg");
|
|
const _imports_33 = "" + __buildAssetsURL("QRCode-icon.a105d5fc.svg");
|
|
const _imports_34 = "" + __buildAssetsURL("delete-icon.4d386dce.svg");
|
|
const _imports_35 = "" + __buildAssetsURL("arrows-icon.271dd0d3.svg");
|
|
const _imports_36 = "" + __buildAssetsURL("tick-orange.233abc69.svg");
|
|
const _imports_37 = "" + __buildAssetsURL("issue-bj.44adad8c.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" && "9c92af854f552bbd2aab43230bcf8438", // 头部标记
|
|
authorization: "production" !== "production"
|
|
// 头部标记 ada
|
|
// authorization: "2e25ccc21d5f86b670e7476f3b58ea5d", // 头部标记
|
|
// "Cache-Control": "no-cache",
|
|
// Pragma: "no-cache",
|
|
}
|
|
}).then(function(res) {
|
|
var data2 = null;
|
|
try {
|
|
data2 = typeof res.data == "string" ? JSON.parse(res.data) : res.data;
|
|
if (data2["code"] == 401)
|
|
isNeedLogin.value = true;
|
|
if (data2["code"] != 200)
|
|
handleMsg("error", data2["message"] || "报错了,请重试!!!");
|
|
} catch (error) {
|
|
}
|
|
resolve(data2);
|
|
}).catch((err) => {
|
|
if (err.response.status == 401)
|
|
isNeedLogin.value = true;
|
|
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"
|
|
// 头部标记
|
|
// "Cache-Control": "no-cache",
|
|
// Pragma: "no-cache",
|
|
}
|
|
}).then(function(res) {
|
|
var data2 = null;
|
|
try {
|
|
data2 = typeof res.data == "string" ? JSON.parse(res.data) : res.data;
|
|
if (data2["code"] == 401)
|
|
isNeedLogin.value = true;
|
|
if (data2["code"] != 200)
|
|
handleMsg("error", data2["message"] || "报错了,请重试!!!");
|
|
} catch (error) {
|
|
}
|
|
resolve(data2);
|
|
}).catch((err) => {
|
|
if (err.response.status == 401)
|
|
isNeedLogin.value = true;
|
|
resolve(err.response.data);
|
|
});
|
|
});
|
|
};
|
|
let isNeedLogin = ref(true);
|
|
const goLogin = () => ajax_login();
|
|
const route = useRoute();
|
|
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.href;
|
|
};
|
|
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 = [];
|
|
type.value = "list";
|
|
openBottom();
|
|
pitchIndex.value = null;
|
|
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 = [];
|
|
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 page = 1;
|
|
let total = ref(0);
|
|
let loading = ref(false);
|
|
let inTheEndState = ref(false);
|
|
let isListEmptyState = ref();
|
|
const getList = () => {
|
|
if (page == 0 || loading.value)
|
|
return;
|
|
loading.value = true;
|
|
$ajax("/api/lists", {
|
|
page,
|
|
limit: 20,
|
|
keyword: keyword.value,
|
|
type: typePitch.value
|
|
}).then((res) => {
|
|
if (res.code == 401)
|
|
goLogin();
|
|
if (res.code != 200)
|
|
return;
|
|
let data = res.data;
|
|
list.value = list.value.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;
|
|
}).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;
|
|
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";
|
|
closeBottom();
|
|
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
|
|
};
|
|
detailsAreaScrollTop();
|
|
}).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) {
|
|
setTimeout(() => calculateListIndex(info, uniqid), 200);
|
|
return;
|
|
}
|
|
let valve = false;
|
|
targetList.forEach((element, index) => {
|
|
if (element["uniqid"] == uniqid) {
|
|
cut(index);
|
|
valve = true;
|
|
}
|
|
});
|
|
if (!valve) {
|
|
let content = "";
|
|
if (info["content"].indexOf("<img") == -1)
|
|
content = info["content"];
|
|
list.value.unshift({
|
|
answers: info["answers"],
|
|
content,
|
|
publicationdate: info["publicationdate"],
|
|
title: info["title"],
|
|
typename: info["typename"],
|
|
uniqid
|
|
});
|
|
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) => {
|
|
element["commentList"] = [];
|
|
});
|
|
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) {
|
|
goLogin();
|
|
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) {
|
|
goLogin();
|
|
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) {
|
|
goLogin();
|
|
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) {
|
|
goLogin();
|
|
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, 3).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(3);
|
|
let merged1 = [...answerList.value[index]["commentList"], ...slice3.filter((item2) => !answerList.value[index]["commentList"].find((item1) => item1.id == item2.id))];
|
|
answerList.value[index]["commentList"] = merged1;
|
|
});
|
|
};
|
|
const getAnswerCommentPublic = (index, limit) => {
|
|
return new Promise((resolve, reject) => {
|
|
$ajax("/api/comment/lists", {
|
|
token: answerList.value[index]["token"],
|
|
// limit: answerCommentLimit,
|
|
limit,
|
|
childlimit: 1
|
|
}).then((res) => {
|
|
if (res.code != 200)
|
|
return;
|
|
resolve(res);
|
|
});
|
|
});
|
|
};
|
|
const submitAnswerComments = (index, ind, i) => {
|
|
if (isNeedLogin.value) {
|
|
goLogin();
|
|
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) {
|
|
goLogin();
|
|
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) {
|
|
goLogin();
|
|
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) {
|
|
goLogin();
|
|
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;
|
|
res.data;
|
|
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) {
|
|
goLogin();
|
|
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) {
|
|
goLogin();
|
|
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";
|
|
height = Math.ceil(list.value.length / 2) * 128 + "px";
|
|
} else {
|
|
width = "calc((100vw - 1200px) / 2 + 512px)";
|
|
margin = "initial";
|
|
height = list.value.length * 128 + "px";
|
|
}
|
|
return {
|
|
width,
|
|
margin,
|
|
height
|
|
};
|
|
};
|
|
const itemStyle = (index, content) => {
|
|
const newtype = type.value;
|
|
let obj = {};
|
|
if (newtype == "list") {
|
|
let top = Math.floor(index / 2) * 128 + "px";
|
|
obj["top"] = top;
|
|
if (index % 2 == 0)
|
|
obj["left"] = 0;
|
|
else
|
|
obj["left"] = "649px";
|
|
} else {
|
|
obj["top"] = index * 128 + "px";
|
|
obj["left"] = 0;
|
|
obj["width"] = "100%";
|
|
obj["paddingLeft"] = "calc((100vw - 1200px) / 2)";
|
|
}
|
|
return obj;
|
|
};
|
|
const bottomTpsStyle = (index, content) => {
|
|
const newtype = type.value;
|
|
let obj = {};
|
|
if (newtype == "list")
|
|
;
|
|
else {
|
|
obj["width"] = "calc(50vw - 88px)";
|
|
obj["paddingLeft"] = "calc((100vw - 1200px) / 2)";
|
|
obj["borderRight"] = "1px solid #ebebeb";
|
|
}
|
|
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()) => {
|
|
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();
|
|
result = "" + Y + M + D + h2 + m;
|
|
} 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 = () => {
|
|
type.value = "list";
|
|
openBottom();
|
|
pitchIndex.value = null;
|
|
seo.value = {};
|
|
};
|
|
const handleListScroll = (e) => {
|
|
const el = e.target;
|
|
if (el.scrollHeight - el.scrollTop >= el.clientHeight + 40)
|
|
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;
|
|
};
|
|
const myOpenDetails = (uniqid) => {
|
|
if (!uniqid) {
|
|
handleMsg("error", "没有找到相关提问");
|
|
return;
|
|
}
|
|
getDetails(uniqid);
|
|
myType.value = "";
|
|
};
|
|
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 = [];
|
|
type.value = "list";
|
|
openBottom();
|
|
pitchIndex.value = null;
|
|
getList();
|
|
};
|
|
const handleMenuState = (index, ind, i) => {
|
|
if (isNeedLogin.value) {
|
|
goLogin();
|
|
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 seo = ref({});
|
|
try {
|
|
const params = route.query;
|
|
if (params["keyword"])
|
|
keyword.value = params["keyword"];
|
|
if (params["tid"])
|
|
typePitch.value = params["tid"];
|
|
await $ajax("/api/lists", {
|
|
page,
|
|
limit: 20,
|
|
keyword: keyword.value,
|
|
type: typePitch.value
|
|
}).then((res) => {
|
|
if (res.code != 200)
|
|
return;
|
|
let data = res.data;
|
|
list.value = list.value.concat(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;
|
|
});
|
|
} catch (error) {
|
|
console.error(error);
|
|
}
|
|
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) {
|
|
goLogin();
|
|
return;
|
|
}
|
|
IAnswerInfo.value = { ...yourAnswer.value };
|
|
submitAnswer("you");
|
|
yourAnswer.value = {
|
|
text: "",
|
|
anonymous: 0
|
|
};
|
|
};
|
|
let isDirectlyListIAnswer = false;
|
|
const openListIAnswer = (index) => {
|
|
if (isNeedLogin.value) {
|
|
goLogin();
|
|
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["uin"] > 0)
|
|
avatarState.value = !avatarState.value;
|
|
}
|
|
};
|
|
const sendMessage = (uin) => {
|
|
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 closeBottom = () => {
|
|
const footer = document.querySelector("body .index-footer");
|
|
if (footer)
|
|
footer.style.display = "none";
|
|
else
|
|
setTimeout(() => closeBottom(), 1e3);
|
|
};
|
|
const openBottom = () => {
|
|
const footer = document.querySelector("body .index-footer");
|
|
if (footer)
|
|
footer.style.display = "block";
|
|
else
|
|
setTimeout(() => openBottom(), 1e3);
|
|
};
|
|
return {
|
|
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
|
|
};
|
|
}
|
|
};
|
|
function _sfc_ssrRender(_ctx, _push, _parent, _attrs, $props, $setup, $data, $options) {
|
|
const _component_Head = Head;
|
|
const _component_Title = Title;
|
|
const _component_Meta = Meta;
|
|
_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"><div class="${ssrRenderClass([{ pitch: $setup.typePitch == null }, "item flexcenter"])}">All</div><!--[-->`);
|
|
ssrRenderList($setup.typeList, (item, index) => {
|
|
_push(`<!--[--><div class="halving-line">|</div><!--[-->`);
|
|
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)" })}">`);
|
|
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><div class="list" id="list" style="${ssrRenderStyle($setup.listStyle())}"><!--[-->`);
|
|
ssrRenderList($setup.list, (item, index) => {
|
|
_push(`<a style="${ssrRenderStyle($setup.itemStyle(index, item["content"]))}" class="${ssrRenderClass([{ pitch: index === $setup.pitchIndex, upLevel: index === $setup.pitchIndex - 1 }, "item grid-item flexflex"])}"${ssrRenderAttr("href", $setup.setItemUrl(item["uniqid"]))}><img class="dot"${ssrRenderAttr("src", _imports_5)}><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_6)}>`);
|
|
} else {
|
|
_push(`<!---->`);
|
|
}
|
|
_push(`<div class="issue ellipsis flex1">${item["title"]}</div></div><div class="answer ellipsis">${item["content"]}</div><div class="bottom flexacenter">`);
|
|
if (item["typename"]) {
|
|
_push(`<div class="typename">${ssrInterpolate(item["typename"])}</div>`);
|
|
} else {
|
|
_push(`<div></div>`);
|
|
}
|
|
_push(`<div class="flexacenter"><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(`<!--]--></div>`);
|
|
if ($setup.inTheEndState) {
|
|
_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_7)}><img class="item"${ssrRenderAttr("src", _imports_7)}><img class="item"${ssrRenderAttr("src", _imports_7)}><img class="item"${ssrRenderAttr("src", _imports_8)}><img class="item"${ssrRenderAttr("src", _imports_8)}><img class="item"${ssrRenderAttr("src", _imports_8)}></div><img class="empty-icon"${ssrRenderAttr("src", _imports_9)}>`);
|
|
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_10)}><img class="details-cross-icon"${ssrRenderAttr("src", _imports_11)}></div></div><div class="details-issue"><img class="qq"${ssrRenderAttr("src", _imports_12)}><div class="titletitle">${ssrInterpolate($setup.detailsInfo["title"])}</div><div class="hint">${$setup.detailsInfo["content"]}</div><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_13)}> 发送信息 </a><a class="avatar-item flexcenter" target="_blank"><img class="avatar-icon"${ssrRenderAttr("src", _imports_14)}> 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_15)}><img class="answer-btn-icon answer-icon-white"${ssrRenderAttr("src", _imports_16)}> 我来回答 </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_17)}> ${ssrInterpolate($setup.detailsInfo["viewnum"] || 0)}</div><div class="operate-item flexacenter">`);
|
|
if ($setup.detailsIscollection == 0) {
|
|
_push(`<img class="operate-icon operate-collect-icon"${ssrRenderAttr("src", _imports_18)}>`);
|
|
} else {
|
|
_push(`<img class="operate-icon operate-collect-icon"${ssrRenderAttr("src", _imports_19)}>`);
|
|
}
|
|
_push(` ${ssrInterpolate($setup.detailsInfo["collectionnum"] > 0 ? $setup.detailsInfo["collectionnum"] : "收藏")}</div><div class="operate-item flexacenter operate-transmit"><img class="operate-icon operate-transmit-icon"${ssrRenderAttr("src", _imports_20)}> 转发 `);
|
|
if ($setup.questionsTransmitState) {
|
|
_push(`<div class="transmit-box flexflex" style="${ssrRenderStyle({ "z-index": "10" })}"><img class="cross-icon"${ssrRenderAttr("src", _imports_11)}><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_21)}> 扫码转发该问答 </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) => {
|
|
_push(`<div class="answer-box-item"><img class="aa"${ssrRenderAttr("src", _imports_22)}><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_23)}>`);
|
|
} 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_13)}> 发送信息 </a><a class="avatar-item flexcenter" target="_blank"><img class="avatar-icon"${ssrRenderAttr("src", _imports_14)}> 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="edit-box">`);
|
|
if (item["ismyself"] == 1) {
|
|
_push(`<div class="edit-btn flexcenter"><img class="edit-icon"${ssrRenderAttr("src", _imports_15)}></div>`);
|
|
} else {
|
|
_push(`<!---->`);
|
|
}
|
|
_push(`</div><div class="operate-list flexacenter"><div class="operate-item flexacenter">`);
|
|
if (item["islike"] == 1) {
|
|
_push(`<img class="operate-icon operate-like-icon"${ssrRenderAttr("src", _imports_24)}>`);
|
|
} else {
|
|
_push(`<img class="operate-icon operate-like-icon"${ssrRenderAttr("src", _imports_25)}>`);
|
|
}
|
|
_push(` ${ssrInterpolate(item["likenum"])}</div><div class="${ssrRenderClass([{ commentnum: item["commentState"] }, "operate-item flexacenter"])}"><img class="operate-icon operate-comment-icon"${ssrRenderAttr("src", _imports_26)}>${ssrInterpolate(item["commentnum"])}</div><div class="operate-item flexacenter">`);
|
|
if (item["iscollection"] == 1) {
|
|
_push(`<img class="operate-icon operate-collect-icon"${ssrRenderAttr("src", _imports_19)}>`);
|
|
} else {
|
|
_push(`<img class="operate-icon operate-collect-icon"${ssrRenderAttr("src", _imports_18)}>`);
|
|
}
|
|
_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_20)}> 转发 `);
|
|
if (item["transmitState"]) {
|
|
_push(`<div class="transmit-box flexflex"><img class="cross-icon"${ssrRenderAttr("src", _imports_11)}><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_21)}> 扫码转发该问答 </div></div></div></div>`);
|
|
} else {
|
|
_push(`<!---->`);
|
|
}
|
|
_push(`</div></div></div>`);
|
|
if (item["commentState"]) {
|
|
_push(`<!--[--><div class="post-comment flexacenter"><input class="post-input flex1" placeholder="说点什么…"${ssrRenderAttr("value", item["commentInput"])}><div class="post-ok flexcenter">OK</div></div>`);
|
|
if (item["commentList"] && item["commentList"].length != 0) {
|
|
_push(`<div class="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_13)}> 发送信息 </a><a class="avatar-item flexcenter" target="_blank"><img class="avatar-icon"${ssrRenderAttr("src", _imports_14)}> 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_27)}><div class="report-box flexcenter">举报</div></div><img class="comment-icon"${ssrRenderAttr("src", _imports_28)}><div class="flexacenter like-box">`);
|
|
if (it["islike"] == 0) {
|
|
_push(`<img class="like-icon"${ssrRenderAttr("src", _imports_29)}>`);
|
|
} else {
|
|
_push(`<img class="like-icon"${ssrRenderAttr("src", _imports_24)}>`);
|
|
}
|
|
_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_11)}></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_13)}> 发送信息 </a><a class="avatar-item flexcenter" target="_blank"><img class="avatar-icon"${ssrRenderAttr("src", _imports_14)}> 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_27)}><div class="report-box flexcenter">举报</div></div><img class="comment-icon"${ssrRenderAttr("src", _imports_28)}><div class="flexacenter like-box">`);
|
|
if (ite["islike"] == 0) {
|
|
_push(`<img class="like-icon"${ssrRenderAttr("src", _imports_29)}>`);
|
|
} else {
|
|
_push(`<img class="like-icon"${ssrRenderAttr("src", _imports_24)}>`);
|
|
}
|
|
_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_11)}></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_30)}></div>`);
|
|
} else {
|
|
_push(`<!---->`);
|
|
}
|
|
_push(`</div>`);
|
|
} else {
|
|
_push(`<!---->`);
|
|
}
|
|
_push(`</div>`);
|
|
});
|
|
_push(`<!--]-->`);
|
|
if (item["commentCount"] != item["commentList"].length) {
|
|
_push(`<div class="reverl-all flexcenter"> 显示全部 <img class="arrow-circular"${ssrRenderAttr("src", _imports_30)}></div>`);
|
|
} else {
|
|
_push(`<!---->`);
|
|
}
|
|
_push(`</div>`);
|
|
} else {
|
|
_push(`<div class="comments-empty-box flexflex"><div class="empty-box flexcenter"><div class="dot-list flexacenter"><!--[-->`);
|
|
ssrRenderList(3, (item2) => {
|
|
_push(`<img class="dot-item"${ssrRenderAttr("src", _imports_7)}>`);
|
|
});
|
|
_push(`<!--]--><!--[-->`);
|
|
ssrRenderList(3, (item2) => {
|
|
_push(`<img class="dot-item"${ssrRenderAttr("src", _imports_8)}>`);
|
|
});
|
|
_push(`<!--]--></div><img class="empty-icon"${ssrRenderAttr("src", _imports_9)}></div><div class="empty-hint">和我说说你的想法或疑问吧</div></div>`);
|
|
}
|
|
_push(`<!--]-->`);
|
|
} 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_31)}>`);
|
|
} else {
|
|
_push(`<img class="option-icon"${ssrRenderAttr("src", _imports_32)}>`);
|
|
}
|
|
_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_7)}>`);
|
|
});
|
|
_push(`<!--]--><!--[-->`);
|
|
ssrRenderList(3, (item) => {
|
|
_push(`<img class="dot-item"${ssrRenderAttr("src", _imports_8)}>`);
|
|
});
|
|
_push(`<!--]--></div><img class="empty-icon"${ssrRenderAttr("src", _imports_9)}></div><div class="empty-hint">我在等待你的回答</div></div>`);
|
|
} else {
|
|
_push(`<!---->`);
|
|
}
|
|
_push(`<div class="mobile-phone-check flexcenter"><img class="QRCode-icon"${ssrRenderAttr("src", _imports_33)} 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_21)}> 微信扫一扫 </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_11)}><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_7)}><img class="item"${ssrRenderAttr("src", _imports_7)}><img class="item"${ssrRenderAttr("src", _imports_7)}><img class="item"${ssrRenderAttr("src", _imports_8)}><img class="item"${ssrRenderAttr("src", _imports_8)}><img class="item"${ssrRenderAttr("src", _imports_8)}></div><img class="empty-icon"${ssrRenderAttr("src", _imports_9)}><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_34)}></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_34)}></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_35)}>`);
|
|
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_36)}></div><div class="${ssrRenderClass([{ pitch: item["anonymous"] == 1 }, "state-popup-item flexacenter flex1"])}"><div class="">匿名发表</div><img class="state-popup-icon"${ssrRenderAttr("src", _imports_36)}></div></div>`);
|
|
} else {
|
|
_push(`<!---->`);
|
|
}
|
|
_push(`</div><img class="edit-icon"${ssrRenderAttr("src", _imports_15)}></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_35)}>`);
|
|
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_36)}></div><div class="${ssrRenderClass([{ pitch: item["anonymous"] == 1 }, "state-popup-item flexacenter flex1"])}"><div class="">匿名发表</div><img class="state-popup-icon"${ssrRenderAttr("src", _imports_36)}></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_37)}><div class="flexcenter q">Q</div><img class="cross-icon"${ssrRenderAttr("src", _imports_11)}><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_31)}>`);
|
|
} else {
|
|
_push(`<img class="option-icon"${ssrRenderAttr("src", _imports_32)}>`);
|
|
}
|
|
_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_11)}><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_31)}>`);
|
|
} else {
|
|
_push(`<img class="option-icon"${ssrRenderAttr("src", _imports_32)}>`);
|
|
}
|
|
_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_11)}><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_31)}>`);
|
|
} else {
|
|
_push(`<img class="option-icon"${ssrRenderAttr("src", _imports_32)}>`);
|
|
}
|
|
_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 class="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></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-b567fef8.mjs').then((r) => r.default || r));
|
|
const _Error = defineAsyncComponent(() => import('./static/error-500-fd968d91.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-4de2a5fd.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
|